数码计数器.docx
- 文档编号:10648178
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:33
- 大小:420.49KB
数码计数器.docx
《数码计数器.docx》由会员分享,可在线阅读,更多相关《数码计数器.docx(33页珍藏版)》请在冰豆网上搜索。
数码计数器
摘要
本设计利用单片机控制的停车场车辆统计系统。
采用AT89S51做为控制核心,可为许多嵌入式控制应用系统提供高性价比的解决方案,将红外对管作为车辆计数传感器,数据脉冲经过施密特触发器放大整形后,送入单片机处理,之后送入MAX7219译码,再送入数码管显示结果。
本设计具有结构简单,计数准确,经济效益高,造价低廉,可靠性高,维修方便,研制周期短,操作简单等优点。
经实验证明,这套系统软硬件设计合理,各项性能良好,经过系统扩展与升级,可以有效的满足各种流量统计的需要。
关键字车辆计数;单片机;MAX7219;红外发射
Abstract
Thispaperistheuseofmicrocomputercontroloncarsintheparkinglotsstatisticalsystem.ThisdesignusesAT89S51microcontrollercoreasacontrol,infrareddoneonthevehiclecountsensors,datapulseshapingenlargetheSchmitttrigger,intotheMCUprocessing,afterdecodingintoMAX7219,intoDigitaldisplayresults.Itisaccuratecount,higheconomicefficiency,lowcost,highreliability,easymaintenance,shortdevelopmentcycle,theadvantagesofsimpleoperation.Theexperimentprovedthatthesystemsoftwareandhardwaredesignreasonable,andthegoodperformancethroughsystemexpansionandupgrades,caneffectivelymeettheneedsofallkindsoftrafficacquisition.
KeywordInfraredtubeMCUMAX7219vehiclecount
目录
摘要I
AbstractII
目录III
第1章绪论1
1.1 课题背景和意义1
1.2 设计内容及技术指标2
1.2.1 毕业设计内容2
1.2.2 毕业设计技术指标2
第2章 方案论证与分析3
2.1 单片机的选择3
2.2 数据采集系统的分析与论证4
2.3 显示系统的分析与论证5
本章小结8
第3章 系统硬件设计9
3.1 系统硬件设计9
3.2.1 AT89S5110
3.2.2 CD406911
3.2.3 MAX721912
本章小结14
第4章系统软件设计15
4.1 主程序设计15
4.2 部分模块程序设计16
4.2.1 数码管显示程序设计16
4.2.2单片机计数器程序设计17
本章小结20
第5章系统测试21
5.1 测试工具21
5.2 测试过程21
本章小结24
结论25
参考文献27
附录1译文28
附录2英文文献32
附录3元器件清单36
附录4原理图37
第1章绪论
1.1 课题背景和意义
单片微型计算机(简称单片机)也叫做微型控制器,自从20世纪70年代问世以来,得到了快速发展,从早期的8位机到现在的32位机,其硬件资源和软件资源在不断丰富与完善。
单片机由于其集成度高、体积小、抗干扰能力强和价格低廉、具有独特的控制功能,它已经成为计算机世界中的重要成员。
在一个应用系统中,只用一个单片机。
但是单片机应用的意义绝不仅限于它的广阔范围以及所带来的经济效益上,更重要的还在于,单片机的应用正从根本上改变着传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分控制功能,现在已能使用单片机通过软件(编程序)方法实现了。
这种以软件取代硬件并能提高系统性能的控制技术必将随着单片机应用的推广普及而不断发展完善。
随着社会的发展,数据统计的重要性也是十分显著的。
它是计算机与外部物理世界连接的桥梁。
是统计管理的关键步骤,它在现代信息领域发挥着重要作用,是信息产品不可或缺的重要组成部分。
因此选择基于单片机数据流量统计系统设计是很有意义也是很有必要的。
本设计就是利用“单片机”控制的车辆流量统计系统。
随着国民经济的增长,人民生活质量的提高,私家车逐渐走进人们的生活,可是随之而来的问题也摆在了人们面前,那就是城市的空间越来越紧张,停车位难求,特别是到了法定假日出去自驾游,进入停车场却发现已满,只能去另寻车位。
该设计就是针对此类问题而做,该设计不仅能直观的显示停车场的车流量,还能在车位满时发出报警。
不但可方便车主了解停车场车位情况,做出适当的选择,又方便物业公司的管理。
该设计价格低廉,计数准确,可广泛应用于停车场、商场、房地产公司以及物业管理部门等。
由于该设计的价格优势、安全性以及大量应用后可导致管理成本的下降,中国人口众多,可想而知其可以为产品生产企业创造多少经济价值。
1.2 设计内容及技术指标
1.2.1 毕业设计内容
主要功能:
8位数码管显示,显示范围为000.000.00~999.999.99前三位为当天进入停车场的车辆,中间三位为驶出停车场车辆,后两位显示停车场现有车辆数,数码管显示00位停车场无车辆,最大值99辆,上限可程序设定,当停车场车辆与设定值相同报警灯亮,车辆不要进入停车场。
1.2.2 毕业设计技术指标
本设计所要求的技术指标有以下4个方面:
·8位数码管显示。
显示停车场现有车辆数和已停放过车辆数。
·统计停车场现有车辆数,当车进入停车场显码显示增1,驶出车场显示减1。
·统计停车场当天已停放车辆总数,红外对管距离50厘米。
·当停车车辆已满,报警指示灯亮,提示禁止车辆入内。
第2章 方案论证与分析
2.1 单片机的选择
随着电子技术和信息技术的迅速发展,计算机技术正在日益渗透到人们日常生活的方方面面,在这一进程中,单片机起到了重要作用。
单片机自20世纪70年代问世以来,已经对人类社会的各个方面产生了巨大的影响。
单片机的技术开发和应用水平已经成为一个国家工业化发展水平的重要标志。
AT89S51是美国ATMEL公司生产的是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
相比AT89C51,AT89S51新增加很多功能,性能有了较大提升,价格基本不变,甚至比AT89C51更低。
ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需把芯片从工作环境中剥离。
是一个强大易用的功能。
最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。
具有双工UART串行通道。
内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路,双数据指示器,电源关闭标识,全新的加密算法,这使得对于AT89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。
兼容性方面:
向下完全兼容51全部系列产品。
加入了ISP(在线可编程)功能,通过Atmel公司或者自制的下载线就可以对片内Flash进行编程,使用更为方便。
然而AT89S51与AT89C51除了ISP以外完全兼容。
所以我最终选用了ATMEL公司的AT89S51单片机。
2.2 数据采集系统的分析与论证
进行流量采集的器件有很多种:
红外对管,光电断续器,红外反射管,霍尔器件,激光管,超声波等等。
目前,单车道采用红外热释电传感器的车辆计数器,计数器用中规模IC构成,具有结构简单等特点,但仅仅适用于单车道且计数的数据不能长期保存,也无法与大型机之间实现通信。
为此设计了一种基于单片机的红外传感的单车道车辆计数系统。
红外对管具有以下优点:
质量轻,灵敏度高,线性好,接口电路比较简单,安装方便,对于本系统中近距离的检测,用它作为传感器将是最理想的。
基本设计思路是通过低通滤波,加倍压整流等措施,将发射的红外线信号转变成用于控制的直流控制电压,可以理解为,当有红外线信号收到时,输出一个高电平信号,如果有车阻断了红外线信号,输出一个低电平信号,后续电路通过这个低电平信号完成后续工作。
在红外电路设计中我有两种方案。
方案1,用模拟电路直接驱动红外对管如图2-1;
图2-1方案1
该方案使用压频变换器LM331,它是一个简单的,廉价的电压/频率变换电路,非常适合用作模/数转换,有极高的转换精度,且十分适用于低电压,低功耗的数字电路,十分适合用作光电隔离,有良好的共模抑制能力,脉冲输出通过10KΩ接到V+电源,目的是使输出的方波脉冲频率信号更加稳定可靠。
脉冲频率信号直接加到单片机的T0口,单片机通过计数器记录T0口输入的频率信号,就可以计算出模拟量的大小。
LM331的输入电压为0-5V,输出频率最高达100KHz,若转换为1000Hz/V,则测量精度达到1mV,相当于12位A/D转换,非常实用。
方案2,用CD4069与电阻组成施密特触发器。
电路如图2-2
图2-2方案2
该方案电路结构简单,用CD4069构成施密特触发器,放大整形对管采集到的车辆脉冲送入单片机中处理。
对于本设计并不需要十分精确的A/D转换,所以最后我选择了方案2。
方案2的电路简单,并且施密特触发器具有整形的功能,可以把不规则的脉冲信号转换成单片机需要的标准的矩形脉冲。
符合本设计的要求。
2.3 显示系统的分析与论证
显示用七段八位数码管显示。
七段数码管在工业控制中有着很广泛的应用,例如用来显示温度、数量、重量、日期、时间,还可以用来显示比赛的比分等。
这里我用的是普通的发红光的4位一体7段数码管。
其引脚图如图2-3
图2-3七段数码管引脚图
数码管的显示驱动方法有很多,但是不能直接用单片机驱动。
常用的显示驱动MC14499、CD4511、CD4513、MAX6951、8279、MAX7219、74HC164等,它们的功能有:
接受来自键盘的输入数据,并作预处理;数据显示的管理和数据显示器的控制。
8279为INTEL公司生产的通用键盘/显示器接口芯片,其内部设有16×8显示数据RAM,若采用8279管理键盘和显示器,可以减少软件程序,从而减轻主机的负担,但我们同时也发现,由于其功能比较强大,不可避免将会使外围设备与操作过程复杂化,同时价格比较贵,并且已经停产。
MAX6951是MAXIM公司推出的一种紧凑型共阴极显示驱动器,它采用新型结构,体积非常小,容易使用。
MAX系列的一些经典产品所使用5V供电的芯片(如MAX7219/7221)已经不太适合与低电压供电的处理器配合使用。
为此,新型数码管驱动芯片运用而生,新型器件采用与以往不同的驱动结构,故与原来相比,其数码管的接口管脚降低到了9个。
但是我设计的电路电压不需要3V的电压,也不需要太小的封装(如本设计拓展到其他应用场合,可以考虑选用此芯片)所以不予考虑。
74HC164是八位串行入/并行输出移位寄存器,用它和三极管驱动数码管,占用的I/O口多,浪费了硬件资源,并且PCB布线乱,增加了干扰。
MAX7219是美国MAXIM公司生产的串行输入/输出共阴极显示驱动器系列芯片,它一片芯片可以驱动多达八位7段LED显示器,条形图形或者8×8LED矩阵。
其片内有BCD译码器、多路复用扫描电路、段和数字驱动器、以及存储每个字的8×8静态RAM。
所有LED的段电流设定只需一个外部电阻来驱动。
它有接口简单,各个寄存器可单独被寻址和更新,允许用户对每个显示位选择BCD译码方式还是非译码方式进行定义,具有150μA的低功耗停机方式。
所以最后我选择了MAX7219做为显示驱动芯片。
为了电路板布线简单,减少电路干扰,我选用了2个四位一体的数码管和MAX7219共同组成显示系统。
另外,单片机驱动LED,按显示方式可以分为静态显示和动态显示。
静态显示就是显示驱动电路具有输出锁存功能,单片机将要显示的数据送出后就不再控制LED,直到下一次显示时再传送一次新的数据。
只要当前显示的数据没有变化,就无须理睬数码显示管。
静态显示具有数据稳定,占用的CPU时间少的特点。
静态显示中,每一个显示器都要占用单独具有锁存功能的I/O口,该接口用于笔画段字型代码驱动。
这样单片机只要把显示的字型数据代码发送到接口电路,该字段就可以显示要发送的字型。
要显示新的数据时,单片机再发送新的字型码;另一种方法是动态扫描显示。
动态扫描方法是用其接口电路把所有显示器的8个笔画字段(a~g和dp)同名端连在一起,而每一个显示器的公共极COM各自独立接受I/O线控制。
CPU向字段输出端口输出字型码时,所有显示器接受相同的字型码,但究竟使那一位则由I/O线决定。
动态扫描用分时的方法轮流控制每个显示器的COM端,使每个显示器轮流电亮。
在轮流点亮过程中,每位显示器的点亮时间极为短暂,但由于人的视觉暂留现象及发光二极管的余辉效应,给人的印象就是一组稳定的显示数据。
因为动态显示电路占用的I/O口少,编程简单,是一种较静态显示高级的显示方法,所以我选择了动态显示的方法。
本章小结
本设计的主要部分都已确定了实现方案,确定了适合该系统的较高性价比的硬件设计方向。
用LED七段数码管做显示可以延长使用寿命并能适应大多数自然环境,具有显示醒目、直观的优点。
驱动选择MAX7219可以大幅度的简化硬件电路结构与软件程序的设计。
并且可以选择译码、非译码,以及动态或静态显示方式。
第3章 系统硬件设计
3.1 系统硬件设计
整个系统主要由单片机最小应用系统、传感器部分、数码显示部分、报警部分和四部分组成。
单片机最小应用系统又包括CPU、振荡电路和复位电路。
系统总框图如图3-1:
图3-1系统总框图
CPU:
此部分为整个电路的核心部分,对外围电路起控制作用。
在整个电路中扮演着大脑的角色。
传感器部分:
此部分为整个电路输入部分,收集外部车辆出入信号,通过后续电路完成对单片机的信号输入。
数码显示部分:
此部分为整个电路的输出部分,是由8只共阴极七段数码管显示构成,用来显示CPU对外部信号的统计结果。
报警部分:
此部分是当CPU运算传感器部分送来的信号,当计数溢出时,红色发光二极管点亮报警。
2、方框图原理说明
此系统的原理是:
当车辆经过,遮挡红外对管,红外对管和CD4069组成的施密特触发器产生一个负脉冲送入单片机T0或T1引脚,计数器计数,经过单片机运算,送入显示部分显示。
如果计数溢出红色发光二极管点亮报警,进入口停止计数,不允许进车,出口可以继续计数,允许出车。
主控MCU我确定用ATMEL公司的AT89S51,流量采集部分用红外对管和CD4069组成的施密特触发器,显示部分用MAX7219和2个4位一体的共阴数码管,报警部分则直接用∮3的红色发光二极管和10K电阻连接构成。
3.2 电路主要元件及其各自功能说明
3.2.1 AT89S51
Atmel公司的AT89S51芯片具有以下特性:
指令集和芯片引脚与Intel公司的8051兼容;4KB片内系统可编程Flash程序存储器;时钟频率为0~33MHz;128字节片内随机读写存储器(RAM);32个可编程输入/输出引脚;2个16位定时/计数器;6个中断源,2级优先级;全双工串行通信工程接口;监视定时器;2个数据指针。
图3-1为AT89S51的引脚图。
图3-1 AT89S51引脚图
AT89C51单片机内部有一个用于够成振荡器的高增益反相放大器,该增益反相放大器的输入端为芯片引脚XTAL1,输出脚为XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡如图2-4所示,除使用晶体振荡器,如对时钟频率要求不高,还可以用陶瓷振荡器来代替。
电路中的两个电容典型值通常选用30pF左右。
对外部电容虽然没有严格的要求,但电容的大小可影响到频率的高低、振荡器的稳定性和起振的快速性。
晶体的振荡频率范围通常在1.2MHz~12MHz之间。
晶体的频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快。
但反过来运行速度快对存储器的要求就越高,对印刷版的工艺要求也高,即要求线间的寄生电容要小;晶体和电容应尽可能安装的于单片机芯片贴近,以减少寄生电容,更好地保持振荡器稳定、可靠的工作。
为了提高温度稳定性,应采用温度稳定性较好高频电容。
AT89C51单片机常选用振荡频率12MHz的石英晶体。
随着集成电路的制造工艺技术的发展,单片机的时钟频率也在逐步提高,现在的高速单片机芯片的时钟频率已达到40MHz。
图2-4AT89C51内外部时钟设计
3.2.2 CD4069
CD4069是由六个COS/MOS反相器电路组成,此器件主要用作通用反相器,即用于不需要TTL驱动和逻辑电平转换的电路中。
推荐工作条件:
电源电压范围…………3V~15V
输入电压范围…………0V~VDD
工作温度范围
M类…………-55℃~125℃
E类………….-40℃~85℃
极限值:
电源电压…...-0.5V~18V
输入电压……-0.5V~VDD+0.5V
输入电流…………….±10mA
储存温度…………-65℃~150℃
引出端符号:
1A~6A数据输入端
VCC正电源
Vss地
1Y~6Y数据输入端
图3-2CD4069引脚图
3.2.3 MAX7219
MAX7219是一个采用3线串行接口的8位共阴极7段LED显示驱动器。
可同时驱动8位共阴极LED或64个独立的LED。
主要包括移位寄存器、控制寄存器、译码器、数位与段驱动器以及亮度调节和多路扫描电路等.MAX7219采用串行接口方式,只需LOAD、DIN、CLK三个管脚便可实现数据传送。
DIN管脚上的16位串行数据包不受LOAD状态的影响,在每个CLK的上升沿被移入到内部16位移位寄存器中。
然后,在LOAD的上升沿数据被锁存到数字或控制寄存器中。
LOAD必须在第16个时钟上降沿或之后,但在下一个时钟上升沿之前变高,否则数据将会丢失。
DIN端的数据通过移位寄存器传送,并在16.5个时钟周期后出现在DOUT端,随CLK的下降沿输出,其引脚图如图3-3所示:
图3-3MAX7219引脚图
本章小结
本章主要介绍了硬件电路的各部分元件,AT89S51、MAX7219和CD4069,它们都是常用元器件,AT89S51作为核心,起到连接传感器与数码显示管的纽带作用,CD4069和传感器组成的信号采集部分即输入部分通过CPU计数,让MAX7219显示数据,完成工作流程。
第4章系统软件设计
单片机系统除必要的硬件支持外,还要进行软件设计。
由于使用的单片机是AT89SXX系列的单片机,故所有的软件选择用汇编语言进行的。
4.1 主程序设计
本系统主程序的功能是上电后,完成系统初始化,计数器T1工作方式2,计数器T0工作方式2,开定时中断,MAX7219初始化。
程序如下:
MAIN:
LCALLWRITE
MOVA,#0BH;扫描位数:
八位
MOVB,#07H
LCALLWRITE
MOVA,#09H;译码方式:
译码
MOVB,#0FFH
LCALLWRITE
MOVA,#0eH;亮度调节:
15级
MOVB,#01H
LCALLWRITE
MOVA,#0FH;显示测试:
关
MOVB,#00H
LCALLWRITE
MOVA,#0CH;待机开关:
关
MOVB,#01H
LCALLWRITE
在汇编语言源程序的开始,通常使用一条ORG伪指令来规定成粗的起始地址,如果不用ORG规定,则汇编得到的程序将从0000H开始,所以一般情况下都是自己初始化程序。
在一个源程序中,可以多次使用ORG指令,以规定不同的程序段地址。
但是,地址必须由小到大排列,地址不能交叉、重叠。
4.2 部分模块程序设计
4.2.1 数码管显示程序设计
DIN是串行数据输入端。
在CLK的上升沿,一位数据被加载到内部16位移位寄存器中,在输入时钟的每个上升沿均有一位数据由DIN端移入到内部寄存器中;LOAD用来装载数据,在LOAD的上升沿,16位串行数据被锁存到数据或控制寄存器中,LOAD必须在第16个时钟上升沿的同时或之后、在下一个时钟上升沿之前变高,否则数据将被丢失。
每组数据为16位二进制数据包。
程序如下:
WRITE:
CLRLOAD;置LOAD为低电平
LCALLQQ
MOVA,B;16位串行数据被锁存到数据或控制寄存器中
LCALLQQ
SETBLOAD;置LOAD为高电平(实现上升沿)
RET;跳出子程序
QQ:
MOVR6,#08H;扫描8位数码管
LP1:
RlCA;准备发送数据
MOVDIN,C;送16位串行数据中的1位
CLRCLK;置CLK为低电平
SETBCLK;置CLK为高电平(实现上升沿)
CLRDIN;清空DIN
DJNZR6,LP1;依次送完16位数据
RET;跳出子程序
STATT1:
MOVA,B;余数送A
MOVB,#10;确定十位位置
DIVAB;确定十位数值
MOV34H,A;显示十位
MOV35H,B;显示个位
MOVR3,#08H
MOVR0,#30H
4.2.2单片机计数器程序设计
工作方式2中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。
其程序如下:
CountEQU30H
SP1BITP3.7
T02SAEQU31H
T02SBEQU32H
FLAGBIT00H;伪指令
ORG00H
LJMPSTART
ORG0BH
LJMPINT_T0
START:
MOVSP,50H;设定堆栈区
MOVCount,#00H;显示部分初始化
NEXT1:
;显示程序
MOVA,Count
MOVB,#10
DIVAB
MOVDPTR,#TABLE
MOVCA,@A+DPTR;用查表法实现显示
MOVP0,A;显示十位
MOVA,B
MOVCA,@A+DPTR
MOVP2,A;显示个位
WT:
JNBSP1,WT
WAIT:
JBSP1,WAIT
LCALLDELY10MS;调用延时
JBSP1,WAIT
INCCount
MOVA,Count
CJNEA,#99,NEXT1;判断计数是否达到99?
START1:
MOVT02SA,#00H
MOVT02SB,#00H
CL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数码 计数器