仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
無(wú)標(biāo)題.png (330.7 KB, 下載次數(shù): 61)
下載附件
2021-3-31 11:03 上傳
設(shè)計(jì)的基本功能如下: a) 4*4矩陣鍵盤電路,用于輸入與控制工作電路。 b) 液晶顯示模塊電路,顯示當(dāng)前工作狀態(tài)。 c) 交通燈模塊電路,用于模擬當(dāng)前路口紅綠燈工作狀態(tài)。 d) 繼電器模塊電路,闖紅燈抓拍功能(燈泡模擬)實(shí)現(xiàn)。 系統(tǒng)工作流程如下: a) 電路啟動(dòng)后,按照預(yù)先設(shè)定的紅燈值設(shè)定進(jìn)行運(yùn)行,東西方向?yàn)榫G燈,南北方向?yàn)榧t燈,且南北方向的闖紅燈抓拍電路工作。 b) 在矩陣鍵盤輸入設(shè)定的倒計(jì)時(shí)值,按下確定鍵,液晶顯示模塊相應(yīng)改變,并通過(guò)串口通信,發(fā)送到工作單片機(jī)上。 c) 工作單片機(jī)收到控制單片機(jī)發(fā)送的數(shù)值后,黃燈閃爍3次,按照設(shè)定的倒計(jì)時(shí)時(shí)間運(yùn)行。
1.png (87.23 KB, 下載次數(shù): 58)
下載附件
2021-3-31 11:10 上傳
單片機(jī)源程序如下:
- #include <reg51.h>
- #include <LM016L.h>
- uchar Dtime_H, Dtime_L;
- uchar Ttime_H = 0,Ttime_L = 0;
- uchar send_t;
- uchar key;
- uchar out = 0;
- uchar cnt = 0;
- uchar code key_code[]={0xEE, 0xDE, 0xBE, 0x7E, 0xED, 0xDD, 0xBD,
- 0x7D, 0xEB, 0xDB, 0xBB, 0x7B, 0xE7, 0xD7, 0xB7, 0x77};
- uchar LED_VALUE[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
- uchar tab_1[] = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39};
- uchar rdkey(){
- uchar scan1, scan2, keycode, j;
- P1 = 0x0F;
- scan1 = P1;
- if((scan1&0x0F)!=0x0F){
- delay(30);
- scan1 = P1;
- if((scan1&0x0F)!=0x0F){
- P1 = 0XF0;
- scan2 = P1;
- keycode = scan1 | scan2;
- for(j = 0;j <=15;j++){
- if(keycode == key_code[j]){
- key = j;
- return(key);
- }
- }
- }
- }
- else P1 = 0xFF;
- return (16);
- }
- void exit_int0() interrupt 0{
- rdkey();
- out = 1;
- }
- void Lcd(){
- LcdInitiate(); //調(diào)用LCD初始化函數(shù)
- WriteAddress(0x00); //將顯示地址指定為第1行第0列
- WriteData('D');
- WriteData('e');
- WriteData('l');
- WriteData('a');
- WriteData('y');
- WriteData(':');
- WriteData(Dtime_H);
- WriteData(Dtime_L);
- WriteData('S');
- WriteAddress(0x40);
- WriteData('E');
- WriteData('n');
- WriteData('t');
- WriteData('e');
- WriteData('r');
- WriteData(':');
- delay(10);
- }
- void send(){
- ES = 1;
- SBUF = send_t;
- while(TI == 0);
- TI = 0;
- ES = 0;
- }
- void main(){
- IT0 = 1;
- IP = 0x01;
- P1 = 0x0F;
- EA = 1;
- EX0 = 1;
-
- TCON = 0x40;
- SCON = 0x50; //方式1 8位
- TMOD = 0x20; //定時(shí)器1 方式2
- TH1 = 0xFD;
- TL1 = 0xFD;
- Dtime_H = tab_1[0];
- Dtime_L = tab_1[5];
- Lcd();
- while(1){
- P1 = 0x0F;
- if(out == 1 && key < 10){
- cnt++;
- if(cnt > 1)
- Ttime_H = Ttime_L;
- Ttime_L = key;
- WriteData(tab_1[Ttime_L]);
- out = 0;
- }else if(out == 1 && key > 10){
- if(key == 11){ //清除
- Lcd();
- out = 0;
- cnt = 0;
- Ttime_H = 0;
- }else if(key == 15){ //確認(rèn)
- Dtime_H = tab_1[Ttime_H];
- Dtime_L = tab_1[Ttime_L];
- out = 0;
- cnt = 0;
- send_t = Ttime_H*10 + Ttime_L;
- send();//send message
- Lcd();
- }else if(key == 13){ //初始化
- Ttime_H = 0;
- WriteData(tab_1[Ttime_H]);
- Ttime_L = 5;
- WriteData(tab_1[Ttime_L]);
- out = 0;
- cnt = 2;
- //send message
- }
- }
- }
- }
復(fù)制代碼
51hei.png (8.34 KB, 下載次數(shù): 55)
下載附件
2021-3-31 20:18 上傳
所有資料51hei提供下載:
traffic light.rar
(37.96 KB, 下載次數(shù): 38)
2021-3-31 11:13 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|