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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機交通顯示系統源代碼與Proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
ID:833815 發表于 2020-12-30 22:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
由單片機,交通燈狀態顯示系統、LED數碼顯示系統等幾大部分組成。系統除基本的交通燈功能外,還具有倒計時、緊急情況處理等功能,較好的模擬實現了十字路口可能出現的狀況。
本系統采用單片機C語言編寫,主要編寫了主程序,LED數碼管顯示程序等?傮w上完成了軟件的編寫。

交通顯示系統
1.
  設計要求
  • 東西干道和南北干道的通行分左行,右行,直行,其中左行,右行固定15秒;直行固定30秒。

(2)信號燈分綠燈,紅燈,黃燈,每次綠燈換紅燈時,黃燈亮3秒。

(3)東西干道和南北干道交替控制,每次干道綠燈交替時,有3秒鐘所有干道的交通燈都是黃燈閃爍3秒鐘,提示已經進入路口的車輛迅速通過。

(4)當遇到突發狀況時,各個方向靜止通行,顯示紅燈,并維持5秒倒計時。

2.分析

(1)分析目前交通路口的基本控制技術以及各種通行方案,并以此為基礎提出自己的交通控制的初步方案。

(2)及系統應擁有的各項功能,在這里,本設計除了有信號燈狀態控制能實現基本的交通功能,還增加了倒計時顯示提示。

(3)進行顯示電路,燈狀態電路,按鍵電路的設計和各器件的選擇及連接,大體分配各個器件及模塊的基本功能要求。

(4)進行軟件系統的設計,對于本系統,本人采用C語言編寫,對單片機內部結構和工作情況做了充足的研究,了解定時器,中斷以及延時原理,總體上完成了軟件的設計。

圖1系統框圖
3. 硬件設計分析
3.1單片機選型:AT89C51

與MCS-51單片機產品兼容,8k字節在系統可編程Flash存儲器,1000次可檫寫周期,全靜態操作:0Hz~33Hz,三級加密程序存儲器,32個可編程I/O口線,三個16位定時器/計數器八個中斷源、全雙工UART串行通道、低功耗空閑和掉電模式、掉電后中斷可喚醒、看門狗定時器、雙數據指針、掉電標識符。

當8051的ALE及/PSEN兩引腳輸出高電平,RST引腳高電平到時,單片機復位。RST/VPD端的高電平,若直接由啟動瞬間產生,則為啟動復位,若通過按動按鈕產生高電平復位稱手動復位。圖中,上電時,接通電源,電容器C相當于瞬間短路,+5V加到了RST/VPD端,該高電平使8051全機復位。若運行過程中,需要程序從頭執行,只需按動按鈕S,則直接把+5V加到了RST/VPD端,從而復位。顯然,該電路即可以上電復位,也可以手動復位,是常用復位電路之一[5]。

3.3數碼管顯示
圖4數碼管顯示

此處采用的數碼管時共陰極數碼管,G、F、E、D、C、B、A七個端口是輸入端口,對其各位進行賦值,置位則亮,復位則滅,用此來顯示出相應的數字;1、2兩端用來控制高位和低位的選通顯示,只要對端口置位,便可以選擇該端口,并對其所代表的位進行賦值,顯示。正常通行狀況下,數碼管從30秒開始倒計時,各個方向,對應點亮紅綠黃燈。遇到突發狀況,數碼管從5秒開始倒計時,各方向禁止通行,點亮紅燈。

3.4紅綠燈顯示
圖5紅綠燈顯示

每個路口都采用了3個LED燈來顯示,分別代表紅綠黃三種燈,來模擬路口交通的變換。其中D7和D8表示轉彎模塊[6]。

以南北方向舉例,正常狀況下,從30秒開始倒計時,南北方向可直行,即綠燈(D6)亮起,東西方向禁止通行,亮紅燈(D2)。當顯示至15秒時,南北方向可直行和轉彎,即兩個綠燈(D6和D7)亮起,東西方向禁止通行,亮紅燈(D2)。當顯示至3秒時,通知車輛快速通過,南北黃燈(D5)閃爍,東西方向禁止通行,亮紅燈(D2)。

3.5鍵盤:獨立鍵盤+中斷
圖6獨立鍵盤+中斷

采用開關來控制進入中斷,可以在路口出現緊急情況時,拉動開關。使紅綠燈發生相應的改變,已處理緊急情況下車輛通行。

當發生突發情況時,如救護車通過,接通上面的按鍵,各個方向中止當前狀態,即禁止通行,各個方向點亮紅燈,并維持5秒倒計時。當結束5秒倒計時,各個方向恢復到中止前的狀態。





3.6系統原理圖
圖7總電路圖
4. 軟件設計
4.1總體流程
圖8流程圖





4.2循環流程控制思路
圖9流程控制圖
  仿真分析
5.1正常運行狀態
圖10正常運行狀態














5.2左右行顯示
圖11左右行顯示
5.3黃燈閃爍顯示
圖12黃燈閃爍顯示

單片機源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #defineuintunsignedint
  4. #defineucharunsignedchar
  5. uchartemp,aa,nn;
  6. sbitrn=P2^0;              //南北紅燈
  7. sbitnb=P2^1;              //南北黃燈
  8. sbitgn=P2^2;              //南北綠燈
  9. sbitrw=P2^3;              //東西方向紅燈
  10. sbitdx=P2^4;              //東西方向黃燈
  11. sbitgw=P2^5;              //東西方向綠燈
  12. sbitshi=P3^6;              //十位
  13. sbitge=P3^7;//個位
  14. bitflag=0;
  15. ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,
  16. 0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,
  17. 0x79,0x71};/*將數字0123456789的16進制數定義成數組用以顯示*/
  18. voiddelay(uintz);//延遲
  19. voiddisp(uintn);
  20. voidnb_flash(void);
  21. voiddx_flash(void);
  22. voidxint0();
  23. voidtimer0();
  24. voidLED_ON();
  25. voidxint1();
  26. voidnanbei();
  27. voiddongxi();/*將所使用的子函數定義*/
  28. voidmain()
  29. {
  30. uintnum;
  31. num=0;
  32. aa=0;
  33. TMOD=0x01;                                          //方式116位定時器
  34. TH0=(65536-50000)/256;//定義裝入定時器高8位的時間常數                                         
  35. TL0=(65536-50000)%256;//定義裝入定時器低8位的時間常數                                                                                                                                                         
  36. EA=1;                                                        //開關總中斷
  37. ET0=1;                                                        //允許定時器T0中斷
  38. TR0=1;                                                        //打開定時器T0
  39. EX0=1;                                                        //允許外部中斷0中斷
  40. IT0=0;                                                        //禁止T0溢出中斷
  41. EX1=1;                                                        //允許外部中斷1中斷
  42. IT1=1;/*中斷初始化*/              //允許T1溢出
  43. while(1)
  44. {
  45. nanbei();
  46. nb_flash();
  47. dongxi();
  48. }
  49. }
  50. voiddelay(uintz)                                                                      //延遲
  51. {uintx,y;
  52. for(x=z;x>0;x--)
  53. for(y=110;y>0;y--);
  54. }
  55. voidtimer0()interrupt1
  56. {
  57. TH0=(65536-50000)/256;
  58. TL0=(65536-50000)%256;
  59. aa++;
  60. if(aa==9)
  61. {
  62. aa=0;
  63. flag=1;
  64. }
  65. }
  66. voiddisp(uintn)/*顯示子函數*/
  67. {
  68. while(!flag)              //flag=0
  69. {
  70. ge=0;
  71. P0=table[n%10];
  72. delay(50);
  73. shi=1;
  74. ge=1;
  75. shi=0;
  76. P0=table[n/10];
  77. delay(50);
  78. shi=1;
  79. ge=1;
  80. }
  81. if(flag==1)
  82. flag=0;
  83. }
  84. voidnanbei()/*南北方向的紅綠燈和數碼管顯示子函數*/
  85. {
  86. uintnum;
  87. num=30;
  88.               disp(num);
  89. while(num<=30&&num>15)
  90. {
  91. num--;
  92. P2=0xf3;
  93. disp(num);
  94. }
  95. while(num<=15&&num>4)/*南北方向及轉彎的紅綠燈和數碼管顯示子函數*/
  96. {
  97. num--;
  98. P2=0xb3;
  99. disp(num);
  100. }
  101. }
  102. voidnb_flash(void)/*南北方向的黃燈和數碼管顯示子函數*/
  103. {
  104. uinta;
  105. for(a=3;a>0;a--)
  106. {
  107. P2=0xf5;
  108. nb=1;                            //
  109. delay(100);
  110. nb=0;                            //
  111. disp(a);
  112. }
  113. }
  114. voiddongxi()/*東西方向的紅綠燈和數碼管顯示子函數*/
  115. {
  116. uintnum;
  117. num=30;
  118. while(num<=30&&num>15)
  119. {
  120. P2=0xde;
  121.               disp(num);
  122. num--;
  123. }
  124. while(num<=15&&num>3)/*東西方向及轉彎的紅綠燈和數碼管顯示子函數*/
  125. {
  126. num--;
  127. P2=0x5e;
  128. disp(num);
  129. }
  130. while(num<=3&&num>0)/*東西方向的黃燈和數碼管顯示子函數*/
  131. {
  132. P2=0xee;
  133. dx=1;                            //
  134. delay(100);
  135. dx=0;                                          //
  136. disp(num);
  137. num--;
  138. }
  139. }
  140. voidxint0()interrupt2/*中斷定義*/
  141. {
  142. TH0=(65536-50000)/256;
  143. TL0=(65536-50000)%256;
  144. LED_ON();                                          //
  145. }
  146. voidLED_ON()                            //中斷2全紅燈
  147. {
  148. uintb;
  149. rn=0;                                          //南北紅
  150. rw=0;                                          //東西紅
  151. gn=1;                                          //南北綠
  152. gw=1;                                          //東西綠
  153. nb=1;                                          //南北黃
  154. dx=1;                                          //東西黃
  155. for(b=5;b>0;b--)
  156. {
  157. ge=0;
  158. shi=1;
  159. P0=table[b];
  160. delay(1000);
  161. ge=1;
  162. shi=1;
  163. }
  164. return;
  165. }
復制代碼

全部資料51hei下載地址:
基于單片機交通顯示系統的設計與仿真.zip (522.66 KB, 下載次數: 11)

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品69av| 9999国产精品欧美久久久久久 | 国产精品91视频 | 色精品视频| 久久久久成人精品免费播放动漫 | 一级片av| 日韩精品视频一区二区三区 | 人人擦人人干 | 久久综合亚洲 | 欧美精品在线一区 | 国产精品视频一区二区三区, | 一区二区三区四区在线 | 欧美精品久久久 | 久热久 | 成人一区在线观看 | 影音先锋男 | 国产精品成人一区二区三区夜夜夜 | 日韩成人av在线 | 久久久久久久久淑女av国产精品 | 在线看片网站 | 岛国av一区二区 | 精品伊人久久 | 91久久| 91精品国产色综合久久不卡98 | 欧美精品欧美精品系列 | 精久久| 91九色在线观看 | 三级成人片 | 婷婷桃色网 | 国产在线一区二区三区 | 91久久综合| 第四色狠狠 | 国产精品色综合 | 在线小视频 | 噜久寡妇噜噜久久寡妇 | 欧美日韩在线观看一区 | 自拍 亚洲 欧美 老师 丝袜 | 黄色三级毛片 | 中文字幕1区 | 男人av在线播放 | 中文字幕成人 |