单片机自动控制交通路灯的设计.doc_第1页
单片机自动控制交通路灯的设计.doc_第2页
单片机自动控制交通路灯的设计.doc_第3页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

职业学院课题设计题 目 单片机自动控制交通路灯的设计 专 业 学生姓名 准考证号 指导教师 摘 要交通的发达,标志着城市的发达,相对交通的管理则显得越来越重要。对于复杂的城市交通系统,为了确保安全,保证正常的交通秩序,十字路口的信号控制必需按照一定的规律变化,以便于车辆行人能顺利地通过十字路口。考虑到单片机具有物美价廉、功能强、使用方便灵活、可靠性高等特点,拟采用MCS - 51系列的单片机来实现十字路口交通信号灯的控制。 正常情况下,十字路口的红绿灯应交替变换,考虑紧急情况下,如有救护车或警车到来时,应优先让其通过。 在本设计中,用发光二极管来模拟信号灯,救护车的优先通过请求信号由外部中断技术来模拟。要求使用 8051定时器/ 计数器0作为定时器,假设南北和东西的通车时间都为30 s ,外部中断的延时为10 s ,要求对通行时间进行倒计时,从P1 口输出,在LED上显示并进行递减。以此来实现十字路口交通灯的指示功能。关键词:交通灯;指示功能;电路设计目 录摘 要i目录ii第一章 交通信号灯硬件电路的设计11.1、交通信号灯的作用及工作原理11.2、设计要求21.3、设计方法3第二章 系统组成42.1、控制要求42.2、工作原理42.3、器件和原理52.4、部分电路功能12第三章 交通信号灯软件的系统编程223.1、单片机的C语言程序设计223.2、C语言与MCS51223.3、利用C51程序编写延时程序253.4、信号灯亮灭的定时功能253.5、51单片机的中断系统303.6、数码管显示程序功能363.7、软件流程图37第四章 系统的组装与调试384.1、制板384.2、组装及调试的生产流程及安装,布线38第五章 总结43参考文献44谢谢45iii 第一章 交通信号灯硬件电路的设计 第一章 交通信号灯硬件电路的设计1.1、交通信号灯的作用及工作原理 一般情况下,红绿灯设在十字路口,或在多干道的叉口上,目的是为了调整叉口的交通秩序使各干道来往车辆能够有条不紊地行驶,否则将造成意想不到的严重后果。当然在叉口设置合理的红绿灯后,也可大大减少交通管理部门的人力、物力。叉口交通信号等的基本作用:红灯亮表示车辆、行人禁止通行,绿灯亮表示车辆、行人可以通行,绿灯转换成红灯前几秒,可用黄灯亮来暗示驾驶员或行人即将禁止通行。该系统的屏幕时间显示用倒计时方式表示红绿灯的切换时间,时间显示器的作用是协助红绿灯工作,跟随红、绿灯反复地进行切换。目的是为了使驾驶员和行人能够看见红绿等亮的时间还剩几秒以便停车线以内的驾驶员和行人能够更清楚地知道此时该继续通行或减速,才不会使驾驶员盲目地加速或减速停车而阻碍另一干道车辆或行人的通行,从而可以提高叉口车辆及行人的流通率,当然也可以减少事故的发生,为交通安全提供保障。交通信号灯的工作原理:如图1示,当A、B组红灯亮绿灯灭;则C、D组绿灯亮红灯灭。对A、B组或C、D组而言,每当绿灯亮转换成红灯亮前几秒(具体多长时间视实际情况而定)黄灯亮,当绿灯灭时黄灯也灭。1.2、设计要求首先,要了解实际交通灯的变化规律. 假设一个十字路口为东西南北走向. 初始状态0东西方向绿灯通车,南北方向红灯,延时30 s. 转状态1 ,东西方向黄灯亮,南北方向红灯按1HZ的频率闪烁,延时5s . 再转状态2 ,东西方向红灯亮,南北方向绿灯通车,延时20 s. 转状态3 ,东西方向红灯按1HZ的频率闪烁,南北方向黄灯亮,延时5 s . 最后循环至状态0. 这里的延时采用定时器0延时.其次,当有紧急救护车出现时,应使东西南北四个方向全亮红灯,并延时10 s , 以便急救车通过,同时对通行时间进行倒计时,从P1口及P3口输出在发光二极管,使用8051 定时器/ 计数器0作为定时器实现子程序延时.技术上可用外部中断0发出一单脉冲向CPU申请中断.再次,一般交通信号灯控制程序中使用软件延时,软件延时是靠执行一个循环程序以进行时间延迟. 软件定时的特点是时间精确,且不需外加硬件电路. 但软件定时要占用CPU ,增加CPU 开销,因此软件定时的时间不宜太长.本程序使用定时器/ 计数器0来定时,定时电路已经集成在芯片中,这种由硬件电路完成,不占CPU 时间. 它通过对系统时钟脉冲的计数来实现,即每个机器周期产生一个计数脉冲,也就是每个机器周期计数器加1. 计数值通过程序设定,改变计数值,也就改变了定时时间,使用起来既灵活又方便.1.3、设计方法选用MCS-51单片机来实现,根据设计要求,交通信号灯控制器的外部输出信号为主、副车道红、黄、绿灯共12个驱动信号;编程使相应位复/置位来实现信号灯的亮/灭控制,使得十字路口的红、绿灯交替点亮;在灯色交换时,黄灯闪烁提醒。设计要求有紧急车辆通过时,十字路口均显示红灯。可以通过软件中断来完成紧急任务,定义T0为计数中断并为下降沿触发,编写对应中断向量子程序和中断服务程序,完成中断处理。设计还对定时控制有所要求。对于精确定时,应该用计数器加以控制,硬件实现复杂度增加。考虑到该设计对时间精度要求不高,所以采用软件定时可以大大简化电路。先计算出程序单部执行的时间,设置循环参数,利用if语句按设计要求完成定时控制。47 第二章 系统组成第二章 系统组成2.1、控制要求主、支干道交替通行,主干道每次放行30秒,支干道每次放行20秒;绿灯亮时表示可以通行,红灯亮时表示禁止通行;每次绿灯变红灯时,黄灯先亮5秒(此时另一干道上的红灯不变);十字路口要求有数字显示,作为时间提示,以便人们更直观地把握时间,具体要求主、支干道通行时间及黄灯亮的时间均以秒为单位做减数器;在黄灯亮时,原红灯按1HZ的频率闪烁;当有急救车到达时,路口的信号灯全部变红,让急救车通过。假定急救车通过时间为10s,急救车通过后,交通灯恢复先前状态。2.2、工作原理采用单片机的I/O口P1口和P3直接和交通灯连接, 控制程序放在MCS- 51单片机如8051的ROM中, 在十字路口的四组红、黄、绿交通灯中, 受单片机P1.0P1.7和P3.0、P3.1、P3.3、P3.7 控制, 由于交通灯为发光二极管且阳极通过限流电阻和电源正极连接, 因此I/O口输出低电平时, 与之相连的相应指示灯会亮, I/O口输出高电平时, 相应指示灯会灭。紧急车请求通过的信号由人工控制, 以中断方式输入单片机, 无紧急车通过时, 中断引脚INT0 通过电阻和电源正极连接为高电平, 不产生中断请求, 单片机执行主程序, 有紧急车通过时, 中断引脚采用人工方法接地为低电平, 产生中断请求, 单片机执行中断服务程序, 让紧急车通过, 紧急车通过后, 中断引脚变为高电平, 返回主程序。由于倒计时显示装置已普遍采用, 因此本文未引入探讨。2.3、器件和原理2.3.1.什么是单片机单片机是将中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM或EPROM)、定时器芯片和一些输入/输出接口电路集成在一个芯片上的微控制器(Microcontroller)。 中央处理器包括运算器、控制器和寄存器3个主要部分,是单片机的核心。存储器按工作方式可以分为两大类:随机存储器RAM和只读存储器ROM。RAM可被CUP随机地读写,断电后存储的内容消失;ROM中的信息只能被读取,一般用于存放固定的程序。ROM中的内容只能用编程器专用设备写入。输入/输出接口(I/O接口)是单片机的重要组成部分。程序、数据以及现场信息需要通过输入设备送到单片机,计算结果需要通过输出设备输出到外设。常用的输入有按键、键盘、A/D等,输出设备一般有LED、电机等。为了方便理解,我们可以将单片机和PC机进行一个比较。一台能够工作的计算机要由CPU、RAM、ROM、输入/输出设备等几个部分组成。在PC机上这些部分被分成若干块芯片,安装在主板上。而单片机相当于集成了以上所有芯片的一块集成电路芯片。有一些单片机中除了上述基本的功能,还集成了其他部分功能,如A/D、D/A等。一个标准的89C51单片机的引脚功能图如图3所示。图3 89C51单片机及其引脚1AT89C51单片机性能介绍 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2主要特性:1.与MCS-51 兼容 2.4K字节可编程闪烁存储器 3.寿命:1000写/擦循环4.数据保留时间:10年5.全静态工作:0Hz-24Hz6.三级程序存储器锁定7.128*8位内部RAM8.32可编程I/O线9.两个16位定时器/计数器10.5个中断源 11.可编程串行通道12.低功耗的闲置和掉电模式13.片内振荡器和时钟电路3管脚说明: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口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表2-1所示:口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间.ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。2.3.2 什么是单片机系统 单片机系统的基本结构框图如图4所示。从图中可以看出,对于一个典型的单片机系统而言,主要由单片机、晶振和复位电路、输入控制电路、输出显示电路以及外围功能器件5个部分组成。除了上文中介绍过的单片机外,单片机系统中的其他4个部分的主要作用和器件如下。晶振和复位电路:单片机系统的必要组成部分,控制单片机的机器周期和功能复位。输入控制:是指在一定要求下,采取何种形式的控制方式来实现单片机不同功能的转换,以及控制指令以何种方式传送到单片机。常用的输入控制方法有按键、矩阵键盘、串行通信等方式。晶振、复位电路输入控制输出显示外围功能器件单片机图4 单片机系统的基本组成输出显示:是指单片机将需要显示的数据发送到LED、液晶等显示模块,并控制LED等显示模块按照一定的格式显示的功能。此外,输出对象还有电机、传感器等特殊的功能器件。外围功能器件:单片机只是控制器件,对应与一定的设计要求,需要加入特定功能的器件。例如外部存储器,单片机通过对外部存储器的读写操作,完成对数据的存储器的读写操作,完成对数据的存储和读取,从而扩展单片机的存储单元和数据。此外,常用的外围器件还有A/D、D/A、74LS07门电路以及特定功能的传感器等。单片机的最简单系统是指单片机能正常工作所必须的外围元件,主要由单片机、晶振电路和复位电路构成。而输入/输出部分则通过单片机的I/O口实现。2.3.3 单片机系统的应用单片机的应用十分广泛,在工业控制领域、家电产品、智能化仪器仪表、计算机外部设备,特别是机电一体化产品中,都有重要的用途。其主要的用途可以分为以下方面。 显示:通过单片机控制发光二极管或是液晶,显示特定的图形和字符。 机电控制:用单片机控制机电产品做定时或定向的动作。 检测:通过单片机和传感器的联合使用,用来检测产品或者工况的意外发生。 通信:通过RS-232串行通信或者是USB通信,传输数据和信号。 科学计算:用来实现简单的算法。那么单片机是不是解决上述应用的惟一选择呢?当然不是!目前,在自动控制中,一般有3种选择,分别是嵌入式微机、DSP和单片机,他们的性能比较如表2-2所示。表2-2 嵌入式微机、DSP、单片机性能比较指标嵌入式微机DSP单片机运算速度一般快慢信息处理量大大小体积和重量大小小系统集成度高一般低开发成本适中高低典型器件SUPERDX型嵌入式模块DSP-56800TMS320C54XMCS-51MCS-98单片机最明显的优点是价格便宜,从几元人民币到几十元人民币。这是因为这类芯片的生产量很大,技术也很成熟。其次,单片机的体积也远小于其他两种方案。单片机本身一般用40脚封装,当然功能多一些的单片机也有引脚比较多的,如68引脚,功能少的只有10多个或20多个引脚,有的甚至只有8只引脚。当然,单片机无论在速度还是容量方面都远小于其他两种方案,但是实际上工作中并不是任何需要计算机的场合都要求计算机有很高的性能。例如,控制电冰箱温度的控制器就不需要使用嵌入式系统,用一片51就可以轻松实现。所以应用的关键是看是否够用,是否有很好的性能价格比。51系列的单片机已经面世十多年,依然没有被淘汰,还在不断的发展中,这就说明是它有广阔的应用前景。2.4、部分电路功能2.4.1 晶振电路简单地说,没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。单片机工作时,是一条一条地从ROM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。一个机器周期包括12个时钟周期。如果一个单片机选择了12MHz晶振,它的时钟周期是1/12us,它的一个机器周期是12*(1/12)us,也就是1us。MCS-51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较慢,得要2个机器周期,还有两条指令要4个机器周期才行。为了衡量指令执行时间的长短,又引入一个新的概念:指令周期。所谓指令周期就是指执行一条指令的时间。例如,当需要计算DJNZ指令完成所需要的时间时,首先必须要知道晶振的频率,设所用晶振为12MHZ,则一个机器周期就是1us。而DJNZ指令是双周期指令,所以执行一次要2us。如果该指令需要执行500次,正好1000us,也就是1ms。机器周期不仅对于指令执行有着重要的意义,而且机器周期也是单片机定时器和计数器的时间基准。例如一个单片机选择了12MHz晶振,那么当定时器的数值加1时,实际经过的时间就是1us,这就是单片机的定时原理。1、晶振的选择晶振一般分为晶体振荡器和晶体谐振器。在单片机系统中,晶体振荡器将外围的电容集成到振荡器的内部,无需再设计晶振电路,只需要将电源加载到晶振上,晶振就可以起振,并通过两个引脚输出到单片机的晶振引脚上。一般的,由于晶体振荡器的体积较大,价格较贵,在实际使用中,还可以选择晶体谐振器,也就是常说的立式晶振。该晶振需要外部的晶振电路才可以起振,但是由于该电路非常简单,并且使用灵活,在单片机系统中也有广泛地应用。2、通用的晶振电路单片机的晶振电路是一种典型电路,分为内部时钟方式和外部时钟方式两种。内部时钟方式的电路如图4所示。图4 单片机的内部晶振电路 HMOS型单片机 CHMOS型单片机图5 单片机的外部晶振电路内部始终的晶振频率一般都选择在4MHz12MHz之间,外接两个谐振电容。该电容的典型值为30PF,但是在实际应用时,需要根据实际起振情况选择。如果单片机的时钟必须使用某一个外接的时钟信号,就不要外接晶振。由于此时的外接晶振引脚上没有晶振信号输入,内部的时钟电路将停振。这种方式称为外部时钟方式。图5给出了两种外部时钟的电路,可以根据不同的单片机型号选择不同的电路。3、振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。2.4.2 复位电路简单地说,单片机的复位就和计算机的重起一样的概念。任何单片机在工作之前都要有个复位的过程,复位对单片机来说,是程序还没有开始执行,是在做准备工作。一般的复位只需要5ms的时间。复位引脚RST/Vpd通过片内一个施密特触发器(抑制噪声作用)与片内复位电路相连,施密特触发器的输出,在每个机器周期的S5P2有复位电路采样依次。当振荡电路工作,并且在RST引脚加上一个至少保持2个机器周期的高电平时,就能使8051完成一次复位。按上面所说,时间不少于5ms。为了达到这个要求,需要在外部设计复位电路。复位电路的实现可以有很多种方法,但是从功能上一般分为两种:一种是电源复位,即外部的复位电路在系统通上电源之后直接使单片机工作,单片机的起停通过电源控制;另一种方法是在复位电路中设计按键开关,通过按键开关触发复位电平,控制单片机的复位。1、通用的复位电路和晶振电路一样,复位电路也是单片机系统的典型外部电路。基本的复位电路的原理图如图6所示。图6 单片机的复位电路从原理上,一般采用上电复位嗲路。这种复位电路的工作原理是:通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始正常工作。2、改进型的复位电路我根据设计的需要,定制满足实际要求的电路。这里,给出了一种根据实际需要设计的上电复位电路,如图7所示。图7 改进型的复位电路2.4.3 信号灯控制电路外围器件选择的是发光二极管,发光二极管在其两端的电压差超出其导通压降时开始工作,发光二极管的导通压降一般为1.7V1.9V。此外,工作电流要满足该二极管的工作电流。满足电流和电压的要求,发光二极管就可以发光了。单片机系统中往往是数字信号,不是5V就是0V,所以只要将二极管的正负极和电源对应上就可以了。但还需在发光二极管和单片机连接时加一个限流电阻,这个电阻的作用在于限制通过二极管的电流,从而达到减少功耗或者满足端口对最大电流的限制。图8 信号灯控制和时间显示电路一般二极管的点亮电流为5mA至10mA,在5V驱动时,厂家多采用470欧的限流电阻,在电路中采用了1K的电阻,电流也就35mA。当然为了更亮一点,可以减小电阻值,当然,二极管的电流不要超出单片机的I/O最大电流。发光二极管的参数分成三大类:一是电参数;二是光参数;三是极限参数。 电参数发光二极管的电参数主要有下列几项。 正向电压Vf。它是指:在给发光二极管加入规定的正向电流时,发光二极管正极与负极引脚之间的电压降。发向耐压Vr。它是指:保证发光二极管不出现反向击穿时所允许给发光二极管加的最大反向电压。反向漏电流Ir。它是指:在给发光二极管加上规定的反向偏置电压时,流过发光二极管的反向电流,即从负极流向正极的电流。结电容Co。它是指:发光二极管PN结的结电容,一般为小于100PF,此结电容愈小愈好。 光参数发光二极管的光参数主要有发光峰值波长、半峰宽度和发光强度。其中发光强度是发光二极管的一项重要光参数,它表征了发光二极管发光时的亮度。 极限参数发光二极管的极限参数关系到发光二极管的安全使用,在使用过程中若超过极限参数,发光二极管将会损坏。发光二极管的极限参数主要有两项:一是极限功率Pm;二是极限工作电流Im。在小电流发光二极管中,极限电流一般小于5MA。发光二极管的三种参数中,除光参数是它特有的外,其他两项参数的含义与普通二极管相同。2.4.4 LED显示及显示接口单片机应用系统中,使用的显示器主要有LED(发光二极管显示器)和LCD(液晶显示器)。这两种显示器成本低廉,配置灵活,与单片机接口放便。近年来也开始配置简易形式的CRT接口,可以较方使池进行图形显示。数码管在该电路中主要是显示单片机的输出数据、状态等,因而,作为外围典型器件,数码管显示是反映系统输出和操纵输入的有效器件。数码管具备数字接口,可以很方便地和单片机系统连接;数码管的体积小,重量轻,并且共好低,是一种理想的显示单片机数据输出内容的期间,在单片机系统中有着重要的作用。显示电路如图8所示。1LED显示器结构与原理LED显示块是由发光二极管显示字段的显示器件,在单片机应用系统中通常使用的是七段LED。这种显示块有共阴极与共阳极两种,如图9所示。共阴极LED显示块的发光级管阴极共地。如图中(c)所示,当某个发光二极管的阳极为高电平时,发光二极管点亮;共阳极LED显示块的发光二极管阳极并接。如图中(b)所示。图中(a)为七段码显示器的实际外观与引脚连接图,另外两只没有标出的引脚是共阴或者共阳引脚,实际连接中接地(共阴)或者接+5伏(共阳)。图9 LED的管脚和电路原理通常的七段显示器(也有人称为七节显示屏)是由八个发光二极管所组成的,因此也被叫做八段显示器。其中包括七个细长条形的LED及小数点行的LED,显示器的每一段或没一划都有其名称,分别是英文小写的a到f,以及小数点dp(DECIMAL POINT)。七段显示器可以显示包括小数点的0到9数字与部分的英文字母。在近年来,由于生产器件的工艺的进步,也出现了十六段码LED显示器和点阵式单色和双色显示器,这些LED显木器被广泛应用于电梯、大屏幕LED显示器、公共汽车报站器、车站车次显示等领域,特别是点阵式双色显示器的出现,极大的方便了汉字的显示和图形显示,为其在网民经济的领域的应用拓宽了道路。以共阳极的七段显示器为例,若想要显示数字1时,就要使b划与c划点亮,在电路上我们会把共同点接到正电源端(+5V),标示b与c的地方经过限流电阻到地,就可以显示数字1。如果是单个的数码管,七段显示器是直接点亮的,亦即用8位去推动一个七段显示器。如果有多位数字要显示时,可以用扫描的方式显示,以节省控制脚位。 七段显示块与单片机接口非常容易。只要将一个8位并行输出门与显示块的发光二极管引脚相连即可。8位并行输出门输出不同的字节数据即可获得不同的数字或字符,其段码如表2-3所示。通常将控制发光二极管的8位字节数据称为段选码。共阳极与共阴极的段选码义为补数。表2-3 七段LED码的显示码2. LED是如何显示单片机数据的用单片机驱动LED数码管有很多种方法,按显示方式分,有静态显示和动态显示。首先介绍静态显示方法。静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不再控制LED,直到下一次显示时再传送一次新的显示数据。静态显示的数据稳定,占用的CUP时间少。静态显示中,没一个显示器都要占用单独的具有锁存功能的I/O接口,该接口用于笔划段字形代码。这样单片机只要把显示的字形代码发送到接口电路,该字段就可以显示发送的字形。要显示新的数据时,单片机再发送新的字形码。另一种方法是动态扫描显示。动态扫描的方法是用其接口电路把所有显示器的8个笔划段a-h同名端连在一起,而没一个显示器的公共极COM各自独立地受I/O线控制。CPU向字段输出口送出字形码时,所有显示器接口接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,而这一端是有I/O控制的,由单片机决定何时显示哪一位了。动态扫描用分时的方法轮流控制各个显示器的COM端,使各个显示器轮流点亮。在轮流点亮扫描过程中,没位显示器的点亮时间极为短暂,但由于人的视觉暂留现象及发光二极管的余辉效应,给人的印象就是一组稳定的显示数据。3静态显示和动态显示的比较这两种显示方式各有利弊:静态显示虽然数据显示稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的电路硬件较多;动态显示需要CPU时刻对显示器进行数据刷新,显示数据有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。在一般较为简单的系统中,为了降低成本,动态显示方案具备一定的实用性,也是目前单片机数码管显示中较为常用的一种显示方法。动态显示法是目前各种单片计算机采用的流行方法。其优点是烟碱简单。“动态”由软件实现。 第三章 交通信号灯软件的系统编程第三章 交通信号灯软件的系统编程3.1、单片机的C语言程序设计c语言程序设计是单片机开发、应用的重要趋势之一。目前,支持硬断点的单片机仿真器已能很好地进行c语言程序调试,为单片机编程使用c语言提供了便利条件。 编译型程序设计语言c的优点已为大家熟知:既有多种高级语言的特点,又具备汇编语言的功能:有丰富的库函数、运算速度快、编译效率高、可移植性好,而且可以实现对系统硬件的直接控制;具有完善的模块程序结构,支持广泛采用的由顶向下结构化程序设汁,为软件开发中采用模块化设计方法提供了有效支持;可以大大缩短目标系统软件的开发周期,软件的可读件明显增加,便于改进、扩充,研制规模更大、性能更完备的系统。3.2、C语言与MCS513.2.1 MCS51酌编程语言 支持MCS51单片机编程的语言除了前面学过的汇编语言外,还有三种:BASIC、PL/M和C。BASIC语言简单易学,适用于对编程效率或运行速度要求不高的场合,8052单片机片内就固化了BASIC语言解释器。但是BASIC采用浮点运算,导致程序复杂且执行时间长,即使BASIC编译器也未能解决这个问题。 PL/M可以说是“高级汇编语言”,详细控制着代码的生成。但对MCS-51系列,PL/M不支持复杂的算术运算和浮点变量,也没有丰富的库函数。 用C语言进行单片机程序设计,编译器能自动完成变量的存储单元的分配,编程者可以专过于应用软件的设计大大加快开发速度,可以对单片机常用的接口芯片编制通用的驱动函数,对常用的功能模块、算法等编制相应的函数,还可以很容易地进行信号处理算法和程序的移植,有利于产品中单片机的重新选型和软件设计水平的提高、与国外嵌入式系统的程序设计接轨。与汇编语言相比,C语言程序在开发速度、软件质量、结构严谨、程序可靠性等方面有明显优势。而代码效率相对较低的缺点,对于片内ROM空间16K/32K字节以上的单片机而言,已经不很重要。目前,单片机上C语言程序未经人工优化的代码长度,已缩短到用人工方便地对时间要求比较严格的汇编语言模块和关键代码进行优化。3.2.2 C51编译器与程序开发过程已经开发了各种单片机的C语言编译器 对于并不以快速运算见长的MCS51单片机来说,其C语言编译器(简称C51)的各项性能指标中,最重要的是开发便利,其次是生成代码紧凑,以及编译速度、是否有浮点库和足够的算术支持。C51程序开发过程如图10所示:图10 C51程序开发过程3.2.3 C51程序结构与一般C语言相似,C51程序的基本单位是函数。函数由函数说明和函数体两部分组成。一个C源程序至少包含个(main)也可以是一个主函数和若干其它函数。主函数是程序的入口;主函数中的所有语句执行完毕,则程序结束。C51程序的一般格式如下:类型 函数名(参数表)参数说明: 数据说明部分:执行语句部分:在程序中,函数有三种形态:函数定义、函数调用和函数说明。函数定义相当于汇编中的一般子程序。函数调用相当于调用子程序的CALL语句,要求有函数名和实参数表。在C中,更普遍地规定函数调用可以出现在表达式中。函数定义和函数调用不分先后,但若调用在定义之前,必须在调用前先进行函数说明。函数说明是一个没有函数体的函数定义。C51中函数分为两大类:库函数和用户定义函数。被调用的函数可以是库函数,也可以是用户函数。库函数是C51在库文件中已定义的函数,其函数说明在相关的头文件中。用户在编程时只要用include预处理指令将头文件包含在用户文件中,直接调用即可。用户函数是用自己定义,自己调用的一类函数。C51程序的编制与一胜C语言行序大致相同。3.3、利用C51程序编写延时程序为了循序渐进地学习单片机的功能,这里我们即使用了单片机中的定时器,也直接采用软件的延时程序定时控制发光二极管的亮灭。该延时程序的时间主要是通过计算单片机执行指令所需的时间来确定的。例如,在前文中介绍过,在选择12MHz晶振时,执行一个简单加法指令的时间为一个指令周期,需要1/12M(秒)=1(微秒),所以程序中作1M次加法循环所需要的时间就是1秒钟。当然,这只是一个粗略的算法,需要加上执行其他必须指令所花的时间,并且考虑程序代码的效率。但是,这不失为一种简单的解决方案。 程序代码void delay10ms(void) unsigned char i,j; /定义延时循环变量 for(i=20;i0;i-) for(j=248;j0;j-); /双重循环,延时10ms3.4 信号灯亮灭的定时功能单片机之所以在工业控制中有大量的应用,就是在于它有其独特的定时、计数功能。在本电路中,用定时器来实现灯的闪烁功能。控制单片机I/O端口电平的高低,从而控制发光二极管的亮灭通过对P1口和P3.0、P3.1、P3.3、P3.7口的变量置1和置0,控制P1口和P3口的电平高和低。当为高电平时,发光二极管两端压差为零,二极管不导通,灯不亮;当为低电平时,发光二极管两端压差为5V,二极管导通,灯亮。3.4.1 单片机的定时器MCS-51系列的单片机一般有两个内部的16位定时器/计数器,分别称为T0和T1。这两个计数器分别是两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。那么这个定时/计数器是如何产生定时作用的呢?举个例子,如果将时钟定时到1分钟,那么秒针计数到60次后,始终闹铃就会响。这里有个计数和定时之间的概念转化,时间表示为秒针的计数值,即秒针每一次走动的时间正好是1s。单片机中的定时器和计数器是复用的,计数器是记录外部脉冲的个数,而定时器则是由单片机提供的一个非常稳定的计数源。定时器是由单片机的晶振经过12分频后获得的一个脉冲源。当单片机的晶振为12MHz时,计数值1代表的时间就是1us。计数器的容量是16位,也就是最大的计数值达到65536,因此计数计到65536就会产生溢出。当定时器/计数器溢出时,就会使得相关的寄存器标志产生变化,单片机将由此而产生定时中断,在中断服务程序中处理定时到而需要完成的任务。3.4.2 如何使用MCS-51单片机的定时器呢? 使用单片机的定时器/计数器主要和编程有关。编程中需要对两个特殊功能寄存器进行操作。这两个特殊功能寄存器就是TMOD和TCON,又称为定时器的控制字。 首先,介绍定时器/计数器的方式寄存器TMOD。TMOD是一个8位的特殊功能寄存器,对应的地址为89H,不可位寻址。TMOD控制字中可以完成3个功能:确定选择定时器,还是计数器。选择何种工作方式。是否借用外中断控制定时器和计数器的启停。TMOD的低4位是用于控制T0的字段,高四位用于控制T1。TMOD的控制字的格式和含义如表3-1所示。表3-1 TMOD的控制字TMOD.7TMOD.6TMOD.5TMOD.4TMOD.3TMOD.2TMOD.1TMOD.0GATEC/TM1M0GATEC/TM1M0这里,以TMOD的低4位来说明各位的定义和功能。GATE:分为两种情况,GATE=0,定时器的起停和INT1无关,在这种情况下,定时器的起停只取决于TR0。GATE=1时,在此种情况下定时器/计数器的开关不仅要由TR0来控制,而且还要受到INT1引脚的控制,只有TR1为1,且INT1引脚也是高电平,定时器才能开始工作。C/T:定时/计数器即可作定时也可用于计数。选择何种功能,由C/T的控制字决定。如果C/T为0就用作定时器,如果C/T为1就用作计数器。当然,一个定时/计数器同一时刻要么作定时用,要么作计数用,不能同时用。M1、M0:用M1、M0来控制定时/计数器4种工作方式的选择。工作方式0:M0=0,M1=0。13位定时/计数方式,它由TL(1/0)的低5位和TH(0/1)的8位构成13位的计数器,此时TL(1/0)的高3位未用。工作方式1:M0=0,M1=1。是16位的定时/计数方式,其他特性与工作方式0相同。工作方式2:M0=1,M1=0,自动重装初值的8位定时器/计数器。初值放在T(0/1)的高8位。在工作方式2,只有低8位参与计数,而高8位不参与计数,用作预置数的存放,计数范围256。每当计数溢出,就会打开T(0/1)的高、低8位之间的开关,计预置数进入低8位,这是由硬件自动完成的,不需要由人工干预。通常这种工作方式用于波特率发生器,用于这种用途时,定时器就是为了提供一个时间基准。计数溢出后重新装入预置数,再开始计数,不要任何延迟。工作方式3:M0=1,M1=1。这种工作方式之下,定时/计数器0被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器的工作方式,而TH0则只能作为定时器来用。一般情况下,只有在T1以上工作方式2运行(当波特率发生器用)时,才让T0工作于方式3。接下来,介绍定时器/计数器的控制寄存器TCON。TCON是一个8位的特殊功能寄存器,对应的地址为88H,可位寻址。TCON中的低4位用于外部中断的控制,在后文中将加以介绍,此处只对高4位的T0、T1控制字及其控制原理进行介绍。TCON控制寄存器的格式和含义如表3-2所示。表3-2 TCON控制寄存器TCON.7TCON.6TCON.5TCON.4TCON.3TCON.2TCON.1TCON.0TF1TR1TF0TR0IE1IT1IE0IT0TR0:T0的运行控制位。启动定时器T0没有专门的指令,而是通过位TR0进行控制。TR0是由软件置位或清零的。当门控位GATE=0时,T0的运行只取决于TR0的0和1;当门控位GATE=1时,仅当TR0=1,并且外中断0引脚上的输入值为高电平时,T0才开始计数,这两个条件有一个不满足,则禁止T0计数。TF0:T0的溢出和中断申请标志位。当T0溢出时,硬件置位TF0,表示提出了中断申请。该标志位可以通过软件查询,也可以用软件清零和置位。在单片机响应中断申请后,硬件自动清零。TR1:T1的运行控制位。TF1:T1的溢出标志位和中断申请标志位。3.4.3 定时器数值的设置应该注意的事项理论上说,定时器的最小计数、定时间隔时间是由晶振的频率决定的,最大的时间间隔可以是无穷大。然而,在实际应用中,还是有一定的规则需要遵守的。首先还是看一看定时器的一次最大计数范围吧。工作方式0:13位定时/计数方式,因此,最多可以计划到2的13次幂,也就是8192次。工作方式1:16位定时/计数方式,因此,最多可以计划到2的16次幂,也就是65536次。工作方式2和工作方式3:都是8位的定时/计数方式,因此,最多计数值可以达到2的8次幂,也就是256次。如果想实现一个1s的定时,该12MHz晶振频率下,最长的定时也就是65536us。可以采用软件计数器的概念。先用定时/计数器0做一个50ms的定时器,定时时间到了以后并不是立即开关发光二极管。而是将软件计数变量中的值加1,如果软件计数器计到了20,再开关发光二极管。并清掉软件计数器中的值。这样,就变成了20次定时中断才开关一次发光二极管,因此定时时间就延长了成了1000ms。3.4.4 定时1ms的程序代码Void t0(void)interrupt 1 using 0 TH0=(65536-1000)/256; /设置定时器高8位初值 TL0=(65536-1000)%256; /设置定时器低8位初值3.5 51单片机的中断系统3.5.1 中断系统的概念有关中断的概念可以在一般的教材中找到:中断属于一种对事件的实时处理过程。中断源可能随时停止CPU当前的工作,转而去处理中断服务程序,待中断服务程序完成后,再返回原来工作的断点处,继续原来的工作。什么是中断,我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。要了解单片机的中断系统,首先需要了解中断源。可以引起中断的事件称之为中断源。51单片机中一般工有5个中断源:两个外部中断,两个计数/定时器中断,一个串行口中断。第二,需要了解中断的嵌套与优先级处理。由于单片机中有多个中断源,在实际的应用中又可能同时用到多个中断源。所以在使用单片机的中断时,需要了解中断的嵌套和优先级处理。优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况。第三,也是最为复杂的一个部分,就是中断的响应过程。单片机的5个中断源,每个中断产生后都要根据一个固定的地址去找处理这个中断的程序,称之为中断服务程序。当然之前首先要保存主程序下一条将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。具体地说,中断响应可以分为以下几个步骤:保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址。执行中断服务程序,用中断服务程序处理需要改变的变量或者事件。中断返回,执行完中断服务程序后,从中断短点处返回主程序,继续执行主程序。3.5.2 单片机的中断系统的作用单片机在自动控制中有两个重要的功能,一个是定时/计数的作用,另一个就是中断的使用。中断有如下重要的作用。第一,实现告诉CPU和低速外设之间的配合。利用中断方式进行的I/O口操作,在宏观上可以看成CPU和外设的并行工作。第二,可以实现实时控制。实时处理是控制系统对单片机提出的要求,各个设备可以随时向CPU发出中断申请,而CPU也必须作出快速响应和及时处理。第三,实现故障的紧急处理。当外设发生故障时,可以利用中断系统请求CPU及时处理这些故障。第四,便于人机联系。操作人员可以利用键盘等实现中断,完

温馨提示

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

评论

0/150

提交评论