標(biāo)題:
單片機(jī)人行道交通燈仿真+源碼設(shè)計(jì)
[打印本頁]
作者:
小黑~仔
時(shí)間:
2018-11-25 12:29
標(biāo)題:
單片機(jī)人行道交通燈仿真+源碼設(shè)計(jì)
任務(wù)目的
設(shè)計(jì)一路口的簡單人行道交通燈,指揮車輛和行人安全通行。紅燈亮禁止通行,綠燈亮允許通行。紅燈的設(shè)計(jì)時(shí)間為45秒,綠燈為30秒。傍邊還有一個警示牌寫著“ sidewalk caution”,譯為 人行道,注意安全。來提醒往來的車輛。
人行道圖片.jpg
(47.34 KB, 下載次數(shù): 47)
下載附件
2018-11-25 12:25 上傳
單片機(jī)源程序如下:
#include <reg51.h>
#define uchar unsigned char
#define DATAPORT P3
sbit RS=P1^7;
sbit RW=P1^6;
sbit E=P1^5;
sbit key0=P1^0;
sbit key1=P1^1;
sbit key2=P1^2;
sbit RED=P1^3;
sbit GREEN=P1^4;
unsigned char num;
unsigned char s=45;
unsigned char flag=0;
void init(void);
void writeCOM(uchar i);
void writeData(uchar i);
void fbusy();
void DelayMs(unsigned char y)
{
while(y--);
}
unsigned code DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char code WeiMa[]={0x01,0x02};
void seg(unsigned char c )
{
P2=WeiMa[0];
P0=DuanMa[c%10];
DelayMs(10);
P0=0x00;
P2=WeiMa[1];
P0=DuanMa[c/10];
DelayMs(10);
P0=0x00;
}
void time_djs()
{
if(num==0)
{
s--;
if(s==0)
{
flag++;
s=30;
s--;
if(flag==2)
{
s=45;
flag=0;
}
}
}
}
void LED_RED_GREEN()
{
if(flag==0)
{
RED=1;
}
else if(flag==1)
{
RED=0;
GREEN=1;
if(s==1)
{
GREEN=0;
}
if(s==1)
{
GREEN=0;
}
}
}
void T0_time() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num==20)
{
num=0;
time_djs();
}
}
void Init_Timer0()
{
TMOD = 0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void keycan()
{
if (key0==0)
{
DelayMs(20);
if (key0==0)
{
EA=~EA;
}
while(!key0);
}
if(key1==0)
{
DelayMs(20);
if(key1==0)
{
s++;
}
if(s==45)
{
s=0;
}
while(!key1);
}
if(key2==0)
{
DelayMs(20);
if(key2==0)
{
s--;
}
if(s==0)
{
s=45;
}
while(!key2);
}
}
void init()
{
writeCOM(0x01);
writeCOM(0x38);
writeCOM(0x0f);
writeCOM(0x06);
}
void fbusy()
{
DATAPORT=0Xff;
RS=0;RW=1;
E=0;E=1;
while (DATAPORT&0x80)
{E=0;E=1;}
}
void writeCOM(uchar j)
{
fbusy();
RS=0;RW=0;
E=1;
DATAPORT=j;
E=0;
}
void writeData(uchar j)
{
fbusy();
RS=1;RW=0;
E=1;
DATAPORT=j;
E=0;
}
void lcd_xianshi()
{
writeCOM(0x80);
writeData('s');
writeData('i');
writeData('d');
writeData('e');
writeData('W');
writeData('a');
writeData('l');
writeData('k');
writeCOM(0xc4);
writeData('C');
writeData('a');
writeData('u');
writeData('t');
writeData('i');
writeData('O');
writeData('n');
writeData('!');
}
void main()
{
RED=0;
GREEN=0;
init();
lcd_xianshi();
Init_Timer0();
while(1)
{
seg(s);
keycan();
LED_RED_GREEN();
}
}
復(fù)制代碼
所有資料51hei提供下載:
renxingdeng.zip
(71.74 KB, 下載次數(shù): 26)
2018-11-25 12:29 上傳
點(diǎn)擊文件名下載附件
代碼完整可下載
下載積分: 黑幣 -5
作者:
冷慕雪
時(shí)間:
2018-12-26 15:01
沒仿真文件呀
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1