带数码管显示的交通灯Word文档下载推荐.docx
- 文档编号:17948185
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:17
- 大小:164.32KB
带数码管显示的交通灯Word文档下载推荐.docx
《带数码管显示的交通灯Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《带数码管显示的交通灯Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
大型作业任务书
类别:
三年制高职
专 业:
应用电子技术
班级:
姓 名:
大型作业题目:
带数码显示的交通灯
指导教师姓名:
刘彦华
负责人签字:
刘明黎
2011年5月15日
一、项目功能:
设计十字路口红、黄、绿灯指示与倒计时数码管显示的硬件原理图,并进行硬件制作。
编程实现十字路口红、黄、绿灯指示与倒计时数码管显示,具体参数到独山大道与光武路交叉口观察确定。
二、设计要求:
1.总体设计;
2.硬件设计;
3.软件设计与调试;
4.Proteus仿真;
5.硬件制作与测试;
三、大型作业说明书要求:
1.封面、前言、目录
2.大型作业任务书
3.系统总体设计
4. 硬件设计
5.软件设计(包括软件流程图及源程序清单)
6.设计心得
7. 参考资料
指导教师(签字):
刘彦华2011年5月 15日
系统总体设计
一、总体设计方案
Ø
设计基本要求:
设计十字路口红、黄、绿灯指示与倒计时数码管显示的硬件原理图,并运行硬件制作。
编程实现十字路口红、黄、绿灯指示与倒计时数码管显示,具体参数到独山大道与光武路交叉口观察确定。
实现功能:
1.正常情况;
东西车道和南北车道上的车辆交替运行,每次通行时间为60s;
东西向和南北向转换时黄灯闪烁3s。
东西南北四个方向,东西绿灯亮60S,再黄灯闪烁3S,最后红灯亮60S,同时东西绿灯亮时,南北红灯亮60S,绿灯亮60S,黄灯闪亮3S。
用LED数码管作为模拟交通灯亮与灭的时间延迟控制的倒计时显示;
2.紧急情况:
有紧急通道,即按压“东西紧急键”,则东西方向绿灯,南北方向红灯;
松开“东西紧急键”,5s后解除东西紧急通行状态。
按压“南北紧急键”,则南北方向绿灯,东西方向红灯;
松开“南北紧急键”,5s后解除南北紧急通状态。
交通灯显示状态:
东西方向(简称A方向)
南北方向(简称B方向)
状态说明
红灯
黄灯
绿灯
灭
亮
A方向通行,B方向截止
闪烁
A方向警告,B方向禁行
A方向警告,B方向禁行
A方向禁行,B方向通行
A方向禁行,B方向警告
二、总体设计方案的框图
图一
框图说明:
电源提供方案:
采用单片机控制模块提供电源。
改方案的优点是系统简明扼要,节约成本;
缺点是输出功率不高。
计时控制方案:
利用89C51内部的定时/计数器进行定时,配合软件延时实现倒计时。
.显示控制方案:
采用数码管与LED相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。
紧急情况下:
采用外部中断0来控制东西紧急情况,用外部中断1来控制南北紧急情况。
三、落实实施:
用C语言编程并用PROTEUS进行仿真测试,看软件功能是否齐全,最后用实物图连接看能否实现预定功能。
硬件电路原理与分析
一、原器件清单
交通灯控制电路原器件清单
元器件名称
参数
数量
IC插座
单片机
晶体振荡器
瓷片电容
发光二极管
DIP40
89C51
12MHZ
30pF
1
1
2
12
电阻
电解电容
弹性按键
LED数码管
12KΩ
22uF
300Ω
3
20
4
二、主电路原理
本次本次设计的交通灯控制器采用单片机最小应用系统作为控制器,由数码管显示红灯与绿灯时间,并用LED发光二极管作为红、黄、绿三色指示信号灯,且,红灯亮30S,黄灯亮5S,绿灯亮25S。
其电路原
图二
二、单元电路设计:
1.单片机最小应用系统
(1)单片机89C51引脚图
89C51引脚图下图:
图三
(2)时钟电路和复位电路
单片机是一种时序电路,必须供给脉冲信号才能正常工作,在单片机内部已集成了振荡电路,只需要使用18、19脚连接晶体振荡器,并外用两个33PF电容,帮助晶振起振,并使其频率稳定。
其工作原理如图所示。
MCS-51系列单片机的有效复位信号为两个周期以上的高电平。
其复位的实现通常可以采用开机上电复位和外部手动复位两种方式。
加电瞬间RST端的电位与VCC相同,随着RC电路充电电流的减小,RST端的点位逐渐下降。
只要保持10ms以上的高电平就能使单片机有效复位。
它们的工作原理图如下图:
2.数码管显示电路
(1)驱动电路
本文采用PN[P三极管作为驱动器驱动数码管的显示,由于每个发光二极管额定电流3-10UA,故在电路中加限流电阻,经计算取该电阻为300Ω。
其显示电路如图五:
图五
(2)数码管显示方式
因此根据数码管的驱动方式不同,可以分为静态显示和动态显示两类。
本次设计采用的是动态显示驱动,数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔段同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通有各自独立的I/O线控制,当单片机输出字型码时,所有数码管都接收到相同的字型码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,改为就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的点亮时间为1~2毫秒,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上个位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态是一样的,能够节省大量的I/O端口,而且功耗更低,
软件设计
一、程序设计流程图
ﻬ
1.中断东西流程图
2.ﻬ中断南北流程图
二、原程序清单
#include<
reg52.h>
#define uint unsignedint
#defineucharunsigned char
sbitdx_green=P1^0;
//东西方向的绿灯
sbitdx_yellow=P1^1;
//东西方向的黄灯
sbit dx_red=P1^2;
ﻩ//东西方向的红灯
sbit nb_green=P1^5;
ﻩ//南北方向的绿灯
sbit nb_yellow=P1^6;
//南北方向的黄灯
sbitnb_red=P1^7;
//南北方向的红灯
uintcount_down=30;
//注意必须是char型而不能是uchar型
ucharsign;
uchar k=0,i=0;
uchardisp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0};
uchartime[]={0,0,0,0};
ucharwei[]={0xfe,0xfd,0xf7,0xfb};
//数码管位选
voidCountdown()interrupt1 //倒计时及红绿灯控制函数
{
ﻩ
TH0=0x3c;
ﻩTL0=0xb0;
i++;
ﻩif(i==20)
ﻩ{
i=0;
ﻩcount_down--;
if(count_down<
0)
{
ﻩcount_down=30;
ﻩﻩ}
if(count_down>
=7)
ﻩ{
ﻩﻩif(sign)//东西方绿灯亮/南北方红灯亮
ﻩ{
ﻩﻩﻩdx_green=0;
ﻩdx_yellow=1;
ﻩﻩdx_red=1;
ﻩﻩﻩnb_green=1;
ﻩnb_yellow=1;
ﻩﻩnb_red=0;
ﻩﻩ}
ﻩﻩelse//东西方红灯亮/南北方绿灯亮
ﻩﻩdx_green=1;
dx_yellow=1;
ﻩdx_red=0;
ﻩﻩnb_green=0;
ﻩnb_yellow=1;
ﻩnb_red=1;
ﻩ}
ﻩﻩ}
elseif(count_down<
7&
&
count_down>3)
ﻩ{
if(sign)ﻩ//东西方绿灯闪烁/南北方红灯亮
ﻩ{
ﻩdx_green=!
dx_green;
ﻩﻩﻩﻩnb_red=0;
}
ﻩelse //东西方红灯亮/南北方绿灯闪烁
ﻩdx_red=0;
ﻩﻩnb_green=!
nb_green;
ﻩ}
ﻩﻩelseif(count_down<
=3&
count_down>=0)
ﻩ{
ﻩif(sign)ﻩﻩﻩﻩ//东西方黄灯亮/南北方红灯亮
ﻩﻩ{
ﻩﻩdx_green=1;
ﻩdx_yellow=0;
ﻩﻩnb_red=0;
ﻩﻩﻩ}
ﻩﻩﻩelseﻩﻩﻩ//东西方红灯亮/南北方黄灯亮
{
ﻩdx_red=0;
ﻩnb_green=1;
ﻩﻩnb_yellow=0;
ﻩﻩ}
ﻩ}
if(count_down==0)
ﻩﻩﻩsign=!
sign;
}
}
}
voidtime_disp()interrupt3ﻩﻩ//数码管显示中断函数
ﻩTH1=(65536-10000)/256;
TL1=(65536-10000)%256;
ﻩk++;
if(k>
3)
ﻩ{k=0;
time[0]=count_down/10;
ﻩtime[1]=count_down%10;
ﻩtime[2]=count_down/10;
ﻩtime[3]=(count_down%10)-1;
P2=wei[k];
ﻩP0=disp[time[k]];
ﻩﻩ
voiddx_key() interrupt0
ﻩTR0=!
TR0;
dx_green=0;
ﻩdx_red=1;
dx_yellow=1;
nb_red=0;
nb_green=1;
ﻩnb_yellow=1;
ﻩcount_down=0;
voidnb_key()interrupt2
TR0=!
TR0;
ﻩdx_green=1;
ﻩdx_red=0;
dx_yellow=1;
ﻩnb_red=1;
ﻩnb_green=0;
ﻩnb_yellow=1;
count_down=0;
voidmain()
EA=1;
ET0=1;
ET1=1;
ﻩEX0=1;
EX1=1;
IT0=1;
ﻩIT1=1;
TMOD=0x11;
ﻩTH0=0x3c;
ﻩTL0=0xb0;
TH1=(65536-10000)/256;
ﻩTL1=(65536-10000)%256;
ﻩTR0=1;
TR1=1;
while(1);
}
三、仿真测试
在程序编写完成后,运用Proteus仿真软件,进行仿真。
将编好的程序下载到仿真电路图中的89C52单片机中,进行运行调试,看与设计目标是否一致如图3-1和图3-2,看设计的功能是否能够实现,如果有问题对照源程序找出问题所在并改正。
图3-1
图3-2
四、硬件的实际测试
待确认仿真现象与设计要求的功能一致且不出现错误时仿真完成。
将编好调试完成的源程序下载到自己焊接好的硬件电路上进行最后的测试,看各个设计功能是否能够实现。
心得体会
短短一个星期的实训就这么过去了,时间虽短但还算是颇有心得,颇有体会!
刚开始很期待这个试训的到来,想着肯定会有桃战性的工作,但结果也没让我失望,老师给了两个题,一个是定时器一个是交通灯,当时我就在思考选那个题呢,定时器工作庞大但老师会给资料,交通灯看似简单但什么都需要自己来做,定时器的程序我可能会看不懂,不好分析,而交通灯的我却可以凭着自己的实力搞定。
综合各方面的原因我选择了交通灯。
接下来的任务就是忙于工作了,起先是设计电路图(根据独山大道和光武路口交叉道)。
通过在图书馆和网上查询资料这一项顺利过关。
然后开始核心问题,就是程序,这个是由难度的,最让我头疼的就是数码管倒计时那一块,弄了好几天都没搞定,最后才弄了一个不是太满意的程序。
哎!
还是没学好啊!
最后就开始一系列的文字工作,每一部分都是我亲手做的,不管怎么样,我看这都有些许的成就感,都那么的温馨!
这次实训给了以下几点体会:
做事要细心,要有耐心;
做事要会看,会晤。
总结为良心,两唔。
在以后的学习中我会更加努力,会发扬长处,补缺短处。
让知识来丰富自己。
参考资料
[1]王静霞——单片机应用技术(C语言版)北京:
电子工业出版社.
[2]蓝和慧宁武——全国大学生电子设计竞赛单片机应用技能精解 北京:
电子工业出版社.ﻫ[3]彭伟——单片机C语言程序设计实训100例北京航空航天大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数码管 显示 交通灯