资源简介
51单片机液晶屏交通灯,c语言,模拟交通灯功能。
代码片段和文件信息
/*******************************************************************
交通灯篇
功能简介:模拟交通灯,用液晶屏显示出红灯绿灯黄灯三种情形,当黄灯剩下
三秒时,让数字闪烁并显示出时间剩余情况。
实施步骤:步骤1:完成LCD的显示功能,开启定时器0,完成红灯功能;步骤2:
完成绿灯功能;步骤3:完成黄灯功能,开始让黄灯闪烁。
********************************************************************
********************************************************************/
#include
#define uchar unsigned char
#define uint unsigned int
sbit beep=P2^3; //lcd液晶显示屏读使能端,蜂鸣器,数码管段选位选的重定义
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用来计数
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写命令函数
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void writedate(uchar date) //lcd写数据函数
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void lcdinit() //lcd初始化函数
{
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显示倒计时函数
{
uchar shige;
shi=date/10;
ge=date%10;
writecom(0xc0+add);
writedate(0x30+shi);
delay(5);
writedate(0x30+ge);
delay(5);
}
void timeinit() //定时器0初始化函数表
{
TMOD=0x01;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
EA=1;
ET0=1;
TR0=1;
}
void timedelay() interrupt 1 //定时器中断函数
{
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); //黄灯状态下的黄灯的倒计时将会以闪烁形式完成,同时蜂鸣器,led的状态形式与数码管交通灯的状态相同
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 综合应用6-液晶屏交通灯\trafficlight.c
文件 7026 2012-08-30 10:46 综合应用6-液晶屏交通灯\trafficlight.LST
文件 11622 2012-08-30 10:46 综合应用6-液晶屏交通灯\trafficlight.OBJ
文件 9886 2012-08-30 10:46 综合应用6-液晶屏交通灯\交通灯
文件 2315 2012-08-30 10:46 综合应用6-液晶屏交通灯\交通灯.hex
文件 50 2012-08-30 10:46 综合应用6-液晶屏交通灯\交通灯.lnp
文件 15070 2012-08-30 10:46 综合应用6-液晶屏交通灯\交通灯.M51
文件 1009 2012-08-30 12:48 综合应用6-液晶屏交通灯\交通灯.Opt
文件 385 2012-08-30 12:48 综合应用6-液晶屏交通灯\交通灯.plg
文件 1665 2012-08-30 12:48 综合应用6-液晶屏交通灯\交通灯.Uv2
....... 1011 2012-08-30 10:46 综合应用6-液晶屏交通灯\交通灯_Opt.Bak
....... 1665 2012-08-30 10:46 综合应用6-液晶屏交通灯\交通灯_Uv2.Bak
目录 0 2012-08-30 18:31 综合应用6-液晶屏交通灯
----------- --------- ---------- ----- ----
55335 13
相关资源
- 基于51单片机的汉字滚动显示
- 51单片机实现8个流水灯
- 基于51单片机的智能晾衣架
- at89c51单片机产生5KHZ方波c语言编程
- 51单片机直流电机控制C语言代码.rar
- 51单片机实现CRC校验
- 51单片机电子琴
- 基于51单片机的家庭安全防火防盗系统
- ADS1115的51单片机驱动
- 基于单片机的智能计算器
- 函数信号发生器c语言
- 51单片机用C语言取出奇偶校验位
- 51单片机C语言编程输出方波脉冲
- 51单片机-光立方-C语言
- 51单片机数码管显示万年历的程序
- 原创:51单片机操作ds18b20ds1302,lcd1
- 51单片机驱动步进电机(含电路图和
- 51单片机c语言4x4矩阵键盘实验详细操
- 51单片机-舵机控制C语言程序
- 《新概念51单片机C语言教程--入门提高
- 51单片机DIY制作:旋转LED数字显示电子
- DSM501A基于51单片机code
- 各种语言编写的pcm代码
- 51单片机-数码管时钟秒表
- 国密SM4加密解密51单片机版C源程序.
- 新概念51单片机C语言教程入门、提高
- 51单片机下oled显示ds18b20采集温度
- 电子密码锁设计
- 51单片机超声波测距小车.rar
- 基于51单片机可调电子时钟
评论
共有 条评论