交通灯大学课程方案设计任务书Word格式文档下载.docx
《交通灯大学课程方案设计任务书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《交通灯大学课程方案设计任务书Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
通过某一电路的综合设计,了解某一电路的综合设计过程、设计要求进而提高应用能力,分析问题和解决问题的能力
4通过单片机的控制实现对二极管的控制来模拟交通灯控制系统,并利用开关来模拟几种特殊情况(如要求所述),巩固单片机知识培养查阅资料的习惯,训练和提高自学,独立思考的能力,帮助学生养成良好实验习惯
1.3设计要求:
利用STC89C51单片机为核心,制作一个单片机控制的交通灯控制系统:
1、A道和B道上均有车辆要求通过时,A、B道轮流放行。
A道放行5分钟(调试时改为5秒钟),B道放行4分钟(调试时改为4秒钟);
2、一道有车而另一道无车(实验时用开关K0和K1控制),交通灯控制系统立即让有车道放行;
3、有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯,紧急车由K2开关模拟;
4、绿灯转换为红灯时黄灯亮1秒钟。
二、总体设计:
2.1总框图:
2.2电路图:
图1电路原理图
2.3工作原理:
通过输入的程序控制单片机端口高低电平从而实现对二极管的亮灭的控制,其中也有定时器和中断的综合应用,中断:
当中断源发出中断请求时,如果允许的话,单片机暂时中止当时正在执行的主程序,转到中断服务处理程序处理中断服务请求,处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的程序;
定时器则是相当精确的计时器。
本设计使用的是定时器1,定时器T0是有特殊功能寄存器TH0、TH1构成;
通过工作方式寄存器TMOD选择定时器的工作方式,计算出初值并写入TH0、TH1,然后应用中断从而执行中断程序,首先要对IE赋值,开放中断,然后使TR0置位,启动定时器。
2.4所用元件:
STC89C51单片机、IC底座USB接口、八位共阳数码管、复位开关、按钮开关、红黄绿LED灯、排针、12MHZ晶振、10uf电容、30pf电容、4.7K电阻。
三、各部分电路设计:
3.1芯片介绍:
STC89C51单片机引脚图如下:
图2STC89C51引脚图
STC89C51单片机是标准的40引脚双列直插式集成电路芯片,其各引脚功能可分为如下3大类:
1.电源引脚:
电源引脚接入单片机的工作电源。
(1)VCC(40脚):
接+5V电源;
(2)VSS(20脚):
接地。
2.时钟引脚:
该引脚外接晶体引线端
3.控制引脚:
此类引脚提供控制信号,有的引脚还有复用功能:
(1)RST(9脚):
复位信号输入端,高电平有效。
在此引脚加上持续时间大于2个机器周期的高电平,就可以是单片机复位。
在单片机正常工作时,此引脚应为<
0.5V的低电平。
(2)
/
(31脚):
为该引脚的第一功能,及外部程序存储器访问允许控制端。
当
引脚接高电平时,在PC值不超出0FFFH时,单片机读片内程序存储器中的程序;
当PC值超出时,将自动转向读取片外程序存储器空间中的程序。
引脚接高电平时,只读取片外程序存储器空间中的内容,读取的地址范围为0000H~FFFFH,片内的4KBFlash程序存储器不起作用。
为该引脚的第二功能,即在对片内Flash进行编程时,
引脚接入编程电压。
(3)ALE/
(30脚)ALE为CPU访问外部程序存储器或外部数据存储器提供一个地址锁存信号,将低8位地址锁存在片外地址锁存器中。
为该引脚的第二功能,即在对片内Flash进行编程时,此引脚作为编程脉冲输入端。
(4)
(29脚):
片外程序存储器的读选通信号低电平有效。
3.2晶振电路:
下图所示为时钟电路原理图,在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
图3晶振电路
3.3复位电路:
单片机复位的条件是:
必须使RST(9脚)加上持续两个机器周(即24个振荡周期)的高电平。
例如,若时钟频率为12MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。
图4单片机复位电路
3.4显示电路:
图5数码管显示电路
这是一个7位8段的共阳极数码管,把它的八个一脚按一定的顺序分别与单片机P0口的八个脚相连接,然后剩余两个口中的一个与+5v的电源相连接,根据单片机中编写的相应程序可以控制数码管的显示情况,从而达到显示时间的目的。
3.5数码管:
图6数码管引脚图
led数码管(LEDSegmentDisplays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。
位数有半位,1,2,3,4,5,6,8,10位等等....,led数码管根据LED的接法不同分为共阴和共阳两类,本实验用的是共阳极的数码管。
了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
图2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。
3.6C语言程序:
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
voiddelay(uintz)。
uintnum1,num2。
ucharcodetable[]=
{
~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F
}。
//*********南北方向*****************
sbitSN_G=P1^0。
sbitSN_Y=P1^1。
sbitSN_R=P1^2。
//*********东西方向*****************
sbitEW_G=P1^3。
sbitEW_Y=P1^4。
sbitEW_R=P1^5。
//*********控制开关*****************
sbitSN_K=P3^0。
//南北通行
sbitEW_K=P3^1。
//东西通行
sbitSTOP_K=P3^2。
//全部都停
charT0_50ms,T_LOOP,t_ew,t_sn。
bitew。
//----------------------------------
voidinit()
{
TMOD=0x11。
TH0=(65536-50000)/256。
//50ms@12MHz
TL0=(65536-50000)%256。
TR0=1。
ET0=1。
EA=1。
T_LOOP=0。
T0_50ms=0。
ew=1。
}
voidE_W(void)
EW_G=0。
EW_Y=1。
EW_R=1。
SN_G=1。
SN_Y=1。
SN_R=0。
voidS_N(void)
EW_G=1。
EW_R=0。
SN_G=0。
SN_R=1。
voidSTOP(void)
P0=0xFF。
P2=0xFF。
voidmain()
{
init()。
while
(1){。
voidT0_INT(void)interrupt1using0
//重新写入初始值
T0_50ms++。
if(T0_50ms==20){
while(STOP_K==0)STOP()。
while(EW_K==0){E_W()。
P0=0xFF。
P2=0xFF。
while(SN_K==0){S_N()。
if(ew)
{
P0=table[num1++]。
if(num1==6)
{
num1=0。
}
}
t_ew++。
if(t_ew<
=4)E_W()。
if(t_ew==5){E_W()。
EW_Y=0。
if(t_ew==6){//时间比要求的大一些,便于观察比较
t_ew=0。
ew=0。
S_N()。
}}
else{
P2=table[num2++]。
if(num2==5)
{num2=0。
}
t_sn++。
if(t_sn<
=3)S_N()。
//时间
if(t_sn==4){S_N()。
SN_Y=0。
if(t_sn==5){//B道放行4分钟(调试时改为4秒钟)
t_sn=0。
E_W()。
}}}
4、整体电路图:
5、设计总结:
本次设计提供了一个检验我们所学知识的机会,更全面地,综合性运用各种知识的实战经验,为我们接下来的毕业设计打下了一个很好的基础。
从到图书馆和网上查找资料到对电路的设计对电路的调试再到最后电路的成型,使我对所学知识的结构体系有了一个更加深刻的认识和直接的感觉,同时也增加了对于专业知识的运用掌握能力,对自己以后的工作和学习都是一份不可多得的经历。
在设计的过程中自己发现了所学的单片机的知识掌握的不牢,对于一些细节把握的不够精准。
对于一些器件的实际运用不是很熟悉。
同时在设计的过程中,遇到很多事前没想到的问题,例如开关的使用和线路的布局真自己开始做才发现没有自己想象的那么简单,有了一定的思路,结合在一起的时候,也不是那么的容易。
仿真的时候由于对软件的不熟悉,以至于花费了很多时间在元器件的寻找上。
能够根据资料自己设计电路图,不仅是对自己知识的一次检测更是对自己综合能力的一次检验。
同时在编写程序的时候,更是对自己所学知识的检测,如定时器的使用、中断的使用,同时也加深了自己对一些程序的理解和实际运用过程,这也是单片机学习中最重要的部分。
通过这次单片机课程设计,使自己在知识和动手能力方面都有了很大提高,使自己对编程和仿真软件的操作能力大大增强,也极大地提高了自己学习单片机的兴趣,对所学的课程有了一个更加深刻的认识和理解,相信这些都对自己以后的生活学习产生很大的帮助。
六、致谢:
这段时间的课程设计的时间里,我要感谢老师和同学对我的帮助还有的设计伙伴,在这里我要特别感谢我的指导老师刘宏老师,没有他们对我的指导和帮助,我不可能在这么短的时间里顺利的完成这次课程设计的全部内容。
再一次感谢他们对我的无私帮助。
参考文献:
《单片机原理及应用》杨恢先
《十天学会单片机》郭天祥
《单片机的C语言应用程序设计》马忠梅,