基于单片机的交通灯设计.docx
《基于单片机的交通灯设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的交通灯设计.docx(113页珍藏版)》请在冰点文库上搜索。
基于单片机的交通灯设计
东北林业大学
单片机原理实验课程设计
总结报告
设计项目:
基于51单片机的交通灯的设计
项目完成人:
罗鹏、孙思楚
指导教师:
赵伟教授
学院:
机电工程学院
专业:
电子信息工程2009级3班
2011年11月30日
综合电子课程设计任务书
学生姓名
罗鹏
学号
20094507
专业(班级)
电子信息三班
学生姓名
孙思楚
学号
20094448
专业(班级)
电子信息三班
设计项目
基于AT89C51单片机的电子交通灯的设计
设计内容
通过8*8点阵简单实现直行、转弯的交通指挥设计
显示年、月、日、星期、时、分、秒
能够通过键盘输入日期和时间的初值
通过功能键能够实现数据储存、查询、上传(串行通讯)功能
通过功能键能够实现外中断和定时中断功能
主要技
术指标
和要求
希望通过此次单片机课程设计提高我们单片机程序设计的能力,熟悉51单片机运行模式,最终完成我们所选的设计,更为以后的毕业设计打下良好的基础。
设计所用仪器设备
蓝海微芯单片机板LJD-SY5200
PC机
工作计划
熟悉实验设备、收集资料:
2天
设计实验:
12天
编写课程设计报告:
4天
参考资料
赵伟《单片机原理及应用教程》东北林业大学出版社
指导教师签字
基于AT89C51单片机的电子交通灯的设计
摘要
本设计主要研究一种基于AT89C51单片机的交通灯的设计方案。
交通的出现有效地管制了交通,为人们的出行提供了便捷与安全的保障,为道路提供了交通运输能力,减小了交通事故的发生频率。
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
51单片机是基础入门的一个单片机,也是应用最广泛的一种。
8051单片机是常用于控制的芯片,在智能仪器仪表、工业检测控制、机电一体化等方面取得了令人瞩目的成果,用其作为交通灯控制系统的实例也很多。
使用8051单片机能够实现交通灯变化的自动控制,而且8051单片机易于学习、掌握、性价比高。
本系统采用单片机AT89C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。
本设计采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。
系统除基本的交通灯功能外,还具有时间日期显示、存储查询、定时器、中断显示等功能。
在设计中我们应用LJD-SY-5200单片机实验系统做系统仿真。
LJD-SY-5200实验系统具有丰富的硬件资源。
本设计采用AT89C51单片机控制可编程芯片CH451实现交通灯控制功能,并实现键盘输入、断码显示、修改日期时间、数据的存储与查询、定时器中断等功能。
关键词:
AT89C51;LJD-SY-5200单片机芯片;交通灯
摘要
附录
基于AT89C51单片机的电子交通灯的设计
1绪论
1.1引言
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能,还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路,集成到一块硅片上构成的一个小而完善的计算机系统。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等以及自动控制领域的机器人、智能仪表、医疗器械和各种智能机械。
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
单片机经过1、2、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引脚的多功能化,以及低电压底功耗。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。
左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。
红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
1.2系统方案设计
利用控制芯片、键盘显示模块、时钟电路、存储器和点阵等分别实现:
(1)通过8*8点阵简单实现直行、转弯的交通指挥设计
(2)显示年、月、日、星期、时、分、秒
(3)能够通过键盘输入日期和时间的初值
(4)通过功能键实现数据储存、查询、上传(串行通讯)功能
(5)通过功能键实现外中断和定时中断功能
系统初始化后,点阵上显示“电③”“WHYNOT?
”。
通过功能键能实现日期和时间的初值设定。
通过功能键进入交通灯状态,在点阵上显示“★交通灯★”、“左前右”,并且自动储存。
系统框图如图1-1所示
电源模块
图1-1系统框图
1.3系统方案论证与实现
(1)方案论证:
●倒计时显示模块
方案1:
用液晶屏显示交通灯的各方倒计时功能,LCD液晶显示器的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。
显示清晰,实现功能全。
但是开发板P0口同时作用在点阵和液晶上,不能同时用,故该方案舍弃。
方案二:
使用8为数码管作为交通灯倒计时,通过芯片CH451,可实现当前交通倒计时功能显示,缺点是数码管显示数字,显示不灵活多变,需严格控制交通界面的时间来实现此倒计时功能。
综上,LCD液晶屏与点阵IO口冲突,会导致此设计出现故障。
故选用方案二数码管作为倒计时模块。
●交通状态显示模块
方案一:
利用8*8点阵显示实时交通界面,可利用几个方格代替几个方向,并且通过点阵的颜色控制,可实现“红”“黄”“绿”三种颜色,与现实交通灯十分接近,也一目了然。
故此方案可行性相当之高。
方案二:
使用LCD液晶屏作为交通状态显示,LCD液晶屏显示内容丰富,多样。
但是它不能实现多种颜色的切换,单调,而且也不明显。
现实生活中的交通灯采用点阵,故此方案实用价值不高。
综上,故选用方案一点阵显示当前交通状态,更形象,更切实际。
(2)系统方案实现:
系统主要由硬件和软件两大部分构成,其中硬件主要由单片机芯片上LED8*8点阵、LCD部分、键盘及LED部分、信息按钮部分构成。
软件部分是由keil编写的一个汇编程序,然后利用单片机芯片上的串口将程序下载到单片机芯片板中进行各部分功能的实现,具有良好的人机界面,便于使用。
由于显示年、月、日、星期、时、分、秒,能够通过键盘输入日期和时间的初值,通过功能键实现数据储存、查询、上传(串行通讯)功能,通过功能键实现外中断和定时中断功能,通过功能键实现交通灯左转、右转、直行等功能。
2系统主要器件选型及依据
2.1数码管驱动及键盘控制芯片CH451
CH451是一个多功能外围芯片,通过可以级联的4线串行接口与单片机、DSP、微处理器等交换数据。
CH451包含三个功能:
数码管显示驱动、键盘扫描控制、μP监控,三个功能之间相互独立,单片机可以通过操作命令分别启用、关闭、设定CH451的任何一个功能。
CH451的串行接口是由硬件实现的,单片机可以频繁地通过串行接口进行高速操作,而绝不会降低CH451的工作效率。
图2-1为CH451外围电路图。
表2-1为按键键值表。
图2-1CH451外围电路图
表2-1按键键值表
(1)显示驱动
●内置大电流驱动级,段电流不小于25mA,字电流不小于150mA。
●动态显示扫描控制,直接驱动8位数码管或者64位发光管LED。
●可选数码管的段与数据位相对应的不译码方式或者BCD译码方式。
●数码管的字数据左移、右移、左循环、右循环。
●各数码管数字独立闪烁控制。
●通过占空比设定提供16级亮度控制。
●支持段电流上限调整,可以省去所有限流电阻。
●扫描极限控制,支持1到8个数码管,只为有效数码管分配扫描时间。
(2)键盘控制
●内置64键键盘控制器,基于8×8矩阵键盘扫描。
●内置按键状态输入的下拉电阻,内置去抖动电路。
●键盘中断,低电平有效输出。
●提供按键释放标志位,可供查询按键按下与释放。
(3)外部接口
●高速的4线串行接口,支持多片级联,时钟速度从0到10MHz。
●串行接口中的DIN和DCLK信号线可以与其它接口电路共用,节约引脚。
●完全内置时钟振荡电路,通常不需要外接晶体或者阻容振荡。
●内置上电复位和看门狗Watch-Dog,提供高电平有效和低电平有效复位输出。
2.2DS1302芯片简介
DS1302包括时钟/日历寄存器和31字节(8位)的数据暂存寄存器,数据通信仅通过一条串行输入输出口。
实时时钟/日历提供包括秒、分、时、日期、月份和年份信息。
闰年可自行调整,可选择12小时制和24小时制,可以设置AM、PM。
实时时钟具有能计算2100年之前的秒、分、时、日期、月份、年、星期的能力,还有闰年调整能力。
(1)控制指令
图2-2为控制指令(8位)
图2-2控制指令(8位)
每个字节的传输是有控制字节指定的,控制字节的最高位Bit7必须是‘1’,如果是‘0’,写入将被禁止。
bit6为‘0’则指定对时钟/日历寄存器控制读写操作,为‘1’则为RAM区数据的控制读写操作,bir1~bit5指定相关寄存器待进行输入输出操作,最低位bit0指定是输入还是输出,为‘0’则为输入,相反则输入有效,输入输出根据脉冲的上升沿和下降沿串行进行。
(2)写保护位
控制字节的bit7是写保护位,低7位(bit0~bit6),被置‘0’,在任何写操作前,bit7都应该置‘0’。
(3)时钟/日历
时钟/日历包含在7个寄存器中,图2-3为时钟/日历。
数据在时钟/日历寄存器是二进制编码的十进制格式(BCD码)。
图2-3时钟/日历
(4)数据输入
经过8个时钟周期的控制字节的输入,一个字节的输入将在下8个时钟周期的上升沿完成,数据传输从字节最低位开始。
(5)数据输出
经过8个时钟周期的控制读指令的输入,控制指令串行输入后,一个字节的数据将在下个8个时钟周期的下降沿被输出,注意第一位输出是在最后一位控制指令所在脉冲的下降沿被输出,要求RST保持位高电平。
同理8个时钟周期的控制读指令如果指定的是突发模式,将会在脉冲的上升沿读入数据,下降沿读出数据,突发模式一次可进行多字节数据的一次性读写,只要控制好脉冲就行了。
2.3LED8*8点阵
LED显示屏,又叫电子显示屏或者飘字屏幕。
是由LED点阵组成,通过红色或绿色灯珠的亮、灭来显示文字、图片等内容可以随时更换。
通常由显示模块、控制系统及电源系统组成。
显示模块由LED灯组成的点阵构成,负责发光显示;控制系统通过控制相应区域的亮灭,可以让屏幕显示文字、图片等内容;电源系统负责将输入电压电流转为显示屏需要的电压电流。
单片机通过两片74HC573的片选控制红、绿灯的交替显示。
图2-4为点阵内部结构图。
图2-4点阵内部结构图
2.474HC573芯片简介
74HC573是一种带三态门的8D锁存器,其管脚示意图为图2-5:
其中:
0D-7D为8个输入端。
0Q-7Q为8个输出端。
LE为数据打入端:
当C为“1”时,锁存器输出状态同输入状态;当C由“1”变“0”时,数据打入锁存器OC为输出允许端:
当OC=0时,三态门打开;当OC=1时,三态门关闭,输出高阻。
图2-574HC573管教图
2.574HC138芯片简介
74HC138是一款高速CMOS器件,74HC138引脚兼容低功耗肖特基TTL(LSTTL)系列。
74HC138译码器可接受3位二进制加权地址输入(A0,A1和A3),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。
74HC138特有3个使能输入端:
两个低有效(E1和E2)和一个高有效(E3)。
除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高。
利用这种复合使能特性,仅需4片74HC138芯片和1个反相器,即可轻松实现并行扩展,组合成为一个1-32(5线到32线)译码器。
任选一个低有效使能输入端作为数据输入,而把其余的使能输入端作为选通端,则74HC138亦可充当一个8输出多路分配器,未使用的使能输入端必须保持绑定在各自合适的高有效或低有效状态。
74HC138与74HC238逻辑功能一致,只不过74HC138为反相输出。
图2-6为138管脚图
图2-6138管脚图
2.6AT24C02A芯片简介
AT24C02A是带有I²C总线接口的E2PROM存储器,具有掉电记忆的功能,并且可以象普通RAM一样用程序改写。
它的容量是256个字节(00h-0ffh),有A2、A1、A0三位地址,可见I²C总线上可以连接8片AT24C02A,它的寻址字节是1010A2A1A0R/W。
DIP封装的AT24C02A芯片管脚图和功能描述如图2-10所示,其中A2、A1、A0是芯片地址线,单片使用时接地,SCL是串行移位时钟端,SDA是串行数据或地址端,CPU通过SDA访问芯片,WP是写保护端,接高电平时芯片只能读。
如图2-7为AT24C02A芯片管脚及其描述如图2-8为AT24C02A芯片读写时序图。
图2-7AT24C02A芯片管脚及其描述
图2-8为AT24C02A芯片读写时序图
3硬件设计
3.1系统硬件设计总框图
系统原理图设计如图3-1所示,AT89C51单片机硬件系统实现如下功能:
(1)控制时钟芯片DS1302读取日期和时间,设置初值;
(2)控制CH451,通过液晶屏显示时间和日期;
(3)控制LED8*8点阵通过界面切换实现交通指挥;
(4)控制24C02存储器实现实时数据存储和查询。
图3-1系统原理图
3.2LED8*8点阵交通灯界面设计基础
LED8*8点阵电路如图3-2所示。
该电路可实现系统启动时液晶屏上显示“交”“通”“灯”“左”“前”“右”,点阵通过三个方块代表三方向的实时状态,有“红”“黄”“绿”三色。
点阵的具体控制和实现方法如下:
(1)单片机P15、P16、P17I/O口连接38译码器的A、B、C口,作为译码控制,38的输出Y0-Y7连接三极管驱动电路的输入端,三极管输出连接点阵的H1-H8端口,作为点阵行的控制。
(2)单片机的P36口连接两个二输入与非门,P21、P22各连一个二输入与非门,控制点阵的颜色,二输入与非门的输出各连接一个74HC573,当P36和P21口同时为高电平时SL1输出低电平第一片74HC573选通,当P36和P22口同时为高电平时SL2输出低电平第二片74HC573选通,两个二输入与非门作为锁存器的片选信号;
(3)单片机的P0口连接74HC573输入端1D-8D,74HC573锁存器输出口1Q-8Q控制点阵的列。
连接点阵上的红灯或者绿灯输入端口,起到红灯或者绿灯点亮信号的锁存作用,如果红灯和绿灯同时点亮,那么显示黄灯。
图3-2LED8*8点阵电路图
3.3时间日期显示设计基础
电路如图3-3所示,该时钟电路通过对时钟内部时钟寄存器的读写控制可以对年、月、日、周、时、分、秒进行计时。
DS1302实时时钟具体控制方法如下:
(1)单片机的P10口连接DS1302的I/O口,作为串行数据的输入和输出口;
(2)单片机的P11口连接DS1302的SCLK口,给DS1302提供读写数据的脉冲信号;
(3)单片机的P14口连接DS1302的RST口,起到时钟芯片的复位作用。
图3-3时钟电路
3.4数据存储查询设计基础
外部存储器电路如图3-4所示,AT24C02A是串行存储方式,单片机可直接控制,内有地址,可存取与读出。
具体控制方法如下:
(1)其中A2、A1、A0是芯片地址线,根据不同芯片此三位作用不同,次试验中接地处理,只有一页可写可读;
(2)单片机的P11口连接AT24C02A的SCL口,SCL是串行移位时钟端;
(3)单片机的P10口连接AT24C02A的SDA口,SDA是串行数据或地址端;
(4)单片机通过SDA访问芯片,WP是写保护端,接高电平时芯片只能读。
图3-4存储器
3.5键盘显示模块设计基础
键盘显示模块控制电路如图3-5所示,CH451控制键盘与8位数码管,根据命令判断是对数码管操作还是对键盘控制,有键按下时产生中断,并获得相应的键值,根据相应的键值实现程序不同功能,具体控制方法如下:
(1)单片机的P12口连接CH451的LOAD口,作为串行数据加载;
(2)单片机的P35口连接CH451的DIN口,作为串行数据输入;
(3)单片机的P34口连接CH451的DCLK口,作为串行接口的数据时钟;
(4)单片机的INT1口连接CH451的DOUT口,作为串口数据的输出和键盘中断;
(5)CH451的RST1口连接外部按键,起到上电复位和看门狗复位的作用。
图3-5键盘显示原理图
4系统软件设计
4.1系统主流程图
本设计通过不同按键实现不同功能,其中:
“1”键功能为定时器中断,此中断有内部中断0引发,通过设定时间初值,产生溢出,其功能效果为在LED8段数码管中显示八个“8”。
“2”键功能为外中断,通过外部中断触发中断进入相应的子程序,其效果为在LED8段数码管中显示“12345678”。
“3”键功能为实现两位数存储,通过输入两位数通过24C02芯片进行数据存储。
“4”键功能为显示存储记录,通过功能键选取显示不同的存储数据类型,有13位实时交通灯数据和2位键盘输入存储数据两种类型。
“5键”功能为串行通讯发送,通过功能键利用串行接口向计算机发送数据。
“7”键功能为引响蜂鸣器,通过功能键引发蜂鸣器鸣响,且需要相应跳线帽的配合。
“8”键功能实现本设计的中心交通灯,在交通灯模块中详细介绍。
“B”键实现修改时间功能,后续模块详细介绍。
“C”键显示事实时间,通过程序的控制,对时钟芯片寄存去的读访问,并通过液晶屏幕将各时钟寄存器的内容显示出来。
“D”键为清除存储记录,通过命令0A0H,对24C02的第一个单元进行写0操作,实现对存储个数清0处理,在后续的访问时钟寄存器时,均需要借助寄存器个数计算读位置,在个数为0的情况下,相当与此时无存储数据,以实现清除操作。
开始
系统初始化
欢迎界面
N
有按键
Y
Y
按键1
定时中断
N
Y
外中断
按键2
N
Y
按键3
存储两位数
N
Y
显示存储记录
按键4
N
Y
串行发送数据
按键5
N
Y
蜂鸣器
按键7
N
Y
按键8
交通灯
N
Y
修改时间
按键B
N
Y
显示时间
按键C
N
Y
清除存储记录
按键D
N
图4-1系统主流程图
4.2LED8*8点阵显示交通灯功能模块
此为本设计的中心设计,根据现实生活中的交通灯设计得来,通过按键“8”进入交通灯模式,液晶屏上依次现实“交”“通”“灯”,“左”“前”“右”。
在8*8点阵上显示三方向的交通状况,利用三个方格并各自带有“红”“黄”“绿”三种颜色反应三个方向实时交通状况。
通过LED8段数码管实现三方向的倒计时,在倒计时到来之时进行界面切换,当“黄”倒计时为0时,“红”“绿”倒计时均为3时,进行界面切换。
当有按键触发时,若为“C”键则进入10秒的紧急界面,三方均为红色,若不为“C”键则退出交通灯模式。
每次在界面切换时,自动存储前一时刻的实时交通状态。
返回功能说明:
只有当按键不为C时,退出交通灯模块,其他返回均为返回进入此界面的界面...例如:
从界面一进入紧急界面,且进入时保存各数据。
则返回界面一,且恢复之前保存的各数据。
开始
交通灯界面
第一个界面
N
N
倒计时完毕
有按键
Y
Y
存储实时状态
按键C
Y
N
紧急界面
第二个界面
到计时完毕
N
倒计时完毕
N
Y
存储实时状态
Y
存储实时状态
返回
……
.........
第九个界面
N
倒计时完毕
Y
存储实时状
图4-2交通灯流程图
4.3时间日期修改、显示功能模块
通过按键“B”,进入修改时间模式,通过按键输入想设置的时间,且每次修改时液晶屏上显示此时修改的目标,每次按键均在液晶屏上显示所按的键值,此输入为顺序输入,依次输入,“年”“月”“日”“星期”“时”“分”“秒”。
修改完毕后自动退出。
显示实时时间时,通过按键“C”实现,在液晶屏上和LED管上显示此时时间,液晶屏上显示整体时间,LED管上只显示“时”“分”“秒。
显示完毕后自动退出。
开始
输入年
输入月
输入日
输入时
输入分
输入秒
返回
图4-3时间日期流程图
4.4数据记录显示功能模块
通过按键“4”,进入显示存储功能,并且此时设置了一个子选择,此时读取记录个数,若个数为0则直接退出,若不为0,则此时液晶屏上显示“请选择查询类型”,若按键为“A”则显示所存储的实时交通灯状态,若为“B”则显示所存储的两位数,若此时所存储的记录数尚不为“0”,则通过继续按键继续按顺序显示所存储的记录,所存储的记录在液晶屏上显示,而此时所存的记录数,与此时所查询的记录条数则显示在LED管上。
若既不为“A”也不为“B”则退出显示存储功能。
开始
按键
Y
读记录个数
N
Y
记录数=0
N
N
Y
记录数=0
A键
Y
顺序显示交通灯记录
N
N
Y
Y
记录数=0
顺序显示两位数记录
B键
N
返回
图4-4数据存储和查询流程图
4.5数据存储显示功能模块
此设计为实现两位数存储,检验是否能通过按键输入,进入存储,也检验了此时的存储芯片的状态是否良好,通过按键“3”进入存储功能,此时屏幕上显示“请输入两位数”,在输入两位数后,即实现了此两位数存储。
通过按键“E”退出此功能,若不为“E”则继续等待按键。
开始
输入两位数
E键
N
Y
返回
图4-5两位数存储流程图
5结论
本系统利用控制芯片、键盘显示模块、时钟电路、存储器和点阵等分别实现:
(1)点阵实现简单直行、左转、右转的交通指挥设计;
(2)显示年、月、日、星期、时、分、秒、当前交通状态等信息;
(3)能够通过键盘输入日期和时间的初值;
(4)通过功能键能够实现数据储存、查询、功能;
(5)实现外中断和定时中断功能。
·本设计特点:
系统设计简便、实用性强、操作简单、程序设计简便。
·系统不足:
此设计的中心设计交通灯,由于点阵面积过小不能很好的实现每一界面的“前”“左”“右”三方的实时状态,只好采用三