您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页基于单片机的交通信号灯设计

基于单片机的交通信号灯设计

来源:爱够旅游网


毕业设计(论文)

题 目 基于单片机的交通信号灯设计

- 1 -

基于MSC-51单片机的交通信号灯的设计

摘要: 根据MSC-51单片机的特点及交通灯在实际控制中的特点,本文提出一种用单片机自动控制交通灯及时间显示的方法。同时给出了软硬件设计方法设计过程包括硬件电路设计和程序设计两大步骤,对在单片机应用中可能遇到的重要技术问题都有涉足。本文对十字路口状态预设为两种,一种是正常状态,另一种是故障或紧急状态,并分别用黄、红、绿色灯的不同组合来表示。本文介绍了控制基本原理以及控制的表现,同时也介绍了城市交通信息系统的设计目标, 开发途径及其系统结构与功能和数据地理编码、建库, 同时论述了系统中交通现状、交通管理、交通规划及背景信息查询模块的建造及应用。介绍了用于城市交叉路口的三色程控交通信号时间显示器的研制方案,对其电源供电、发光二极管构成的负载结构、灯色时间检测都给出了精巧合理的优化结构,大幅度地提高了产品可靠性并降低了制造成本

关键词:MSC-51单片机;交通灯;自动控制;时间显示器;软件;硬件;定时器;延时;外部中断

1 绪论

单片微型计算机是微型计算机的一个重要分支,也是一种非常活跃和颇具生命力的机种。单片微型计算机简称单片机,特别适合应用于控制领域。

通常单片机由单块集成电路芯片构成,内部包含计算机的基本功能部件:CPU、存储器、I/O接口电路、定时/计数器、串行口等。因此,单片机只需要在适当的软件及外部设备相结合,便可成为一个单片机控制系统。MSC-51系列单片机是英特尔公司于1980年起推出的第二代产品。与8084相比,8051的硬件结构和指令系统均有很大改进,可支持更大的存贮空间,扩充了更多的硬件功能I/O功能,速度提高了2- 5倍,可完成逻辑运算等。近年来推出的一些增强的MSC-51系统单片机,片内还集成了许多特殊功能单元,只需要加一些扩展电路及必要的通道接口即可构成各种计算机应用系统。因此,MSC-51系统单片机在智能仪表、智能接口、功能模块等领域得到了非常广泛的应用。 主要技术特性:

1.适于控制应用的8位CPU。

- 2 -

2.扩展的逻辑处理能力。

3.KB程序存贮器空间和KB数据存贮器空间。 4.4KB片内程序存贮器。 5.128B片内数据RAM。

6.32根双向和可单独寻址的输入输出线。 7.2个16位定时/计数器,片内时钟发生器。 8.全双工异步发送/接收器。

9.6源5向量中断结构,具有两个优先级。

图1.1 8051引脚图

单片微型计算机是微型计算机的一个重要分支,也是一种非常活跃和颇具生命力的机种。单片微型计算机简称单片机,特别适合应用于控制领域。

通常单片机由单块集成电路芯片构成,内部包含计算机的基本功能部件:处理器 CPU,存储器 I/O 接口电路等。因此,单片机只需要在适当的软件及外部设备相结合,便可成为一个单片机控制系统。

由于单片机是把微型计算机主要部件都集成在一块芯片上,即一块芯片就是一个微型计算机。因此,单片机具有以下特点:

1.控制功能强。为了满足工业控制要求,单片机系统的指令系统中均有极其丰富条件分支转移指令,较强的 I/O 逻辑操作及位处理功能,因而其控制灵活,方

- 3 -

便,容易满足工业控制的要求。

2.抗干扰能力强,可靠性好。单片机集成度高,体积小,内部采用总线结构,减少了芯片间内部之间的连线, 大大提高了单片机可靠性和抗干扰能力,适宜于恶劣环境下工作。

3.性能价格比高。单片机功能丰富,价格仅为 5~30 元。

4.易扩展。片内具有计算机正常运行所必须的部件,片外有许多供扩展使用的三总线并行,串行输入输出管脚,很容易构成各种规模的应用系统。

5.低功耗,低电压。一般单片机的功耗仅为 20~100mW,电压为 2~6V,便于生产便携式产品。

2 方案论证

随着人民的生活水平不断的提高,城市交通问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。

优越舒适的生活环境时刻吸引着收入不断增加的人群,导致城市机动车量的不断增加,而城市道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。所以,如何采用合适的控制方法,最大限度利用好耗费巨资修建的城市高速道路,缓解主干道与匝道、城区同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主要问题。为此,本文就城乡交通信号灯的电路原理、设计计算和实验调试等问题来进行具体分析讨论。

2.1对控制系统的要求

主支线路口的交通信号灯:主干道为南北两道,支干道为东西两道。正常情况下主干道绿灯亮18秒,支干道红灯亮20秒,主干道绿灯亮完后转为黄灯亮(闪烁亮)为2秒,黄灯亮完后转为红灯亮18秒,同时支干道有红灯转为绿灯亮16秒。支干道绿灯亮完后转为黄灯(闪烁亮)为2秒,黄灯亮完后转为红灯亮20秒,同时主干道转为绿灯亮18秒。有急救车到达时,两个方向交通信号灯全红,以便让急救车通过。设急救车通过路口时间可认为控制,急救车通过后,交通恢复正常。对主干道设置强制通行控制,视主干道交通拥挤状况,可临时安排主干道的通行,以保证交通的畅通。 2.2 方案选取 方案一

- 4 -

运用电子电路设计。该方案主要用到了状态控制器,状态译码器,秒信号发生器,减法计数器等。状态控制器主要用于记录十字路口交通灯的工作状态,通过状态译码器分别点亮相应状态的信号灯。秒信号发生器产生整个定时系统的时基脉冲,通过减法计数器完成状态转换,同时,状态译码器根据系统下一个工作状态,决定计数器下一次减法计数的初始值。减法计数器的状态由BCD码译码器译码、数码管显示。在黄灯亮其间,状态译码器将秒脉冲引入黄灯控制电路,使黄灯闪烁。 状态控制器主要采用二位二进制计数器。状态译码器的红黄绿灯的状态主要取决于状态控制器的输出状态,他们之间的关系见真值表,对于信号灯的状态,“1”表示灯亮,“0”表示灯灭。

表2.1 真值表 状态控制器 输出 Q2 0 0 1 1 现选择半导体发光二极管模拟交通灯,由于门电路的带灌电流的能力一般比带拉电流的能力强,要求门电路输出低电平时点亮相应的发光二极管。当黄灯亮时,红灯按1HZ的频率闪烁。从状态译码器真值表中看出,黄灯亮时,Q1为高电平,而红灯亮信号与Q1无关。现利用Q1信号去控制一个三态门电路74LS245(或模拟开关),当Q1为高电平时,将秒信号脉冲引到驱动红灯得与非门输入端,使红灯在其黄灯亮其闪烁;反之将其隔离,红灯信号不受黄灯信号得影响 。

产生秒信号的电路有多种形式,该设计是利用555定时器组成得秒信号发生器。对于该控制系统的调试,比较复杂,首先调试秒信号发生器,用示波器监视秒信号发生器的输出,调节电位器RW,使输出信号的周期为1S。直接将秒信号引入状态控制器脉冲输入端,在脉冲作用下,模拟三色信号灯。将秒信号引入定时系统电路脉冲输入端,在秒脉作用下,将三个74LS245的值数选通端以此接地,计数器三个不同的置数输出为进制完成减法计数,两位数码管应有相应的显示。把各个单元电

- 5 -

主干道信号灯 R(红) 0 0 1 1 Y(黄) G(绿) r(红) 0 1 0 0 1 0 0 0 1 1 0 0 支干道信号灯 y(黄) 0 0 0 1 g(绿) 0 0 1 0 Q1 0 1 0 1 路互相连接起来,进行系统连调。 方案二

单片机控制系统。如用8位单片机ATC51为控制器,组成交通信号灯系统。利用单片机的I/O口来完成信号的输入和转换,最终的显示结果通过LED数码管显示出来,另外设置两个按钮来进行交通路口的应急处理及主干道强制通行处理。 硬件方面利用ATC51的一个I/O口(P1口)驱动黄绿红灯,本装置用发光二极管来代替交通灯。考虑到简化驱动电路,6个LED发光管直接通过P1口灌电流的方式驱动。4个LED数码管采用共阳、动态显示的方式,字型口串联限流电阻510欧姆接到P0口,字位口通过4个PNP的三极管驱动并控制,用于动态扫描,分别通过P2.0~P2.3控制。计时方面以秒作为基本计时单位,可用ATC51的定时、计数器来实现。交通路口应急处理及主干道强制通行处理,可利用中断方式响应。红绿灯亮灭时间的控制及闪烁方式的控制,完全可通过程序方式实现。本方案用单次脉冲申请中断,表示有急救车通过。编制中断处理程序要注意的问题是:保护进入中断时的状态(保护现场),并在退出中断之前恢复进入时的状态(恢复现场)。

由以上两个方案相比较可以看出,利用单片机ATC51所设计的交通灯比利用电子电路所设计的交通灯具有明显的优越性。利用ATC51单片机控制的硬件电路比较简单,软件方面程序也不复杂。因此制作的原理简单,但功能作用并不低于电子电路设计的,方便小巧又通俗易懂。因此,我选择利用单片机来控制交通灯。

3 相关电子器件介绍

3.1 双极型晶体三极管

半导体三极管也称晶体三极管,是电子电路中重要的部分。它最主要的功能是电流放大和开关作用。三极管顾名思义具有三个电极。二极管是由一个PN结构成的,而三极管由两个PN结构成,共用的一个电极成为三极管的基极。其他两个电极成为集电极和发射极。

三极管最基本的作用是放大作用,它可以把微弱的电信号转换成一定的强度的信号。三极管有一种重要参数就是电流放大倍数。

当三极管应用于开关状态时,必须保证导通时三极管处于饱和,其发射极、集电极正偏;断开时三极管处于截止,其发射极、集电极反偏。 3.2 LED七段数码管显示器

发光二极管LED是一种通电后能发光的半导体器件,其导电性质与普通二极管类

- 6 -

似。LED数码显示管就是由发光二极管组合而成的一种新型显示器件,在单片机系统中应用非常普遍。它使用了8个LED发光二极管,其中7个显示字符,1个显示小数点,故通常称之为7段发光二极管数码显示器。

为了显示字符,要为 LED显示器提供段码(或称字形代码),组成一个“8”字形的7段,再加上1个小数点位,共计8段,因此提供给LED显示的段码为1个字节。各段码位的对应关系如下:

表3.1 各段码位的对应关系

段码位 7 显示段 p D6 d D5 g D4 f D3 e D2 d D1 c D0 b Da 用LED显示十六进制数和空白字符与P的显示段码表格3.2 显示段码所示。

表3.2 显示段码

字型 0 1 2 3 4 5 6 7 8 共阳极段码 C0H F9H A4H B0H 99H 92H 82H F8H 80H 字型 9 A b C d E F 空白 P 共阳极段码 90H 88H 83H C6H A1H 86H 84H FFH 8CH LED数码显示器是1种由LED发光二极管组合显示字符的显示器件,它使用了8个LED发光二极管。

LED数码显示器有两种连接方法:

共阳极接法:把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5 V, 每个发光二极管的阴极通过电阻与输入端相连。当阳极端输入低电平时,段发

- 7 -

光二极管就导通点亮,而输入高电平时则不点亮。

共阳极 显示段码 图3.1 LED数码显示器的显示段码

LED数码管显示电路:该显示电路由7段共阳数码管,限流电阻,三极管,基极电阻,P0口,P2口等组成。P0口通过与8个510Ω电阻与数码管的8个数据位相连,送显示数码。电阻即可起到限流作用,又可起到上拉电阻的作用。P2口的P2.0~P2.3通过4个4.7kΩ的电阻和4个三极管与4个7段数码管相连,起位选的作用。

4 控制器ATC51的功能特征

4.1 引脚说明

- 8 -

图4.1 引脚图

VCC:供电电压。 GND:接地。

P0口:8位双向I/O口。在访问外部存储器时,P0口用于分时传送低8位地址(地址总线)和8位数据信号(数据总线)。P0口能驱动8个LSTTL门。在不接外ROM和外RAM时,P0口可做双向I/O口用。

P1口:P1口是一个内部提供上拉电阻的8位准双向I/O口,P1口负载能力为4个LSTTL门。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

P2口:8位准双向I/O口。在访问外部存储器时,P2口用于传送高8位地址。P2口负载能力为4个LSTTL门。

P3口:8位准双向I/O口。可做一般I/O口用,同时P3口每一引脚还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。P3口第二功能如下。

P3.0--RXD (串行输入口) P3.1--TXD (串行输出口) P3.2--/INT0 (外部中断0) P3.3--/INT1 (外部中断1)

P3.4--T0 (定时/计数器0外部输入) P3.5--T1 (定时/计数器1外部输入) P3.6--/WR (外部数据存储器写选通) P3.7--/RD (外部数据存储器读选通)

- 9 -

P3口负载能力为4个LSTTL门。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE、/PROG:①正常使用为ALE功能,用来锁存P0口送出的低8位地址。P0口一般分时传送低8位地址还是8位数据地址呢?当ALE信号有效时,P0口传送的是低8位地址信号;ALE信号无效时,P0口传送的是8位数据信号。通常在ALE信号的下降沿,锁定P0口传送的内容,即低8位地址信号。需要指出的是,当CPU不执行访问外RAM指令(MOVX)时,ALE以时钟振荡频率1/6的固定速率输出,因此ALE信号也可作为外部芯片CLK时钟或其他需要。但是,当CPU执行MOVX指令时,ALE将跳过一个ALE脉冲。

ALE端可驱动8个LSTTL门电路。

②/PROG在固化片内存储器的程序(也称为“烧录程序”)时,此引脚用于输入编程脉冲,此时为低电平有效。

/PSEN:外ROM的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外RAM或内ROM时,这两次有效的/PSEN信号将不出现。 /EA、VPP:正常工作时,/EA为内外ROM选择端。MCS-51型单片机ROM寻址范围为KB,其中4KB在片内,60KB在片外。当/EA保持高电平时,先访问内ROM,但当PC(程序计数器)值超过4KB时,将自动转向执行外ROM中的程序。当/EA保持低电平时,则只访问外ROM,不管芯片内有否内ROM。对80C31芯片,片内无ROM,因此/EA必须接地。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 4.2 复位电路

按键复位:与ATC51的RESET脚相连,复位电路如图:

- 10 -

图4.2 复位电路图

在加电的瞬间,电容通过电阻充电,就在RST端出现一定宽度的高电平,根据时间长数τ=RC,设置R和C的大小使τ≥20ms就可以使单片机有效的复位。此复位电路在程序运行期间还可以手动复位,即按住开关键S1。 4.3 芯片擦除

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦除操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,ATC52设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 4.4 振荡器特性

MCS51单片机内部的振荡电路是一个到增益反相放大器,引线XTAL1和XTAL2分别为反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。单片机内部虽然有震荡电路,但要形成时钟,外部还需要附加电路。石英振荡和陶瓷振荡均可采用。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证

- 11 -

脉冲的高低电平要求的宽度。51单片机的时钟产生方式有两种,分别为:内部时钟方式和外部时钟方式。利用其内部的震荡电路XTAL1和XTAL2引线上外接定时元件,内部震荡电路便产生自激震荡,用示波器可以观察到XTAL2输出的时钟信号。在MCS51单片机一般常用内部时钟方式,也就是在XTAL1和XTAL2之间连接晶体震荡器与电容构成稳定的自激震荡器,如下图:

图4.3 内部时钟方式

晶体和电容决定了单片机的工作时间精度为1微秒。晶体可在1.2-12MHz之间选择。MCS-51单片机在通常应用情况下,使用震荡频率为6MHz的石英晶体,而12MHz频率的警惕主要是在高速串行通信情况下才使用,在这里我用的是6MHz石英晶体。对电容无严格要求,但它在取直对震荡频率输出的稳定性、大小及震荡电路起震荡速度有一点影响。C1和C2可在20-100pF之间取,一般情况取30pF。外部时钟方式是把外部震荡信号源直接接入XTAL1或XTAL2。由于XTAL2的逻辑电平不是TTL的,所以还要接一个上拉电阻。

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。

5 计时交通灯系统的设计

5.1 硬件系统设计 5.1.1硬件框图

- 12 -

图5.1 硬件框图 原理图各部分作用:

复位电路:RC构成微分电路,在接电瞬间,产生一个微分脉冲。按下复位按钮,就可以使电路重新开始工作。 按键:即复位按键。

红绿灯显示:通过二进制数的输出来变换的,使得红绿灯接收显示不同的信号,已达到此次设计的目的。

段码控制输出:通过P0口与LED数码管显示器相连接,来控制段码的输出。 (1). ATC51硬件资源的分配

电路采用的内部振荡器方式,晶体振荡频率为6MHz,具有较高的频率稳定性,且延时采用数字计数的方式进行,因而对时间的控制精度较高,可有效的控制延时。

初始加电时,显示初态,但按下复位开关,可以控制交通灯的显示。 本电路的外接电源可用5V直流电流电源,也可将交流电压转变为直流电,简单方便。使用中应谨慎,避免硬件设施被烧坏。

本例中使用了INT0中断,一般中断处理程序进入时应保护PSW,ACC以及中断处理程序使用但非其专用的寄存器。本例的INT0程序中应保护PSW,ACC等,以便保护中断前红绿灯的状态(保护现场),并且在退出前恢复原来红绿灯状态(恢复现场)。 本设计中交通信号灯LED0~LED5与P1.0~P1.5连接。

硬件方面利用ATC51的P1口直接驱动黄绿红灯,用P0口控制字型口,七段数码管为共阳极。

- 13 -

(2). 紧急按钮电路及参数选择

按下S1键,处于紧急控制状态,东西南北向红灯亮,禁止车辆通行。 松开键恢复原先工作状态。

按下是S0键,处于强行通行状态,人为允许主干道通行禁止次干道车辆流通。松开S0键,恢复原先工作状态。按键的上拉电阻选用10kΩ。

图5.2 按键电路图

(3).驱动电路及参数计算

- 14 -

图5.3 驱动电路图

实际用的稳压源U=5V,PNP型三极管发射极-基极的正向压降为0.3V,P2口输出低电平时(为0.5V),为保证三极管处于饱和状态,取基极电流为1mA,则基极电阻 R=(5-0.3-0.5)/0.001=4.2kΩ,实取4.7kΩ。 (4). LED显示电路及参数计算

本设计中交通信号灯LED0~LED5与P1.0~P1.5连接,显示倒计时时间。LED的正常工作电流I=5~10mA我们实际用的稳压源为U=5伏,管压降为1.5~2V,所以 R=(5-2)/0.01=300Ω如果电路中电阻太小,会烧坏LED;电阻太大,LED的亮度不够,经过老师的推荐,电路中实际应用的电阻值是510Ω 5.1.2 电路原理图

根据以上设计计算,得到电路原理图如下。

图5.4 电路原理图

5.2 软件系统设计 5.2.1 51系列汇编语言 (1).汇编语言

用户要使用计算机能完成各式各样的任务,就要设计各种相应的应用程序,而

- 15 -

设计程序就要用到程序设计语言。程序设计语言有3种:机器语言,汇编语言和高级语言。本次设计所采用的是汇编语言。所谓汇编语言,是指用指令的助记符符号地址,标号,伪指令等符号书写程序的语言。 (2).汇编程序

用这种汇编语言书写的程序称为汇编语言源程序或称源程序。把汇编语言源程序翻译成在机器上能执行的机器语言程序(目的代码程序)的过程叫做汇编,完成汇编过程的系统程序称为汇编程序。

汇编程序在对源程序进行汇编过程中,除了将源程序翻译成目的代码外,还能给出源程序书写过程中所出现的语法错误信息,如非法格式,未定义的助记符,标号,漏掉操作数等。另外,汇编程序还可以根据用户要求,自动分配各类存储区域(如程序区,数据区,暂存区等),自动进行各种进位制数至二进制数的转换,自动进行字符至 ASCII 码转换及计算表达式的值等。

完成汇编工作有两种途径:一种是人工汇编;一种是机器汇编。对于量小,简单的程序,程序员经过查指令系统表,将汇编源程序逐条翻译成机器代码,完成手工汇编,再从单片机开发装置的键盘上输入目标程序进行调试,运行;而对于量大较复杂的程序,翻译过程可采用计算机系统软件—汇编程序完成,即机器汇编。 汇编程序是将汇编源程序转变为目标程序的翻译程序。由于指令助记符与机器语言指令一一对应的等价关系所以汇编程序能很容易将汇编源程序迅速,准确,有效地翻译成目标程序。此外,汇编程序的功能还有:根据程序员的要求,自动地编排目标程序中指令的存放地址,分配存储空间,自动地对源程序进行检查,分析其语法,若有错误,给出错误信息等等。汇编程序的运行一般是借助于通用微型计算机(PC 机)来完成的,它利用PC机的串行口与单片机开发装置进行通讯,把汇编成的目标程序传送到单片机开发装置中去调试,执行。这种方式也称之为交叉汇编。它效率高,不易出错。 5.2.2 程序框图

本案采用结构化程序设计。主程序尽可能简洁,广泛使用子程序和循环结构,并利用了中断资源。

本设计使用了T0中断,T0中断完成两个功能,一是进行秒定时,二是对应急处理按键进行检测,以便及时响应。一般中断处理程序进入时应保护PSW,ACC以及中断处理程序使用但非其专用的寄存器。本设计的T0中断程序中应保护PSW,ACC及相

- 16 -

关寄存器等,以便保护中断前红绿灯的状态(保护现场),并且在退出前恢复原来红绿灯状态(恢复现场)。

根据以上软硬件资源的利用情况,制定出程序框图如下。 主程序框图:

开始 定时计数设定 开外中断 初始状态 东西绿灯亮,南北红灯亮,延时18秒 东西黄灯亮,南北红灯亮,延时2秒 东西红灯亮,南北绿灯亮,延时13秒 东西红灯亮,南北黄灯亮,延时2秒 图5.5 主程序图

- 17 -

中断框图:

- 18 -

T0中断 T0赋初值进行10ms计时 紧急情况按钮S1键按下否? Y 停止T0中断,保护P1口状态 N Y 流通按钮S0按下 红灯全亮,停止通行 N 10ms计时器+1 停止T0计数,保护P1口状态 解决紧急状态按钮S1松开否? Y 时间累计1S 主干绿灯亮,支干红灯亮 N 定时计数-1 数码管静态显示 Y S0开? 显示子程序 恢复P1口,启动T0 N 数码管静态显示 中断返回 中断返回 恢复P1口,启动T0 中断返回

图5.6 中断框图

- 19 -

5.2.3 汇编语言源程序 (1). 有关参数计算

本设计T0定时时间为10毫秒,计满10毫秒就响应一次中断,计满100次刚好为一秒。

T0定时器采用工作方式1,为16位计数器,晶振频率为6MHz(12MHz),则机器周期为:

12÷6MHz = 2微秒(1us)

定时值为10毫秒,计数值为10000÷2=5000(10000÷1=10000)

初值X0=M-计数值=65536–5000=60536=EC78H(X0=65536-10000=55536=D8F0H) 根据16位定时器的特性,初值应为;TH0=0ECH(0D8H),TL0=78H(0F0H) (2). 部分源程序 ORG 0000H

AJMP MAIN ;转主程序 ORG 000BH AJMP T0_INT

ORG 0030H

;转定时器T0服务子程序

MAIN: MOV SP, #50H

MOV TMOD, #01H ;T0,定时方式1

MOV TL0, #78H ;定时 10ms,晶振6MHZ MOV TH0, #0ECH

SETB EA ;开总中断 SETB ET0 ;允许T0中断

SETB TR0 ;启动定时器

MOV R3,#H ;设定中断次数 LOP: MOV R4, #18 MOV R5, #20

LOP0: MOV P1,#0F3H ;东西绿灯亮,南北红灯亮 ACALL RIS CJNE R4,#00H,LOP0 MOV R4,#02

- 20 -

LOP1: MOV P1,#0F5H ;东西黄灯亮,南北红灯亮 ACALL RIS CJNE R4,#00H,LOP1 MOV R4, #18

MOV R5, #16 LOP2: MOV P1,#0DEH ACALL RIS CJNE R5,#00H,LOP2 MOV R5,#02

LOP3: MOV P1,#0EEH ;东西红灯亮,南北黄灯亮 ACALL RIS CJNE R5,#00H,LOP3 AJMP LOP

T0_INT: MOV TL0,#78H ;定时器0中断子程序 MOV TH0,#0ECH

JNB P3.2,T02 ;判断紧急按钮是否有效

JNB P3.3,T03

;东西红灯亮,南北绿灯亮

DJNZ R3,TTT MOV R3,#H DEC R4 DEC R5

TTT: RETI ;中断子程序返回 T02: CLR TR0 ;紧急状态处理子程序

PUSH P1 ;保护当前状态

PINT0: MOV P1,#0F6H ;送紧急状态控制码 PN0: JB P3.2,PN2 ;查验是否解除紧急状态

PN1: ACALL RIS ;调用显示子程序,使显示器静止显示

SJMP PN0

PN2: POP P1 ;恢复紧急状态前的状态

SETB TR0 ;再次启动定时器

- 21 -

RETI

T03: CLR TR0 PUSH P1 SINT0: MOV P1,0F3H SN0: JB P3.3,SN2 SN1: ACALL RIS SJMP SN0 SN2: POP P1

SETB TR0

RETI

RIS: MOV A,R4 MOV B,#OAH DIV AB MOV R6,#0FFH MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A CLR P2.0 DS1: DJNZ R6,DS1 SETB P2.0 MOV R6,#0FFH MOV A,B MOVC A,@A+DPTR MOV P0,A CLR P2.1 DS2: DJNZ R6,DS2 SETB P2.1 MOV A,R5

MOV B,#0AH DIV AB

- 22 -

;显示子程序

MOV R6,#0FFH MOVC A,@A+DPTR MOV P0,A CLR P2.2 DS3: DJNZ R6,DS3 SETB P2.2 MOV A,B MOV R6,#0FFH

MOVC A,@A+DPTR MOV P0,A CLR P2.3 DS4: DJNZ R6,DS4 SETB P2.3

RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H,88H

END

- 23 -

;字型码表 ;显示子程序返回

六 检测与调试

6.1 硬件调试:

硬件调试是利用开发系统、基本测试仪器(万用表、示波器)等,检查用户系统硬件中存在的故障。

硬件调试可分为静态调试和动态调试两步进行: 静态调试:静态调试是在用户系统未工作时的一种调试。 步骤如下:

第一步:目测。检查外部的各种元件或者是电路是否有断点。

第二步:用万用表测试。先用万用表复核目测中有疑问的连接点,在检测各种电源线与接地线之间是否有短路现象。

第三步:加点检测。给电路板加电,检测所有的插座或者是硬件的电源是否符合要求的植。

第四步:联机检查。应为只有单片机开发系统才能完成对用户系统的调试。 动态调试:动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。动态调试的一般方法是由近及远,由分到合。

由近及远是将信号流经的器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。

由分到合是指首先按逻辑功能将用户系统硬件电力电路分为若干块,当调试电路时,与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。当各块电路无故障后,将各电路逐块加入系统中,再对各块电路功能及各电路之间可能存在的相互联系进行调试。 6.2 软件调试:

软件调试是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。程序运行后编辑,查看是否有逻辑的错误。

常见的软件错误有:程序失控、中断错误、输入/输出错误和结果不正确等,对不同的错误和现象采取相应的方法找出错误并加以修改程序,达到预期的功能。

- 24 -

致谢

通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。

在此要感谢我的指导老师对我悉心的指导,感谢老师给我的帮助。在设计过程中,我通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富。

本课题和论文的完成,自始至终得到了老师的悉心指导和细心关怀。感谢在大学三年的学习、生活中默默关心帮助我的所有老师和同学。最后,我要感谢我的朋友和家人在学习和生活的各个方面对我的关心和鼓励。

- 25 -

参考文献:

1、杨欣 王玉凤 刘湘黔:《电子设计从零开始》,清华大学出版社2005年 2、吴金戌 沈庆阳 郭庭吉:《8051单片机实践与应用》,清华大学出版社2002年 3、张毅刚:《单片机原理及应用》,高等教育出版社2006年,第42~68页 4、李光飞:《单片机课程设计实例指导》,北京航空航天出版社2004年第2版,第35~51页

5、李 华:《MCS-51单片机实用接口技术》,北京航空航天出版社1997年,第18~35页

6、诸昌钤:《LED显示屏系统原理及工程技术》,电子科技大学出版社2000年,第52~81页

- 26 -

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务