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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8546|回復: 1
打印 上一主題 下一主題
收起左側

簡易交通燈[c語言+仿真圖]完整注釋

[復制鏈接]
跳轉到指定樓層
樓主
簡易交通燈【c語言+仿真圖】完整注釋


單片機源程序:
  1. #include<reg51.h>
  2. #include<absacc.h>

  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define PA XBYTE[0xf8ff]                                //定義A口
  6. #define PB XBYTE[0xf9ff]                                //定義B口
  7. #define PC XBYTE[0xfaff]                            //定義C口
  8. #define CTRL XBYTE[0xfbff]                                //ctrol簡寫為CTRL 定義控制口

  9. uint i = 0, cnt = 120, flag=0;
  10. uchar table[]={                                                                        //共陰極
  11. 0x3f,0x06,0x5b,0x4f,
  12. 0x66,0x6d,0x7d,0x07,
  13. 0x7f,0x6f,0x77,0x7c,
  14. 0x39,0x5e,0x79,0x71
  15. };

  16. void display(int x, int y, int m, int n, int a, int  b, int c, int d);
  17. void delay(int);
  18. void main()
  19. {
  20.     CTRL = 0x80;                           //1000 0000B        方式選擇控制字: A口方式0 A口位輸出 C口高4位輸出 B口方式0 B口輸出 C口低4位輸出
  21.         IP = 0x05;
  22.         TMOD = 0x01;                      //方式寄存器TMOD    0000 0001B 定時器0,方式1
  23.     TH0 = (65536-50000)/256;                          
  24.     TL0 = (65536-50000)%256; //定時50ms
  25.     EA = 1;                                         //開總中斷
  26.     ET0 = 1;                                 //允許定時器0中斷
  27.     TR0 = 1;                                 //開啟定時器0
  28.     while(1)
  29.         {
  30.                 if(cnt > 65)                   //120-cnt 小于55
  31.                 {                                                                                   
  32.                           XBYTE[PA] = 0x33;  //0011 0011B PA2綠燈亮 PA3紅燈亮
  33.                         display(0xfe ,0xfd, 0xfb, 0xf7, (cnt-65)/10, (cnt-65)%10, (cnt-60)/10, (cnt-60)%10);
  34.                 }  //1111 1110B,(P1.0) 1111 1101B,(P1.1) 1111 1011B,(P1.2) 1111 0111B,(p1.3)假設cnt=70即計數50次此時南北綠燈顯示05 東西紅燈顯示10;
  35.                   else if(cnt > 60 && cnt <= 65)        //120-cnt介于 55與60之間
  36.                   {
  37.                     if(flag == 0)                           
  38.                         {
  39.                           XBYTE[PA] = 0x35;//0011 0101B  PA1黃燈亮  PA3紅燈亮  
  40.                           display(0xff ,0xff, 0xfb, 0xf7, (cnt-60)/10,(cnt-60)%10, (cnt-60)/10,(cnt-60)%10);
  41.                         } //1111 1111B,1111 1111B 1111 1011B 1111 0111B 假設cnt=62 即計數120-62=58次,此時南北黃燈顯示數字02 東西顯示紅燈02;
  42.                     if(flag == 1)                           
  43.                         {
  44.                           XBYTE[PA] = 0x35;//0011 0101B         PA1黃燈亮 PA3紅燈亮
  45.                           display(0xfe ,0xfd, 0xfb, 0xf7, (cnt-60)/10,(cnt-60)%10, (cnt-60)/10,(cnt-60)%10);
  46.                         }//1111 1110B,1111 1101B,1111 1011B,1111 0111B 假設cnt=62 即計數120-62=58次,此時南北紅燈顯示數字02,東西顯示綠燈02;
  47.                   }
  48.                 else if(cnt <= 60 && cnt > 5) //120-cnt介于 60與115之間
  49.                   {
  50.                         XBYTE[PA] = 0x1e; //0001 1110B   PA0紅燈亮 PA5綠燈亮
  51.             display(0xfe ,0xfd, 0xfb, 0xf7, (cnt)/10,(cnt)%10, (cnt-5)/10,(cnt-5)%10);
  52.                   }//1111 1110B,1111 1101B,1111 1011B,1111 0111B    假設cnt=40 即計數120-40=80次,此時南北紅燈顯示數字40,東西綠燈顯示35;
  53.                 else if(cnt > 0 && cnt <= 5) //120-cnt 介于 115與120之間
  54.             {
  55.                         if(flag == 0)
  56.                         {
  57.                           XBYTE[PA] = 0x2e;//0010 1110B        PA0紅燈亮 PA4黃燈亮
  58.                           display(0xfe ,0xfd, 0xff, 0xff, (cnt)/10,(cnt)%10, (cnt)/10,(cnt)%10);
  59.                         }//1111 1110B,1111 1101B,1111 1111B,1111 1111B 假設cnt=3即計數120-3=117次,此時南北紅燈顯示數字03,東西黃燈顯示數字03
  60.                     if(flag == 1)
  61.                         {
  62.                           XBYTE[PA] = 0x2e;//0010 1110B         PA0紅燈亮 PA4黃燈亮
  63.                           display(0xfe ,0xfd, 0xfb, 0xf7, (cnt)/10,(cnt)%10, (cnt)/10,(cnt)%10);
  64.                         }//1111 1110B,1111 1101B,1111 1101B,1111 0111B 假設cnt=3即計數120-3=117次,此時南北紅燈顯示數字03,東西黃燈顯示數字03
  65.                 }
  66.         }
  67. }

  68. void display(int x, int y, int m, int n, int a, int  b, int c, int d)                           //數碼管
  69. {
  70.     P1 = x;                                  //P1.0
  71.         PB = table[a];                  //南北方向高位數碼管顯示數字
  72.         delay(1);                          //調用延時函數
  73.     P1 = y;                                  //P1.1
  74.         PB = table[b];                  //南北方向低位數碼管顯示數字
  75.         delay(1);                          //調用延時函數
  76.                                                 
  77.         P1 = m;                                  //P1.2
  78.         PC = table[c];                  //東西方向高位數碼管顯示數字
  79.         delay(1);                          //調用延時函數
  80.     P1 = n;                                  //P1.3
  81.         PC = table[d];                  //東西方向低位數碼管顯示數字
  82.         delay(1);                      //調用延時函數
  83. }

  84. void delay(int z)                         //延時子程序
  85. {
  86. uint x,y;
  87. for(x=z;x>0;x--)
  88. for(y=110;y>0;y--);
  89. }

  90. void mytimer0() interrupt 1                 //定時器中斷0
  91. {
  92.   TH0 = (65536-50000)/256;
  93.   TL0 = (65536-50000)%256;                 //定時50ms

  94.   i++;
  95.   if(i >= 10)                                         //T=50ms*10=500ms
  96.   {
  97.     flag ++;                                        //flag每0.5秒加1
  98.     i = 0;
  99.   }

  100.   if(flag > 1)                                                
  101.   {
  102.           flag=0;
  103.         cnt --;                                                 //cnt每秒減1
  104.   }


  105. …………限于本文篇幅 余下代碼請從51hei下載附件…………
復制代碼

下載:
NO.3.rar (60.16 KB, 下載次數: 80)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:259641 發表于 2017-12-10 10:29 | 只看該作者
沒有黑幣啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美午夜视频 | 久久五月婷| 久久久久1 | 中文字幕久久精品 | 日韩免费在线视频 | 国产成人自拍一区 | 亚洲精品免费看 | 激情久久网 | 国产免费拔擦拔擦8x高清 | 99视频在线| 国产一级精品毛片 | 欧美成人第一页 | 成人网在线观看 | 国产福利在线 | 欧美成人一区二区三区片免费 | 成人自拍av| 在线观看成人 | 日本久草 | 成人在线中文字幕 | 国产视频不卡一区 | 亚洲视频一区二区三区四区 | 99r在线 | 国产精品a久久久久 | 日韩av免费在线观看 | 亚洲精品区| 91国产视频在线 | 欧美激情久久久久久 | 久久毛片 | 国产一区二区三区久久久久久久久 | 亚洲一区二区在线播放 | a级在线免费观看 | 欧美在线观看一区二区 | 日韩一区二区av | 精品国产亚洲一区二区三区大结局 | 成人亚洲综合 | 做a视频在线观看 | 亚洲一区在线日韩在线深爱 | 国产色 | 成人欧美一区二区三区在线播放 | 九九热在线免费观看 | 日韩视频一区二区 |