找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5234|回復(fù): 4
收起左側(cè)

這個(gè)數(shù)碼管動(dòng)態(tài)顯示程序問題在哪里請指教

[復(fù)制鏈接]
ID:31774 發(fā)表于 2011-9-25 21:46 | 顯示全部樓層 |閱讀模式
# include<reg51.h>
 
      void delay();
 sfr p0=0x80;         (p0控制數(shù)碼管段選)
 sfr p2=0xa0;        (p2控制數(shù)碼管片選)
  
 void main (){
    for(;;){
 p0=0xc0;
                  p2=0xf7;

 
 delay();
 p0=0x82;
                  p2=0xfb;

 delay();
  p0=0xa4;
  p2=0xfd;
 
 delay();
                  p0=0xf9;
 p2=0xfe;
 
 delay();
 }}

  void delay(){
  int i;
 for(i=0;i<50;i++){
 TMOD=0X01;
 TH0=(65535-50000)/256;
 TL0=(65535-50000)%256;
 TR0=1;
   while(TF0==0){;}
 }}

 
 這個(gè)是我寫的一個(gè)數(shù)碼管動(dòng)態(tài)顯示程序,顯示內(nèi)容為“0621”,雖然把程序燒盡單片機(jī)能穩(wěn)定的同時(shí)顯示出"0621'這四位數(shù)字沒有閃爍也沒有重影,可是這在原理上讓我想不明白,此程序的延時(shí)程序中計(jì)數(shù)器的計(jì)數(shù)功能明顯沒起到作用這是為什么?新手上路,在此希望各位朋友多多指教。

 

回復(fù)

使用道具 舉報(bào)

ID:31953 發(fā)表于 2011-10-2 13:22 | 顯示全部樓層
是沒有用上,根本就沒有打開中斷啊。 可以試著去掉看看行不行,多試試就明白了。
回復(fù)

使用道具 舉報(bào)

ID:32335 發(fā)表于 2011-11-13 09:23 | 顯示全部樓層

你那是FOR循環(huán),根本不是中斷,況且EA,ET0中斷允許都沒打開,中斷能起什么用

回復(fù)

使用道具 舉報(bào)

ID:20559 發(fā)表于 2011-10-16 22:00 | 顯示全部樓層

1,你得程序思想是很好的,很好的用了定時(shí)器做精確的延時(shí),就向和匯編的語句控制延時(shí)一樣可以做到很精確

2,定時(shí)器到時(shí)候的用法你好好加深一下。你這里的定時(shí)器只是起到延時(shí)的作用。

3,要想使用到計(jì)數(shù)器你要明白什么是計(jì)數(shù)器。怎樣使用計(jì)數(shù)器。例如unsigned char i=0,a = 0;for(i=0,i<10;++i) a =a+i;這也是一個(gè)計(jì)數(shù)器

4,我想你是想用定時(shí)器做一個(gè)定時(shí)一定時(shí)間然后再加數(shù)據(jù)吧,這個(gè)要是用到定時(shí)器的中斷。然后配置中斷服務(wù)子程序,在中斷程序中修改計(jì)數(shù)器的值,然后傳遞出來顯示就可以了

5,你定時(shí)器的應(yīng)該是50ms時(shí)間吧,這個(gè)動(dòng)態(tài)做出來的效果應(yīng)該不是很穩(wěn)定吧,才20hz的刷新頻率。

回復(fù)

使用道具 舉報(bào)

ID:20559 發(fā)表于 2011-10-16 22:02 | 顯示全部樓層
關(guān)于你這個(gè)定時(shí)器的這種用法我可以給你提供一點(diǎn)小建議。以后做按鍵掃描濾波的時(shí)候也可以用。還有就是DI輸入采集信號的時(shí)候也可以用,采集多個(gè)數(shù)據(jù),做數(shù)值濾波,很有效的。建議嘗試一下。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表