1、单片机实训报告课程名称: 单片机小系统设计与制作 目录1 概述 1.课题名称 2.设计任务 3.设计意义2 系统总体方案及硬件设计 1系统方框图2工作原理3电路原理图4单片机最小系统5时间显示电路 6交通灯电路 3 软件设计1单片机交通控制系统总体设计 2系统流程图 3系统仿真电路图 4仿真结果分析4 系统软件程序的设计1 程序主体设计流程2 理论基础知识3子程序模块设计4系统软件调试5 professional仿真6集成开发环境KEIL5 系统总体原理图6 系统程序7 材料清单概述1实训名称单片机控制的十字路口交通灯数码管显示控制系统设计。2.设计任务1)完成交通灯的变化规律,就是一个十字路
2、口分别为东西向和南北向,四个路口均有红黄绿三灯和两位LED数码显示管,及每个路口有一个人行道交通灯。2)交通灯上电后进入初始状态即东西红灯常亮60s,南北绿灯常亮65s,第一种状态:南北绿灯亮通车,东西红灯亮禁止通行,当东西红灯亮时,东西方向的人行道为绿灯,持续60s后转第二个状态:南北绿灯灭转黄灯闪亮5次,延时5s,东西仍然红灯,东西方向人行道仍为绿灯;5s后转第三个状态:东西绿灯亮通车60s,南北转红灯禁止通行65s,南北方向人行道为绿灯持续60s ;60s后转第四个状态:东西绿灯灭转黄灯闪亮5次,延时5s,南北仍然红灯,南北方向人行道仍为绿灯。最后循环至第一种状态。3)用4个两位一体LE
3、D数码管(各个方向均有1个两位一体LED数码管,分别表示个位和十位)显示倒计时。倒计时用于提醒驾驶员和行人信号灯发生变化的时间,以便他们在“停止”和“通行”两者作出合适的选择。3.设计意义交通灯一般设在十字路口,在醒目位置用红、绿、黄三种颜色的指示灯。加上一个倒计时的显示计时器来控制行车。对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点:1两车道的车辆轮流放行时间太短,变化太快, 在十字路口,经常一个车道为主干道,车辆较多,放行时间应该长些;另一车道为副干道,车辆较少,放行时间应该短些。2没有考虑紧急车通过时,两车道应采取的措施,比如,消防车执行紧
4、急任务通过时,两车道的车都应停止,让紧急车通过。在交通灯控制系统设计过于死板,智能交通灯控制系统的设计就更显示出了它的实用意义,它能根据道路交通拥挤,交叉路口经常出现拥堵的情况。利用单片机控制技术提出了软件和硬件设计方案,能够实现道路的最大通行效率。系统及硬件设计 1.系统方框图 AT89C51 交通灯数码管显示部分复位电路 时钟电路 交通灯2.工作原理由软件设置交通灯的初始时间,南北方向通行65秒,东西方向通行60秒,数码管使用动态显示,P0口送字形码,P2口送字位选通信号,通过单片机的P1口控制各种信号灯的燃亮与熄灭。采用中断方式实现按键的功能。东西方向 EW G Y R 系统控制 电路南
5、北方向 NS G Y R3.电路原理图4单片机最小系统单片机最小系统以89C51为核心,外加时钟和复位电路,电路结构简单,抗干扰能力强,成本相对较低,非常符合本设计的所有要求。89C51单片机系列是MCS-51系列的基础上发展起来的,是当前8位单片机的典型代表,采用CHMOS工艺,即互补金属氧化物的HMOS工艺, CHMOS是CMOS和HMOS的结合,具有HMOS高速度和高密度的特点,还具有CMOS低功耗的特点。时钟电路在单片机的外部通过XTAL1,XTAL2这两个引脚跨接晶体振荡器和微调电容,构成稳定的自激振荡器.本系统采用的为12MHz的晶振,一个机器周期为1us,C2,C3为30pF。复
6、位电路分为上电自动复位和按键手动复位,RST引脚是复位信号的输入端,复位信号是高电平有效.上电自动复位通过电容C1和电阻R4来实现,按键手动复位是图中复位键来实现的。5时间显示电路(如图-4所示)因为系统要求南北和东西方向的信号灯时间不一样,所以就利用单片机的P0口送出数据的段码,位选信号用P2口送出,用动态扫描的方法显示东西、南北的倒计时间(如图-4所示)。数码管使用共阳数码管,需要接上270欧上拉电阻以提供足够大的电流来驱动数码管。6.交通灯电路本设计利用单片机的p1口来驱动和控制各种信号灯的燃亮和燃亮时间,在实际中,交通灯的信号灯需要用高电压控制,在这里我们只是模拟一下它的控制信号,所以
7、我们就只用单片机的信号引脚直接来控制发光二极管(如图-5所示)如图-5所示软件设计 1单片机交通控制系统总体设计(1)单片机交通控制系统的通行方案设计十字路口分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如下图所示。说明:黑色表示亮,白色表示灭。东西方向红灯亮倒计时65秒,同时绿灯亮倒计时60秒,东西向禁止通行,南北向允许通行。倒计时到60秒后进入下一个状态。同时南北方向黄灯灭,红灯亮,同时倒计时5秒。此状态下,东西向禁止通行,南北向允许通行。东西方向绿灯亮倒计时60秒,南北方向红灯亮倒计时65秒,此状态下,东西向
8、允许通行,南北向禁止通行。同时东西方向黄灯亮,南北方向红灯亮,倒计时5秒,东西向允许通行,南北向禁止通行。除了已经正在通行中的其他所以车辆都需等待状态转换。下面我们可以用图表表示灯状态和行止状态的关系如下:表1交通状态及红绿灯状态状态1状态2状态3状态4东西向禁行等待变换通行等待变换南北向通行等待变换禁行等待变换东西红灯1100东西黄灯0001东西绿灯0010南北红灯0011南北绿灯1000南北黄灯0100东西南北四个路口均有红绿黄3灯和数码显示管2个,在任一个路口,遇红灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。状态及红绿灯状态如表1所示。说明:0表示灭,1表示亮。(2) 单片
9、机交通控制系统的功能要求本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还能进行倒计时显示功能。(1)倒计时显示倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的1种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择 。(2)时间的设置本设计中可通过键盘对时间进行手动设置,增加了人为的可控性,避免自动故障和意外发生,并再紧急状态下,可
10、设置所有灯变为红灯。键盘是单片机系统中最常用的人机接口,一般情况下有独立式和行列式两种。前者软件编写简单,但在按键数量较多时特别浪费I0口资源,一般用于按键数量少的系统。后者适用于按键数量较多的场合,但是在单片机I0 口资源相对较少而需要较多按键时,此方法仍不能满足设计要求。本系统要求的按键控制不多,且I0口足够,可直接采用独立式。2.程序流程图3.系统仿真电路图professional仿真4.仿真结果分析仿真实验实现南北方向车道和东西方向车道两条交叉道路的车辆交替运行,南北方向每次通行时间设为65秒、东西方向通行时间设为60秒,时间可以在程序中修改。同时能够实现红灯、黄灯、绿灯状态转换,红绿
11、灯转换时间为5秒,转黄期间黄灯亮。系统软件程序的设计1 程序主体设计流程设计说明:该智能交通灯控制系统的软件设计采用的是顺序执行并反复循环的方法。2. 理论基础知识5.2.1定时器原理定时器工作的基本原理其实就是给初值,让它不断加1直至减完为模值,这个初值是送到TH和TL中的。它是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此,我们可以把计数器记满为零所需的计数值,即所要求的计数值设定为C,把计数初值设定为TC 可得到如下计算通式:TC=M-C式中,M为计数器模值。计数值并不是目的,目的是时间值,设计1次的时间,即定时器计数脉冲的周期为T0,它是单片机系统主频周期的12倍,设要求的
12、时间值为T,则有C=TT0。计算通式变为:T=(MTC)T0模值和计数器工作方式有关。在方式0时M为8192;在方式1时M的值为65536;在方式2和3为256。就此可以算出各种方式的最大延时。如单片机的主脉冲频率为12MHZ,经过12分频后,若采用方式最大延时只有8.129毫秒,采用方式最大延时也只有65.536毫秒。这就是为什么扫描周期为50ms的原因,若使用软件则会耽搁程序流程,显然不可行。相反,时间计时方面却不可能只用计数器,因为显然秒钟已经超过了计数器的最大定时间,所以我们还必须采用定时器和软件相结合的办法才能解决这个问题。5.2.2软件延时原理MCS-51的工作频率为12MHZ,机
13、器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/12MHZ)=1us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间,但同时由于单片机的运行速度很快其他的指令执行时间可以忽略不计。 3.子程序模块设计1.状态灯显示及判断在本设计中,实际控制的灯只有6个,即:东西红灯,东西绿灯,东西黄灯,南北红灯,南北绿灯,南北黄灯。定义IO端口如下,其中均是低电平有效。H_RED BIT P1.0H_YELLOW BIT P1.1H_GREEN BIT P1.2L_RED BIT P1.3L_ YELLOW BIT P1.4L_ GREEN B
14、IT P1.5共有4钟状态:东西红灯亮,南北绿灯亮(0F3H);东西红灯亮,南北黄灯亮(0F5H);东西绿灯亮,南北红灯亮(0DEH);东西黄灯亮,南北红灯亮(0EEH)。括号中是P1端口8个引脚值对应的十六进制码。用于显示发光二极管时,部分程序如下: 东西红,南北绿,计时时间为65s、60s mov r4,#00 mov 30h,#65 mov 31h,#60 mov p1,#11110101b lcall q1 mov r1,31h cjne r1,#00,w22. LED倒计时显示LED计时每1秒都要刷新1次,采用的是动态显示,首先将b除以10H,整数即十位放在40H中,余数即个位放在4
15、1H中,设置7段LED显示数据的数据表,用数据指针寄存器DPTR指向数据表的首地址,再加上A中的偏移量,就可以指向十位数字,然后送显即可,个位显示同理。具体程序如下:q1: mov a,30h mov b,#10 div ab mov 41h,b mov 40h,a mov p2,#00000001b mov dptr,#e mov a,40h movc a,a+dptr mov p0,a lcall dl mov p2,#00000010b mov b,41h mov dptr,#e mov a,41h movc a,a+dptr mov p0,a lcall dl mov a,31h mo
16、v b,#10 div ab mov 43h,b mov 42h,a mov p2,#00000100b mov dptr,#e mov a,42h movc a,a+dptr mov p0,a lcall dl mov p2,#00001000b mov b,43h mov dptr,#e mov a,43h movc a,a+dptr mov p0,a lcall dl ret4. 系统软件调试1 professional仿真器仿真的概念其实使用非常广,最终的含义就是使用可控的手段来模仿真实的情况。单片机系统开发中的仿真包括软件仿真和硬件仿真。软件仿真这种方法主要是使用计算机软件来模拟实际
17、的单片机运行,因此仿真与硬件无关的系统具有一定的优点。用户不需要搭建硬件电路就可以对程序进行验证,特别适合于偏重算法的程序。软件仿真的缺点是无法完全仿真与硬件相关的部分,因此最终还要通过硬件仿真来完成最后的设计;硬件仿真使用附加的硬件来替代用户系统的单片机并完成单片机全部或大部分的功能。使用了附加硬件后用户就可以对程序的运行进行控制,例如单步、全速、查看资源断点等。2. 集成开发环境KEILKEIL IDE Vision3集成开发环境主要由以下部分组成: u Vision2 IDE。Ision3 IDE包括:一个工程管理器,一个功能丰富并有交互式错误提示的编辑器选项设置生成工具,以及在线帮助。
18、使用visio3创建源文件并组成应用工程加以管理。Vision3可以自动完成编译汇编链接程序的操作; C51编译器和A51汇编器。Vision3IDE创建的源文件可以被C51编译器或A51汇编器处理生成可重定位的object文件。KEIL C51编译器遵照ANSI C语言标准支持C语言的所有标准特性,另外还增加了几个可以直接支持89C51结构的特性。KEIL A51宏汇编器支持89C51及其派生系列的所有指令集;BL51链接器定位器。L51链接器使用从库中提取出来的目标模块和由编译器汇编器生成的目标模块创建一个绝对地址目标模块,绝对地址目标文件或模块包括不可重定位的代码和数据所有的代码和数据都
19、被固定在具体的存储器单元中。利用KEIL开发和调试系统软件流程大致如下:启动Vision3,进入KEIL软件的集成开发环境;利用KEIL内置的文本编辑器进行程序源文件的编辑,因为KEIL集成的文本编辑器对中文支持不是很好,可以选择其他的编辑器(本文使用的文本编辑器是Ultraedit32),Vision3能够自动识别外部改变了的源文件;建立工程,指定针对哪种单片机进行开发,指定对源程序的编译、链接参数,指定调试方式(本文采用外部硬件仿真器仿真调试的方式,即使TKS仿真器仿真),然后对工程进行相关设置;设置好工程后即可进行编译、链接。连接仿真器对软件进行调试。也可以生成下载到单片机存储器上的HE
20、X文件。系统的软件调试借助于professional仿真器,在进行系统软件的连续调试之前要先进行软件的初调,就是要使各个子程序模块运行正确,程序的运行流程正确。软件调试主要分以下几个步骤进行:功能子程序的调试。能子程序的调试包括运算、采样、数字滤波以及PID运算等子程序的调试。在调试功能子程序时,许多参数都是未知的,要根据其所需的条件,给出假定的数据,使其运行,如果能完成预定的处理功能或与手工计算的结果相符,就说明该子程序己调试通过。调试时由小到大,由里到外。例如,调试PID算法子程序时,先调通其包含的各个运算子程序和参数处理子程序,然后将它们连起来进行通调。通调时,也是假定一些数据、参数和初
21、始条件,然后运行程序。当运算结果与手工计算的结果相同时,该算法子程序则调试完成,反之,就要进行相应的修改。其它子程序的调试同理;程序流程的调试。序流程的调试主要是查看程序运行的步骤是否正确,在某时刻程序运行所处的位置是否正确,是否能正确运行各个中断服务程序。在调试过程中,先将PID算法子程序屏蔽,输出可控硅导通时间用一个固定的常数代替,在各个中断服务子程序设置断点,然后运行程序,查看程序是否能运行到所有的断点,若所有断点都能运行到,则程序流程基本正确。去掉所有断点,再一次运行程序,查看可控硅状态,从而判断程序流程正确,反之,若程序流程不正确,做相应的修改后,重新调试;功能程序与算法程序的通调。
22、完成整个程序流程的调试后,将PID等算法子程序加入,在算法子程序前或后设置断点,运行整个程序。当程序在断点处暂停时,查看PID计算的控制量与手工计算的值是否相同。多运行几次,若每次的结果都正确,则说明程序各个部分互相没有矛盾,反之,则说明算法子程序和其它子程序之间有影响,需要做相应的修改后重新调。系统总体原理图 系统程序 org 0000hajmp st org 000bhajmp tt st: mov tcon ,#00000001b mov th0,#3ch mov tl0,#0b0h mov ie,#10000010b setb tr0w1: mov r4,#00 mov 30h,#65
23、 mov 31h,#60 w2: mov p1,#11110101b lcall q1 mov r1,31h cjne r1,#00,w2 mov r3,#00s: mov r4,#00h mov 31h,#05s1: mov p1,#11110011b lcall q1 mov p1,#11110111b lcall q1 mov r7,30h cjne r7,#00,s1 cjne r3,#05,ff: mov r4,#00 mov 30h,#65 mov 31h,#60f1: mov p1,#11101110b lcall q1 mov r1,31h cjne r1,#00,f1 mov
24、 r3,#00t: mov r4,#00h mov 31h,#05e1: mov p1,#11011110b lcall q1 mov p1,#11111110b lcall q1 mov r7,30h cjne r7,#00,e1 cjne r3,#05,v1v1: ajmp w1tt: inc r4 cjne r4,#250,x mov r4,#00h dec 31h dec 30h x: mov th0,#3ch mov tl0,#0b0h retiq1: mov a,30h mov b,#10 div ab mov 41h,b mov 40h,a mov p2,#00000001b m
25、ov dptr,#e mov a,40h movc a,a+dptr mov p0,a lcall dl mov p2,#00000010b mov b,41h mov dptr,#e mov a,41h movc a,a+dptr mov p0,a lcall dl mov a,31h mov b,#10 div ab mov 43h,b mov 42h,a mov p2,#00000100b mov dptr,#e mov a,42h movc a,a+dptr mov p0,a lcall dl mov p2,#00001000b mov b,43h mov dptr,#e mov a,43h movc a,a+dptr mov p0,a lcall dl retdl:mov r6,#20 d1: mov r5,#250 djnz r5,$ djnz r6,d1 ret e:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h END 材料清单:名称 型号 数量单片机 stc89c51 1数码管 四位一体 1电阻 10k 1电阻 270欧 14排阻 9位 1LED 黄灯 4个LED 红灯 12个LED 绿灯 12个电解电容 10uf 1电容 33pf 3晶振 12MHZ 1Ic插座 40引脚 1排针 4电路板 1
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100