找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索

求助為什么單片機(jī)數(shù)碼管倒計(jì)時(shí)不了?

查看數(shù): 3546 | 評(píng)論數(shù): 12 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁(yè)<-左 右->
    組圖打開(kāi)中,請(qǐng)稍候......
發(fā)布時(shí)間: 2022-1-13 00:48

正文摘要:

我想倒計(jì)時(shí)14秒,但是仿真只有一位數(shù)碼管在顯示,而且也不動(dòng)。 #include <REGX51.H> #define uchar unsigned char #define uint unsigned int sbit DU=P2^0; sbit WEI=P2^1; bit LightFlag=1; uchar code ...

回復(fù)

ID:278457 發(fā)表于 2022-5-3 03:37
樓主你為什么芯片驅(qū)動(dòng),這樣比較簡(jiǎn)單點(diǎn).程序好寫一點(diǎn).見(jiàn)意重新寫一下,反正用不了多少時(shí)間,用個(gè)74hc595或者用74hc573
ID:1022849 發(fā)表于 2022-4-30 00:28
可能是前面數(shù)碼管電平高低不合適
ID:979299 發(fā)表于 2022-1-13 13:54
電路畫(huà)得不怎么樣,總線畫(huà)的可有可無(wú),段端口上拉了就行,不再用排阻了,位端口不用三極管驅(qū)動(dòng)也可以,程序P1口掃描怎么又接到P0口呢
ID:53621 發(fā)表于 2022-1-13 11:24
把Light_Scan(); 提到if(cnt>=500)外面可能會(huì)好點(diǎn)。
ID:53621 發(fā)表于 2022-1-13 11:22
  1. #include <REGX51.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit DU=P2^0;
  5. sbit WEI=P2^1;
  6. bit LightFlag=1;
  7. uchar code DuanMa[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
  8. uchar LightBuf[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
  9. uint cnt;
  10. void main()
  11. {
  12.     uchar num=15;
  13.     EA=1;
  14.     TH0=(65536-2000)/256;
  15.     TL0=(65536-2000)%256;
  16.     TMOD&=0XFC;
  17.     TMOD|=0X01;
  18.     ET0=1;
  19.     TR0=1;
  20.     while(1)
  21.     {
  22.         if(LightFlag==1)
  23.         {
  24.             LightFlag==0;
  25.             num--;
  26.             LightBuf[0]=DuanMa[num%10];
  27.             LightBuf[1]=DuanMa[num/10%10];
  28.         }
  29.         if(num==0)
  30.         {
  31.             P0=0x00;
  32.             LightBuf[0]=DuanMa[num%10];
  33.             LightBuf[1]=DuanMa[num/10%10];
  34.         }
  35.     }
  36. }
  37. void Light_Scan()
  38. {
  39.     static uchar i=0;
  40.     switch(i)
  41.     {
  42.         case 0:P1=0x08;WEI=1;WEI=0;P1=LightBuf[0];DU=1;DU=0;i++;break;
  43.         case 1:P1=0x04;WEI=1;WEI=0;P1=LightBuf[1];DU=1;DU=0;i=0;break;
  44.     }
  45. }
  46. void Interrupt0() interrupt 1
  47. {
  48.     TH0 = (65536 - 2000) / 256;
  49.     TL0 = (65536 - 2000) % 256;

  50.     cnt++;
  51.     if(cnt>=500)
  52.     {
  53.         cnt = 0;
  54.         LightFlag = 1;
  55.         Light_Scan();
  56.     }
  57. }
復(fù)制代碼
ID:415064 發(fā)表于 2022-1-13 09:09
地板 真相
ID:8222 發(fā)表于 2022-1-13 09:01
毛病太多了,要推倒重來(lái)。
ID:744809 發(fā)表于 2022-1-13 08:44
問(wèn)題有些多
ID:584814 發(fā)表于 2022-1-13 08:08
寫法比較清奇,沒(méi)有半句注釋,雙等于號(hào)賦值都不算什么,主程序中竟然有倆這貨

while(1)
……
        while(1);
ID:1001243 發(fā)表于 2022-1-13 08:06
wc86110 發(fā)表于 2022-1-13 02:27
能顯示只是矛盾體結(jié)合而已

。∶荏w結(jié)合,那我該咋辦
ID:96682 發(fā)表于 2022-1-13 02:27
能顯示只是矛盾體結(jié)合而已
ID:213173 發(fā)表于 2022-1-13 00:48
  1. #include <REG51.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit DU =P2^0;
  5. sbit WEI=P2^1;
  6. bit LightFlag;
  7. uchar code DuanMa[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
  8. uchar LightBuf[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
  9. uint cnt;
  10. uchar num=15;

  11. void main()
  12. {
  13.         TMOD|=0X01;
  14.         TH0=(65536-2000)/256;
  15.         TL0=(65536-2000)%256;
  16.         EA=1;
  17.         ET0=1;
  18.         TR0=1;
  19.         while(1)
  20.         {
  21.                 if(LightFlag)
  22.                 {
  23.                         LightFlag=0;
  24.                         if(num>0)
  25.                                 num--;
  26.                 }
  27.         }
  28. }
  29. void Light_Scan()
  30. {
  31.         static uchar i=0;
  32.         switch(i)
  33.         {
  34.                 case 0:DU=1;WEI=1;P0=DuanMa[num/10];DU =0;i=1;break;
  35.                 case 1:DU=1;WEI=1;P0=DuanMa[num%10];WEI=0;i=0;break;
  36.         }

  37. }
  38. void Interrupt0()interrupt 1
  39. {
  40.         TH0=(65536-2000)/256;
  41.         TL0=(65536-2000)%256;
  42.         cnt++;
  43.         if(cnt>=500)
  44.         {
  45.                 cnt=0;
  46.                 LightFlag=1;
  47.         }
  48.         Light_Scan();
  49. }
復(fù)制代碼

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

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

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