欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 我的單片機(jī)流水燈程序不知道為什么無(wú)法很好的顯示? [打印本頁(yè)]

作者: sophist    時(shí)間: 2021-10-17 23:24
標(biāo)題: 我的單片機(jī)流水燈程序不知道為什么無(wú)法很好的顯示?
本帖最后由 sophist 于 2021-10-18 09:05 編輯

剛學(xué)51,按郭天祥的那本紅書(shū)和那個(gè)配套的單片機(jī)做的,芯片是89C52RC
具體就是我剛學(xué)流水燈,然后自己寫(xiě)了一個(gè)程序,我想讓一共六個(gè)數(shù)碼管輪流顯示0——9,a——f的功能,就是第一個(gè)顯示1,第二個(gè)顯示2,這樣輪流下去,第六個(gè)管子顯5,第一個(gè)顯6,這樣輪下去。

接下來(lái)是一些問(wèn)題
① 不太明白為什么前面4個(gè)數(shù)碼管總是一起變化,后兩個(gè)數(shù)碼管卻可以單獨(dú)變化,

②有時(shí)候數(shù)碼管會(huì)顯示錯(cuò)誤,這里本應(yīng)該顯示8的,包括后面字符的顯示也有很多有問(wèn)題。有時(shí)候能顯示0,有時(shí)候又不能了

單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. sbit dula=P2^6;  //送段選數(shù)據(jù)的那個(gè)鎖存端,對(duì)應(yīng)U1鎖存器(后面有圖)
  4. sbit wela=P2^7;   //送位選數(shù)據(jù)的鎖存端,對(duì)應(yīng)U2鎖存器
  5. unsigned char code table[]={0X3F,0X06,0X5b,0X4f,0X66,0X6d,0X7d,0X07,0X7f,0X6f,0X77,0X7c,0X39,0X5e,0X79,0X71};                                          unsigned char aa;            //  ↑這個(gè)是數(shù)碼管的字母表,分別實(shí)現(xiàn)0—9,a--f的字符顯示,下面的變量j與之對(duì)應(yīng)。
  6. void delayms(unsigned int xms);    //實(shí)現(xiàn)延遲

  7. void main()
  8. {
  9.         unsigned int i=0,j=0;
  10. while(1)
  11. {
  12.          aa=0XFE;            //每次for語(yǔ)句前重啟aa地址
  13.          for(i=0;i<6;i++)
  14.          {
  15.                  dula=1;                 
  16.                  P0=table[j++];  
  17.                 dula=0;
  18.                  P0=0Xff;

  19.                  wela=1;
  20.                  P0=aa;     //共陰極接法,0的時(shí)候?qū)?yīng)的數(shù)碼管亮
  21.                  wela=0;
  22.                  aa=_crol_(aa,1);                 
  23.                  delayms(1000);
  24.          }
  25. if(j>15)
  26.          j=0;         //防j越界
  27. }
  28. }
  29. void delayms(unsigned int xms)
  30. {unsigned int p,q;
  31.         for(p=xms;p>0;p--)
  32.         for(q=110;q>0;q--);
  33. }
復(fù)制代碼


圖1.jpg (1.26 MB, 下載次數(shù): 83)

前四個(gè)管子一起顯示數(shù)字

前四個(gè)管子一起顯示數(shù)字

圖2.jpg (1.21 MB, 下載次數(shù): 87)

后兩個(gè)管子可以單獨(dú)顯示數(shù)字

后兩個(gè)管子可以單獨(dú)顯示數(shù)字

圖3.jpg (1.18 MB, 下載次數(shù): 89)

本該是8的

本該是8的

4572322a14f352f114b63ea80f55d51.jpg (1.03 MB, 下載次數(shù): 86)

書(shū)上的電路

書(shū)上的電路

作者: PEB188    時(shí)間: 2021-10-18 07:39
給你推薦bilibili 金善愚老師的視頻,我是跟他視頻自學(xué)的。 先點(diǎn)亮一個(gè),一個(gè)的程序理順了,多個(gè)也跟一個(gè)一樣
作者: xianfajushi    時(shí)間: 2021-10-18 08:28
本帖最后由 xianfajushi 于 2021-10-18 16:43 編輯

如果按每6個(gè)顯示的話(huà),數(shù)組個(gè)數(shù)是希望分3次顯示還是分2次顯示?分3次顯示顯然數(shù)組個(gè)數(shù)不足,不足的部分就要另外處理,第一次顯示后切換下一次顯示應(yīng)該按6步進(jìn)才對(duì).
作者: wulin    時(shí)間: 2021-10-18 08:50
天祥板子只有6位數(shù)碼管,樓主初學(xué)單片機(jī)寫(xiě)這個(gè)程序有點(diǎn)難度。給你稍改一下基本可以滿(mǎn)足設(shè)計(jì)目標(biāo)。
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. sbit dula=P2^6;  //送段選數(shù)據(jù)的那個(gè)鎖存端,對(duì)應(yīng)U1鎖存器(后面有圖)
  4. sbit wela=P2^7;   //送位選數(shù)據(jù)的鎖存端,對(duì)應(yīng)U2鎖存器
  5. unsigned char code table[]={//數(shù)碼管字庫(kù)
  6. //         0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
  7.         0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
  8. //   H    J          K         L           N          o    P            U
  9.    0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E};
  10. unsigned char aa;//  ↑這個(gè)是數(shù)碼管的字母表,分別實(shí)現(xiàn)0—9,a--f的字符顯示,雖然我實(shí)在不明白a 怎么顯示。。。
  11. void delayms(unsigned int xms);    //實(shí)現(xiàn)延遲

  12. void main()
  13. {
  14.         unsigned int i=0,j=0;
  15.         while(1)
  16.         {
  17. //                aa=0XFE;            //每次for語(yǔ)句前重啟aa地址
  18. //                for(i=0;i<16;i++)
  19. //                {
  20.                         dula=1;                 
  21.                         P0=table[i];  
  22.                         dula=0;
  23. //                        P0=0Xff;
  24.        
  25.                         aa=~(0x01<<i%6);
  26.                         wela=1;
  27.                         P0=aa;     //共陰極接法,0的時(shí)候?qū)?yīng)的數(shù)碼管亮
  28.                         wela=0;
  29.                         delayms(1000);
  30.                         i=++i%24;
  31. //                        aa=_crol_(aa,1);                 

  32. //                }
  33. //                if(j>15)
  34. //                        j=0;         //防j越界
  35.         }
  36. }
  37. void delayms(unsigned int xms)
  38. {
  39.         unsigned int p,q;
  40.         for(p=xms;p>0;p--)
  41.                 for(q=110;q>0;q--);
  42. }
復(fù)制代碼





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1