单片机交通灯设计报告Word下载.docx
《单片机交通灯设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《单片机交通灯设计报告Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
八、心得体会……………………………………………………………………………………………13
附:
参考文献……………………………………………………………………………………14
交通信号灯模拟控制系统设计
一、课程设计的性质和目的
本课程设计的主要目的是通过对电子技术及单片机原理的学习,综合掌握电子电路综合设计的过程,设计要求和具体的设计方法。
通过设计更好的复习、理解模拟电子、数字电子和单片机等课程内容,使理论和实际相结合,加强学生的动手能力以及查阅相关资料解决实际问题的能力,培养学生从事设计工作的整体观念。
二、设计任务
1、完成交通灯的变化规律,即一个十字路口为东西向和南北向,四个路口均有红黄绿三灯和两个LED数码显示管。
交通灯上电以后进入初始状态即东西红灯,南北红灯。
5s后转状态1:
南北绿灯亮通车,东西红灯亮,禁止通行,持续30s;
30s后转状态2:
南北绿灯灭转黄灯闪亮,延时5s,东西仍然红灯;
5s后转状态3:
东西绿灯亮通车,南北转红灯,持续30s;
30s后转状态4:
东西绿灯灭转亮黄闪灯,延时5s,南北仍然红灯。
最后循环至状态1。
2、用8个LED数码管(各方向均有两个LED数码管,分别表示个位和十位),显示倒计时。
倒计时用于提醒驾驶员或行人信号灯发生改变的时间,以便他们在“停止”和“通行”两者做出合适的选择。
3、紧急状态下,通过K1键手动设置,将所有路口的灯变为红灯;
再次按下此键后进入状态1,然后依次循环。
三、设计方案及原理
直接进行片选和驱动LED数码显示的交通灯系统
图1直接进行片选和驱动LED数码显示的交通灯系统
该方案直接采用单片机的I/O口对LED数码管进行数字显示和片选的驱动。
时钟电路和复位电路为单片机提供正常的工作环境。
按键电路为在紧急情况下的应急处理系统,作用是使东西南北的等变为红灯。
红绿灯电路由单片机I/O口直接驱动。
四、元件清单
表1元器件清单
名称
规格
数量
单片机
AT89C51
1
排阻
9脚4.7K
1
7脚1k
2
晶振
11.0592MHz
发光二极管
GREEN
4
RED
YELLOW
数码管
两位共阳
电阻
1K
8
按键
电解电容
10uF
独石电容
30pF
1.AT89C51单片机
AT89C51
是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)Flash存储单元,和功能强大
单片机适合于许多较为复杂控制应用场合.
AT89C51为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:
XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。
RST/Vpd9脚)为复位输入端
口,外接电阻电容组成的复位电路。
VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。
P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
本实验硬件电路搭建采用STC89C51单片机,软件仿真的时候采用的是AT89C52单片机,虽然两个单片机电路功能稍有区别,但是在使用及编程的时候引脚通用,编程无影响。
所以硬件编程代码同样适用于软件仿真。
2.LED数码管
LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别由字母a,b,c,d,e,f,g,dp来表示。
当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的2个8数码管字样了。
如:
显示一个“2”字,那么不同之分,也有0.5寸、1寸等不同的尺寸。
小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。
发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。
常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
LED数码管分为共阴极和共阳极两种,本实验在硬件电路搭建的时候采用的是共阳极LED数码管,这样使用单片机容易驱动,而采用共阴极则不易驱动二极管。
而在proteus软件仿真的时候由于采用共阴极数码管时出现乱码,在寻找错误时也没有发现什么不对的地方,为了方便起见在软件仿真时选用了共阴极LED数码管,这时就需要在P0口驱动的时候加上一个反相器其结果才和硬件电路一样。
3.发光二级管
它是半导体二极管的一种,可以把电能转化成光能;
常简写为LED。
发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。
当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。
不同的半导体材料中电子和空穴所处的能量状态不同。
当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。
常用的是发红光、绿光或黄光的二极管。
发光二极管和数码二极管一样分为共阴极和共阳极两种,本实验在硬件电路搭建的时候采用的是共阳极发光二级管,这样使用单片机容易驱动,而采用共阴极则不易驱动二极管,有时候采用高电平驱动则会产生单片机电压过低而无法点亮二极管致使单片机烧毁的情况。
在proteus软件仿真的时候软件给出的发光二级管如图所示,该红绿灯模块为共阴极发光二级管模块,所以仿真时采用的驱动方式是高电平驱动。
由于是软件仿真,所以不会出现无法驱动的情况,真实情况下需要考虑其驱动情况。
五、硬件电路图
1.单片机主电路
如右图所示,单片机的主电路主要包括时钟电路和复位电路,以及5V电压和接地电压等。
这几部分保证了单片机可以正常的工作。
时钟振荡电路采用内部时钟产生方式,在XTAL1和XTAL2两端跨接晶体或陶瓷振荡器,与内部反相器构成稳定的自击震荡。
其发出的时钟脉冲直接送入片内定时控制部件。
复位电路采用上电+按钮电平复位方式,当按下按钮时,RST管脚高电平触发。
为保证复位可靠,RC时间常数应大于两个机器周期,电容取10uf,电阻取1000欧。
2.交通灯接口电路
交通灯接口电路如右图所示。
硬件电路的发光二级管是共阳极的,采用低电平驱动点亮方式,而在软件中提供的交通灯模块是共阴极的,本汇编程序最初编写是根据硬件电路共阳极二极管采用低电平驱动编写而成,所以在软件仿真的时候需要加一个非门来将P0口输出的低电平变成高电平来驱动交通灯模块发光,经过实验得出其结果和硬件仿真的完全相同。
南北和东西的交通灯显示相同,所以本系统仅仅使用了六个I/O口来进行交通灯的控制。
3.LED数码管显示电路
LED数码管显示电路如下图所示。
该电路采用P2口进行数码管的数字显示,用P0.6、P0.7口对数码管进行片选。
4.键盘接口电路
键盘接口电路如右图所示。
该电路比较简单,原理是先将P1.0口全部置1,然后在延迟代码段中加入检测P1口高低电平的代码,观察P1口是否变化,如果有变化则进入紧急情况的处理代码,在紧急情况处理代码中继续检测P1口状态,如果变回全部为1则跳到初始状态重新开始。
由程序代码可得,该电路连至P1任意一口都是可以的。
用proteus绘制的整体电路图如下图
六、软件设计
Y
N
1.程序流程图
2.主要功能模块
数码管显示模块:
LED:
CLRP0.6
SETBP0.7
MOVA,23H
DECA
MOVCA,@A+DPTR
MOVP2,A
ACALLDELAY
CLRP0.7
SETBP0.6
MOVA,24H
DJNZ20H,RTURN
MOV20H,#0AH
③延迟代码模块:
用于四个数码管的循环扫描延时调用,以此来对计数器进行技术,代码主要如下:
延迟代码段
DELAY:
MOVR6,#100
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
④紧急控制模块该模块的功能是为紧急情况下的应急系统,通过K1键手动设置,将所有路口的等变为红灯,代码主要如下:
紧急控制代码段
KEYIN:
MOVP1,#0FFH
MOVA,P1
CJNEA,#0FFH,QUDOU
LJMPZT0
QUDOU:
LCALLDELAY
CJNEA,#0FEH,ZT0
KEY0:
CLRP0.0
CLRP0.3
SETBP0.1
SETBP0.2
SETBP0.4
SETBP0.5
MOVP2,#03H
SJMPKEY0
3.总汇编程序如下:
ORG0000H
RESET:
AJMPMAIN
ORG000BH
AJMPITOP
ORG0100H
MAIN:
MOVSP,#60H
MOVDPTR,#TAB1
MOVTMOD,#01H
CLRA
MOV20H,#0AH
MOV21H,#00H
MOV22H,#05H
MOV23H,#0AH
MOV24H,#03H
MOV25H,#00H
MOV26H,#00H
MOV27H,#00H
ACALLPT0M0
HERE:
AJMPHERE
PT0M0:
MOVTL0,#0CH
MOVTH0,#0FFH
SETBET0
SETBEA
SETBTR0
RET
ITOP:
PUSHPSW
PUSHAcc
MOVTH0,0FFH
ZT0:
MOVA,21H
CJNEA,#00H,ZT1
CLRP0.0
MOVA,22H
DJNZ20H,RTURN1
DJNZ22H,RTURN1
MOV21H,#01H
MOV22H,#01H
RTURN1:
LJMPRTURN
ZT1:
MOVA,25H
CJNEA,#00H,ZT2
MOVA,26H
SETBP0.0
CLRP0.2
LJMPLED
ZT2:
CJNEA,#01H,ZT3
CPLP0.1
ZT3:
CJNEA,#02H,ZT4
CLRP0.5
SETBP0.3
LJMPLED
ZT4:
CPLP0.4
T:
DJNZ23H,RTURN
MOV23H,#0AH
DJNZ24H,RTURN
INC25H
CJNEA,#03H,XW
XW:
MOV27H,A
DJNZ27H,XW0
MOV26H,#00H
SJMPRTURN
XW0:
INC26H
CJNEA,#00H,RTURN
MOV23H,#05H
MOV24H,#01H
RTURN:
POPAcc
POPPSW
RETI
TAB1:
DB03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H
END
4.仿真结果图
七、遇到的问题
1.单片机的I/O口是否够用,不够用怎么办?
本系统中交通灯需要用掉6个I/O口,数码管显示信号及片选信号需要用到10个I/O口,应急系统按键电路需要用到1个I/O口,加起来一共17个,而单片机共有32个I/O口,所以对于本系统完全够用。
考虑到南北方向和东西方向的交通灯以及数码管显示相同,所以实际上用到的I/O口只有17个。
在本实验中不存在I/O口不够用的情况,若存在不够用的情况,则可以用CD4511译码器和74LS138译码器对数码管的数字和片选信号进行译码,从而减少I/O口的使用。
本系统中I/O口完全够用,而使用CD4511译码器和74LS138译码器不仅增加了电路成本和复杂度,而且还使程序的编写难度增加了,所以本实验中不使用译码器,采用直接片选和数码管信号的输出。
2.如何驱动发光二级管?
设计本系统的时候是先进行实物电路的搭建编程,然后进行软件仿真的。
在实物电路中发光二级管采用的是共阳极二极管,所以是用低电平驱动二极管发光,低电平驱动二极管发光比较容易,不会出现由于发光二级管工作电压过高而不能正常驱动的情况,甚至出现烧毁单片机的情况。
而在proteus软件仿真的时候程序给出的红绿灯模块采用的是共阴极二极管,由于程序已经使用了低电平驱动,为了是工作量减少,所以软件仿真的时候给驱动发光二级管的I/O口加了一个非门,从而程序由低电平驱动变为高电平驱动,大大减少了实验工作量。
3、数码管显示电路如何设计?
本实验一共有八个数码管,每个包括八个数码管显示信号输入引脚和两个片选信号输入端。
由于采用的是双位共阳极数码管,所以设计的方法是用P2口配合上拉电阻输入低电平信号对八个数码管显示信号进行控制;
同时用P0.6和P0.7对双位数码管进行片选。
以此来实现数码管的选择与显示。
4、如何实现定时功能?
采用计数器减1功能来进行定时任务。
确定定时时间,然后依据系统指令执行时间来计算初值,以此达到所需定时时间的目的。
5、如何读取键盘数据?
本实验采用扫描P1口的方式来读取键盘数据。
将键盘和P1的其中一个口相连,对P1口赋初值0FFH,在延时子程序中加入P1口状态的扫描:
MOVA,P1判断是否相同;
CJNEA,#0FFH,QUDOU不同则跳转紧急情况处理段代码进行紧急情况处理。
6.编程产生的hex文件硬件可以使用而软件仿真无法正确执行?
本实验程序是通过硬件逐步编写而成,所以在硬件上可以正确的执行该程序。
但是在进行软件仿真的时候发现其效果和硬件的不一样,数码管可以正确地显示但是红绿灯出现了错误。
由于proteus是做该设计是临时自学的,所以起初认为可能是软件模块有哪方面的设定是自己不知道的,在咨询了同学以后,同学说没有出现类似的情况,于是对程序代码又从头至尾理了一遍,结果发现在给红绿灯的I/O口送数据的时候没有加“#”号,导致其显示混乱,但是这在硬件中没有错误,说明软件仿真和硬件还有有些许区别的。
这个问题究竟为什么会这样到现在还没有明确的答案,不过我会通过各种渠道进行解决的。
八、心得体会
通过这次毕业设计,让我把以前学习到的知识得到巩固和进一步的提高,对已有知识有了更进一步的理解和认识。
使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。
用单片机实现交通灯控制,可以使我们的生活方便快捷。
这项看起来不需要多少技术的工作却是非常需要耐心和精力,短短一周的设计对我来说的意义,不仅仅是让我们把所学的理论知识与实践相结合起来,还提高了我们的实际动手能力和独立思考的能力,虽然我们这次设计仓促,制作有些简单,但我们得到了很多远大于设计的东西!
由于自身能力有限,在课程设计中碰到了很多的问题,我通过查阅相关书籍、资料以及和周围同学交流。
使得这些问题得到了很好地解决。
但是在设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯规则效率还不是很高等等,这需要在实践中进一步完善。
当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我。
参考文献
[1]徐刚强、陈忠平、曹巧媛、曹琳琳、刘琼,《单片机原理及接口》第二版,北京:
清华大学出版社,2011.10,166页。
[2]张毅刚、彭喜元、彭宇,《单片机原理及应用》第二版,北京:
高等教育出版社,2010.5,354页。
[3]周景润、张丽娜,《基于PROTEUS的电路及单片机系统设计与仿真》北京航空航天大学出版社,2006.5
[4]张义和、陈敌北,《例说8051》人民邮电出版社2006.1
[5]赵建领、薛园园,《51单片机开发与应用技术详解》电子工业出版社2009.1
[6]张毅刚、彭喜元、彭宇,《单片机原理及应用》高等教育出版社2011.12目录
第一章项目总论-1-
§
1.1项目简介-1-
1.2可行性研究的范围-2-
1.3编制依据-2-
第二章项目建设背景及必要性-3-
2.1橡胶密封件项目提出的背景-3-
2.2国家产业政策-6-
2.3项目建设的必要性-8-
第三章项目优势-11-
3.1市场优势-11-
3.2技术优势-16-
3.3组织优势-17-
3.4政策优势:
关中—天水经济区发展规划-17-
3.5区域投资环境优势-17-
第四章产品介绍与技术介绍-20-
4.1橡胶密封件产品介绍-20-
4.2产品标准-21-
4.3产品特征及材质-21-
4.4产品方案-26-
4.5产品技术来源-27-
第五章项目产品发展预测-28-
5.1产品行业关联环境分析-28-
5.2行业竞争格局与竞争行为-33-
5.3竞争力要素分析-39-
5.4项目发展预测-41-
5.5竞争结构分析及预测-43-
第六章项目产品规划-47-
6.1项目产品产能规划方案-47-
6.2产品工艺规划方案-47-
6.3项目产品营销规划方案-51-
第七章项目建设规划-58-
7.1项