資源簡介
51單片機液晶屏交通燈,c語言,模擬交通燈功能。

代碼片段和文件信息
/*******************************************************************
? ???交通燈篇
功能簡介:模擬交通燈,用液晶屏顯示出紅燈綠燈黃燈三種情形,當(dāng)黃燈剩下
三秒時,讓數(shù)字閃爍并顯示出時間剩余情況。
實施步驟:步驟1:完成LCD的顯示功能,開啟定時器0,完成紅燈功能;步驟2:
完成綠燈功能;步驟3:完成黃燈功能,開始讓黃燈閃爍。
********************************************************************
********************************************************************/
#include?
#define?uchar?unsigned?char
#define?uint?unsigned?int
sbit?beep=P2^3; //lcd液晶顯示屏讀使能端,蜂鳴器,數(shù)碼管段選位選的重定義
sbit?wela=P2^7;
sbit?dula=P2^6;
sbit?lcden=P3^4;
sbit?lcdrs=P3^5;
uchar?table[]=“The?light?is?red“; //lcd上交通燈信息提示語
uchar?table1[]=“Please?stop:?“;
uchar?table2[]=“It‘s?your?time?!“;
uchar?table3[]=“Be?careful?:?“;
uchar?table4[]=“Time?is?limited!“;
uchar?iflag; //i用來完成提示語的顯示,flag用來切換信息顯示
uchar?num; //num用來計數(shù)
int?red=59green=59yellow=4;
void?delay(uint?z)
{
uint?ij;
for(i=0;i for(j=0;j<110;j++);
}
void?writecom(uchar?com) //lcd寫命令函數(shù)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void?writedate(uchar?date) //lcd寫數(shù)據(jù)函數(shù)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void?lcdinit() //lcd初始化函數(shù)
{
lcden=0;
wela=0;
dula=0;
writecom(0x38);
writecom(0x0c);
writecom(0x06);
writecom(0x01);
writecom(0x80);
for(i=0;i<16;i++)
{
writedate(table[i]);
delay(5);
}
writecom(0xc0);
for(i=0;i<13;i++)
{
writedate(table1[i]);
delay(5);
}
}
void?lcddisplay(uchar?adduchar?date) //lcd顯示倒計時函數(shù)
{
uchar?shige;
shi=date/10;
ge=date%10;
writecom(0xc0+add);
writedate(0x30+shi);
delay(5);
writedate(0x30+ge);
delay(5);
}
void?timeinit() //定時器0初始化函數(shù)表
{
TMOD=0x01;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
EA=1;
ET0=1;
TR0=1;
}
void?timedelay()?interrupt?1 //定時器中斷函數(shù)
{
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
num++;
if(num==20)
{
num=0;
if(flag==0) //紅燈倒計時
{
red--;
if(red==-1)
{
flag=1;
red=59;
}
}
if(flag==1) //綠燈倒計時
{
green--;
if(green==-1)
{
flag=2;
green=60;
}
}
if(flag==2) //黃燈倒計時
{
yellow--;
if(yellow==-1)
{
flag=0;
yellow=4;
}
}
}
}
int?main()
{
timeinit();
lcdinit();
beep=1;
while(1)
{
if(flag==2)
{
writecom(0x80);
for(i=0;i<16;i++)
{
writedate(table4[i]);
delay(5);
}
writecom(0xc0); //黃燈狀態(tài)下的黃燈的倒計時將會以閃爍形式完成,同時蜂鳴器,led的狀態(tài)形式與數(shù)碼管交通燈的狀態(tài)相同
for(i=0;i<13;i++)
{
writedate(table3[i]);
delay(5);
}
lcddisplay(13yellow);
beep=0;
P1=0xaa;
delay(500);
writecom(0xc0+13);
writedate(0xa0);
writecom(0xc0+14);
writedate(0xa0);
beep=1;
P1=0;
}
if(flag==1)
{
P1=0xaa;
writecom(0x80);
for(i=0;i<16;i++)
{
writedate(table2[i]);
delay(5);
}
writecom(0xc0);
for(i=0;i<13;i++)
{
writedate(table3[i]); //lcd顯示綠燈倒計
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3631??2012-08-30?18:31??綜合應(yīng)用6-液晶屏交通燈\trafficlight.c
?????文件???????7026??2012-08-30?10:46??綜合應(yīng)用6-液晶屏交通燈\trafficlight.LST
?????文件??????11622??2012-08-30?10:46??綜合應(yīng)用6-液晶屏交通燈\trafficlight.OBJ
?????文件???????9886??2012-08-30?10:46??綜合應(yīng)用6-液晶屏交通燈\交通燈
?????文件???????2315??2012-08-30?10:46??綜合應(yīng)用6-液晶屏交通燈\交通燈.hex
?????文件?????????50??2012-08-30?10:46??綜合應(yīng)用6-液晶屏交通燈\交通燈.lnp
?????文件??????15070??2012-08-30?10:46??綜合應(yīng)用6-液晶屏交通燈\交通燈.M51
?????文件???????1009??2012-08-30?12:48??綜合應(yīng)用6-液晶屏交通燈\交通燈.Opt
?????文件????????385??2012-08-30?12:48??綜合應(yīng)用6-液晶屏交通燈\交通燈.plg
?????文件???????1665??2012-08-30?12:48??綜合應(yīng)用6-液晶屏交通燈\交通燈.Uv2
????.......??????1011??2012-08-30?10:46??綜合應(yīng)用6-液晶屏交通燈\交通燈_Opt.Bak
????.......??????1665??2012-08-30?10:46??綜合應(yīng)用6-液晶屏交通燈\交通燈_Uv2.Bak
?????目錄??????????0??2012-08-30?18:31??綜合應(yīng)用6-液晶屏交通燈
-----------?---------??----------?-----??----
????????????????55335????????????????????13
評論
共有 條評論