单片机交通灯.docx
- 文档编号:9179266
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:13
- 大小:87.22KB
单片机交通灯.docx
《单片机交通灯.docx》由会员分享,可在线阅读,更多相关《单片机交通灯.docx(13页珍藏版)》请在冰豆网上搜索。
单片机交通灯
交通灯控制器的制作
陈国强俞沛宙贺康政
湖南衡阳南华大学(421001)
指导老师:
王彦
摘要:
本设计采用单片机C51和七段数码管作为交通灯的控制和显示核心。
并可以通过控制按键对时间进行设置从而控制交通灯的不同时刻的状态。
整个系统由时基信号模块,LED显示模块和交通灯状态控制模块这三大模块构成。
基于这些硬件设计,使用了一套软件算法,实现交通灯在不同时刻的状态控制。
关键字:
C51单片机,动态显示,74LS373.
Abstract
Thesystemadoptsmicrocontrollers,C51thesystemcandisplaythetimeandtrafficlight.Wealsocansetthetimebyusingbutton.Threefunctionalmodulesconstitutethissystem:
thetransportationlightcontrolmoduleandthetimecontrolmoduleandbasictimesignalmodules.
Keyword:
C51microcontrollers,movedisplay,74s373
目录
第一章系统的整体设计………………………………………3
1.1方案的选择和论证…………………………………………3
1.22小结……………………………………………………4
第二章系统具体设计与实现……………………………………4
2.1系统原理及工作过程…………………………………………4
2.2系统流程图…………………………………………………4
2.3模块设计……………………………………………………5
2.3.1时基模块原理及设计……………………………………5
2.3.2设置时钟模块……………………………………………6
2.3.3显示模块设计……………………………………………7
第三章实际测试…………………………………………………7
3.1测试设备………………………………………………………7
3.2测试结果………………………………………………………7
第四章总结………………………………………………………9
参考文献……………………………………………………9
附录
一.系统整体设计
1.1方案的选择和论证
根据题目要求,系统可以划分为几个基本模块,如图1-1所示。
图1-1
对各模块的实现,分别有以下一些不同的设计方案:
(1).标准时基模块
方案一:
采用程序设计对PLD芯片进行晶振分频。
这个方案的优点是时钟信号非常精确,而且易于程序调整。
但其程序设计和电路比较复杂,占用的系统资源较多,价格也比较昂贵。
方案二:
采用直接从晶振分频得到1HZ信号。
该方案比较容易实现,但精确度不高,很难达到题目精确度的要求。
方案三:
采用单片机C51经过延时程序产生1HZ时基信号。
在单片机程序设计中通过延时程序的循环产生所需要的1HZ的时基信号,该方案精确度比较高,而且也易于程序调整,电路结构简单,系统资源占用较小。
基于上述理论分析,拟订方案三。
(2).时钟控制模块
方案一:
采用单片机对键盘扫描和读取来控制不同时间值。
通过单片机对键盘的引脚不停的扫描,读入某时刻按下的键,通过单片机内部查表程序译出按键所对应的值从而使时间的值发生改变。
该方案简单,常用,资源占用较小。
方案二:
采用PLD芯片引脚锁定,通过开关的通和短控制PLD中计数器的值。
该方案程序设计简单,但按键不直观不易使用,且用了PLD芯片而使成本过高。
基于上述理论分析,拟订方案一。
(3).显示模块
方案一:
采用液晶屏幕显示时钟和红绿灯。
该方案显示清晰,体积比较小,易于PCB板的印制。
但其程序设计非常复杂,成本过高。
方案二:
采用七段数码管显示时钟和红绿灯。
该方案简单,可以很好的通过单片机连用实现功能。
成本较低。
基于上述理论分析,拟订方案二。
1.2小结
经过仔细的论证和比较,决定了系统各个主要模块的最终方案如下:
标准时基模块:
采用单片机C51的延时程序产生1HZ的时钟信号驱动LED。
时间设置模块:
采用键盘和单片机控制进行时间设置。
显示模块:
采用普通七段显示数码管显示。
系统的模块图如下:
图1-2
二.系统具体设计与实现
2.1系统原理及工作过程
本系统是以C51单片机作为时钟计数、设置,交通灯状态控制和时间显示的控制核心,配合其他的元件和汇编语言完成设计的。
系统的工作过程如下:
接通电源后,单片机开始工作,执行内部程序,在七段显示码上显示7:
00,也可以通过按键设置来改变时间值。
秒、分、小时都有对应的按键,按下键盘,对应的值加一,并显示出来。
绿灯在接通电源时也被点亮,内部的计数程序开始运行,在持续点亮45s后,跳转执行黄灯点亮,黄灯亮5s后熄灭,红灯点亮。
经过50s后又回到绿灯亮。
不断循环。
如果时间在22:
00和7:
00之间,则跳出循环,黄灯点亮。
直到时间在7:
00到21:
59之间开始交通灯的循环。
在此过程中,红绿灯内部的计数程序和时钟显示是分开的。
2.2系统流程图
根据系统工作的过程和原理,对单片机的整体设计的流程图如图2-1
图2-1
2.3模块设计
系统是由3个基本模块构成其设计如下:
2.3.1时基模块原理及设计
它的硬件基础是由单片机、晶体振荡器和电容等器件构成的最小系统。
再配以延时程序完成要求的。
实物电路图如图所示。
图2-2
本设计要能显示时间,使系统通过不同时刻来控制交通的状态。
而时间是由单片机的内部计数器对1HZ的信号进行计数形成的,当计数到60个脉冲时,计数器进位输出1,既产生“分”的输出,然后计数器对分信号进行计数,当计数到60时进位输出1,即产生“小时”的输出,计数器对小时信号计数,当计数到24时使计数器全部清零,从新开始计数。
单片机输出秒、分、小时的值,就是当前时刻的值。
同时,在显示时钟时使数值持续1s钟才改变。
为了达到设计目的必须产生精确的1HZ信号。
在设计中利用单片机的延时程序的循环次数来产生1秒钟的延时,即1HZ信号。
具体程序见附录。
2.3.2设置时钟模块
为了能设置时间,采用单片机对键盘扫描,实物图如图2-3所示。
单片机从P16、P17脚发出低电平信号,分别接入键盘第一行和第二行,每行都有8个按键。
每一列的两个按键都接有5V的电压,另一端则通过C51的P10—P17脚输入给单片机。
如果没有按键被按下,则P10—P17的信号都是高电平,当某时刻有键按下时,对应这一列的引脚接收到P16或P17发出的信号变为低电平,再由单片机判断是哪一行的键为低电平从而确定键的位置。
P16、P17是作为扫描信号的,它的扫描周期很快,这样可以及时的对按键的动作做出反应。
单片机内部有对16个键的编码程序。
对“秒”、“分”、“小时”都有确定的按键与之对应,并被编成BCD码,一旦有按键被按下,它对应的时钟信号的值加一,从而设置时间的值。
其具体程序见附录。
图2-3
2.3.3显示模块设计
由于单片机的资源有限,不能像PLD那样同时点亮若干个七段数码管,显示时钟和红绿灯的状态,在本设计中采用了动态显示来完成这几个七段数码管,同时显示时间和交通灯的状态的问题。
由于人的眼睛分辨事物变化的频率上限为24HZ,超过这个范围,人眼就看不见事物的变化,认为事物是不变的。
从这个物理现象出发,只要使几个七段数码管以超过24HZ的频率依次点亮,这样人眼就察觉不出数码管的变化,而认为它们是同时点亮的。
这样的显示方式叫动态显示。
单片机的工作频率是12MHZ的,所以可以很容易达到程序设计的要求。
因为系统的频率变化很快,时钟和红绿灯的状态显示的值不稳定。
为了使数码管能稳定的输出数值,采用了74LS373,D触发器,将单片机输入给数码管的数据锁存。
从而保证数值的稳定显示。
动态显示电路的实物图如图所示。
程序设计见附录。
三.实际测试
3.1测试设备
秒表:
精度为1s
3.2测试结果
(1)时钟数值的测试使系统工作,并同时计时,观测时钟数值的变化是否与秒表时间变化一致。
测试数据如表所示。
次数
起始状态
显示时间
实际时间
1
7:
00
1分45秒
1分44秒
2
7:
00
1分
59秒
3
7:
00
45秒
45秒
表3-1
实际测得的时间与显示时间的偏差,可能是人的反应时间问题。
图2-4
(2)交通灯状态变化的测试使系统工作,并同时计时,观测红、绿、黄灯的状态变化。
测试数据如表所示。
次数
起始时间——
结束时间
红灯持续时间
黄灯持续时间
绿灯持续时间
1
7:
00
50s
5s
45s
2
8:
00
50s
5s
44s
3
23:
40—23:
42
0s
120s
0s
表3-2
由上述结果可知,交通灯状态在23点到早上7点黄灯点亮,在其他时间段则交替点亮。
转换达到了设计要求。
(3)设置时间使系统工作,对时间进行设置。
测试数据如表所示。
次数
设置值
实际值
1
7:
56
7:
56
2
8:
00
8:
00
3
23:
49
23:
49
表3-3
由上述可知,系统时间可以进行设置。
四.结论
本设计在硬件上,使用了数码管的动态显示技术使系统的资源得到了很好的利用;而锁存D触发器的使用则解决了数码管稳定显示的问题。
在软件上,充分利用了C51的灵活方便,产生1HZ的时间信号实现了时钟的计数。
并很好的控制了交通灯状态的转换。
从最终的测试结果来看,本系统误差较小,很好的完成了题目的各项要求。
参考文献
[1]张友德,赵志英,涂时亮.单片机原理、应用与实验.上海:
复旦大学出版社2002
附录
org0000h
ajmpmain
org0100h
main:
movsp,#30h
movr0,#9;秒赋值9,循环,每个循环为一秒
movr4,#0c0h
red:
movdptr,#0a000h;使第一个数码管亮9秒,红灯
mova,#125
movca,@a+pc;查表指令
movx@dptr,a;把查表所得值赋给数码管
lcalldelay
movdptr,#0a005h;显示当前计数秒
mova,r0
adda,#106
movca,@a+pc
movx@dptr,a
lcalldelay
djnzr4,red
djnzr0,red;使秒减一,9秒未到,继续循环亮红灯
;到9秒,执行下面的程序
movr0,#3;秒赋值3,黄灯
movr4,#0c0h
yel1:
movdptr,#0a001h;使第2个数码管亮3秒
mova,#96
movca,@a+pc
movx@dptr,a
lcalldelay
movdptr,#0a005h;显示当前计数,秒
mova,r0
adda,#77
movca,@a+pc
movx@dptr,a
lcalldelay
djnzr4,yel1
djnzr0,yel1
movr0,#6;绿灯,6秒
movr4,#0c0h
gre:
movdptr,#0a002h
mova,#67
movca,@a+pc
movx@dptr,a
lcalldelay
movdptr,#0a005h
mova,r0
adda,#48
movca,@a+pc
movx@dptr,a
lcalldelay
djnzr4,gre
djnzr0,gre
movr0,#3;黄灯,3秒
movr4,#0c0h
yel2:
movdptr,#0a001h
mova,#38
movca,@a+pc
movx@dptr,a
lcalldelay
movdptr,#0a005h
mova,r0
adda,#19
movca,@a+pc
movx@dptr,a
lcalldelay
djnzr4,yel2
djnzr0,yel2
sjmpmain;执行完毕,转到开始,继续循环
delay:
;延时程序
movr5,#07fh
de1:
movr6,#0bh
djnzr6,$
djnzr5,de1
ret
db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h;数字显示表
db88h,83h,0c6h,0a1h,86h,8eh,0ffh,0f7h
end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 交通灯