




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编号: 毕业设计说明书(论文)题 目: 基于单片机交通信号灯的控制 学 院: 专 业: 学生姓名: 学 号: 指导教师单位: 姓 名: 职 称: 题目类型:理论研究 实验研究 工程设计 工程技术研究 软件开发 20xx年 8月 17日 摘 要近年来,随着科学技术的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制思想日新月异的变化。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,同时结合具体的硬件结构进行相关的软件设计,来弥补单片机在某些方面的不足。本文描述了一个采用52系列单片机STC89C52和74HC573锁存器设计的交通灯控制器的实现方法。文章首先介绍了单片机的相关情况和发展过程,然后描述了系统设计所需芯片的基本结构和性能,以及部分元器件及硬件电路的接法,详细讨论了控制器的软硬件设计及其实现过程。本设计是采用数码管动态扫描显示各方向的倒计时数据。通过软件的设计,以及仿真模拟调试,最后实现了控制系统需要的功能,同时各方面参数达到设计要求。上机运行观察现象符合设计要求,状态切换稳定。关键词:单片机 交通灯控制系统 系统设计 Abstract In recent years, with the rapid development of science and technology, MCU applications are constantly go deeper, and drive the change of traditional control thoughts with each passing day. In real-time detection and automatic control of microcomputer application system, the microcontroller is often used as a core component, at the same time, combining with the specific hardware structure of the related software design, to make up for the inadequacy of single-chip computer in some ways.This paper describes a the 52 series microcontroller STC89C52 and 74HC573 latch design method to realize the traffic light controller. This paper introduces the related situation of single-chip microcomputer and development process, and then describes the system design the basic structure and performance of the chip required, and some of the components and hardware circuit connection, the hardware and software of controller are discussed in detail and its implementation process. This design is using digital tube dynamic scan showed the direction of the countdown to the data. Through the design of the software, and analog simulation debugging, finally realized the function of control system needs, at the same time the parameters meet the design requirements. Computer run observations, comply with the design requirements, stable state switch.Key words: Single chip microcomputer Traffic lights control system The system design MCU 目 录引言11 交通灯控制系统设计技术基础21.1 单片机的概念及发展21.2 51单片机的引脚简介21.3 电平特性41.4 进制与简单的逻辑运算51.4.1 二进制与十六进制51.4.2 逻辑运算简介51.5 单片机C51的基础知识61.5.1 C51中的基本数据类型6 1.5.2 C51中常用的头文件和运算符62 发光管及数码管原理72.1 发光二极管原理简介72.2 锁存器的简介72.3 数码管简介83 交通灯控制系统原理及硬件设计93.1 控制系统分析93.2 单片机USB电源103.3 单片机复位电路简介113.4 信号灯硬件连接电路原理图123.5 单片机和数码管硬件连接电路原理图133.6 交通灯控制系统电路总图及元件标号154 交通灯控制系统软件设计174.1 while和for语句174.1.1 while语句174.1.2 for语句174.2 if和switch-case选择语句174.2.1 if语句174.2.2 switch-case选择语句184.3 中断的概念184.4 单片机的定时器中断194.5 交通灯控制系统程序流程图214.6 程序源代码235 系统的调试与运行275.1 系统调试275.2 系统运行28结论29谢辞30参考文献31附录132附录233 桂林电子科技大学毕业设计(论文) 共33页 第48页 引言交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。 交通灯是交通中的重要指挥系统,提供一个可靠、安全、便捷的交通灯控制系统有着现实的必要性,本文介绍的交通灯控制系统除具有一般的红绿灯显示功能外,还具有时间显示功能,以及倒计时功能,以方便人们的出行。本文将介绍单片机控制系统的设计过程及一些基础知识。第一部分讲了单片机的基础知识第二部分讲了发光二极管及数码管的原理第三部分讲了交通灯硬件系统分析与设计第四部分讲了交通灯控制系统软件设计第五部分就是系统调试和运行 1 交通灯控制系统设计技术基础1.1 MCS-51单片机的概念及发展单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit)常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。单片机由运算器、控制器、存储器、输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。单片机它最早是被用在工业控制领域。由于单片机在工业控制领域的广泛应用,单片机由仅有CPU的专用处理器芯片发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。Tntel的8080是最早按照这种思想设计出的处理器,当时的单片机都是8位或4位的。其中最成功的是Tntel的8051,此后在8051上发展出了MCS-51系列单片机系统。因为简单可靠而性能不错获得了很大的好评。尽管2000年以后ARM已经发展出了32位的主频超过300M的高端单片机,直到现在基于8051的单片机还在广泛的使用。在很多方面单片机比专用处理器更适合应用于嵌入式系统,因此它得到了广泛的应用。事实上单片机是世界上数量最多的处理器,随着单片机家族的发展壮大,单片机和专用处理器的发展便分道扬镳。现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。 汽车上一般配备40多片单片机,复杂的工业控制系统上甚至可能有数百片单片机在同时工作!单片机的数量不仅远超过PC机和其他计算机的总和,甚至比人类的数量还要多。1.2 51单片机的引脚简介如图1.2-1为80C51的引脚封装图。下图为两种类型的单片机引脚图,目前总线型的使用比较多。基于8051内核的单片机,若引脚数相同,或是封装相同,它们的引脚功能是相通的,其中用的较多的是40脚的DIP封装51单片机,也有20,28,32,44等不同引脚数的51单片机。 区分芯片引脚序号无论哪种芯片,单片机也好,其他不知名芯片也好,当我们观察它的表面时,大都可以找到一个凹进去的小圆坑,或者用颜色标识的一个小记号(圆点或三角或其他小图形)这些标识所对应的就是这个芯片的第1引脚,然后逆时针数下去,即1到最后一个引脚。在焊接时要注意。接下来我们以图1.2-1的总线型单片机简单介绍引脚功能。按功能分可分三类:(1) 电源和时钟引脚。如VCC、GND,XTAL1,XTAL2(2) 编程控制引脚。如RST、ALE/、/Vpp(3) I/O口引脚。如P0,P1,P2,P3,4组8位I/O口。 图1.2-1左边为总线型右边为非总线型(PDIP封装形式)VCC, GND-单片机电源脚。VCC是电源输入引脚,GND是接地信号引脚。XTAL1,XTAL2外接时钟引脚。XTAL1为片内震荡电路输入端,XTAL2为片内震荡电路输出端。8051的时钟方式有两种,一种是片内时钟震荡方式,需要在这两个引脚外接石英晶体和震荡电容,震荡电容的值一般取10P30P;另外一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。RST复位引脚,需要输入连续两个机器周期以上的高电平才有效。用来完成单片机的复位初始化操作,复位后程序计数器PC=0000H,即复位后程序从头开始执行。-全称是程序存储器允许输出控制端。(由于如今单片机程序存储器有足够的内部ROM,此处略讲)ALE/-在单片机扩展外部RAM时,ALE用于控制把P0口的输出低8位送地址锁存器锁存起来,以实现低位地址和数据的隔离。/Vpp-接高电平时,单片机读取内部程序存储器。当扩展有外部ROM时,读完内部ROM后自动读取外部ROM。接低电平时,单片机直接读取外部(ROM)。8031没有单片机没有内部ROM所以接低电平。本文使用89C52所以接高电平。I/O口引脚P0,P1,P2,P3。P0双向8位三态I/O口,每个口可独立控制。P1准双向8位I/O口,每个口可独立控制,内带上拉电阻(若想了解全面可查相关资料),这种口输出没有高阻态,输入不能锁存,故不是真正的双向I/O口。 P2口与P1口相似。P3准双向8位I/O口,每个口可独立控制,内带上拉电阻。此口第一功能当做普通I/O口。第二功能定义如下: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外部读控制说完引脚咱们看看8051内部结构图1.2-2 图1.2-2 8051内部结构图1.3 电平特性单片机是数字集成芯片,所以其工作是由数字电平控制方式。数字电路只有两种电平,高(1)和低(0)。常用逻辑电平有TTL,CMOS,LVTTL,ECL,PECL等等很多,我们用的最多的是TTL和CMOS。5V TTL和5V CMOS是通用的逻辑电平。TTL电平信号用的最多,这是因为,数据表示通常采用二进制,+5V等价于逻辑1, 0V等价于逻辑0.这被称为TTL(晶体管-晶体管逻辑电平)信号系统,这是计算机处理器控制的设备内部之间通信的标准技术。TTL型通信大多数情况下是采用并行数据传输方式。CMOS电平VCC可达12V,CMOS电路输出高电平约为0.9VCC,而输出低电平约为0.1VCC 。CMOS电路中不使用的输入端不能悬空,否则会造成逻辑混乱。另外CMOS集成电路电源电压可以再较大的范围内变化,因而对电源的要求不像TTL那么严格。TTL和CMOS的逻辑电平关系如下:(1) VOH-逻辑电平1的输出电压(2) VOL-逻辑电平0的输出电压(3) VIH-逻辑电平1的输入电压(4) VIL-逻辑电平0的输入电压TTL临界值:(1) VOHmin=2.4V, VOLmax=0.4V。(2) VIHmin=2.0V, VILmax=0.8VTTL电平范围05V。CMOS电平临界值:(1)VOHmin=4.99V, VOLmax=0.01V。(2)VIHmin=3.5V, VILmax=1.5VTTL和CMOS逻辑电平的转换:CMOS电平能驱动TTL电平,但TTL电平不能驱动CMOS电平,需加上拉电阻。1.4 进制与逻辑运算1.4.1 二进制与十六进制二进制和十进制相似,十进制“逢10进1”,二进制就是“逢2进1”。例如1+2在二进制中用B表示即上式变成1B+10B=11B,从上式可以看到,2=10B,那么就很容易得到了4=100B,前面的2和4等是十进制数用D表示,但是一般省略不写。十六进制也是一样的“逢16进1”。由上我们可以得到十进制转换成二进制的规律(1) 整数部分除2逆序取余(2) 小数部分乘2顺序取整,直到乘到全部为整数十进制转化为十六进制也一样,只不过把2换成16而已。下面我们来看看二进制和十六进制转化成十进制,首先介绍二进制转化成十进制。从二进制的小数点左边第一位起往前看,每一位代表的数为2n 这里的n表示从最后起的第几位二进制数,n从0算起,也就是说第一位n=0。例如01110111B转化成十进制数1X20+1X21+1X22+0X23+1X24+1X25+1X26+0X27=119其中2n 称为“位权”。注意,小数点右边第一位开始按上面思路。二进制转换成十六进制的时候,以小数点为基点分别向左,向右每4位为一组,不足的整数部分高位补0,小数部分低位补0.其中每4位二进制数就代表一个十六进制数,可以分别表示015,从1015十六进制数分别用字母A,B,C,D,E,F表示。其后缀为H。在C语言编程中十六进制数要写成“0xa,0xde”,就是在数的前面加“0x”。下面是十、二、十六进制的转换表十进制二进制十六进制十进制二进制十六进制0008100081119100192102101010A3113111011B41004121100C51015131101D61106141110E71117151111F1.4.2 逻辑运算简介“与”运算概念为“全1为1,否则为0”。单片机C语言中运算符为“&”,单片机C语言中“&”表示“按位与”,意思就是两个二进制数对应一一进行“与”运算。如(0110)&(0101)=0100。“或”运算是实现“有1则1,全0则0”。单片机C语言中运算符为“”。在单片机C语言中“或”表示按位“或”,同“与”类似。“非”运算是实现“求反”的这种逻辑运算。单片机C语言中运算符为“!”,运算表示对单一位进行运算。当用“”表示“非”时,表示“按位取反”运算。0011=1100.此外还有“同或”“异或”等,逻辑运算,这里就不做一一介绍。1.5 单片机C51的基础知识C语言作为一种非常方便的编程语言而得到广泛支持,很多硬件开发都用C语言编程,如各种单片机,DSP,ARM等等。C语言由于其良好的移植性而得到广泛的应用,C语言提供了很多数学函数,并支持浮点运算,开发效率高。1.5.1 C51中的基本数据类型单片机C语言中常用的数据类型如下表1.5-1数据类型关键字所占位数表示数的范围无符号字符型unsigned char80255有符号字符型char8-128127无符号整型unsigned int16065535有符号整型int16-3276832767无符号长整型unsigned long320232-1有符号长整型long 32-231231-1单精度实型float 323.4e-383.4e38双精度实型double641.7e-3081.7e308位类型bit 1011.5.2 C51中常用的头文件和运算符通常有reg51.h,reg52.h,math.h,stdio.h,ctype.h,intrins.h,absacc.h。reg51.h和re52.h比较常用,它们是定义51单片机或52单片机特殊功能寄存器和位寄存器的,这两个头文件中大部分内容是一样的。52比51多一个定时器T2。C51算术运算、关系(逻辑)运算、位运算如下表1.5-2,1.5-3,1.5-4。表1.5-2算术运算符算术运算符含义+加法-减法*乘法/除法(求模运算)+自加-自减%求余表1.5-3 逻辑运算符关系(逻辑)运算符含义 大于 =大于等于 小于 右移 左移注意:“/”用在整数除法中时,如13/3=4,求模运算也是在整数中。“%”也是在整数中运算,13/3=1.区别赋值运算符“=”和关系运算符“=”,前者是将等号右边的值赋给右边的数。2 发光管及数码管原理2.1发光二极管原理简介发光二极管它具有单向导电性,通过5mA左右电流即可发光,一定范围内电流越大,其亮度越强。二极管的理论导通压降硅管一般为0.7V,锗管一般为0.3V。我们测试发光二极管的两端压降实际数值为1.7V。直插式发光二极管长脚为阳极,短脚为阴极。贴片式发光二极管正面一段有彩色标记,通常有标记的一端为阴极。由于单片机供电电压为5V为了不烧坏发光二极管,必须在电源和二极管中间接上电阻。为了方便和现代化的要求,我们选择排阻,阻值大小的选择:由欧姆定律可得U=IR,发光二极管的导通压降为1.7V,我们在发光二级管的电阻分压3.3V,我们可以通过电流的计算适当选择阻值。下面我们来写一段用STC89C52单片机点亮某个发光二极管的简单程序 #includeSbit led1=P12;/声明单片机P1口的第三位,接的是某发光二极管Void main()Led1=0;/点亮发光二极管,给发光二极管阴极低电平2.2锁存器简介在使用数码管之前我们先了解下锁存器。因为单片机可以控制锁存器,进而控制锁存器的数据输出,74HC573锁存器可方便控制任意数码管显示数字。同时也可以抗干扰,使系统更稳定。其实它是一种数字芯片。下面我们来介绍74HC573锁存器。为三态允许控制端(低电平有效),通常叫做输出使能端,或叫锁存端。74HC573真值如下, 表2.21 INPUSOUTPUT LE D Q L H H H(高电平) L H L L(低电平) L L X Q0(上次电平状态) H X X Z(高阻态) 表2.21 74HC573真值表由真值表可以看出,当为高电平时,无论LE和D输出何种电平状态,其输出都为高阻态,很明显该芯片处于不可控状态。我要用它实现功能就必须要控制它,所以我们将其接地。当为低电平时,我们再看看LE,当LE为高时,D与Q同时为高或低,而LE为低电平时,无论D为何种电平状态,Q都保持上一次的数据状态。就是说LE为高电平时,Q端的状态会紧随D端的数据状态变化;当LE为低电平时,Q数据将保持住LE端变化为低电平之前的Q端的数据状态,因此我们将锁存器的LE端和单片机的某一引脚相连,再将数据输入端于单片的I/O口相连,就可以通过控制锁存器的锁存端与锁存器的数据输入端的数据状态来改变锁存器的数据输出端即Q端的数据状态。下面是74HC573的引脚图和内部结构图 图2.2-174HC573内部结构图 图2.2-2 74HC573引脚图2.3数码管简介数码管有很多种类,单位数码管,双位数码管,四位数码管,另外还有右下角不带点的数码管等。我们实验所用的数码管是共阴极单位数码管,下面我们重点讲单位数码管。如图2.3-1为单位数码管引脚及其内部原理图。由于单片机的I/O口无法送出足够大的电流能够驱动数码管显示,所以数码管和单片机连接需要加驱动电路,可以用上拉电阻的方法或使用专门的数码管驱动芯片。在这里,为了方便,我们选用74HC573锁存器,其原理在上面已经做过介绍,这里就不再重复了。74HC573输出电流较大,电路接口简单,能够满足同时驱动多个数码管的要求,同时也可以达到我们想要的某些控制要求。 图2.3-1 单位数码管的内部原理图a 图为单位数码管引脚图 b图的左边是共阴极接法,右边为共阳极接法。a图中第3和第8引脚是接在一起的。对于共阴数码管来说,其8个发光管的阴极在数码管内部全部连在一起,所以称“共阴”,而阳极是独立的,通常设计电路时一般把阴极接地。当我们给数码管任一个阳极加高电平时,对应的这个发光二极管就点亮了。共阳二极管刚好相反。下面我们来讲一种编码方法,在数码管显示中常常要用到的。我们模拟实验采用的是共阴数码管,所以我们下面来看看共阴数码管的编码表,如表2.31表2.31 共阴极数码管编码表 符号 编码 符号 编码 0 0x3f 8 0x7f 1 0x06 9 0x6f 2 0x05 A 0x77 3 0x4f B 0x7c 4 0x66 C 0x39 5 0x6d D 0x5e 6 0x7d E 0x79 7 0x07 F 0x71在C语言编程中,编码的定义类似数组,如下unsigned code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;注意调用此数组的方法:P1=table2;即将table中的第3个元素直接赋给P1口,相当于P1=0x06。3 交通灯控制系统原理及硬件设计3.1 控制系统分析前面讲了一堆的基础,现在正式进入主题。设计一个基于单片机的交通灯信号控制系统。已知东、西、南、北四个方向各有红、黄、绿三个灯,在东西方向有两个数码管, 在南北方向也有两个数码管。 要求交通灯按照表3.11进行显示和定时切换,并要求在数码管上分别倒计时显示东西、南北方向各状态的剩余时间。表3.11南北方向东西方向序号状态 序号 状态 1绿灯亮25秒,红、黄灯灭 1红灯亮30秒,绿、黄灯灭 2黄灯亮5秒,红,绿灯灭 3红灯亮30秒,绿、黄灯灭 2绿灯亮25秒,红、黄灯灭 3黄灯亮5秒,红,绿灯灭回到状态1 回到状态1从表3.11可以看到,南北方向的绿灯和黄灯的时间等于东西方向的红灯,反过来南北方向的红灯时间等于东西方向的绿灯和黄灯时间。我们用S1,S2,S3分别表示绿,黄,红信号灯的亮时间则上表用数学表达式可表示为S3=S2+S1,将东西和南北方向的错开,即当东西S3定时,南北则S2+S1,反过来也一样。由上表可以分析得到,当绿灯亮的时候同时控制相应方向的数码管显示相应的倒计时秒数。黄,红灯原理一样。下面我们来分析怎么样用单片机来实现这一功能。需要使用4 个数码管分别显示东西、南北的倒计时数字,将暂存各状态剩余时间的数字从变量中提取出“十位”和“个位” ,用动态扫描的方式在数码管中显示。整个程序依据定时器的溢出数来计时,每计时 1S则相应状态的剩余时间减 1,一直减到 0时触发下一个状态的开始。这需要采用中断方式产生脉冲,51单片机定时器中断程序将在后面程序设计中介绍3.2 单片机USB电源单片机开发板的供电一般都采用电脑的USB供电,USB接口的电压就是5V的,和单片机的供电系统相适配。USB供电最大能提供500mV的直流电,能满足开发板上绝大多数元器件的供电求。USB接口有很多种形状,对于供电来说,一般使用A型或者B型的USB就可以了,这里我们用A型接口来进行供电电路的设计,A,B型USB接口图如下。 图3.1-1 USB接口外型及接口电气特性USB供电电路原理图如图3.1-2 ,USB供电和自制的电源比,更能保证5V的电压稳定。而且供电系统做起来也容易多。 图 3.3-2 USB接口电路 由上图可以看到,这个USB接口电路很简单,SW1是一个6脚自锁开关,它的尺寸有几种,我们采用8.5*8.5mm的。这里就不过多介绍,可查阅相关资料。USB母口与电脑USB口相连,可以采用一条公公延长线相接。公-公延长线就是两个A型的USB接口(公口)中间接一根连接线。如图所示图3.2-3 公-公延长线 3.3 单片机复位电路的简介单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位 我们这里采用手动按钮复位 手动按钮复位需要人为在复位输入端RST上加入高电平(如图3.3-1)。一般采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。手动按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。 图3.3-1 手动复位电路3.4信号灯硬件连接电路原理图为了看得更清楚,我们将硬件原理图分成两部分,先画信号灯的接线原理图。如图3.4-1 图3.4-1 信号灯原理图由上图可以看到在电源和信号灯(发光二极管)之间串联了一个1K的电阻,这个电阻的作用是用来限制电流的,当然,不同的指示灯用相应的大小电阻。这里作为模拟就串联一个1K的电阻。由原理图我们可以分析出,当单片机中P1口的2到7口任何一个输出低电平时相应二极管将会发光。在C程序中P1口定义如下:sbit SN_green=P12 ;sbit SN_yellow=P13 ;sbit SN_red=P14;sbit EW_green=P15 ;sbit EW_yellow=P16 ;sbit EW_red=P17 ;当需要任何一个发光二极管发光时在程序中只需要将某一端口置0即可。我们举个简单的例子:编程点亮第六个发光二极管。#includesbit EW_red=P1.7;/声明单片机P1口的最后一位void main()EW_red=0;/点亮第六个发光二极管(在交通灯控制系统中是东西的红灯)/简单的程序3.5 单片机和数码管硬件连接电路原理图 由于我们这个设计的要求是数码管显示各南北和东西方向的各色信号灯的剩余时间的倒计时,就是说数码管需要动态显示。数码管的动态显示又叫数码管的动态扫描显示。所以在编程的时候需要注意,在每次送完段选数据后,再送入位选数据之前,我们都需要加一句“P0=0xff”(后面程序将体现),这个语句就是所谓的“消影”。在刚送完段选数据后,P0口仍然保持着上次的段选数据,若不加“P0=0xff;”再执行接下来的打开位选锁存器命令后,原来保持在P0口的段选数据将立即通过位选锁存器直接加在数码管上,接下来才是再次通过P0口给位选锁存器送入数据,虽然这个过程很短,但是在数码管高速显示状态下,我们仍然可以看见数码管出现混乱现象,加上“消影”后,开启位选锁存器后,P0口数据全为高电平,所以所有数码管都不会亮,因此这个“消影”动作是很重要的。我们选用4个单位数码管,一个STC89C52单片机,以及74HC573锁存器两个,前面已经介绍过数码管和74HC573锁存器的原理。以及石英晶体,电容,开关按钮等。如图3.5-2原理图中标号相同的节点,实际上电路中是物理电气相连的。是为了不使原理图杂乱无章,原理图看上去简洁整齐,我们在绘制原理图时通常都是用相同的标号表示电气连接。在看这个连接数码管的原理图之前,首先我们来分析一下,单片机中比较中要的一小部分,就是片内时钟震荡方式。时钟电路是单片机最小系统不可少的,在讲述单片机引脚的时候略有提及。在单片机中XTAL1为片内震荡电路的输入端,XTAL2为片内震荡电路的输出端,一般的设计为石英晶体的两边接震荡电容,震荡电容中间接地,再把晶振的两边和XTAL1和XTAL2相连。如图示 图3.3-1 晶振电路的接法这里我们采用11.0592M的晶振,如果要进行与波特率相关的计算时可以准确的计算。但是本文并没有用到串口传输,实际应用时可以选择12MHz的晶振,比较好用于定时与计数的计算。 图3.5-2图3.5-2中使用的数码管是共阴数码管,从原理图可以看到所有数码管的阳极全部连接到一起,即a,b,c,d,e,f,g,dp的引脚分别连接到74HC573锁存器的Q0-Q7的数据输出端相连。锁存器的数据输入端连接单片机的P0口,P0口加上拉电阻。数码管中WE1,WE2,WE3,WE4是它们的位选端,每一个数码管对应一个位选端。与下面的U2锁存器数据输出端的低4位相连,U2的数据输入端也连接到单片机的P0口。两个锁存器锁存端分别与单片机的P2.6和P2.7相连,关于锁存器原理,前面内容已经讲述。因为单片机控制锁存器的锁存端,进而控制锁存器的数据输出,这种分时控制的方法便可方便控制任意数码管显示任意数字。下面我们用C语言写一段小程序,让第一个数码管显示一个0字。我们先分析一下第一个数码管显示0,别的数码管就要关掉,所以只打开第一个数码管的位选。我们先给U2一个高电平,然后将数据从单片机单片机的P0口直接送出到锁存器U2的数据输出端,然后关闭U2锁存端。由于数码管是共阴极,所以位选宣统时为低电平,位选关闭时为高电平,即只有W1端对应数据位0,其他都为1,因此P0口要输出数据位0xfe即1111 1110。位选确定后,再确定段选,要显示0,那么只有g和dp为0,其他都为1.所以U1的数据输出端为0x3f,即0011 1111。显示程序如下:#include sbit dula=P26;/声明U1锁存器锁存端sbit weal=P27;/声明U2锁存器锁存端void main()weal=1;/打开U2锁存端P0=0xfe;/送位选信号 weal=0;dula=1;/打开U1锁存端P0=0x3f;/送段选信号dula=0;while(1);这只是静态的显示一个数字,后面我们将介绍,利用单片机定时器中断来动态显示数字。3.6交通灯控制系统原理总图以及元件标号上面几节分别讲了电源电路,复位电路,信号灯硬件原理图,和数码管硬件原理图,现在我们来看看整个控制系统的总原理图。 如图3.6-1,可以看到,其实原理图很简单,也比较容易理解。我们可以看到,原理图里面还有个晶振电路,在前面单片机引脚介绍的时候已经简单的介绍了18和19引脚。上面的芯片中没有标XTAL2和XTAL1,其X1和X2就是外部时钟引脚。这里采用的是内部时钟震荡方式X1和X2外接石英和震荡电容,震荡电容取值20pF。上面我们分析了交通灯控制系统分时运行,但是没有讲到那个灯,那个数码管是显示什么得。在这里,有了原理图之后我们就可以安排南北方向的绿灯我们在C语言编程时用SN_green表示,南北方向的黄灯我们用SN_yellow表示,南北方向的红灯我们用SN_red表示。东西方向的绿灯我们用EW_green表示,东西方向的黄灯我们用EW_yellow表示,东西方向的红灯我们用EW_red表示。这些灯在原理图中分别对应为如下表3.61 表3.61 交通指示灯和原理图对照表现实中南北绿南北黄南北红东西绿东西黄东西红C中 SN_greenSN_yellowSN_redEW_greenEW_yellowEW_red原理图中 DB1DB2DB3DB4DB5DB6通过上表这个信号灯的原理、程序、和现实的显示就连上了。讲完这个信号灯,该到数码管了。数码管呢。原理图中的LED1和LED2用来显示南北方向的倒计时。原理图中LED3和LED4则用于显示东西方向的倒计时。如果考虑到实际情况可并联两组数码管。 图3.6-1 电路原理总图四、交通灯控制系统软件设计4.1 while和for语句4.1.1 while语句下面我们先来看看while语句的格式。格式:while(表达式)内部语句(语句可为空)特点是先判断表达式,后执行内部语句。原则是,如表达式不是0,即为真,那么执行语句。否则跳出while语句,执行下面的语句。注意:(1)在C语言中我们一般把“0”认为是假,“非0”认为是真,也就是说1,2,3等都是真。(2)while内部语句可为空,意思就是大括号里面可以什么都不写。即while(1);我们也可以连大括号一起不写,即while(1);在编写程序的时候“;”一定不能少,否则while()会认为跟在它后面第一个分号前的语句认为是它的内部语句。while(1);我们把它称之为“死循环”,即程序会无限循环执行下去。(3) while语句的表达式可以是常数,一个运算或者一个带返回值的函数上面可以知道,我们在程序的后面加入while(1);就可以让程序停止。(4) while语句的简单延时功能下面我们用while写一个简单的延时子程序 ,程序如下: void delay(unsigned int i)/延时 while(-i); 4.1.2 for语句格式:for(表达式1;表达式2;表达式3)内部语句(可为空)For语句的执行过程是。第一,求解一次表达式1.第二求解表达式2,若值为真(非0),则执行for语句,然后执行第三步;否则结束for语句,直接跳出,不再执行第三步。第三步求解表达式3.第四步跳到第二步重复执行。For语句也可以用做简单延时。格式如下 for(i=100,i0,i-);4.2 if和switch-case选择语句4.2.1 if语句1. if 选择语句有以下四种应用形式:(1)形式一 if(条件表达式) 语句行;如果表达式的值为真,则执行中的语句,否则跳过语句,执行下面的语句。(2)形式二if(条件表达式) 程序体1; else 程序体2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能媒体传播课件
- 2025年度高端软件著作权注册及专项培训服务协议
- 国企新员工培训
- 新版幼儿园中班重阳节
- 口腔临床知识培训费用课件
- 2025年云南省中考化学真题(附答案解析)
- 口播知识博主孵化培训课件
- 1.1 质点 参考系 课件 人教版物理必修第一册
- 2025年度采石场土地权属变更与矿山环境综合治理项目合同
- 2025堰口堡坎工程全面施工技术指导及专业培训方案合同
- 电气行业与市场分析
- 2025年乡村全科助理医师考试题库及答案
- 排水设施养护管理制度
- 小学植物百科知识
- 《高端会所模式营销》课件
- 循环水地下管道安装施工方案
- 检验科生物安全风险评估报告
- 混合痔的中医个案护理
- 2023年广西现代物流集团社会招聘笔试真题
- 大数据开发工程师招聘笔试题及解答(某世界500强集团)2025年
- 【课件】第六单元碳和碳的氧化物+新版教材单元分析-2024-2025学年九年级化学人教版(2024)上册
评论
0/150
提交评论