基于51单片机交通信号灯的控制设计_第1页
基于51单片机交通信号灯的控制设计_第2页
基于51单片机交通信号灯的控制设计_第3页
基于51单片机交通信号灯的控制设计_第4页
基于51单片机交通信号灯的控制设计_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录概述1一交通信号灯的作用1二.工作模拟图2三控制要求2四.单片机简介2五单片机系统的应用概述3六硬件原理与功能41. 8051单片机功能结构图42. 8051引脚图53. 晶振电路84. 复位电路85. 最小系统图86. 交通信号灯的现场示意图97.交通灯控制时序图98. 交通信号灯各状态的控制数据99. 二极管工作接线原理图9七软件编程91. 汇编语言程序设计概述92. 软件延时子程序及延时时间介绍103. 单片机的定时器介绍124. 寄存器ie tcon tomd p1的格式145.中断系统的概念及中断过程简介176. 交通灯工作流程图217.定时1秒的初值计数公式、工作方式选择依据、

2、程序流程图及源程228.完成控制要求的主程序、子程序、中断服务子程序流程图及源程序22八设计系统的组装与调试301.at89c51单片机实验环境简介312. 程序调试情况说明31设计总结33文献原文和翻译34.参考文献36概述近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。随着中国加入w

3、to,我们不但要在经济、文化等各方面与国际接轨,在交通控制方面也应与国际接轨。如果交通控不好道路还是无法保障畅通安全。作为交通控制的重要组成部份单片机。因此,本人选择制作交通灯作为课题加以研究。我国大中城市交通系统压力沉重。交通管制当以人性化、智能化为目的,做出相应的改善。以此为出发点,本系统采用的单片机控制的交通信号灯。该系统分为单片机主控电路、键盘控制电路和显示电路三部分组成。并在软硬件方面采取一些改进措施,实现了根据十字路口车流量、进行对交通信号灯的智能控制,使交通信号灯现场控制灵活、有效从一定程度上解决了交通路口堵塞车辆停车等待时间不合理等问题。系统具有结构简单、可靠性高、成本低、实时

4、性好、安装维护方便等优点,有广阔的应用前景。一交通信号灯的作用随着我国国民经济的迅速发展,城市街道车辆大幅度增长,给城市交通带来巨大压力,交通拥堵已成为影响城市可持续发展的一个全局性问题。而街道各十字路口,又是车辆通行的瓶颈所在。已有的许多建立在精确模型基础上的交通系统控制方案都存在着一定的局限性。研究车辆通行规律,找出提高十字路口车辆通行效率的有效方法,对缓解交通堵塞,提高畅通率具有十分现实的意义。地面道路是一个庞大的网络,交通状况十分复杂,使目前交通控制器的单一时段控制已不能满足现代交通流量的多边性,特别是在交通流量高峰期时,往往会造成交通路口的通过率下降,甚至出现交通混乱现象,城市的交通

5、拥挤问题正逐渐引起人们的注意。道路平面交叉口(简称交叉口)是交通网中通行能力的“隘口”和交通事故的“多发源”,国内外城市的交通事故约有一半发生在交叉口。因此,交叉口这个事故多发源不能不引起人们的高度关注。随着交通技术、电子技术的发展及微机技术的应用,人们制造出了适应各种需要的交通检测器、信号控制机和交通信号灯。交通灯是交管部分管理城市交通的重要工具。现在交通灯一般设在十字路口,在醒目位置用红绿黄三种颜色的指示灯,加上一个倒计时的显示器来控制行车,对一般情况下的安全行车、车辆分流发挥着作用。目前绝大部分交通灯器时间都是设定好的,采用的单端式定时控制或多段式定时控制,其最大的缺点是绿灯时间和最佳绿

6、信比的整定较为困难,需要大量的实测统计数据,且很多情况下征订所得值并不是最优的甚至是不合理的。控制起来都不是很灵活,这使得城市车流的调节不能达到最优。这次设计就是针对之以弊端进行了改进,较好地解决了这一问题。通过键盘的输入控制交通倒计时初始值。该控制系统有一定的智能水平和很强的控制能力。二.工作模拟图三控制要求用51单片机控制一个十字路口交通灯系统,晶振采用12mhz。a车道和b车道组成交叉路口。用发光二极管模拟交通信号灯,用按键开关模拟车辆检测信号。绿灯亮时表示可以通行,红灯亮时表示禁止通行;黄灯亮表示警告。正常情况下,a、b车道轮流放行。a车道放行30秒,其中黄灯亮警告闪烁4次,b车道放行

7、50秒,其中黄灯亮警告闪烁4次。(2当有急救车到达时,按下某开关键使路口的车道均亮红灯,禁止通行20秒,只让急救车通过。之后,交通灯恢复先前状态。四.单片机简介单片微型计算机(single chip microcomputer)简称单片机。它是把组成微型计算机的各功能部件:中央处理器cup、随机存取存储器ram、只读存储器rom、i/o接口电路、定时器/计数器以及串行接口等部件制作在一块集成芯片中,构成一个完整的微型计算机。单片机的产生与发展和微处理器的产生于发展大体上同步。现在,虽然单片机的品种繁多,各具特色,但以80c51为核心的单片机仍占主流,兼容其结构和指令系统的有philips公司的

8、产品,atmel公司的产品和中国台湾的winbond系列单片机。而microchip公司的pic精简指令集(risc)也有着强劲的发展势头,中国台湾的holtek公司近年的单片机产量越来越大,以其低价质优的优势,占据一定得市场份额。此外还有motorola公司的产品,日本几大公司的专用单片机。在一定时期内,这种情形将得以延续,不会存在某个单片机产品一统天下的垄断局面。mcs-51是在mcs48的基础上于20世纪20年代初发展起来的,虽然是8位的单片机,但其功能有很大的增强。此外,它还具有品种全、兼容性强、软硬件资料丰富等特点。因此,mcs-51应用非常广泛,成为继mcs-48之后最重要的单片机

9、品种。直到现在mcs-51仍是单片机中的主流机型。国内尤以intel的mcs-51系列单片机应用最广。在短短近三十年内,经历了四次更新换代,其发展速度大约每二三年要更新一代、集成速度增加一倍、功能翻一番。目前,按内部数据通道的宽度来说,单片机已从最初的4位机发展到32位。纵观近三十年的发展,单片机正朝着多功能、多选择、高速度、低功耗、低价格、扩大存储容量和加强i/o功能及结构兼容的方向发展单片机微型计算机是微型计算机的重要分支,也是颇具生命力的机种。单片机微型计算机又称计算机,特别适用于控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:从中央处理器

10、、存储器和i/o接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可以称为一个单片机控制系统。单片机经过1、2、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的cpu功能在增强,内部资源在增多,引脚的多功能化,以及低电压低功耗。单片机的应用已经延伸到社会生活的方方面面,它取代了以前利用发杂的数字组合及模拟电路构成的控制系统,并能够实现智能化。有电器的地方就有单片机,而且在办公自动化领域,商业营销领域,工业自动化领域,智能仪器仪表领域,集成智能传感器的测控领域,汽车电子与航空航天电子系统等方面起到了不可想象的作用!五单片机系统的应用概述 单片机自动完成赋予它的任务的过程,也

11、就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件存储器中。存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被

12、分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。 程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器pc(包含在cpu中),在开始执行程序时,给pc赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,pc之中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行。六硬件

13、原理与功能1. 8051单片机功能结构图 mcs-51单片机是最早进入我国的单片机主流产品之一。mcs是intel公司生产的单片机的系列号。mcs-51系列单片机既包括三个基本型8031、8051、8751,也包括对应的低功耗型80c31、80c51、87c51。mcs-51系列单片机组成框图,如图2.1所示。mcs-51单片机按功能划分,由如下功能部件组成,即微处理器(cpu)、数据存储器(ram)、程序存储器(rom/eprom)、并行i/o口(p0口、p1口、p2口、p3口)、串行口、定时器/计数器、中断系统及特殊功能寄存器(sfr程序存储器(rom):8051共有4096个8位掩膜ro

14、m,用于存放用户程序,原始数据或表格。定时/计数器(rom):8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。并行输入输出(i/o)口:8051共有4组8位i/o口(p0、 p1、p2或p3),用于对外部数据的传输。全双工串行口:8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统:8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。时钟电路:8051内置最高频率达12mhz的时钟电路,用于产生整个单片机

15、运行的脉冲时序,但8051单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(princeton)结构。intel的mcs-51系列单片机采用的是哈佛结构的形式,而后续产品16位的mcs-96系列单片机则采用普林斯顿结构。2. 8051引脚图 单片机的40个引脚大致可分为4类:电源、时钟、控制和i/o引脚。 电源: vcc - 芯片电源,接+5v; vss - 接地端; 时钟:xtal1、xtal2 - 晶体振荡电路反相输入端和输出端。 控制线:控制

16、线共有4根, 1 ale/prog:地址锁存允许/片内eprom编程脉冲 ale功能:用来锁存p0口送出的低8位地址 prog功能:片内有eprom的芯片,在eprom编程期间,此引脚输入 编程脉冲。 2 psen:外rom读选通信号。 3 rst/vpd:复位/备用电源。 rst(reset)功能:复位信号输入端。 vpd功能:在vcc掉电情况下,接备用电源。 4 ea/vpp:内外rom选择/片内eprom编程电源。 ea功能:内外rom选择端。 vpp功能:片内有eprom的芯片,在eprom编程期间,施加编程电源vpp。 i/o线 80c51共有4个8位并行i/o端口:p0、p1、p2

17、、p3口,共32个引脚。p3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。管脚说明:vcc:供电电压。 gnd:接地。p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash执行 校验时,p0输出原码,此时p0外部必须被拉高。 p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将

18、输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器执行 存取时,p2口输出地址的高八位。在给出地址“1”时,它运用 内部上拉优势,当对外部八位地址数据存储器执行 读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。 p3口:p3

19、口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。 p3口也可作为at89c51的一些特殊功能口,如下表所示: 口管脚 备选功能 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(外部数据存储器读选通) p3口同时为闪烁编程和

20、编程校验接收一些控制信号。 st:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要留心的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效

21、。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。 /ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管能不能有内部程序存储器。留心加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。 xtal2:来自反向振荡器的输出。3. 晶振电路单片机系统里都有晶振,在单片机系统里晶振作用非常大

22、,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。 4. 复位电路 单片机在开机时或在工作中因干扰而使程序失控,或工作中程序处于某种死循环状态,在这种情况下都需要复位. 复位的作用是使中央处理器cpu以及其他功能部件都恢复到一个确定的初始状态,并从这个状态重新开始工作.8051单片机的复位靠外部电路实现,

23、信号由reset(rst)引脚输入,高电平有效,在振荡器工作时,只要保持rst引脚高电平两个机器周期,单片机即复位. 复位后,pc程序计数器的内容为0000h,片内ram中内容不变.5. 最小系统图 对于内部带有程序存储器的mcs-51单片机,若接上工作时所需要的电源、复位电路和晶体振荡电路,利用芯片内部的中断系统、定时器/计数器、并行接口、串行接口就可组成完整的单片机系统。这种维持单片机运行的最简单配置系统,称为最小应用系统。6. 交通信号灯的现场示意图 7.交通灯控制时序图 8. 交通信号灯各状态的控制数据 9. 二极管工作接线原理图七软件编程1. 汇编语言程序设计概述程序设计语言是实现人

24、机交换信息(对话)的最基本工具,可分为机器语言、汇编语言和高级语言。本章重占介绍汇编语言。a.汇编语言是一种面向机器的程序设计语言,其基本内容是机器语言的符合化描述;b.通常汇编语言的执行语句与机器语言的执行指令是一一对应的; c.汇编语言允许程序直接使用寄存器,标志等微处理器芯片内部的特性;d.同高级语言程序相比,与其等效的汇编语言执行速度要块,目标代码所占的内存要少;e.汇编语言是系统软件和实时控制系统程序员必须掌握的。汇编语言是用指令的助记符、符号地址、标号等来表示指令的程序语言,简称符号语言。它的特点是易读、易写、易记。它与机器语言指令是一一对应的。汇编语言不像高级语言(如basic)

25、那样通用性强,而是性某种计算机所独有,与计算机的内部硬件结构密切相关。用汇编语言缩写的程序叫汇编语言程序。把汇编语言源程序翻译成目标程序的过程称为汇编过程,简称汇编。完成这个任务有两种方法:手工汇编。所谓手工汇编是程序设计人员根据机器语言指令与汇编语言指令对照表,把编好的汇编语言程序翻译成目标程序。汇编语言程序 机器语言程序mov al,0ah b0h 0ahadd al,14h 04h 14h机器汇编。所谓机器汇编就是由汇编程序自动将用户编写的汇编语言源程序翻译成目标程序。这里,汇编程序是由厂家为计算机配置的担任把汇编源程序成目标程序的一种系统软件。以上两种程序语言都是低级语言。尽管汇编语言

26、具有执行速度快和易于实现对硬件的控制等优点,但它仍存在着机器语言的某些缺点:与cpu的硬件结构紧密相关,不同的cpu其汇编语言是不同的,这使得汇编语言程序不能移植,使用不便;其次,要用汇编语言进行程序设计,必须了解所使用的cpu硬件的结构与性能,对程序设计人员有较高的要求,为此又出现了所谓的高级语言。2. 软件延时子程序及延时时间介绍软件延时mcs-51的工作频率为2-12mhz,我们选用的8031单片机的工作频率为6mhz。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/6m)=2us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1

27、秒的时间。具体的延时程序分析: delay:mov r4,#08h ;延时1秒子程序 de2:lcall delay1 djnz r4,de2 retdelay1:mov r6,#0 ;延时125ms子程序 mov r5,#0de1: djnz r5,$ djnz r6,de1 ret mov rn,#data ;字节数数为2,机器周期数为1每秒钟的设定延时方法可以有两种一中是利用mcs-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。计数器硬件延时定时器工作时必须给计数器送计数器初值,这个值是送到th和tl中的。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。

28、因此,我们可以把计数器记满为零所需的计数值设定为c和计数初值设定为tc 可得到如下计算通式:tc=m-c式中,m为计数器摸值,该值和计数器工作方式有关。在方式0时m为213 ;在方式1时m的值为216;在方式2和3为28方式0tmax213*1us=8.192ms方式1tmax216*1us=65.536ms 显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题。采用在主程序中设定一个初值为20的软件计数器和使t0定时50毫秒。这样每当t0到50毫秒时cpu就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,cpu先使软件计数器减1,

29、然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序。主程序:定时器需定时50毫秒,故t0工作于方式1。初值:tcm-t t计数250ms/1us=15536=3cboh org 1000h start: mov tmod, #01h ; 令t0为定时器方式 mov th0, #3ch ;装入定时器初值 mov tl0, #boh; mov ie, #82h ;开t0中断 sebt tr0;启动t0计数器 mov ro,#14h;软件计数器赋初值loop:sjmp $ ;等待中断中断服务子程序: org000bh ajmp brt0 org 00bh brto:djnz ro,nex

30、tajmp time ; 跳转到时间及信号灯显示子程序 djnz:movro,#14h;恢复ro值 mov th0, #3ch ; 重装入定时器初值 mov tl0, #boh; mov ie, #82h ret1end3. 单片机的定时器介绍80c51单片机内部设有两个16位的可编程定时器/计数器。可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。 从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:t0由th0

31、和tl0构成;t1由th1和tl1 构成。其访问地址依次为8ah-8dh。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器 tmod和一个8位的定时控制寄存器tcon。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。tmod主要是用于选定定时器的工作方式; tcon主要是用于控制定时器的启动停止,此外tcon还可以保存t0、t1的溢出和中断标志。当定时器工作在计数方式时,外部事件通过引脚t0 (p3.4)和t1(p3.5)输入。定时计数器的原理:当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个

32、机器周期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。如果晶振为12mhz,则计数周期为:t=1/(12106)hz1/12=1s这是最短的定时周期。若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。当定时器/计数器为计数工作方式时,通过引脚t0和t1对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的s5p2期间采样引脚输入电 平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期s3p1期间,新的

33、计数值装入计数器。所以检测一个由1至0的跳 变需要两个机器周期,故外部事年的最高计数频率为振荡频率的1/24。例如,如果选用12mhz晶振,则最高计数频率为0.5mhz。虽然对外部输入信号 的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。当cpu用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用cpu的操作时间,除非定时器计满溢出,才可能中断cpu 当前操作。cpu也可以重新设置定时器工作方式,以改变定时器的操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。综上所述,我们已知定时

34、器/计数器是一种可编程部件,所以在定时器/计数器开始工作之前,cpu必须将一些命令(称为控制字)写入定时/计数器。将控制字写入定时/计数器的过程叫定时器/计数器初始化。在初始化过程中,要将工作方式控制字写入方式寄存器,工作状态字(或相关位)写入控制寄存器,赋定时/计 数初值。下面我们就提出的控制字的格式及各位的主要功能与大家详细的讲解。控制寄存器 定时器计数器t0和t1有2个控制寄存器-tmod和tcon,它们分别用来设置各个定时器计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。其中,tcon寄存器中另有4位用于中断系统。4. 寄存器ie tcon tomd p1

35、的格式ie-中断充许寄存器可按位寻址,地址:a8hie 中断允许寄存器b7b6b5b4b3b2b1b0ea-et2eset1ex1et0ex0ea (ie.7):ea=0时,所有中断禁止(即不产生中断);ea=1时,各中断的产生由个别的允许位决定 (ie.6):保留 et2(ie.5):定时2溢出中断允许(8052用) es (ie.4):串行口中断允许(es=1允许,es=0禁止) et1(ie.3):定时1中断允许 ex1(ie.2):外中断int1中断允许 et0(ie.1):定时器0中断允许 ex0(ie.0):外部中断int0的中断允许 ip-中断优先级控制寄存器可按位寻址,地址位b

36、8hip 中断优先级控制寄存器b7b6b5b4b3b2b1b0-pt2pspt1px1pt0px0(ip.7):保留 (ip.6):保留 pt2(ip.5):定时2中断优先(8052用) ps (ip.4):串行口中断优先 pt1(ip.3):定时1中断优先 px1(ip.2):外中断int1中断优先 pt0(ip.1):定时器0中断优先 px0(ip.0):外部中断int0的中断优先 tmod-定时器控制寄存器不按位寻址,地址89htmod 定时器控制寄存器b7b6b5b4b3b2b1b0gate c/tm1m0gatec/tm1m0gate :定时操作开关控制位,当gate=1时,int0

37、或int1引脚为高电平,同时tcon中的tr0或tr1控制位为1时,计时/计数器0或1才开始工作。若gate=0,则只要将tr0或tr1控制位设为1,计时/计数器0或1就开始工作。 c/t :定时器或计数器功能的选择位。c/t=1为计数器,通过外部引脚t0或t1输入计数脉冲。c/t=0时为定时器,由内部系统时钟提供计时工作脉冲。 m1 、m0:t0、t1工作模式选择位 m1 、m0:t0、t1工作模式选择位m1m0工作模式00方式0,13位计数/计时器01方式,1,16位计数/计时器10方式2,8位自动加载计数/计时器11方式3,仅适用于t0,定时器0分为两个独立的8位定时器/计数器th0及t

38、l0,t1在方式3时停止工作tcon-定时器控制寄存器可按位寻址,地址位88htcon 定时器控制寄存器b7b6b5b4b3b2b1b0tf1tr1tf0tr0ie1it1ie0it0tf1:定时器t1溢出标志,可由程序查询和清零,tf1也是中断请求源,当cpu响应t1中断时由硬件清零。 tf0:定时器t0溢出标志,可由程序查询和清零,tf0也是中断请求源,当cpu响应t0中断时由硬件清零。 tr1:t1充许计数控制位,为1时充许t1计数。 tr0:t0充许计数控制位,为1时充许t0计数。 ie1:外部中断1请示源(int1,p3.3)标志。ie11,外部中断1正在向cpu请求中断,当cpu响

39、应该中断时由硬件清“0”ie1(边沿触发方式)。 it1:外部中断源1触发方式控制位。it10,外部中断1程控为电平触发方式,当int1(p3.3)输入低电平时,置位ie1。 ie0:外部中断0请示源(int0,p3.2)标志。ie01,外部中断1正在向cpu请求中断,当cpu响应该中断时由硬件清“0”ie0(边沿触发方式)。 it0:外部中断源0触发方式控制位。it00,外部中断0程控为电平触发方式,当int0(p3.2)输入低电平时,置位ie0。5.中断系统的概念及中断过程简介80c51单片机共有5个中断源,即外部中断2个、定时中断2个和串行中断1个。(1)外中断(a)由外部信号引起,共有

40、2个中断源,即外部中断“0”和外部中断“1”。由/int0(p3.2)和/int1(p3.3)引入。(b)外中断的两种信号触发方式(通过有关控制位定义)脉冲方式:脉冲下降沿有效,高低电平状态都应至少维持一个机器周期。电平方式:低电平有效(2)定时中断定时中断是为满足定时或计数的需要设置的。80c51单片机共有2个定时器/计数器中断源,即t0和t1。定时器/计数器内部的计数结构对脉冲信号进行计数,当计数结构发生计数溢出时,即表明定时时间到或计数值已满,此时就以计数溢出信号作为中断请求信号,向cpu申请中断,同时置位一个溢出标志位,作为向单片机提出中断请求的标志。定时器/计数器作为定时功能使用时,

41、计数结构需要的计数脉冲信号来自单片机内部。定时器/计数器作为计数功能使用时,计数结构需要的计数脉冲信号来自单片机外部,由t0(p3.4)、t1(p3.5)引入。(3)串行中断是为串行数据传送的需要设置的。每当串行口接收或发送完一组串行数据时,就产生中断请求信号向cpu申请中断。80c51单片机的中断向量列表外部中断0 0003h 定时/计数器0 000bh外部中断1 0013h 定时/计数器0 001bh串行发送中断 0023h 串行接收中断 0023h中断控制所谓中断控制就是指单片机提供给用户使用的中断控制的手段,用户可通过设置中断控制寄存器的状态位来使用中断系统。中断控制的本质就是利用指令

42、对中断控制寄存器进行操作。80c51具有4个相关的控制寄存器:tcon,ie,ip,scon定时器控制寄存器(tcon):tcon的功能:用于保存外部中断请求以及定时器/计数器的计数溢出信号。tcon的字节地址:88h;位地址:8fh88h。与中断控制有关的控制位共有6位(a)ie0、ie1:外中断请求标志位cpu采样/int0,/int1端,如出现有效中断请求信号,则由硬件电路对该位自动置1。在中断响应后,由硬件电路对该位自动清0。(b)ri:串行口接收中断请求标志位接收完一帧数据后,由硬件电路对该位自动置1,在转向中断服务程序后,用软件对该位清0。ti、ri标志位的使用有两种情况:采用中断

43、方式时,作中断请求标志位使用;采用查询方式时,作查询状态位来使用;无论采用何种方式,都必须利用软件对该位清0。中断允许控制寄存器(ie):ie的功能:中断系统的开关。ie的字节地址:0a8h;位地址:0afh0a8h。与中断控制有关的控制位共有6位:(a)ea:中断允许总控制位ea=0:中断总禁止;ea=1:中断总允许;(b)ex0、ex1:外部中断允许控制位ex0、ex1=0:禁止外中断;ex0、ex1=1:允许外中断;(c)et0、et1:定时器/计数器中断允许控制位et0、et1=0,禁止定时(或计数)中断;et0、et1=1,允许定时(或计数)中断;(d)es:串行中断允许控制位es=

44、0,禁止串行中断;与中断控制有关的控制位共有5位:(a)px0:外部中断0优先级设定位;(b)pt0:定时中断0优先级设定位;(c)px1:外部中断1优先级设定位(d)ps:串行中断优先级设定位;(e)pt1:定时中断1优先级设定位;为0的位优先级为低,为1的优先级为高中断优先级控制中断优先级是为中断嵌套服务的。80c51单片机具有两级优先级,因此它具备两级中断服务嵌套的功能,其中断优先级的控制原则是:(a)低优先级中断请求不能打断高优先级的中断服务,先级中断请求可以打断低优先级的中断服务,实现中断嵌套。(b)如一个中断请求已被响应,则同级的其它中断响应将被禁止。即同级不能嵌套。(c)如果同级

45、的多个中断请求同时出现,则按cpu查询次序确定那个中断请求被响应。查询次序:外部中断0定时中断0外部中断1定时中断1串行中断。中断优先级控制,除了中断优先级控制寄存器之外,还有两个不可寻址的优先级状态触发器:一个用于指示某一高优先级中断正在进行服务,从而屏蔽其它高优先级中断;另一个用于指示某一低优先级中断正在进行服务,从而屏蔽其它低优先级中断,但不能屏蔽高优先级中断初始化与中断控制寄存器状态设置80c51单片机的中断系统在使用之前,必须在单片机的应用程序初始化部分进行设置,具体情况如下:(a)外部中断:中断总允许、外中断允许、中断触发方式设定(b)定时中断:中断总允许、定时中断允许;(c)串行

46、中断:中断总允许、串行中断允许。(d)80c51单片机中断系统的4个控制寄存器既可以进行字节寻址,又可进行位寻址,对位状态的设置,既可以使用字节操作指令,又可以使用位操作指令。6. 交通灯工作流程图主程序开始剩余时间是否为5秒程序初始化南北红灯东西绿灯n南北红灯东西黄灯剩余时间是否为0秒n南北绿灯东西红灯剩余时间是否为5秒南北黄灯东西红灯剩余时间是否为0秒nn7.定时1秒的初值计数公式、工作方式选择依据、程序流程图及源程 定时器工作时必须给计数器送初值,将这个值送到th和tl中。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此工作于方式1,定时器为16位计数器其定时时间由下式计算

47、:定时时间=(216计数初值)机器周期=(65536-计数初值)*12/晶振频率计数初值=216定时时间晶振频率12该值和计数器工作方式有关。若8051单片机外接晶振为12mhz时,则单片机的四个周期的具体值为:晶振周期=1/12mhz=1/12us=0.0833us时钟周期=1/6us=0.167us机器周期=1us指令周期=1us如单片机的主脉冲频率为12mhz,经过12分频方式0定时时间213*1微秒8.192毫秒方式1定时时间216 1微秒65.536毫秒秒钟已经超过了计数器的最大定时时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题,定时器需定时50毫秒,故t0工作于方式

48、1,定时20次,就可定时一秒。定时50ms如下所示:x=216-0.05*12*106/12=15536=3cb0h8.完成控制要求的主程序、子程序、中断服务子程序流程图及源程序主程序主程序初始化首先将时间、中断、次数、和显示分别进行初始化,然后启动定时器对时间进行判断,将时间送数据缓冲区,调用显示程序,同时扫描按键程序,用无条件跳转指令返回, 再调用显示程序,如此周而复始的循环,如图4.1所示: 主程序流程图主程序:初值:x=216定时时间振荡周期1221650ms/1us=15536=3cb0h,th0=3ch , tl0=0b0h。org 0000hljmp mainorg 000bhl

49、jmp ctc0org 0030hmain:mov tmod,#01hmov th0,#3chmov tl0,#0b0hsetb easetb et0setb tr0mov r7,#20mov sp,#60hmov 30h,#00hmov r1,#30hmov 50h,#00hmov a,r1mov dptr,# tabmovc a,a+dptrmov p2,ainc r1mov a,r1mov a,a+dptrmov r4,amov 50h,r4inc r4loop:lcall displayljmp looptab:db 0b7h,9,0d7h,3,7bh,6db 7dh,3子程序在利用汇

50、编语言编制程序时,往往会遇到重复多次的去执行某段程序,对于这种情况,往往把重复的程序编写成一段子程序,可以方便的调试它。这样,可以减少编制程序的工作,实际上,通常把一些运算程序编写成子程序形式,被随时调用。 中断服务子程序模块进入中断程序后,先保护现场,判断一秒钟到了吗?如果没有到将定时器重装初值恢复现场,返回主程序,如果一秒钟到了,将软件计数器重初值;判断指示灯循环显示完了吗?如果没完,将保地址重新送入程序计数器中,然后再查表下一地址,显示下一组指示灯状态和显示时间,保存下一组程序数据地址,将定时器重装初值,恢复现场,返回主程序,如果完了,查表首地址,查时间地址,保存下一地址,将定时器重装初

51、值,恢复现场,返回主程序。同时一秒到了应先判断个位是否为0,如果个位是0,判断十位是不是0,如果十位也是0,判断交通灯是否安黄、绿、红的顺序循环完必,如果没循环完应查下一组数据继续循环,如果循环完必,应查表首地址,周而复始的循环,如果十位不是0,应将十位先减1,个位送9,然后返回,再进行中断定时一秒,然后再判断,如果个位不是0,应将个位减1,将定时器重装初值,恢复现场。重新周而复始的循环。 ctc0;push accpush pswmov dptr,#tabdjnz r7,backmov r7,#20dec 50hdjnz r4,backmov a,r1cjne a,#07h,nextmov r1,#0ffhnext:inc r1mov a,r1movc a,a+dptrmov p2,ainc r1mov a,r1movc a,a+dptrmov r4,amov 50h,r4inc r4back:mov th0,#3ch

温馨提示

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

评论

0/150

提交评论