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

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

QQ登錄

只需一步,快速開始

搜索
查看: 5984|回復(fù): 10
收起左側(cè)

基于51單片機(jī)的交通燈程序

[復(fù)制鏈接]
ID:195690 發(fā)表于 2017-5-2 19:21 | 顯示全部樓層 |閱讀模式
對(duì)一個(gè)十字路口設(shè)置交通燈,實(shí)現(xiàn)以下功能:
    1.紅燈,禁止;,黃燈,等待;綠燈,通行;
    2.同時(shí)利用數(shù)碼管進(jìn)行時(shí)間的顯示;
    3.通過按鍵可選擇進(jìn)入緊急狀態(tài)(紅燈全亮)或解除緊急狀態(tài),以及調(diào)整通行的時(shí)間長短
    4.通過按鍵可以修改通行的時(shí)間(增加或者減少)

材料:
   stc10f08xe單片機(jī)一塊兒,或者是一般的80c51單片機(jī);4個(gè)8位共陰數(shù)碼管;12Mhz晶振,電容等,led小燈12個(gè),黃綠紅各四個(gè);導(dǎo)線若干


制作步驟:
1.搭建最小系統(tǒng)版(復(fù)位電路,時(shí)鐘電路,燒寫電路)
2.搭建外圍電路(led小燈,數(shù)碼管,按鍵)
3.測(cè)試板子好壞
4.編寫程序燒寫

注:
   1.由于我這塊單片機(jī)的輸出驅(qū)動(dòng)能力不夠,對(duì)數(shù)碼管采用推挽輸出;
   2.我這塊兒?jiǎn)纹瑱C(jī)在keil中沒有相關(guān)頭文件,建立工程時(shí)需要手動(dòng)添加到工程目錄下,
   3.附件壓縮包中給出了需要的“stc10.h”這個(gè)文件
   4.程序代碼在附件壓縮包里面,名為“升級(jí)版交通燈”
以上便是所有制作步驟,希望對(duì)大家有用

電路板原理圖.pdf

72.68 KB, 下載次數(shù): 40, 下載積分: 黑幣 -5

板子原理圖

頭文件和C程序.zip

6.86 KB, 下載次數(shù): 42, 下載積分: 黑幣 -5

程序

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2017-5-3 03:22 | 顯示全部樓層
樓主的源碼:
  1. /****************************************交通燈程序*********************************************/
  2. /*
  3.         功能:以南北方向?yàn)橹鞲傻溃瑬|西方向?yàn)榇胃傻馈?nbsp;              
  4.                         1、實(shí)現(xiàn)主干道通行15秒轉(zhuǎn)通行注意狀態(tài),黃燈亮3秒。這段時(shí)間內(nèi)次干道保持紅燈常亮  (由數(shù)碼管顯示時(shí)間)
  5.                         2、次干道通行10秒轉(zhuǎn)通行注意狀態(tài),黃燈亮2秒。這段時(shí)間內(nèi)主干道保持紅燈常亮      (由數(shù)碼管顯示時(shí)間)
  6.                         3、緊急按鍵按下,所有路口紅燈
  7. /************************************調(diào)用頭文件、宏定義*****************************************/
  8. #include<stc10.h>
  9. #define D P1
  10. #define uchar unsigned char
  11. #define uint unsigned int
  12. /*******************************************函數(shù)聲明******************************************/
  13. void z1(void);//南北通
  14. void z2(void);//南北注意
  15. void z3(void);//東西通
  16. void z4(void);//東西注意
  17. void gb(void);         //全關(guān)
  18. void jinji(void);//緊急狀態(tài),紅燈全亮
  19. void sm(void);   //鍵盤掃描
  20. void plus();         //加一掃描
  21. void minus();         //減一掃描
  22. void plus2();
  23. void minus2();
  24. void timer(void);//定時(shí)器T1初始化
  25. void time1(void);//定義定時(shí)器T1中斷服務(wù)程序
  26. void display(void);//顯示函數(shù)
  27. void delay(uint a);//10ms延時(shí)函數(shù)
  28. /*************************************定義數(shù)組,全局變量***************************************/
  29. uint duan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9斷碼數(shù)組
  30. uint y,gw,sw,gw2,sw2;                                                                  //全局變量
  31. int time,s,times,time2,times2,time3;
  32. /*********************************定義12個(gè)小燈、數(shù)碼管位、按鍵*********************************/
  33. /*************12個(gè)小燈*******************/     //數(shù)碼管位選//   // 按鍵 //
  34. sbit d1 =P2^0; sbit d2 =P2^1; sbit d3= P2^2;   sbit w1=P0^0;   sbit H1 =P3^6;        sbit H2=P3^7;        
  35. sbit d4 =P2^3; sbit d5 =P2^4; sbit d6= P2^5;   sbit w2=P0^1;   sbit key1 =P0^5;        
  36. sbit d7 =P2^6; sbit d8 =P2^7; sbit d9= P3^2;   sbit w3=P0^2;   sbit key2 =P0^6;
  37. sbit d10=P3^3; sbit d11=P3^4; sbit d12=P3^5;   sbit w4=P0^3;   sbit key3 =P0^7;


  38. /*********************************************主函數(shù)***********************************************/
  39. void main(void)
  40. {                          
  41.         times=18;
  42.         time=15;
  43.         time2=10;
  44.         times2=12;
  45.         y=0,s=0;   //定時(shí)器溢出計(jì)數(shù)初始化
  46.         P1M1=0X00; //推挽輸出,增加數(shù)碼管亮度  
  47.         P1M0=0XFF;        
  48.         timer();   //啟動(dòng)定時(shí)器T1
  49.         while(1)
  50.         {
  51.                 z1();  //主干道通行,綠燈15秒
  52.                 z2();  //主干道注意,黃燈 3秒
  53.                 z3();  //次干道通行,綠燈10秒
  54.                 z4();  //次干道注意,黃燈 2秒
  55.            }                                          
  56. }
  57. /******************不同狀態(tài)函數(shù)、定時(shí)器初始化、定時(shí)器中斷服務(wù)函數(shù)************************/
  58. void z1(void)//南北通行,東西禁止
  59. {           
  60.         while(s<time)
  61.         {
  62.                 sm();
  63.                 plus();
  64.                 minus();
  65.                 if(TR1==1)
  66.                 {
  67.                 //藍(lán)   /黃   /紅
  68.                 d4 =0;d5 =1;d6 =1;//北               
  69.                 d10=0;d11=1;d12=1;//南
  70.                 d7 =1;d8 =1;d9 =0;//東
  71.                 d1 =1;d2 =1;d3 =0;//西
  72.                 }
  73.                 sw2=(time-s)/10;  //數(shù)碼管十位(南北主干道)
  74.                 gw2=(time-s)%10;  //數(shù)碼管個(gè)位        
  75.                 sw=(times-s)/10;
  76.                 gw=(times-s)%10;         
  77.                 display();                  //顯示
  78.                 gb();                          //關(guān)閉
  79.         }        s=0;//對(duì)定時(shí)時(shí)間標(biāo)志位清零重置                                                           
  80. }
  81. void z2(void)//南北注意,東西禁止
  82. {           
  83.         time3=3;
  84.         while(s<time3)
  85.         {        
  86.                 sm();
  87.                 if(TR1==1)
  88.                 {
  89.                 //藍(lán)   /黃   /紅                                                               
  90.                 d4 =1;d5 =0;d6 =1;//北                        
  91.                 d10=1;d11=0;d12=1;//南
  92.                 d7 =1;d8 =1;d9 =0;//東
  93.                 d1 =1;d2 =1;d3 =0;//西
  94.                 }
  95.                 sw2=(time3-s)/10;  //數(shù)碼管十位(南北主干道)
  96.                 gw2=(time3-s)%10;  //數(shù)碼管個(gè)位
  97.                 sw=sw2;                          //東西次干道
  98.                 gw=gw2;         
  99.                 display();                  //顯示
  100.                 gb();                          //關(guān)閉
  101.         }        s=0;
  102. }
  103. void z3(void)//東西通行,南北禁止
  104. {   

  105.         while(s<time2)
  106.         {        
  107.                 sm();
  108.                 plus2();
  109.                 minus2();
  110.                 //藍(lán)   /黃   /紅                                                                        
  111.                 d4 =1;d5 =1;d6 =0;//北                        
  112.                 d10=1;d11=1;d12=0;//南
  113.                 d7 =0;d8 =1;d9 =1;//東
  114.                 d1 =0;d2 =1;d3 =1;//西
  115.                 sw2=(times2-s)/10;;                  //南北主干道
  116.                 gw2=(times2-s)%10;
  117.                 sw=(time2-s)/10;   //數(shù)碼管十位(東西次干道)
  118.                 gw=(time2-s)%10;   //數(shù)碼管個(gè)位                           
  119.                 display();                  //顯示
  120.                 gb();                          //關(guān)閉
  121.         }         s=0;
  122. }
  123. void z4(void)//東西注意,南北禁止
  124. {   
  125.         time3=2;
  126.         while(s<time3)
  127.         {
  128.                 sm();
  129.                 //藍(lán)   /黃   /紅                                                               
  130.                 d4 =1;d5 =1;d6 =0;//北                        
  131.                 d10=1;d11=1;d12=0;//南
  132.                 d7 =1;d8 =0;d9 =1;//東
  133.                 d1 =1;d2 =0;d3 =1;//西
  134.                 sw=(time3-s)/10;   //東西次干道_數(shù)碼管十位
  135.                 gw=(time3-s)%10;   //東西次干道_數(shù)碼管個(gè)位         
  136.                 sw2=sw;                            //南北主干道
  137.                 gw2=gw;                  
  138.                 display();                  //顯示
  139.                 gb();                          //關(guān)閉
  140.         }        s=0;
  141. }
  142. void jinji(void)//紅燈全亮,其余全滅,緊急狀態(tài)
  143. {
  144.          //藍(lán)   /黃   /紅                                                               
  145.         d4 =1;d5 =1;d6 =0;//北                        
  146.         d10=1;d11=1;d12=0;//南
  147.         d7 =1;d8 =1;d9 =0;//東
  148.         d1 =1;d2 =1;d3 =0;//西        
  149. }
  150. void gb(void)//全部關(guān)閉
  151. {
  152.         //藍(lán)   /黃   /紅                                                               
  153.         d4 =1;d5 =1;d6 =1;//北                        
  154.         d10=1;d11=1;d12=1;//南
  155.         d7 =1;d8 =1;d9 =1;//東
  156.         d1 =1;d2 =1;d3 =1;//西
  157. }
  158. void delay(uint a)        //@11.0592MHz        10ms延時(shí)(使用燒錄軟件生成的延時(shí)代碼)
  159. {
  160.         for(a;a>0;a--)
  161.   {
  162.         unsigned char i, j;
  163.         i = 18;
  164.         j = 235;
  165.         do
  166.         {
  167.                 while (--j);         
  168.         } while (--i);
  169.   }
  170. }
  171. void display()                 //數(shù)碼管顯示
  172. {
  173.         w1=0;                         //十位                 
  174.         D=duan[sw];                        
  175.         delay(1);
  176.         w1=1;
  177.         D=0X00;                                                                                 
  178.         w2=0;                         //個(gè)位
  179.         D=duan[gw];
  180.         delay(1);
  181.         w2=1;
  182.         D=0x00;        
  183.         w3=0;                         //十位                 
  184.         D=duan[sw2];                        
  185.         delay(1);
  186.         w3=1;
  187.         D=0X00;                                                                                 
  188.         w4=0;                         //個(gè)位
  189.         D=duan[gw2];
  190.         delay(1);
  191.         w4=1;
  192.         D=0x00;               
  193. }                                                                 
  194. void timer(void)
  195. {
  196.         TMOD=0X10;
  197.         TH1=(65536-50000)/256;          //50ms定時(shí)
  198.         TL1=(65536-50000)%256;
  199.         EA=1;
  200.         ET1=1;
  201.         TR1=1;
  202. }
  203. void time1(void) interrupt 3 //定時(shí)器T1中斷服務(wù)程序
  204. {                        
  205.         TH1=(65536-50000)/256;          //50ms定時(shí)
  206.         TL1=(65536-50000)%256;
  207.         y++;         
  208.         if(y==20)
  209.         {s++; y=0;}
  210. }

  211. void sm(void)//緊急狀態(tài)掃描函數(shù)
  212. {
  213.         H1=0;                                        //按鍵另一端置0,當(dāng)按鍵按下相當(dāng)于接地,由原理圖,沒有按下時(shí),通過上拉電阻拉高了
  214.         if(key1==0)                                //判斷按鍵是否按下
  215.         {
  216.                 delay(2);                        //消抖
  217.                 while(!key1)                        //松手檢測(cè)                           
  218.                 TR1=!TR1;                        //關(guān)閉定時(shí)器
  219.                 while(key1==1)            //四個(gè)方向全為紅燈,進(jìn)入緊急狀態(tài)
  220.                 {        
  221.                         gb();
  222.                         jinji();                //打開緊急狀態(tài)
  223.                         gw=gw2=sw=sw2=8;
  224.                         display();               
  225.                 }
  226.                 while(key1==0)                //松手檢測(cè)
  227.                 display();           
  228.                 TR1=1;                           //打開定時(shí)器,跳出
  229.         }
  230. }
  231. void plus()
  232. {
  233.         H1=0;                                        //按鍵另一端置0,當(dāng)按鍵按下相當(dāng)于接地,由原理圖,沒有按下時(shí),通過上拉電阻拉高了
  234.         if(key2==0)                                //判斷按鍵是否按下
  235.         delay(2);                        //消抖
  236.         if(key2==0)
  237.         {
  238.         time+=1;
  239.         times+=1;}
  240.         while(!key2);                        //松手檢測(cè)         
  241. }
  242. void minus()
  243. {
  244.         H1=0;                                        //按鍵另一端置0,當(dāng)按鍵按下相當(dāng)于接地,由原理圖,沒有按下時(shí),通過上拉電阻拉高了
  245.         if(key3==0)                                //判斷按鍵是否按下
  246.         delay(2);                        //消抖
  247.         if(key3==0){
  248.         time-=1;
  249.         times-=1;}
  250.         while(!key3);                        //松手檢測(cè)         
  251. }
  252. void plus2()
  253. {
  254.         H2=0;                                        //按鍵另一端置0,當(dāng)按鍵按下相當(dāng)于接地,由原理圖,沒有按下時(shí),通過上拉電阻拉高了
  255.         if(key2==0)                                //判斷按鍵是否按下,在這里相當(dāng)于key5
  256.         delay(2);                        //消抖
  257.         if(key2==0)
  258.         {
  259.         time2+=1;
  260.         times2+=1;}
  261.         while(!key2);                        //松手檢測(cè)         
  262. }
  263. void minus2()
  264. {
  265.         H2=0;                                        //按鍵另一端置0,當(dāng)按鍵按下相當(dāng)于接地,由原理圖,沒有按下時(shí),通過上拉電阻拉高了
  266.         if(key3==0)                                //判斷按鍵是否按下,這里相當(dāng)于key6
  267.         delay(2);                        //消抖
  268.         if(key3==0){
  269.         time2-=1;
  270.         times2-=1;}
  271.         while(!key3);                        //松手檢測(cè)         
  272. }

復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:187675 發(fā)表于 2017-5-3 07:50 | 顯示全部樓層
原理圖也一并貼一下,更好
回復(fù)

使用道具 舉報(bào)

ID:188062 發(fā)表于 2017-5-3 15:42 | 顯示全部樓層
贊一個(gè)
回復(fù)

使用道具 舉報(bào)

ID:195690 發(fā)表于 2017-5-3 21:50 | 顯示全部樓層
rs7cai 發(fā)表于 2017-5-3 07:50
原理圖也一并貼一下,更好

原理圖在附件里面
回復(fù)

使用道具 舉報(bào)

ID:195690 發(fā)表于 2017-5-4 21:04 | 顯示全部樓層
aojun 發(fā)表于 2017-5-4 10:09
****************************************/ #include #define D P1 #define uchar unsigned char #define  ...

這是干嘛呀,把程序粘貼到這兒
回復(fù)

使用道具 舉報(bào)

ID:229785 發(fā)表于 2017-9-18 09:55 | 顯示全部樓層
兄弟你這太坑了,一共就5個(gè)幣子,看了之后不能下載,啥玩意啊
回復(fù)

使用道具 舉報(bào)

ID:253149 發(fā)表于 2017-11-29 20:14 | 顯示全部樓層

黑幣不夠了,好煩
回復(fù)

使用道具 舉報(bào)

ID:195690 發(fā)表于 2019-2-18 17:22 | 顯示全部樓層
lk177 發(fā)表于 2017-11-29 20:14
黑幣不夠了,好煩

黑幣不夠的話可以通過上傳資料獲取,上傳你認(rèn)為有價(jià)值的資料,整理上傳,就會(huì)有很多黑幣了
回復(fù)

使用道具 舉報(bào)

ID:195690 發(fā)表于 2019-12-24 09:15 | 顯示全部樓層
lk177 發(fā)表于 2017-11-29 20:14
黑幣不夠了,好煩

應(yīng)該沒問題
看我另一個(gè)里面有全套資料,5個(gè)幣
回復(fù)

使用道具 舉報(bào)

ID:676329 發(fā)表于 2019-12-28 21:41 | 顯示全部樓層
好用好好用支持
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩免费毛片视频 | 久久精品免费观看 | 免费观看一级视频 | 国产精品美女久久久久久久网站 | 日韩精品免费 | www.亚洲| 日韩中出| 人人叉| 免费观看视频www | 丁香五月网久久综合 | 91日韩| 国产成人福利在线观看 | 亚洲精品二区 | 青青草综合| 日韩在线播放一区 | 国产综合久久 | 色妞av| 午夜午夜精品一区二区三区文 | 国产一区二区三区亚洲 | 九九九视频在线观看 | 麻豆视频国产在线观看 | 亚洲精品粉嫩美女一区 | 女生羞羞视频 | 91视频一88av | 综合伊人 | 日韩一区在线视频 | 日韩三级| 日本天堂视频在线观看 | 亚洲欧美激情精品一区二区 | av毛片在线免费观看 | 欧美激情精品久久久久久变态 | 日韩毛片网 | 亚洲不卡在线观看 | 国产精品免费一区二区 | av中文字幕在线播放 | 国产中文视频 | 日韩在线资源 | 精品久久久久久久 | 国产精品视频久久 | 精品日韩在线 | 亚洲国产成人精品女人久久久 |