基于單片機的交通燈C語言程序設(shè)計_第1頁
基于單片機的交通燈C語言程序設(shè)計_第2頁
基于單片機的交通燈C語言程序設(shè)計_第3頁
基于單片機的交通燈C語言程序設(shè)計_第4頁
基于單片機的交通燈C語言程序設(shè)計_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于51單片機的交通燈C語言程序設(shè)計2011-05-07 07:57十字交叉路口的交通燈控制器,是很常見的課程設(shè)計題目。做而論道以前寫過一個,功能十分簡單。最近,綜合了一些百度知道中的題目要求,寫出了一個稍稍復(fù)雜一點設(shè)計方案,使用了大家比較喜歡的C語言編寫程序?;竟δ苋缦拢?1)東西、南北方向各設(shè)有一個綠、黃、紅指示燈,兩個顯示數(shù)碼管。(2)兩個方向交替允許通行,基本放行時間為25s,另外有黃燈閃爍5s。(3)控制人員可以暫停自動的交替,使某個方向可以無限長時間的通行。(4)暫停期間,控制人員可以調(diào)整通行的時間,程序中還設(shè)置了調(diào)整的上下限。(5)暫停之后,燈光將按照設(shè)置的通行時間自動變換通行

2、方向。(6)在正常通行期間,可以強制變換通行方向。強制變換的時候,也是要先顯示閃爍的黃燈,然后切換到指定的方向。程序用PROTEUS仿真成功,并沒有進行硬件實驗。仿真截圖畫面如下。插圖鏈接:#C語言的控制程序如下:/-#include<reg52.h>#define uchar unsigned char#define uint  unsigned int/-定義接口-#define  K_IN  P1      /指定按鍵輸入端口#define  Star_Stop 1  

3、; /指定按鍵輸入端口#define  Time_ADD  2   /指定按鍵輸入端口#define  Time_SUB  4   /指定按鍵輸入端口#define  Turn_EW   8   /指定按鍵輸入端口#define  Turn_SN  16   /指定按鍵輸入端口sbit D_R = P30;sbit D_Y = P31;sbit D_G = P32;/-定義變量-uchar Key_C;  

4、    /新鍵值uchar Key_L;      /上次鍵值uchar Trg;        /觸發(fā)(有鍵按下)trigeruchar Trg_L;      /上次觸發(fā)uchar Key_P;      /確實按下uchar n_2ms, n_0D5s, D_SEC = 60;  /60實際上是30秒uchar code D_seg

5、 =             /共陽段碼   0xc0, 0xf9, 0xa4, 0xb0, 0x99,   0x92, 0x82, 0xf8, 0x80, 0x90; /0-9bit  s_g, run, hong;/-延時-void delay(uint z)             uint x, y; 

6、0;  for(x = z; x > 0; x-)  for(y = 123; y > 0; y-);/-讀按鍵-void KeyRead( void )   /讀按鍵所在端口,送到全局變量     Key_L = Key_C;     /上次按鍵數(shù)值    Trg_L = Trg;    Key_C = K_IN;     /反相讀入,有鍵按下,將讀入1 

7、0;  Trg   = Key_C & (Key_C Key_L);     Key_P = Key_C & Trg_L;  確認(rèn)按下/-初始化-void init(void)    TMOD = 0x01;       /T0定時方式1    TH0 = (65536 - 2000) / 256; /2ms12MHz    TL0 = (6

8、5536 - 2000) % 256;    TR0 = 1;           /啟動T0    ET0 = 1;           /開T0中斷    EA = 1;            /

9、開總中斷/-    D_Y = 0;           /關(guān)燈    D_R = hong;        /紅燈取決于當(dāng)前的hong    D_G = D_R;        /綠燈則相反    n_0D5s = D_SEC; 

10、;   /倒計時的秒數(shù)(2倍的數(shù)值)/-主函數(shù)-void main(void)    hong = 1;          /hong = 1: 東西為紅燈    init();    run = 1;           /開機即運行    while(1) 

11、0;     delay(8);        /延時8ms      if (Star_Stop & Key_P)         run = run;        if (!run)  init();       &

12、#160;    if (Time_ADD & Key_P && !run)         D_SEC += 2;        if (D_SEC > 120)  D_SEC = 120;        n_0D5s = D_SEC;       

13、0;    if (Time_SUB & Key_P && !run)         D_SEC -= 2;        if (D_SEC < 20)  D_SEC = 20;        n_0D5s = D_SEC;        

14、60;   if (Turn_EW & Key_P && run && hong)   n_0D5s = 11;      if (Turn_SN & Key_P && run && !hong)  n_0D5s = 11;      /-T0中斷函數(shù)-void T0_INT(void) interrupt 1    TL0 = (65536 -

15、2000) % 256; /重新寫入初值    TH0 = (65536 - 2000) / 256; /2ms12MHz/-數(shù)碼顯示-    s_g = s_g;            /十位個位交替顯示    if (s_g)  P2 = 0; P0 = D_seg(n_0D5s / 2) / 10; P2 = 1;    else  

16、;    P2 = 0; P0 = D_seg(n_0D5s / 2) % 10; P2 = 2;/-修改時間-    n_2ms-;    if (n_2ms % 5 = 0)  KeyRead();  /10ms讀一次按鍵    if (n_2ms = 0)       n_2ms = 250;         /定時500

17、ms      if (run)            /如果是正在運行        n_0D5s-;          /就倒計時        if(n_0D5s = 1)  n_0D5s = D_SEC

18、 + 1;/減到1就重新開始        if(n_0D5s = D_SEC + 1)  /如果是重新開始          if (hong)       /如果當(dāng)前是紅燈亮            hong = 0;    &

19、#160; /下面就改成綠燈亮            D_Y = 0;       /關(guān)閉黃燈            D_G = 1;       /打開綠燈        

20、60;   D_R = 0;       /關(guān)閉紅燈                    else            /否則就改成紅燈亮            hong = 1;            D_Y = 0;       /關(guān)閉黃燈    

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論