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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

智能交通燈代碼原理圖與PCB圖(AD制作)

[復制鏈接]
跳轉到指定樓層
樓主
基于單片機控制的[url=]智能[/url]交通燈

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


單片機源程序如下:
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. sbit  k1=P1^6;
  6. sbit  k2=P1^7;
  7. sbit  k3=P2^7;
  8. sbit  k4=P3^0;

  9. sbit yellowled_nb=P1^4;        //南北黃燈
  10. sbit yellowled_dx=P1^1;        //東西黃燈
  11. uchar code table[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//共陰
  12. uchar data dig;        //位選
  13. uchar data led;        //偏移量
  14. uchar data buf[4];
  15. uchar data sec_dx=20;//東西數碼指示值
  16. uchar data sec_nb=20;//南北數碼指示值
  17. uchar data set_timedx=20;
  18. uchar data set_timenb=20;//倒計時設置的鍵值保存

  19. uchar data b;//定時器中斷次數
  20. bit time;//燈狀態循環標志
  21. bit int0_time;//中斷強行標志
  22. bit   set;//調時方向切換鍵標志
  23. void delay(int ms);//延時子程序
  24. void key();//按鍵掃描子程序
  25. void key_to1();//鍵處理子程序
  26. void key_to2();
  27. void display();//顯示子程序
  28. void main()
  29. {
  30.         TMOD=0X01;        
  31.         TH0=0X3C;
  32.         TL0=0XB0;
  33.         EA=1;
  34.         ET0=1;
  35.         TR0=1;

  36.         EX0=1;
  37.         EX1=1;
  38.         P1=0Xf3;// 東西通行
  39.         while(1)
  40.         {
  41.                 key(); //調用按鍵掃描程序
  42.                 display(); //調用顯示程序

  43.         }        
  44. }



  45. void key()        //按鍵掃描子程序
  46. {
  47.         if(k1!=1)
  48.         {
  49.                 delay(10);
  50.                 if(k1!=1)
  51.                 {
  52.                         while(k1!=1);
  53.                         key_to1();
  54.                 }
  55.         }

  56.         if(k2!=1)
  57.         {
  58.                 delay(10);
  59.                 if(k2!=1)
  60.                 {
  61.                         while(k2!=1);
  62.                         key_to2();
  63.                 }
  64.         }
  65.          
  66.           if(k4!=1)
  67.          {
  68.                  delay(10);
  69.                  if(k4!=1)
  70.                  {
  71.                          while(k4!=1);
  72.                          set=!set;
  73.                  }
  74.          }

  75.         if(k3!=1&&int0_time==1)
  76.         {        
  77.                 TR0=1;   //啟動定時器
  78.                 sec_nb=20;
  79.                 sec_dx=20;
  80.                 int0_time=0;//清標志
  81.                
  82.          }         else if(k3!=1&&int0_time==0)
  83.                     {
  84.                         TR0=1;
  85.                         set_timenb=sec_nb;
  86.                         set_timedx=sec_dx; //設置的鍵值返回保存
  87.                         }
  88.          
  89. }

  90. void display()
  91. {
  92.                
  93.                 buf[1]=sec_dx/10; //第1位 東西秒十位
  94.                 buf[2]=sec_dx%10; //第2位 東西秒個位
  95.                 buf[3]=sec_nb/10; //第3位 南北秒十位
  96.                 buf[0]=sec_nb%10; //第4位 南北秒個位
  97.                
  98.                 P0=table[buf[led]];
  99.                 delay(2);        //先延時,提前顯示一位了
  100.                 P2=dig;
  101.                 dig=_crol_(dig,1);
  102.                 led++;
  103.                 if (led==4)
  104.                 {led=0;
  105.                 dig=0xfe;
  106.                 }
  107. }

  108. void time0(void) interrupt 1 using 1  //定時中斷子程序
  109. {
  110.         b++;
  111.         if(b==10)          // 定時器中斷次數。
  112.         {
  113.                 b=0;
  114.                 sec_dx--;
  115.                 sec_nb--;
  116. /******************南北黃燈閃爍判斷*************************/               
  117.                 if(sec_nb==3&&time==0)
  118.                
  119.                         {
  120.                          yellowled_nb=1;//南北黃燈亮
  121.                          delay(300);
  122.                          yellowled_nb=0;
  123.                          }
  124.                         
  125.                         if(sec_nb==2&&time==0)
  126.                         {
  127.                         yellowled_nb=1;//南北黃燈亮
  128.                          delay(300);
  129.                          yellowled_nb=0;
  130.                         }
  131.                         
  132.                         if(sec_nb==1&&time==0)
  133.                         {
  134.                         yellowled_nb=1;
  135.                          delay(300);
  136.                          yellowled_nb=0;
  137.                            }
  138.                  
  139. /*******************東西黃燈閃判斷************************/                    
  140.                 if(sec_dx==3&&time==1)
  141.                 {
  142.                          yellowled_dx=1;//南北黃燈亮
  143.                          delay(300);
  144.                          yellowled_dx=0;
  145.                 }
  146.                         
  147.                         if(sec_dx==2&&time==1)
  148.                         {
  149.                         yellowled_dx=1;//南北黃燈亮
  150.                          delay(300);
  151.                          yellowled_dx=0;
  152.                         }
  153.                         
  154.                         if(sec_dx==1&&time==1)
  155.                         {
  156.                         yellowled_dx=1;
  157.                          delay(300);
  158.                          yellowled_dx=0;
  159.                            }        
  160.                         
  161.                
  162. /*******************************************/


  163.                         if(sec_dx==0||sec_nb==0) //東西或南北先到達1S時即開始重新計時
  164.                         {
  165.                                 sec_dx=set_timedx;
  166.                                 sec_nb=set_timenb; //第一次循環結束重置

  167.                                  if(time==1)
  168.                                 {
  169.                                         P1=0XF3;  //東西通行
  170.                                 }
  171.                                 else
  172.                                 {
  173.                                         P1=0xde; //南北通行
  174.                                 }
  175.                                 time=!time;   //取反
  176.                                 
  177.                         }
  178.                
  179.         }
  180. }

  181. void key_to1()
  182. {
  183.         TR0=0;         //關定時器
  184.         
  185.         if(set==0)
  186.         sec_nb++; //南北加1S
  187.         else
  188.         sec_dx++;//東西加1S
  189.         
  190.         if(sec_nb==100)
  191.                 sec_nb=1;
  192.         if(        sec_dx==100)
  193.                 sec_dx=1;//加到100置1
  194.         
  195. }
  196. void key_to2()
  197. {
  198.         TR0=0;//關定時器
  199.         
  200.         if(set==0)
  201.         sec_nb--;  //南北減1S
  202.         else
  203.         sec_dx--;  //東西減1S
  204.         if(sec_nb==0)
  205.                 sec_nb=99;        
  206.         if(        sec_dx==0 )
  207. ……………………

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

所有資料51hei提供下載:
7e26631c4e26dbdaaa2dc0d451d0e189.rar (1.34 MB, 下載次數: 75)



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

使用道具 舉報

沙發
ID:72444 發表于 2017-6-20 16:20 | 只看該作者
不錯,支持下
回復

使用道具 舉報

板凳
ID:1035448 發表于 2022-6-20 09:43 | 只看該作者
有沒有運行結果圖啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区中文字幕 | 亚洲精品久久久一区二区三区 | 欧美日本韩国一区二区 | 亚洲国产中文字幕 | 欧美video | 久久亚洲一区二区 | 日韩国产精品一区二区三区 | 国产午夜在线 | 成人av电影天堂 | 天天操一操 | 亚洲成人中文字幕 | 精品美女久久久 | 国产美女在线观看 | 久久99精品久久久久 | 超碰高清| 天天草草草 | 亚洲精品在线观看视频 | 日韩电影免费在线观看中文字幕 | 免费观看一级毛片 | 久久久免费精品 | 日日草夜夜草 | 亚洲二区在线 | 日韩一二区 | 久久99精品国产麻豆婷婷 | 国产色爽 | 黄色片在线| 色黄视频在线 | 日韩手机在线视频 | 精品国产成人 | 伊人久久大香线 | 国产精品色哟哟网站 | 狠狠的干狠狠的操 | 久久精品国产一区二区三区 | 区一区二在线观看 | 欧美精品一区二区三区在线 | 欧州一区二区 | 国产精品久久久久久中文字 | 99视频入口 | 成人在线精品视频 | 日本三级日产三级国产三级 | 亚洲一区二区av |