久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1144|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

為什么我的單片機數(shù)碼管常顯8 不倒計時啊?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1104316 發(fā)表于 2023-12-15 16:14 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

單片機源程序如下:

  1. #include<reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define DIG0 0x01                 // 定義數(shù)碼管1
  6. #define DIG1 0x02                 // 定義數(shù)碼管2
  7. #define DIG2 0x03                 // 定義數(shù)碼管3
  8. #define DIG3 0x04                 // 定義數(shù)碼管4
  9. void delay(uint i);
  10. void T0_init();
  11. void MAX7219(uchar addr,uchar num);
  12. void MAX7219_init();                        //MAX7219初始化
  13. void display();
  14. sbit DIN=P3^0;                                         //連接MAX7219 DIN引腳
  15. sbit LOAD=P3^1;                                        //連接MAX7219 LOAD 引腳
  16. sbit CLK=P3^2;                                         //連接MAX7219 CLK 引腳
  17. sbit G1=P0^0;                                        //南北紅綠燈
  18. sbit Y1=P0^1;
  19. sbit R1=P0^2;
  20.                                                                  
  21. sbit G2=P1^0;                                        //東西紅綠燈
  22. sbit Y2=P1^1;
  23. sbit R2=P1^2;
  24. uchar NS_S,NS_G,EW_S,EW_G;
  25. uchar NS,EW;
  26. uchar temp=0,i;
  27. uchar code table[10]= {0x7e,0x30,0x6d,0x79,0x33,
  28.                                           0x5b,0x5f,0x70,0x7f,0x7b};                //共陰級數(shù)碼管數(shù)組
  29.                                                          
  30. void delay(uint i)
  31. {
  32.         uint j;
  33.         for(j=0;j<i;j++);
  34. }
  35. void T0_init()
  36. {                                                                 //裝初值10MS
  37.         TMOD=0X01;
  38.         TH0=0XD8;
  39.         TL0=0XF0;
  40.         ET0=1;
  41.         TR0=1;
  42. }
  43. void MAX_write(uchar ch)                 //以8位一個字節(jié)進(jìn)行寫值
  44. {
  45.         uchar j,ads;
  46.     for(j=0;j<8;j++)                            //8位
  47.         {
  48.       ads=ch&0x80;                        //取最高位
  49.       CLK = 0;                        //時鐘線置低
  50.       if(ads)  DIN = 1;
  51.       else      DIN = 0;
  52.       ch=ch<<1;                         //左移一位
  53.       CLK=1;                                     //上升沿,DIN的數(shù)據(jù)寫入到7219
  54.     }
  55. }
  56. void MAX7219(uchar addr, uchar num)                //寫地址,寫數(shù)據(jù)
  57. {
  58.     LOAD = 0;         
  59.         _nop_();
  60.     MAX_write(addr);
  61.          _nop_();
  62.     MAX_write(num);  
  63.          _nop_();
  64.     LOAD = 1;                                  //鎖存
  65. }                                                                          
  66. void MAX7219_init()
  67. {
  68.     MAX7219(0x0c,0x01);                                        //正常狀態(tài)
  69.     MAX7219(0x0b,0x03);                                        //設(shè)置掃描范圍DIG0-3
  70.     MAX7219(0x0a,0x05);                                        //設(shè)置亮度11/32
  71.     MAX7219(0x09,0x00);                                        //采用譯碼方式 ,不譯碼
  72. }
  73. void display()
  74. {
  75.         NS_S=NS/10;                                                         //南北十位,個位
  76.         NS_G=NS%10;
  77.         EW_S=EW/10;                                                         //東西十位,個位
  78.         EW_G=EW%10;
  79.         MAX7219(DIG0,table[NS_S]);                                //南北十位,個位      
  80.     MAX7219(DIG1,table[NS_G]);                                       
  81.     MAX7219(DIG2,table[EW_S]);                                //東西十位,個位
  82.     MAX7219(DIG3,table[EW_G]);
  83. }
  84. void T0_(void)interrupt 1
  85. {
  86.   temp++;
  87.   TH0=0XD8;
  88.   TL0=0XF0;
  89.   if(temp==100)
  90.     {
  91.       temp=0;
  92.       NS--;
  93.       EW--;
  94.           if((NS==0)&&(EW==3))
  95.          {
  96.           NS=3;
  97.           EW=3;
  98.           i=1;
  99.          }
  100.       if((NS==0)&&(EW==0)&&(i==1))
  101.          {
  102.           NS=83;
  103.           EW=80;
  104.           i=2;
  105.          }
  106.      if((NS==3)&&(EW==0))
  107.          {
  108.           NS=3;
  109.           EW=3;
  110.           i=3;
  111.          }
  112.      if((NS==0)&&(EW==0)&&(i==3))
  113.          {
  114.           NS=60;
  115.           EW=63;
  116.           i=4;
  117.          }
  118.         }
  119.         display();
  120. }
  121. void main()
  122. {
  123.         T0_init();
  124.         MAX7219_init();
  125.         EA=1;
  126.         NS=60;                                                                   //初始南北通行60秒
  127.         EW=63;                                                                  
  128.    R2=0,G1=0;                                                             //南北綠燈亮,東西紅燈亮
  129. while (1)
  130.         {
  131.                 uint k;
  132.                 display();        
  133.       switch(i)
  134.                {
  135.               case 1:         R2=1,G1=1;                        //關(guān)閉南北綠燈,東西紅燈
  136.                                                   Y1=0,Y2=0;                        //黃燈閃爍
  137.                       for(k=0;k<3;k++)
  138.                         {
  139.                               Y1=~Y1;
  140.                                                           Y2=~Y2;
  141.                               delay(10000);
  142.                            }        
  143.                                   break;
  144.               case 2: G2=0,R1=0;                         //東西綠燈亮,南北紅燈亮
  145.                       break;
  146.               case 3: G2=1,R1=1;
  147.                                             Y1=0,Y2=0;                        //黃燈閃爍
  148.                       for(k=0;k<3;k++)                //循環(huán)三次進(jìn)行延時閃爍
  149.                         {
  150.                               Y1=~Y1;
  151.                                                           Y2=~Y2;
  152.                               delay(10000);
  153.                             }
  154.                                   break;
  155.               case 4: R2=0,G1=0;                         //東西紅燈亮,南北綠燈亮
  156.                           break;
  157.              }                        
  158.          }
  159. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:235200 發(fā)表于 2023-12-15 20:34 | 只看該作者
因為你用的共陽數(shù)碼管,而MAX7219的A-P各段輸出為低電平,就造成數(shù)碼管各段全亮
回復(fù)

使用道具 舉報

板凳
ID:883242 發(fā)表于 2023-12-17 15:32 | 只看該作者
方向也不對,NS共用一套N,EW共用一套E,分不清楚東南西北。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产黄色大片在线观看 | 欧美色图综合网 | 91国在线视频 | 亚洲视频在线观看免费 | 国产黄色网址在线观看 | 日韩在线小视频 | 黄色毛片黄色毛片 | 欧美日韩精品中文字幕 | 国产成人精品午夜视频免费 | 欧美一级久久 | heyzo在线 | 国产一区二区高清在线 | 一区中文字幕 | 欧美a级成人淫片免费看 | 久久这里只有精品首页 | 久久久久亚洲 | 极品国产视频 | 亚洲欧美精品在线观看 | 五月天天丁香婷婷在线中 | 日韩av在线一区二区三区 | 国产伦精品一区二区 | 日韩一级免费观看 | 99精品国自产在线 | 国产精品一区在线 | 干出白浆视频 | 成人av在线播放 | 黄色播放 | 精品国产乱码久久久久久中文 | 激情91 | 黄色成人免费看 | 日韩三极 | 二区三区av | 日本一卡精品视频免费 | 伦理午夜电影免费观看 | 狠狠伊人 | 伊人最新网址 | 久久精品视频在线播放 | 免费一区 | 美国a级毛片免费视频 | 亚洲一区二区视频 | 日本国产一区二区 |