电子设计综合训练报告单片机交通灯控制系统

上传人:仙*** 文档编号:74280204 上传时间:2022-04-13 格式:DOC 页数:30 大小:1.15MB
收藏 版权申诉 举报 下载
电子设计综合训练报告单片机交通灯控制系统_第1页
第1页 / 共30页
电子设计综合训练报告单片机交通灯控制系统_第2页
第2页 / 共30页
电子设计综合训练报告单片机交通灯控制系统_第3页
第3页 / 共30页
资源描述:

《电子设计综合训练报告单片机交通灯控制系统》由会员分享,可在线阅读,更多相关《电子设计综合训练报告单片机交通灯控制系统(30页珍藏版)》请在装配图网上搜索。

1、河南理工大学本科课程设计报告郑州大学电子设计综合训练报告交通灯控制系统姓 名: 学 号: 专业班级: 通信 指导老师: 所在学院: 信院 2010年4月31日摘要本设计是利用Atmel公司生产的AT89S52单片机制作的交通灯控制系统。用六个分别为红、绿、蓝三色的发光二极管模拟交通灯,另用两个两位一体七段共阴极LED来显示交通灯改变时间的倒计时(倒计时间长为10-90秒)。每组红绿灯分别与其相对应的倒计时时间LED对应,利用交通灯与倒计时牌的配合来实现管理十字路口交通的任务。单片微型计算机(Single Chip Microcomputer)简称单片机,即把组成微型计算机的各个功能部件,如中央

2、处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、I/O接口电路、定时器/计数器以及串行通信接口等集成在一块芯片中,构成一个完整的微型计算机。而对于交通灯的控制本设计采用了3个按钮来实现紧急情况禁止、主干道无车次干道立即通行、次干道无车主干道立即通行、主干道调整时间加一秒和次干道调整时间加一秒的功能,分为一个紧急情况按钮和两个干道通行/调节时间双功能按钮,节省了系统的资源。主控芯片采用AT89S52单片机,配合其他基本设备完成设计。采用C51语言进行编程,编程后利用Keil C51进行编译,生成对应的HEX文件,采用PROTEUS软件进行系统硬件的仿真模拟,检验功能。模拟试验成功后

3、,焊接硬件电路,通过ISP下载线将HEX文件烧制入单片机,完成整个设计并进行实际操作,并实际记录单片机工作情况。目录1 概述 1.1 背景知识介绍3 1.2 设计内容3 1.3 设计任务和要求3 1.4 设计意义42 系统总体方案及硬件设计 2.1 系统总体方案设计52.2 硬件电路总体设计方案52.3 硬件电路设计5 2.3.1 电源晶振与复位部分6 2.3.2 中央单片机部分7 2.3.3 交通灯与计时牌部分82.3.4 按键控制部分83 软件设计 3.1 软件系统总体设计方案10 3.2 软件系统设计具体过程11 3.2.1 主程序11 3.2.2 定时器0中断服务程序11 3.3.3

4、定时器1中断服务程序12 3.2.4 延时程序12 3.2.5 外部中断0服务程序12 3.3.6 外部中断1服务程序13 3.2.7 显示程序134 Proteus软件仿真 4.1 Proteus软件简介16 4.2 Proteus仿真过程165 硬件焊接与调试 6课程设计体会参考文献附1:源程序代码附2:系统原理图1 概述1.1 概述近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善

5、。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1.2 设计目的(1)加强对单片机和C51语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。(2)用单片机模拟实现具体应用,使个人设计能够真正使用。(3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。(4)提高利用已学知识分析和解决问题的能力。(5)提高实践动手能力。1.3 设计任务和内容1.3.1设计任务结合教材及参考资料,用AT89C51单片机模拟实现十字路口的交通灯亮灭、倒计时显示、紧急情况处理等功能。1.3.2设计内容(1)填写设计

6、任务书。(2)进行总体设计,画出原理图。(3)用Protel软件画出PCB板并制板。(4)焊接器件和芯片。(5)编写并调试程序。2 系统总体方案及硬件设计2.1 系统总体方案设计本系统由硬件系统和软件系统组成,硬件系统包括按键控制模块、中央处理系统和指示灯倒计时显示模块;而为了实现相应功能软件系统包括软件系统包括主程序、定时器0中断服务程序、定时器1中断服务程序、延时程序、外部中断0服务程序、外部中断1服务程序和显示程序。2.2 硬件电路总体设计方案硬件系统包括按键控制部分、中央单片机部分、时钟电路与复位电路部分和交通灯与计时牌显示部分。这几个部分协调工作完成预定任务。硬件电路连接关系如下图:

7、 图1按键控制部分中央单片机时钟与复位电路交通灯与计时牌显示2.3 硬件电路设计本系统以AT89S52单片机为核心,包括中央单片机部分、电源晶振与复位电路部分、输出驱动控制部分和交通灯与计时牌显示部分和按键控制部分。2.3.1电源晶振与复位部分图 3时钟电路在单片机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟是保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢。为达到振荡周期是12 MHZ的要求,这里要采用12 MHZ的晶振,另外有两个30P的电容,两晶振引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。

8、具体连接如图3复位是单片微机的初始化操作,其主要功能是把PC初始化为0000H,使单片微机从0000H单元开始执行程序。除进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,可以按复位键以重新启动,也可以通过监视定时器来强迫复位。RST引脚是复位信号的输入端。复位电路在这里采用的是上电+按钮复位电路形式,具体连接电路如图4。图 42.3.3 中央单片机部分2.3.2 中央单片机部分图 5中央单片机部分为Atmel公司生产的单片机AT89S52。AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system prog

9、rammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S52(如图5)具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)

10、电路,片内时钟振荡器。2.3.3 交通灯与计时牌部分交通灯采用6个发光二极管组成,由P1口控制,附限流电阻。 而计时牌采用共阴极数码显示器,通常,共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,该端所连接的字符导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。同样,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。本次设计在显示模块用到的是两个两位一体共阴极数码管,共有8个代码输入口和4个位选输入口,采用排阻提供上拉电流数码管,以保证有足够大的电流点亮数码管,采用动态驱动,使各位数码管逐个轮流受控显示,

11、这就是动态驱动,由于扫描速度极快,显示效果与静态驱动相同。同时,由于P0口的特性,附加470欧上拉电阻以驱动。显示牌部分交通灯部分图 6该部分硬件连接如图6。图 82.3.4 按键控制电路按键控制电路用于接收外部中断和接收输入信号,并控制程序运行。电路如图 8。3 软件设计在设计程序之前,我们首先要对单片机应用系统预完成的任务进行深入的分析,明确系统的设计任务、功能要求和技术指标。其次,要对系统的硬件资源和工作环境进行分析。这是单片机应用系统程序设计的基础和条件。3.1 软件系统总体设计方案定时器中断入口重赋定时器初值计数以统计时间中断结束定时器中断服务程序中断服务入口检查系统状态进行相应服务

12、中断结束返回外部中断服务程序开始初始化外部中断定时器中断调用显示程序调节每灯时间是否正常YN主程序本次单片机课程设计软件设计部分采用模块化程序设计,软件系统包括主程序、定时器0中断服务程序、定时器1中断服务程序(用以扩充外部中断)、延时程序、外部中断0服务程序、外部中断1服务程序和显示程序。程序流程图如图。图9显示程序入口判断工作情况正常紧急并可修改调用数码管显示调用数码管显示显示程序结束显示程序图103.2 软件系统设计具体过程软件设计部分采用模块化程序设计,用C语言编写。Keil是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构

13、性、可读性、可维护性上有明显的优势,因而易学易用。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。软件系统包括主程序、定时器0中断服务程序、定时器1中断服务程序、延时程序、外部中断0服务程序、外部中断1服务程序和显示程序。3.2.1 主程序#include #include #include #define uint unsigned int#define uchar uns

14、igned charuchar data timelist=30;/用于倒计时显示uchar count=0;/配合计时器中断实现1S的计时uchar yelltime=0;uchar intswitch;/用于按键中断后判断所按键uchar data time4=30,5,20,5;/每色灯时间uchar data disbuf4=0;/用于显示uchar n=0;uchar yellow=0xff;/黄灯闪烁功能实现sbit P3_2=P32;sbit P3_3=P33;sbit P3_5=P35;/需要采用的中断服务端口/主程序main()TCON=0x05; /初始化中断,外部中断0、

15、1为下降沿触发TMOD=0x51; /初始化计时器0、1,定时器0采用定时方式1,定时器1采用计数方式1 TH0=-50000/256;TL0=-50000%256; /初始化定时器0初值TH1=0xff;TL1=0xff;/初始化定时器1初值EA=1;/开系统总中断ET0=1;/开计时器0EX0=1;/开外部中断0ET1=1;/开定时器1EX1=1;/开定时器1TR1=1;/定时器1工作TR0=1;/进行第一次计时器中断服务while(1)disp();/显示灯3.2.2 定时器0中断服务程序 /定时器0的中断服务程序,100ms中断一次,即每100ms执行一次该中断服务程序。void ti

16、mer0(void) interrupt 1TH0=-50000/256;TL0=-50000%256;/重新赋初值count+;yelltime+;if(yelltime=10)yelltime=0;yellow=yellow0x12; /黄灯闪烁if(count=20)count=0;timelist-; /倒计时if(timelist=0) /倒计时结束后重置数值n+;if(n=4)n=0;timelist=timen;3.3.3 定时器1中断服务程序/定时器1服务程序void timer1(void) interrupt 3TH1=0xff;/赋初值,用定时器扩充外部中断,初值FFTL

17、1=0xff;dlms(5);if(!P3_5)while(!P3_5)dlms(1);dlms(5);if(P3_5)if(TR0=1)count=0;n=2;timelist=timen;if(TR0=0)time2=time2+1;if(time290)time2=10;3.2.4 延时程序/延时程序用于按键消抖和动态显示void dlms(uint x)uint i=x,j;while(i-)j=100;while(j-);3.2.5 外部中断0服务程序/外部中断0服务程序void int0(void) interrupt 0dlms(5);if(!P3_2)while(!P3_2)d

18、lms(1);dlms(5);if(P3_2)/延时消抖TR0=!TR0;/改变定时器状态用于调整系统状态if(TR0=1)count=0;n=0;timelist=timen;/判断定时器是否重新启动,若启动则重新开始工作2.3.6 外部中断1服务程序/外部中断1服务程序void int1(void) interrupt 2dlms(5);if(!P3_3)while(!P3_3)dlms(1);dlms(5);if(P3_3)if(TR0=1)/判断系统状态,根据不同状态执行任务count=0;n=0;timelist=timen;/正常状态,切换道路通行if(TR0=0)/紧急状态,可调

19、整通行时间time0=time0+1;if(time090)/通行时间范围time0=10;2.3.7 显示程序/显示程序void disp(void)uchar i,j;uchar sel;if(TR0=0)/判断系统状态,进行不同服务disbuf0=time2%10;disbuf1=time2/10;disbuf2=time0%10;disbuf3=time0/10;P2=0xff;sel=0x01;for(i=0;i4;i+)j=disbufi; /显示时间P2=(sel0xff);P0=tablej;dlms(2);P2=0xff;sel=sel1;P1=0x09;/交通灯显示if(T

20、R0=1)disbuf0=timelist%10; disbuf1=timelist/10;disbuf2=timelist%10;disbuf3=timelist/10;P2=0xff;sel=0x01;for(i=0;i4;i+)j=disbufi; /显示时间P2=(sel0xff);P0=tablej;dlms(2);P2=0xff;sel=sel1;if(n=0) /控制交通灯程序P1=0x0c;if(n=1|n=3)P1=yellow;if(n=2)P1=0x21;4 PROTEUS仿真4.1 PROTEUS简介Proteus 是英国Labcenter公司开发的电路分析与实物仿真软

21、件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:ARM7(LPC21xx)、 8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以

22、观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2、MPLAB等软件。具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。4.2 仿真过程接通电源,系统开始工作。系统初始状态设置为主干道无车,主干道绿灯,次干道红灯从初始时间30秒开始计时。图1130秒后,开始变换车道,黄灯闪烁,倒计时为5秒。图125秒后,次干道通车,主干道红灯,次干道绿灯,倒计时为20秒。图13特殊情况的实验。特殊情况1,次干道无车,干道马上通行,按控制钮2,系统直接进入主干道通

23、行状态,主干道绿灯,次干道红灯,倒计时为30秒。图14特殊情况2,主次干道无车,次干道马上通行,按控制按钮3,系统直接进入次主干道通行状态,次主干道绿灯,主干道红灯,倒计时为20秒。图15紧急情况,主干道与次干道皆不可通车,都为红灯,该状态下可以调整各干道通行时间,主干道倒计时牌显示主干道的通行时间,次干道倒计时牌显示次干道的通行时间,通过按钮2、3可以调整主/次干道通行时间,范围为1090紧急情况:图16调节主干道通行时间:图17调节次干道通行时间:图18再次按按钮1,接触紧急状态,并按照修改过的通行时间继续工作主干道通行:图19次干道通行:图205 硬件的焊接与调试对照原理图进行焊接工作,

24、把硬件先依次正确插到相应的位置,然后再次检查器件是否都正确,确定无误后进行焊接.在焊接的过程中要注意不要将相临的两个引脚焊接在一起,防止短路影响使用。硬件连接好以后,通过ISP下载线向单片机内烧制HEX程序,观察各部分工作情况。硬件连接如图图216 课程设计体会通过这几天的单片机的实训,我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,实训锻炼了自己动手能力和思维能力,还有在软件方面的编程能力,让我受益匪浅,同时也暴露出一些平时学习上的问题,让我深刻反思。这些问题的发现将为我以后的学习和工作找明道路,查漏补缺为进一步学习作好准备。通过实训,让我更熟悉掌握了Keil ,prote

25、us 这些应用程序的运用,让我懂得了如何编写一些简单的程序,学会了如何制作单片机应用程序,还有焊接和程序下载,。但在中间暴露出很多问题:对平时上课讲的理论知识没有完全掌握消化,到了实际操作中还得请教同学,在焊接中焊接的基本工夫掌握不到家,手上工夫还是很欠缺的,使得电路板不是很美观。这些问题的发现,有助于提高我在以后的工作和学习中对此类问题的认识,确保不在同一问题上再次犯错。严谨求实、踏实务实,是我这次实训的深刻总结。做课程设计的这几天翻阅了很多书,也上了很多网站去寻找自己需要的资料。这种寻找有很强的目的性,只是为了自己选定的课题内容而查阅,所以除了自己课题以外的其他方面几乎还是一无所知。这让我

26、深刻的认识到了自己专业知识的贫乏。为我对自己大三生活的规划敲响了警钟。我对单片机的学习不会因为课程设计的结束而结束,在接触的众多资料里,做设计只是走马观花般的点到。 通过单片机课程设计,我加深了对单片机理论的理解,学回了怎样将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的不畏困难的挑战精神,从而不断地战胜自己,超越自己,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。参考文献 1 余发山,王福忠 单片机原理及应用技术 中国矿业大学出版社 2008.

27、62 河南理工大学电气学院 单片机实验报告指导册 河南理工大学出版社 2009附1 源程序代码#include #include #include #define uint unsigned int#define uchar unsigned charuchar data timelist=30;/用于倒计时显示uchar count=0;/配合计时器中断实现1S的计时uchar yelltime=0;/用于实现黄灯闪烁功能uchar intswitch;/用于按键中断后判断所按键uchar data time4=30,5,20,5;/每色灯时间uchar data disbuf4=0;/用于

28、显示uchar n=0;/用于记录各灯顺序uchar yellow=0xff;/黄灯闪烁功能实现sbit P3_2=P32;sbit P3_3=P33;sbit P3_5=P35;/需要采用的中断服务端口uchar code table10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共阴极字型码/定时器0的中断服务程序,100ms中断一次,即每100ms执行一次该中断服务程序。void timer0(void) interrupt 1TH0=-50000/256;TL0=-50000%256;/重新赋初值count+;yelltime

29、+;if(yelltime=10)yelltime=0;yellow=yellow0x12; /黄灯闪烁if(count=20)/若到一秒count=0;timelist-; /倒计时if(timelist=0) /倒计时结束后重置数值n+;if(n=4)n=0;timelist=timen;/调整灯的周期/延时程序用于按键消抖和动态显示void dlms(uint x)uint i=x,j;while(i-)j=100;while(j-);/外部中断0服务程序void int0(void) interrupt 0dlms(5);if(!P3_2)while(!P3_2)dlms(1);dlm

30、s(5);if(P3_2)/延时消抖TR0=!TR0;/改变定时器状态用于调整系统状态if(TR0=1)count=0;n=0;timelist=timen;/判断定时器是否重新启动,若启动则重新开始工作/外部中断1服务程序void int1(void) interrupt 2dlms(5);if(!P3_3)while(!P3_3)dlms(1);dlms(5);if(P3_3)if(TR0=1)/判断系统状态,根据不同状态执行任务count=0;n=0;timelist=timen;/正常状态,切换道路通行if(TR0=0)/紧急状态,可调整通行时间time0=time0+1;if(tim

31、e090)/通行时间范围time0=10;/定时器1服务程序void timer1(void) interrupt 3TH1=0xff;/赋初值,用定时器扩充外部中断,初值FFTL1=0xff;dlms(5);if(!P3_5)while(!P3_5)dlms(1);dlms(5);if(P3_5)if(TR0=1)count=0;n=2;timelist=timen;if(TR0=0)time2=time2+1;if(time290)time2=10;/显示程序void disp(void)uchar i,j;uchar sel;if(TR0=0)/判断系统状态,进行不同服务disbuf0=

32、time2%10;disbuf1=time2/10;disbuf2=time0%10;disbuf3=time0/10;P2=0xff;sel=0x01;for(i=0;i4;i+)j=disbufi; /显示时间P2=(sel0xff);P0=tablej;dlms(2);P2=0xff;sel=sel1;P1=0x36;/交通灯显示if(TR0=1)disbuf0=timelist%10; disbuf1=timelist/10;disbuf2=timelist%10;disbuf3=timelist/10;P2=0xff;sel=0x01;for(i=0;i4;i+)j=disbufi;

33、 /显示时间P2=(sel0xff);P0=tablej;dlms(2);P2=0xff;sel=sel1;if(n=0) /控制交通灯程序P1=0x33;if(n=1|n=3)P1=yellow;if(n=2)P1=0x1e;/主程序main()TCON=0x05; /初始化中断,外部中断0、1为下降沿触发TMOD=0x51; /初始化计时器0、1,定时器0采用定时方式1,定时器1采用计数方式1 TH0=-50000/256;TL0=-50000%256; /初始化定时器0初值TH1=0xff;TL1=0xff;/初始化定时器1初值EA=1;/开系统总中断ET0=1;/开计时器0EX0=1;/开外部中断0ET1=1;/开定时器1EX1=1;/开定时器1TR1=1;/定时器1工作TR0=1;/进行第一次计时器中断服务while(1)disp();/显示灯附2 系统原理图- 30 -

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!