1 绪论1.1设计目的
单片机具有性价比高、集成度高、可靠性好、抗干扰性强等特点,广泛运用于各种智能仪器中。基于新型规则的可编程交通控制系统,可以实现对车辆、行人的控制,使的交通便于管理。所以,采用单片机自动控制交通灯有现实的社会意义。
通过本次设计,使学生不仅更加深刻领会微型计算机从硬件组成到软件编程的基本原理和知识,而且更要学会应用,务必做到理论和实践相结合,掌握硬件分析、软件设计的基本思想和方法,提高分析问题、解决问题和工程实践的能力。
1.2设计内容
1)设计一个十字路口交通灯控制器。用单片机控制LED灯模拟指示。模拟东西方向的十字路口交通信号控制情况。南北方向主干道计时时间为60s,东西方向次干道计时时间为45s。
2)红绿灯不变期间,在七段数码管上显示每秒倒计时。
3)计时到最后5秒时,两个方向的黄灯同时闪烁直至计时到0。
2 系统设计方案
2.1设计思路
模拟交通灯控制器就是使用单片机来控制一些LED灯和数码管,模拟真实交通灯的功能。当南北主干道通车时绿灯亮,而东西次干道干道红灯亮;当55s通车时间到后,主干道绿灯熄灭,黄灯亮,黄灯亮5s后由主干道切换到次干道通车。此时主干道黄灯熄灭,红灯亮,而次干道红灯熄灭,绿灯亮,次干道开始通车; 40s通车时间到后,次干道绿灯熄灭,黄灯亮,黄灯亮5s后由次干道切换到主干道通车。此时次干道黄灯熄灭,红灯亮;而主干道红灯熄灭,绿灯亮,如此不断循环。红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通。
2.2方案设计
利用AT89C52单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,数码管显示剩余时间。红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯,8个共阴极数码管显示剩余时间,根据设计功能及要求,我们可得系统的原理框图如图2-1所示。
图2-1 系统原理图(见51hei附件)3 系统硬件电路设计
3.1 AT89C52单片机
AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。
如下图3-1所示:
图3-1 AT89C52单片机3.1.1晶振电路设计
时钟电路用于产生MCS-52单片机工作时所必须的时钟控制信号。其内部电路在时钟信号控制下,严格地按时序执行指令进行工作。在执行指令时,CPU首先要到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定操作。
本设计采用12MHz晶振和两个27Pf瓷片电容,他们构成一个稳定的自激振荡器。该电容的大小影响振荡器频率的高低、振荡器的稳定性和起振的快速性。为单片机提供标准时钟。其中两个瓷片电容起微调作用。 如图3-2所示:
图3-2 晶振电路3.1.2复位电路设计
复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
复位电路通常采用上电自动复位和按钮复位两种方式。
该设计采用加电直接复位,复位电容采用10uF,电阻10000欧。加电瞬间,RES管脚为高电平。通过电阻回路放电,使电压逐渐降为零,从而实现了复位功能。
其连接图如下图3-3所示:
图3-3 复位电路3.2显示部分电路设计3.2.1数码管选择
此处采用的数码管时共阴极数码管,G、F、E、D、C、B、A七个端口是输入端口,对其各位进行赋值,置位则亮,复位则灭,用此来显示出相应的数字;1、2两端口用来控制高位和低位的选通显示,只要对端口置位,便可以选择该端口,并对其所代表的位进行赋值,显示。数码管如下图3-5所示。
图3-5 数码管
3.2.2十字路口交通灯设计
一条主干道和一条次干道汇合成十字路口,南北方向道路为主干道,东西方向干道为次干道。每个路口都采用了三个LED灯来显示,分别代表了红黄绿三种灯,来模拟路口交通灯的变换。LED信号灯如下图3-6所示。
图3-6 LED信号灯设计
3.3系统硬件总电路图根据设计要求和所需电路,得到系统硬件总电路图如图3-7所示。
图3-7 系统硬件总电路图
4 系统软件程序设计4.1主程序设计4.1.1总体流程图
4.2其他子程序设计
4.2.1循环流程控制思路
5 调试与仿真5.1 Proteus软件系统仿真
打开Proteus软件,按照硬件系统图3-7所示接线,连线完毕后,通过keil把编好的c语言程序转换为.hex文件,并将其放入单片机内。
设置好仿真器后,编译程序无误后调试执行程序,结果显示符合要求。
5.2仿真结果
根据功能要求分别仿真各种情况下的亮灯情况,具体如下:
1.如下图5-1仿真图所示,南北方向主干道亮绿灯,东西次干道方向亮红灯。
图5-1 南北绿灯东西红灯
2.如下图5-2所示,南北方向倒计时5s后变为黄灯,东西为绿灯。
图5-2南北黄灯东西红灯
3.如下图5-3所示,东西方向变为绿灯,南北方向变为红灯。
图5-3南北红灯灯东西绿灯
4.如下图5-4所示,东西方向在变为黄灯
6 总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
这次的单片机课程设计大概用了一个月的时间,在这一个月的时间当中,虽然开始遇到了很多的困难,但是由于合理地进行设计安排,分工合作,并各自查阅了相关的资料,最后在大家共同努力下我们顺利地完成了本次单片机课程设计,同时也学到了很多东西。
回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。例如我们在设计数码管显示的时候,刚开始的时候,由于对数码管引脚的不熟悉,我们都无法让数字显示,后来发现时十位和个位的置位、复位发生了问题,我们对此进行了修改,可以正确的显示出十位及个位的数值,但是数字的显示不稳定,不停的跳动,我们为此查阅了很多的资料,但还是未能解决,最后我们不停地对程序进行修改,终于发现了问题所在,在显示子程序上存在缺陷未能快速的切换对十位、个位的置位和复位,经过这样的修改,终于可以完美的显示时间了。我们也更好地掌握了对数码管的使用,这都是课堂上学不到的知识。
这次的单片机课程设计是通过实践操作和理论相结合,提高动手实践能力,提高科学的思维能力。与此同时,我们也对分工合作有了进一步的认识,只有通过合理的分工合作,我们们才能够在短短一周的时间内完成设计任务,相信这对以后在社会上工作和学习会有很多帮助,让我们能更好的进入工作状态。最重要的是,这次课程设计也增加了我们对问题的研究和探讨,们以后的学习中会有更多的帮助。
单片机为我们的主要专业课之一,对我们还是很有帮助的,课程设计也是为我们以后的工作提前进行了一次练手,也是我们学习生活之中少有的一次自己探索、研究,发现问题、解决问题的机会。当然要做好一个课程设计也不是很简单的,我认为有以下几步:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;
要有一个清晰的思路和一个完整的的软件流程图,善于将大的程序段缩小为每个子函数来实现;
在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;
要养成注释程序的好习惯,写程序是应该思路清晰,结构明了,应该让人一看就能明 白你的思路,方便资料的保存和交流;
我们们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。我们们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,或者与其他小组成员讨论,共同解决,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。通过这次课程设计我们也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
通过这次课程设计使我更加懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正将一个东西学好学透,从而提高自己的实际动手能力和独立思考的能力。我想这对于我今后的学习生活和工作都会是有很大帮助的!
参考文献
[1].肖金球.单片机原理与接口技术[M];
[2].江志红.51单片机技术与应用系统开发案例精选[M];
[3].周润景.基于PROTEUS的51单片机设计与仿真[M];
[4].王守中.51单片机开发入门与典型实例[M];
[5].张齐.朱宁西.单片机系统设计与开发[M];
[6].周立功.单片机开发网[M];
[7].天津锐志单片机开发网[M];
[8].ATMEL公司AT89S52单片机中文PDF资料[M];
单片机源程序如下:
#include #include #define uint unsigned int #define uchar unsigned char uchar temp,aa,nn; sbit rn=P2^0; sbit nb=P2^1; sbit gn=P2^2; sbit rw=P2^3; sbit dx=P2^4; sbit gw=P2^5; sbit shi=P3^6; sbit ge=P3^7; /*对要使用的单片机各个口进行定义*/ bit flag=0; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};/*将数字0123456789的16进制数定义成数组用以显示*/ void delay(uint z); void disp(uint n); void nb_flash(void); void dx_flash(void); void xint0(); void timer0(); void LED_ON(); void xint1(); void LED_OFF(); void nanbei(); void dongxi(); /*将所使用的子函数定义*/ void main() { uint num; num=0; aa=0; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; EX0=1; IT0=0; EX1=1; IT1=1; /*中断初始化*/ while(1) { nanbei(); nb_flash(); dongxi(); dx_flash(); /*主函数中显示部分*/ } } void delay(uint z) /*延时子函数*/ { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void timer0() interrupt 1 /*定时器初始化*/ { TH0=(65536-50000)/256; TL0=(65536-50000)%256;
上一篇:基于51单片机的超声波测距仪的设计
下一篇:按钮 温度 红外三种方式控制电机转速的单片机程序
推荐阅读最新更新时间:2024-11-13 03:19
设计资源 培训 开发板 精华推荐
- EVAL-AD5252SDZ,用于 AD5252 双通道、256 位、非易失性存储器数字电位器的评估板
- LT8570IDD-1 1.2MHz 升压转换器的典型应用从 9V-16V 输入产生 48V
- AP7363 1.5A 低静态电流、超低压差固定输出线性稳压器的典型应用
- ADR01 的典型应用电路,用于基本配置的 10V 电压基准
- 简单实用的加热台隔热支架
- 使用 ams AG 的 AS1329A-BWLT 的参考设计
- VND7012AY评估板
- Rns
- 用于 WiMAX 基站的 2300 至 2360、2400 至 2480MHz 接收器
- Si4123GM-EVB,Si4123G-BM PLL 频率合成器评估板