交通灯的设计.docx
- 文档编号:5669620
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:8
- 大小:146.11KB
交通灯的设计.docx
《交通灯的设计.docx》由会员分享,可在线阅读,更多相关《交通灯的设计.docx(8页珍藏版)》请在冰豆网上搜索。
交通灯的设计
交通灯的设计
一、概述
1.课题简介
交通灯在人们的生活中起着重要的作用,交通秩序是否良好严重影响着社会生活。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,较少交通事故有明显效果。
2.课题研究的目的和意义
本系统一单片机AT89C52为核心设计交通灯控制器模拟十字路口的各种状态显示及计时情况,本设计由复位电路,定时器时器电路,发光二极管电路组成。
本系统错作简单,模拟能力强,简单的显现十字路口交通灯的运行情况。
二、方案设计与论证
本系统采用AT89C52单片机作为智能交通灯系统的核心。
十字路口共需四组红绿灯,加上转换黄灯,一共是12只灯,设计电路时只用了两组,需用6个端口进行控制,具体I/O口分配为:
P1.0~P1.2分别接主干道的红、绿、黄共六盏信号灯,P1.3~P1.5分别接支干道的红、绿、黄共六盏信号;用两位数码管显示倒计时时间,本系统采用动态显示方式、共阳极数码管。
三、系统设计
本系统主要由复位电路,定时器电路,发光二极管电路组成。
主要完成十字路口交通灯的信号模拟。
A.硬件设计
1.最小系统
⑴单片机:
本次设计使用单片机芯片AT89C52
AT89C52的工作特性:
·内含4KB的FLASH存储器檫写次数1000次;
·内含128字节的RAM;
·具有32根可编程I/O线;
·具有2个16位编程定时器
·具有6个中断源,5个中断矢量,2级优先权的中
断结构;
·具有1个全双工的可编程串行通信接口;
·具有1个数据指针DPTR;
·具有可编程3级程序锁定位;
·AT89C51的工作电源为5(1±0.2)V且典型值为5V;
·AT89C51最高工作频率为24MHZ;
·AT89C51的编程频率为3~24MHZ,编程启动电流和启动电压
分别为1mA、5或12V。
(2)电源
本系统采用直流稳压5V电源
(3)晶振:
本次设计采用的是11.0592M晶振,电路图如下:
两只电容取值30pf
(4)复位电路
复位电路由一个30pf的点解电容和一个1K的电阻并联组成。
在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便可实现初始化状态服务。
为保证应用系统可靠的复位在设计复位电路时,通常使RST引脚保持4ms以上的高电平,只要RST保持高电平,MCS-51单片机就会循环复位;当RST从高电平变为低电平时,MCS-51单片机就从0000H地址开始执行程序,在单片机复位的有效期间,ALE、PSEN引脚输出高电平
。
2.总原理图
3.原件清单
原件名称
型号
数量/个
用途
单片机
AT89C52
1
控制核心
晶振
11.0592MHz
1
晶振电路
电容
30pf
1
晶振电路
电解电容
30uf
1
复位电路
电阻
1K
1
复位电路
发光二极管
LED
12
红、绿、黄灯
电阻
270Ω
12
LED限流
数码管
1
显示时间
电阻
10k
2
上拉电阻
电源
+5V
1
提供+5V
B.软件设计
四、程序清单
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitRED0=P0^0;//东西红灯
sbitYELLOW0=P0^1;//东西黄灯
sbitGREEN0=P0^2;//东西绿灯
sbitRED1=P0^4;//南北红灯
sbitYELLOW1=P0^5;//南北黄灯
sbitGREEN1=P0^6;//南北绿灯
sbitLED1=P3^0;//第一个数码管
sbitLED2=P3^1;//第二个数码管
ucharcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//p1口控制数码管
uchara=0,i=0,j=0;
voiddelay_50ms(uintt)//延时50ms
{uinty;
for(;t>0;t--)
for(y=6245;y>0;y--);
}
voiddelay_1ms(uintt)//延时1ms
{
uintx;
while(--t!
=0)
{for(x=0;x<600;x++);}
}
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
voidInit_Timer0(void)
{
TMOD|=0x01;//使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH0=(65536-50000)/256;//给定初值
TL0=(65536-50000)%256;
EA=1;//总中断打开
ET0=1;//定时器中断打开
TR0=1;//定时器开关打开
}
/***主函数**/
voidmain()
{ucharcount=0;
P0=0xff;
P1=0xff;
Init_Timer0();
while
(1)
{
RED1=1;YELLOW1=1;YELLOW0=1;GREEN0=1;
while((i+10*j)<=40)//东西红灯,南北绿灯40秒
{RED0=0;
GREEN1=0;
LED1=0;LED2=1;P1=tab[i];delay_1ms(3);
LED1=1;LED2=0;P1=tab[j];delay_1ms(3);
}
i=0;j=0;
TR0=0;//关定时器
RED0=1;GREEN0=1;
RED1=1;GREEN1=1;
while(count<5)//黄灯闪烁
{YELLOW0=0;YELLOW1=0;delay_50ms(4);
YELLOW0=1;YELLOW1=1;delay_50ms(4);
count++;
}
TR0=1;count=0;
RED0=1;YELLOW0=1;YELLOW1=1;GREEN1=1;//开定时器
while((10*j+i)<=40)//东西绿灯,南北红灯40秒
{RED1=0;GREEN0=0;
LED1=0;LED2=1;P1=tab[i];delay_1ms(3);
LED1=1;LED2=0;P1=tab[j];delay_1ms(3);
}
i=0;j=0;
}
}
voidtimer0(void)interrupt1
{a++;
TH0=(65536-50000)/256;//重新赋值
TL0=(65536-50000)%256;
if(a==5){
a=0;
i++;
if(i==10)
{i=0;j++;
if(j==10)j=0;
}
}
}
五、实物图
六、调试
在接好实物图后,连上电源,发现二极管不亮,经检查后发现晶振电路的电容用错了,用的是30uf的,应该用30pf的。
后来二极管还是不亮,发现二极管接的是P0口,没有接上拉电阻。
经两次改正之后,接上电源二极管亮了,但是东面的二极管还是不亮,是导线顺序接错了,改正之后二极管正常发光。
数码管很暗,因为数码管电路没有接三极管,电流不够大。
七、总结
虽然这不是第一次做课程设计,但是是第一次做单片机的,在此之前学习单片机书本上的知识,觉得很抽象,或者说是学了不知道怎么运用,但是在做完一次课程设计之后能学到很多,而且映像深刻。
在电脑上仿真好了之后,实物做出来但就是怎么都没有调试到预期的效果,说明焊接电路板时还会出现很多微小的错误,因此焊接也必须认真仔细的完成,不是电路和程序有了之后就一定能把实物完整无误的做出来。
总之,这次单片机课程设计收获很大,学到了很多,以后会更认真的完成其他的课程设计。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯 设计