基于proteus的交通信号灯设计与仿真Word文档下载推荐.docx
《基于proteus的交通信号灯设计与仿真Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于proteus的交通信号灯设计与仿真Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
再转换到状态3,东西方向绿灯通车,南北方向红灯。
过一段时间(25S)转换到状态4,东西方向绿灯闪几次转亮黄等,延时5S,南北方向仍然红灯。
最后循环至南北绿灯,东西红灯。
在这些状态下,有时钟倒数计时。
(35分)
附加功能得分(15分)
如按键、蜂鸣器等
1.1实验目的
●掌握MCS-51单片机定时器/计数器、外部中断、LED数码管显示及I/O口的综合应用。
●了解交通灯的工作原理及设计方法。
●掌握单片机应用系统分析、设计、调试方法。
1.2实验原理图
图1交通灯电路原理图
(1)
图2交通灯电路原理图
(2)
二、软件设置
图3软件仿真
三、硬件原理图
图4硬件模块
图5硬件连接
四、软件流程图
五、设计结果(仿真+实物)
5、1状态一
状态1:
南北方向绿灯通车,东西方向红灯。
经过一段时间(25S),倒计时。
图6状态一
5、2状态二
状态2,南北方向绿灯闪几次转亮黄灯,延时5S,东西方向仍然红灯。
图7状态二
5、2状态三
状态3,东西方向绿灯通车,南北方向红灯,过一段时间(25S)倒计时。
图8状态三
5、2状态四
状态4,东西方向绿灯闪几次转亮黄等,延时5S,南北方向仍然红灯。
图9状态四
六、个人心得
通过keil与proteus与硬件的联合使用,对交通灯综合考虑,实现了红灯30s,绿灯25s,3s绿灯闪烁,2s黄灯亮的交通功能设计。
七、附件
#include<
reg51、h>
#defineucharunsignedchar
#defineuintunsignedint
//uintFUNC=1;
//0:
数码管功能,1:
红绿灯功能
uintT_Count=0;
uintnumber=0;
uinta=0,a1=0,a2=0;
uintb=0,b1=0,b2=0;
sbitLED=P1^0;
intLEDSHOW[10]={0xC0,0xF9,0xA4,0xB0,0X99,0X92,0X82,0XF8,0X80,0x90};
//#defineLEDP1^0
//延时
voidDelayMS(uintx)
{
uchari;
while(x--)
{
for(i=0;
i<
120;
i++);
}
}
//主程序
voidmain()
//定时器0中断初始化代码
TMOD=0x00;
//定时器0工作方式0
TH0=(8192-5000)/32;
//5ms定时
TL0=(8192-5000)%32;
IE=0x82;
//允许T0中断
TR0=1;
//开始循环
while
(1)
{
if(number<
=25&
&
number>
0)//状态一
{
//南北绿灯,东西红灯东西红黄绿南北红黄绿
P1=0xde;
//显示倒计时
b=30-number+1;
b1=b/10;
b2=b%10;
a=25-number+1;
a1=a/10;
a2=a%10;
P2=0X01;
//00001110//南北1
P0=LEDSHOW[a1];
DelayMS(5);
P2=0X02;
//00001101//南北2
P0=LEDSHOW[a2];
P2=0X04;
//00001011//东西1
P0=LEDSHOW[b1];
P2=0X08;
//00000111//东西2
P0=LEDSHOW[b2];
}
if(number>
25&
number<
=30)//状态2
{//南北绿闪烁几次转黄灯,东西继续红灯东西红黄绿南北红黄绿
=28)
if(number%2==1)
elseP1=0xfe;
}
28&
=30)
P1=0Xee;
a=30-number+1;
//显示
30&
=55)//状态3
{//东西绿南北红
P1=0xf3;
//东西红黄绿南北红黄绿
a=55-number+1;
b=60-number+1;
55&
=60)//状态4
{//东西方向绿灯闪几次转亮黄等,延时5S,南北方向仍然红灯东西红黄绿南北红黄绿
=58)
elseP1=0xf7;
}
58&
60)
P1=0Xf5;
a=60-number+1;
//T0中断函数
voidLED_Flash()interrupt1
//恢复初值
if(++T_Count==200)//1s开关一次LED
number++;
60)
number=1;
//FUNC=++FUNC%2;
//LED=~LED;
T_Count=0;