基于AT89C51的液晶显示频率计的设计说明_第1页
基于AT89C51的液晶显示频率计的设计说明_第2页
基于AT89C51的液晶显示频率计的设计说明_第3页
基于AT89C51的液晶显示频率计的设计说明_第4页
基于AT89C51的液晶显示频率计的设计说明_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、引言在设计单片机和数字电路时经常需要测量脉冲个数、脉冲宽度、脉冲周期、脉冲频率等参数,虽然使用逻辑分析仪可以很好地测量这些参数,但其价格昂贵。且实现测量的数字化、自动化、智能化已成为各类仪器仪表设计的方向,这里介绍一种用单片机控制的、全自动、数字显示的测量频率的方法。频率计是我们在电子电路试验中经常会用到的测量仪器之一,它能将频率用数码管或液晶显示器直接显示出来,给测试带来很大的方便,使结果更加直接;且频率计还能对其它多种物理量进行测量,如机械振动的频率、声音的频率等,都可以先转变成电信号,然后用频率计来测量,研究频率计的设计与制作将会对我们的生活有很大意义。现代的频率计多是用数码管显示的,其

2、结果不明确,表示也不直接,研究液晶显示的频率计对频率计的发展很有意义。数字频率计是一种用十进制数字显示被测信号频率的数字测量仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。因此,数字频率计是一种应用很广泛的仪器。它的基本功能是测量正弦信号、方波信号、尖脉冲信号及其他各种单位时间内变化的物理量。它被广泛应用于航天、电子、测控等领域。数字式频率计是基于时间或频率的A/D转换原理,并依赖于数字电路技术发展起来的一种新型的数字测量仪器。由于数字电路的飞速发展,数字频率计的发展也很快。在电子系统

3、非常广泛的应用领域内,到处可见到处理离散信息的数字电路。数字电路制造工业的进步,使得系统设计人员能在更小的空间内实现更多的功能,从而提高了系统的可靠性和速度。纵观现在的数字频率计,其基本原理都是相同的,频率是单位时间(1S)内信号发生周期变化的次数。如果我们能在给定的1S时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。这就是数字频率计的基本原理。但现在的频率计其显示部分都是通过LED数码管显示的,显示内容是

4、BCD码,不直观,若用LCD液晶来显示,会使输出结果更直接,便于观察。正因为如此,所以未来数字频率计的发展必定会向用液晶显示的方向发展。1绪论1.1 研究背景在电子系统非常广泛的应用领域内,到处可见到处理离散信息的数字电路。数字电路制造工业的进步,使得系统设计人员能在更小的空间内实现更多的功能,从而提高了系统的可靠性和速度。集成电路的类型很多,从大的方面可以分为模拟电路和数字集成电路两大类。数字集成电路广泛用于计算机、控制与测量系统,以及其它电子设备中。一般说来,数字系统中运行的电信号,其大小往往并不改变,但在实践分布上却有着严格的要求,这是数字电路的一个特点。数字集成电路作为电子技术最重要的

5、基础产品之一,已广泛地深入到各个应用领域。测量频率是电子测量技术中最常见的测量之一,不少物理量的测量,如时间、速度等都涉及到或本身可转化为频率的测量。数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波、方波或其它周期性变化的信号,如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。因此,数字频率计是一种应用很广泛的仪器。1.2 发展现状数字频率计发展到现在,有基于CPLD的数字频率计的设计,基于VHDL语言的数字频率计的设计,还有基于单片机的简易数字频率计等。CPLD是一种新兴的高密度大规模可编程逻辑器件,它具有门阵列的高密度和PL

6、D器件的灵活性和易用性,目前已成为一类主要的可编程器件;可编程器件的最大特点是可通过软件编程对其器件的结构和工作方式进行重构,能随时进行设计调整而满足产品升级,使得硬件的设计可以如软件设计一样方便快捷,从而改变了传统数字系统及用单片机构成的数字系统的设计方法、设计过程及设计概念,使电子设计的技术操作和系统构成在整体上发生了质的飞跃。VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage,超高速集成电路硬件描述语言)诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(TheInstituteof

7、ElectricalandElectronicsEngineers)的一种工业标准硬件描述语言;相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下(ToptoDown)和基于库(LibraryBased)的设计的特点。单片机技术在短短的20余年间已发展成为计算机技术中一个非常有活力的分支,它有自己的技术特征、规范、发展道路和应用环境。1.3 单片机的发展目前计算机硬件技术向巨型化、微型化和单片化三个方向发展。自1975年美国德克萨斯仪器公司第一块单片机芯片TMS-1000问世以来,在短短的30余年间,单片机技术已发展成为计算机技术中一个非常有活力的分支,它有自

8、己的技术特征、规范、发展道路和应用环境。按单片机的生产技术和应用对象,单片机先后经历了4位机、8位机、16位机、32位机几个有代表性的发展阶段。单片机与通用微机相比较,在结构、指令设置上均有其独特之处,其主要特点有:1 单片机的存储器ROM和RAM是严格区分的,ROM称为程序存储器,只存放固定常数及数据。RAM则为数据存储器,用于工作区及存放用户数据。2 采用面向控制的指令系统。3 单片机的输入/输出引脚通常是多功能的。4 单片机的外部扩展能力强。从80年代单片机被引入我国,单片机已广泛地应用于电子设计中。单片机的应用迅速发展,其性价比高,大量的外围接口电路,使基于单片机的电子系统设计方便,周

9、期缩短,而且不断发展。新型单片机支持高级语言,进一步延伸了其发展空间。2方案论证与选择2.1方案一基于VHDL语言的频率计的设计设计的基于VHDL语言频率计的系统原理框图系统原理框图如图2.1所示。aB小 数启停信号译码显示电路量程选择标 准 信 号 发 生 器使 能钟 时分 频 器开 关 控 制锁存器1K输出使能100Hz或 10Hz计数控制器*闸门信号计数器闸门信号图2.1设计的基于VHDL语言频率计的系统原理框图各模块说明如下:(1)标准信号发生器,开关控制电路。标准信号发生器产生1kHz基准信号。开关控制电路对键盘输入的启停信号进行处理(2)分频器当收到使能信号,分频器启动,将标准1k

10、Hz信号经3次10分频,得到100Hz,10Hz,1Hz信号。1kHz,100Hz,10Hz信号作为计数器闸门信号来控制计数,以实现不同量程。(3)计数控制器计数控制模块将输入的分频信号处理,产生计数闸门信号、计数清零信号和锁存信号。(4)计数器采用3个十进制计数器级联作为计数模块。闸门信号与待测信号相与作为计数输入。计数结果直接输出给锁存器。(5)锁存器每当锁存使能信号来临,锁存器便将锁存结果读入、锁存。锁存器还完成量程选择功能。锁存器还根据当前量程,选择合适的小数点位置输出。(6)译码显示电路由于小数点由锁存器输出,故在此仅考虑数码管的7段驱动,7段译码器将计数值译成相应的7段数码驱动值。

11、2.2 方案二基于单片机的频率计的设计设计的基于单片机频率计的原理框图如图2.2所示。图2.2设计的基于单片机频率计的原理框图复位电路采用上电复位方式,每次单片机上电工作时使单片机处于复位状态,即初始状态,为测量频率作好准备。时钟电路中片内高增益反相放大器通过XTAL1、XTAL2外接作为反馈元件的晶振(呈感性)与电容组成的并联谐振回路构成一个自激振荡器向内部时钟电路提供振荡时钟,由此向单片机提供振荡脉冲。AT89C51单片机内部具有2个16位的定时器/计数器,并可以在定时或计数溢出时产生中断。将被测信号通过P3.5口送入单片机,将T0设置为定时方式,每50ms产生一次中断,产生20次中断所用

12、时间正好为1S,将T1设置为计数方式,T1的初值设置为0,计65535个脉冲后产生一次溢出中断,在T1中断溢出时对溢出次数进行计数(计数值为N)。1S内T1计的总的脉冲数为65535XN+TH1X256+TL1,这个数值就是被测信号的频率值。单片机计的脉冲数值经过转换送到液晶显示模块1602,从而显示被测信号的频率,测量结果用十进制表示,很直接。2.3 方案的选择基于VHDL语言的频率计设计的优点:VHDL语言,对设计的描述具有相对独立性,设计者可以不懂硬件结构,降低了硬件电路设计难度。利用EDA工具maxplusII对源程序进行编译、选配、优化、逻辑综合,自动地把VHDL描述转变成门级电路,

13、进而完成电路分析、纠错、验证、自动布局布线、仿真等各种测试工作。最后通过编程电缆下载数据流,将所设计内容下载到所选中的FPGA器件中,即完成设计工作。这种设计方法减少了电路设计的时间和可能发生的错误,降低了开发成本。基于VHDL语言的频率计设计的缺点:FPGA大部分是基于SRAM编程,编程数据信息在系统断电时会丢失,每次上电时需从器件的外部存储器或计算机中将编程数据写入,布线结构和逻辑实现复杂,其编程信息需存放在外部存储器上,需外部存储器芯片,且使用方法复杂,保密性差。基于单片机的频率计的设计的优点:单片机在控制领域中有很多优点,如体积小、成本低、运用灵活、抗干扰能力强,可以方便地实现多机和分

14、布式控制。并且利用单片机设计的频率计原理框图简单,所用元器件少,电路不易出错,其程序存放在内部存储器上,不需要外部存储器芯片,使用方法简单。且单片机便宜、稳定、开发简单、通用性好。基于单片机的频率计的设计的缺点:所测信号的频率范围窄,若要扩大频率范围需外加分频器。综合比较上述两种方案,选择用单片机来设计频率计,显示部分用液晶显示模块,以使测量结果更加直接、明确。3基于单片机的液晶显示频率计的设计3.1 系统硬件电路的设计3.1.1 单片机的管脚AT89C51单片机的管脚排部如图3.1所示。F1D1VOC.Pl1229+ro.Oi-pi.2至十pa.i+Jn.3437,PO.J*'PI4

15、5FEWfl.5635,PD.4nT115界pPQ5+-'Pi7g334P0加ESTg32*E3.0D揄mF3.L1130.P3.212叫P3.31328-P3内14剑F3,ii-15小P2*¥36gqAP3.?1?讣F2”XTAjIS声P2&XTALb-22十F2.HOND*3021>P2J0P图3.1AT89C51单片机的管脚排布主电源引脚Vcc(40脚):接+5V电源正端。Vss(20脚):接+5V电源地端。外接晶体引脚XTAL1(19脚):接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。XTAL2(18脚):接

16、外部石英晶体的另一端。在单片机内部,它是片内振荡器的反相放大器的输出端。输入/输出引脚P0口(3932脚):P0.0P0.7统称为P0口,在不接片外存储器与不扩展I/O口时,可作为准双向输入/输出口。P1口(18脚):P1.0P1.7统称为P1口,可作为准双向输入/输出口使用。P2口(2128脚):P2.0P2.7统称为P2口,一般可作为准双向输入/输出口使用;在接有片外存储器或扩展I/O口且寻址范围超过256字节时,P2口用作高8位地址总线。P3口(1017脚):P3.0P3.7统称为P3口,除作为准双向输入/输出口使用,还可以将每一位用于第二功能。控制线ALE/PROG(30脚):地址锁存

17、有效信号输出端。PSEN(29脚):片外程序存储器读选通信号输出端,低电平有效。RST/Vpd(9脚):RST即为RESET,Vpd为备用电源。该引脚为单片机的上电复位或掉电保护端。EA/Vpp(31脚):EA为片外存储器选用端。该引脚有效(低电平)时,只选用片外程序存储器,否则单片机上电或复位后选用片内程序存储器。3.1.2 单片机的外围电路1)时钟电路单片机的定时控制功能是用片内的时钟电路和定时电路来完成的,而片内的时钟产生有两种方式:内部时钟方式和外部时钟方式,实际中常应用内部时钟方式。设计的内部时钟方式图如图3.2所示。图3.2设计的内部时钟方式图电容在22PF33PF之间选择,起微调

18、作用,在此采用30PF。晶振可采用6MHz或12MHz,但是若用6MHz的晶振,所测频率范围太窄,最高只能测到250KHz,用12MHz的晶振,最高频率可测到500KHz,故在此选用12MHz的晶振。2)复位电路单片机的复位电路可采用上电复位或按扭复位,实际中常应用上电复位的方式,设计的上电复位方式图如图3.3所示。3.1.3液晶显示模块1602液晶显示器(LCD)具有显示信息丰富、功耗低、体积小、重量轻、超薄等许多其他显示器无法比拟的优点,近几年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。LCD型显示器的构成原理很简单,在两片透明绝缘的有机薄膜或者玻璃之间均匀充填着液晶流体,底

19、层透明薄膜上镀有一层导电体,而顶层透明薄膜上则按需要的形状敷有透明的导电电极,当电极通电后,就与下层导电体之间(约10Wm)形成一个电场,由于这个电场的作用,其间的液晶体的透光状况就发生了变化,从而对外来光线产生了吸收作用,使人们看见了与电极形状相同的字形显示。1602采用标准的16脚接口,从该模块的正面看,引脚排列从左向右为:116脚,1602的管脚排部如图3.4所示。图3.41602的管脚排部其中:第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器

20、调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第1516脚:空脚。3.1.4硬件电路原理图设计的系统硬件电路原理图如图3.5所示。+5VVCCEAP2.0P2.1P2.2RSTVSSP3.5XTAL1P0.0AT89S0.1 单 P0.2 片 P0.

21、3 机 P0.4P0.5P0.6P0.7XTAL2被测信号RSRWVDDE液晶D0显D1示VLD2模D3块D4D51602D6VSSD7+5VD图3.5系统硬件电路原理图硬件电路图中,单片机的EA管脚必须接高电平,因为接低电平时只选用片外程序存储器,而试验所用的是片内程序存储器。液晶显示器1602的VL管脚必须接一个电位器来调节,因为VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,对比度过弱时,看不到屏幕上显示的数据。硬件电路中所选用的元器件的规格/型号见附录B。3.2 系统软件的设计3.2.1 定时器/计数器工作方式的设置定时器/计数器T

22、0、T1都有四种工作方式,可通过程序对TMOD设置选择。TMOD的低四位用于定时器/计数器0,高四位用于定时器/计数器1。TMOD的位定义如图1.1所示。D7D6D5D4D3D2D1D0GATEC/TM1M0GATEc/TM1M0图3.6TMOD的位定义C/T:定时或计数功能选择位,当C/T=1时为计数方式;当C/T=0时为定时方式。M1、M0:定时器/计数器工作方式选择位。GATE:门控位,用于控制定时器/计数器的启动是否受外部中断请求信号的影响。一般情况下GATE=0。当M1M0=00时,定时器/计数器设定为工作方式0,构成13位定时器/计数器。计数值由下式确定:N=8192-X,式中N为

23、计数值,X是THX、TLX的初值。计数范围为18192。定时时间由下式确定:T=NXTcy=(8192-X)Tcy,式中Tcy为单片机的机器周期。如果振荡频率为12MHZ,则Tcy=1us,定时范围为18192us。当M1M0=01时,定时器/计数器设定为工作方式1,构成16位定时器/计数器。在方式1时,计数器的计数值由下式确定:N=65536-X,计数范围为1-65536。定时器的定时时间由下式确定:T=NXTcy=(65536-X)Tcy,如果振荡频率为12MHz,则Tcy=1us,定时范围为1-65536us。当M1M0=10时,定时器/计数器设定为工作方式2。方式2是自动重装初值的8位

24、定时器/计数器。在方式2时,计数器的计数值由下式确定:N=256-X,计数范围为1256。定时器的定时时间由下式确定:T=NXTcy=(256-X)Tcy,如果振荡频率为12MHz,则Tcy=1us,定时范围为1256us.当M1M0=11时,定时器/计数器设定为工作方式3。方式3只适用于定时器/计数器T0o当T0工作在方式3时,TH0和TL0被分成两个独立的8位计数器。方式3下定时器/计数器的定时、计数的范围和定时、计数值的确定同方式2。在试验中需将T0设置为定时方式,将T1设置为计数方式;定时器T0定时50ms,即50000US,需选用工作方式1,即M1M0=01,因此,在编制程序时,将T

25、MOD的高四位设为0101,低四位设为0001。3.2.2 定时器/计数器开启/关闭的设置定时器/计数器的开启和关闭可通过控制寄存器TCON来设置,TCON的位定义如图3.7所示。D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0图3.7TCON的位定义TF0(TF1):T0(T1)定时器/计数器溢出中断标志位。当T0(T1)计数溢出时,由硬件置位,并在允许中断的情况下,向CPU发出中断请求信号,CPU响应中断转向中断服务程序时,由硬件自动将该位清零。TR0(TR1):T0(T1)运行控制位。当TR0(TR1)=1时启动T0(T1);TR0(TR1)=0时关闭T0

26、(T1)。该位由软件进行设置。TCON的低四位与外部中断有关。编写程序时,若需启动T0(T1),通过指令SETBTR0或SETBTR1将TR0(TR1)设为1,需关闭T0(T1),通过指令CLRTR0或CLRTR1将TR0(TR1)设为0。3.2.3 中断的设置所谓中断是指CPU对系统中或系统外发生的某个事件的一种响应过程,即CPU暂时停止现行程序的执行,而自动转去执行预先安排好的处理该事件的服务子程序。当处理结束后,再返回到被暂停程序的断点处,继续执行原来的程序。实现这种中断功能的硬件系统和软件系统统称为中断系统。试验中涉及到的T0或T1的中断,中断的控制可通过中断允许寄存器IE来设置。IE

27、的位定义如图3.8所示。D7D6D5D4D3D2D1D0EA一ET2ESETIEX1ET0EX0图3.8IE的位定义EA:中断允许总控位。EA=0,屏蔽所有的中断请求;EA=1,开放中断。EA的作用是使中断允许形成两级控制。即各中断源首先受EA位的控制;其次还要受各中断源自己的中断允许总控位控制。ET2:定时器/计数器T2的溢出中断允许位,只用于52子系列。ES:串行口中断允许位。ES=0,禁止串行口中断;ES=1允许串行口中断。ET1:定时器/计数器T1的溢出中断允许位。ET1=0,禁止T1中断;ET1=1,允许T1中断。EX1:外部中断1的中断允许位。EX1=0,禁止外部中断1中断;EX1

28、=1,允许外部中断1中断。ET0:定时器/计数器T0的溢出中断允许位。ET0=0,禁止T0中断;ET0=1,允许T0中断。EX0:外部中断0的中断允许位。EX0=0,禁止外部中断0中断;ET0=1,允许外部中断0中断。试验中需开中断允许总控位,需允许定时器T0和T1中断,因此在编程时使EA=1,使ET0=1且ET1=1。中断源有多种,每个中断源的优先级可通过中断优先级寄存器IP进行设置并管理。IP的位定义如图3.9所示。D7D6D5D4D3D2D1D0一PT2PSPT1PX1PT0PX0图3.9IP的位定义PT2:定时器/计数器T2的中断优先级控制位。PS:串行口的中断优先级控制位。PT1:定

29、时器/计数器T1的中断优先级控制位。PX1:外部中断INT1的中断优先级控制位。PT0:定时器/计数器T0的中断优先级控制位PX0:外部中断INT0的中断优先级控制位。试验中为提高测量结果的准确度,需要将T1的中断设置为优先,通过指令SETBPT1来实现。3.2.4 液晶显示模块1602内部的控制指令1602液晶模块内部的控制器共有11条指令,控制指令表如表3.1所示:表3.1控制指令表指RSR/WED7D6D5D4D3D2D1D0清显示00100000001光标返回0010000001*置输入模式001000001I/DS显示开/关控制00100001DCB光标或字符移位0010001S/C

30、R/L*置功能001001DLNF*置字符发生存储器地址00101字符发生存储器地址(AGG)置数据存储器地址0011显示数据存储器地址(ADD)读忙标志或地址011BF计数器地址(AC)写数至UCGRAM或DDRAM101要写的数从CGRAM或DDRAM读数111读出的数据它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令

31、4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平日显示5x7的点阵字符,高电平时显示5x10的点阵字符(有些模块是DL:高电平时为8位总线,低电平时为4位总线)。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙

32、,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。在对液晶显示模块1602写入指令或写入数据前,需要进行初始化,如清屏幕,光标返回到00H位置,开显示,将液晶模块设置为双行显示等。编程时,要根据表3.1来编制程序,通过对RS、RW、D0-D7设置不同的高低电平来实现不同的功能。3.3 系统软件设计中的主要流程图设计的主程序和T0中断服务子程序的流程图如图3.10所示。设计的数据处理子程序和T1中断子程序的流程图如图3.11所示。主程序T0中断服务子程序将数值存入存储单元中断返回图3.10设计的主程序和T0中断服务子程序的流程图数据处理子程序T1中断服务子

33、程序Y子程序返回图3.11设计的数据处理子程序和T1中断服务子程序的流程图3.4 系统软件设计中的主要子程序3.4.1 T1计数器中断服务子程序根据图3.11中的T1中断服务子程序流程图设计的T1计数器中断服务子程序如下。TIMER1:INC2AHRETI3.4.2 T0定时器中断服务子程序根据图3.10中的T0中断服务子程序流程图设计的T0定时器中断服务子程序如下。TIMER_INT:CLRTR0MOVTL0,TIMER_LMOVTH0,TIMER_HINCTIMCOUNTMOVA,TIMCOUNTCPLP1.4CJNEA,#20H,T_ENDCLRTR1MOVTIMCOUNT,#00H;M

34、OVINT_L,TL1MOVINT_H,TH1MOVINT_G,2AHMOVTH1,#00HMOVTL1,#00HMOV2AH,#00HSETBTR1SETBTR0RETI3.4.3 数据处理子程序根据图3.11中的数据处理子程序流程图设计的数据处理子程序如下。SBIN_SBCD:CLRAMOVT_G,AMOVT_H,AMOVT_M,AMOVT_S,AMOVR5,INT_GMOVR7,INT_LMOVR6,INT_HMOVR2,#24CLRCSBIN_SBCD1:MOVA,R7RLCAMOVR7,AMOVA,R6RLCAMOVR6,AMOVA,R5RLCAMOVR5,AMOVA,T_SADDC

35、A,T_SDAAMOVT_S,AMOVA,T_MADDCA,T_MDAAMOVT_M,AMOVA,T_HADDCA,T_HDAAMOVT_H,AMOVA,T_HADDDCA,T_HDAAMOVT_G,AMOVA,T_GDAAMOVT_G,ADJNZR2,SBIN_SBCD1POPPSWRET总的源程序见附录A3.5 程序的编译、仿真3.5.1 在Keil环境下的程序编写1)建立一个新工程保存的路径单击Project菜单,在弹出的下拉菜单中选中NewProject选项,然后选择你要保存的路径输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51如下图所示,然后点击保存保存新工程的界面

36、图如图3.12所示。保存在:二| g回口国文件s /:Project Files (* uw21L r « < t aPro图3.12保存新工程的界面图完成上述步骤后会出现一对话框,选择需要的单片机型号,然后点击确定。2)建立一个新的文件单击“File”菜单,再在下拉菜单中单击“New”选项,此时光标在编辑窗口里闪烁,这时可以键入应用程序了,但应首先保存空白的文件,单击菜单上的“File”,在下拉菜单中选中“SaveAs选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用C语言编写程序,则扩展名为(.c);如果用汇

37、编语言编写程序,则扩展名为(.asm),然后单击“保存”按扭。回到编辑界面后,单击“Target1”前面的“十”号,后在C、I11UI'JffSD«ktgp£5lT1.aOpticntfor取方91Lid Files to Group *Grouj: VOr out s. filesLinwfi 匚/ J zuj c e '?rjx.i it a Fil士二Source Group 1上击右键,添加文件的界面图如图3.13所示。图3.13添加文件的界面图然后单击“AddFiletoGroup'SourceGroup1选中要添加的文件,然后单击“Add

38、3)输入源程序,进行编译、仿真输入源程序后,单击“project”按钮下的"Buildproject,translate"按钮,程序无错误时界面图如图3.14所示。图3.14程序无错误时的界面图4)单击"Project”菜单,再在下拉菜单中单击"optionsfortarget/target1/,出现选择晶振频率的界面图如图3.15所示。UptjlozileforTarge<PTargetDevice Turge1 Output j Lifting Atm el KTM 巧 1C51| A51| BL51 Loe&te | BE51 Mie

39、c | Debug | Utilities |r Uw On-ckip MW (OO-OPFP)Memory M£dL:Sm&lll viri tbles in DATACode Ron Size:Large: 64K programOperatingNone4.00fchip Cade mamoryOEFuhip Xdata memoryRamRmRam*。春加 BankingBanks:2标g;Start:PkOOOOEnd:|OxFFFFSt art: Si ie:II fal" ffi erh d-ry typ £iippgi*t|s Save a

40、ddress exieitsi on SFR in interrupt图 3.15选择晶振频率的界面图U&Eault、帮助把晶振频率改为12.0 ,且选中“Use On-chip ROM ”,然后单击“output"选项,出现可选择生成HEX文件的界面图如图 3.16所示:for Tu(tt Tirfit I:纣|Usdni|«h:t Miff for 叫 k依Im« 时 EitnUH(P Ertite 7 filBi NB-ao图3.16选择生成HEX文件的界面图单击图 3.7 中的 “Create HEX File选项,使程序编译后产生HEX代码。3.

41、5.2在PROTEUS环境下的仿真结果L*CrlLROI&072isiruiEan9Fre喟gqggglHZ史HLJARI.Tmi中nmriRV1W*_-=t<TELI即mcomi2iiijuhi1即加。2即融。R-tTrewvn5nPDEADEM.mP2DASF2H1口AUE呷/MN才PID132Hl3用“MlFZ.WI5r?nnxDFL11EDP12FZtaiNTTHLrJF-wttiiTTP34JDpjwriF14PL5PUSN,Jt丽PITirar/HTJ,K*xqirTEEWE当输入信号频率为1Hz时的显示结果斤广,A.-ci,utt5T«n5LCD1Luui

42、l:=it/:-xl:11二百_."r.c,丫1打力»z1X*-1F吒R1:.0,.dQ-<Idl>:d.E«:HG3,.A叫.里lijJP3M1XTAI2RCTiteitP0,MD1F32AD2打丽叫加.晚D1国加哼PJJQRD6M.TMD7P2DA3帕葭受1口理MM1AIEF2.MW12氏Pw出JM闻J*WFZ.'JMSF?DfKXDRU】EDP1J2FiSlNTnPImflTTP14p工案P?.&T1IFJjMM"PUSP-JP3T厢口*rracsiTSBLftnTi.1prTiB>*riiu当输入信号频率为500

43、KHz时的显示结果3.6电路的调试把程序烧录到单片机后,在面包板上按原理图连接好,却没有出现想要的功能,按顺序检查:1)电路图的连接,经检查发现单片机的31管脚没有接高电平,这在软件实现时也没有接,被默认为是高电平,但在硬件中,若不接高电平,该管脚为片外程序存储器选用端,就无法读取单片机内的程序,所以未能实现所需功能。2)31管脚接上高电平时,液晶显示器1602仍未能显示所测频率,推测可能是电位器的调节问题,在适当的调节接入电阻值后,1602显示了所测的频率。3)把1602所显示的频率与实际的频率相比较,发现误差较大,经思考发现在编写程序时对定时器的定时50ms有误差,没有考虑到定时器与计数器

44、的关闭不是同时的,而有一定的时间差,这个时间差是因执行每一条指令时引起的。然后在程序中把定时时间适当的缩小到49.985ms,发现误差会变小,能达到要求。检查无误后,接通电源,LCD能显示频率,显示范围是1500KHz,用信号发生器检测,误差不超过2Hz。组装的频率计实物图如图3.17所示。图3.17组装的频率计实物图4 结论基于AT89C51单片机的液晶显示频率计包括单片机控制模块和液晶显示模块,调试后的频率计可测量方波、正弦波、脉冲信号等波形,测量最高频率为500KHz,误差为2Hz。本设计的创新点是:显示部分采用液晶显示模块1602,显示结果直接且能显示多行多位,功耗小,使用寿命长。本设

45、计的不足之处是:测量频率范围窄,需要进一步扩展。5 致谢从选择课题到课程设计的顺利结束,老师和同学给予了我热心的帮助,在这里请接受我诚挚的谢意。首先,要特别感谢我的指导教师聂翔副主任,从查找资料到设计结束,聂老师都给予了我悉心的指导和帮助。在设计与调试过程中,聂老师渊博的理论知识和丰富的实际经验给了我许多启发式的指点,还有他严谨的治学态度和认真的工作精神,也使我受益匪浅。其次,还要感谢我们这个小组的其他两位同学,他们在资料的查阅、整理和设计的过程中给予了我极大的帮助,正因为有了他们的参与,我们这个团队才能顺利地完成课程设计的各项任务。除此之外,还要感谢班上其他帮助过我的同学,感谢他们在整个过程

46、中给予我们的鼓励与帮助。最后,要感谢电信工程系电子教研室的老师,他们为我们的课程设计提供了良好的实验环境,全天时的实验室开放方便了大家的硬件和软件调试。电信系和实验室的指导老师对我们进行的不厌其烦的辅导修改以及必要的批评指正,对设计的成功给予了很大的帮助。再次衷心的感谢每一位指导并帮助过我的老师和同学。参考文献1贵国庆.1602液晶显示频率计J.电子制作,2006,149(8):26-27.2 陆容.液晶显示器(LCD)显示驱动原理及其应用J.电子制作,2005,134(5):58-59.3 李建忠.单片机原理及应用M.西安电子科技大学出版社,2002,3-40.5 何立民.MCS-51系列单

47、片机应用系统设计M.北京航空航天大学出版社,1995,30-34.6 吴海州,王文理.基于VHDL语言的数字频率计设计J.现代电子技术,2002,138(7):19-21.7 SongPan,GuodongWang.VHDLApplicationCourseM.Chengdu:UniversityofElectronicScienceandTechnologyPress,2000,15-20.8 WanjieSong,PingLuo,ShunjunWu.CPLDTechnologyandApplicationM.Xipan:XipanUniversityofElectronicSciencea

48、ndTechnologyPress,2000,27-30.附录A源程序:BEEPBITP3.7LCD_RSBITP2.0LCD_RWBITP2.1LCD_ENBITP2.2地址变量定时器高位字节单元定时器低位字节单元时间中断数中断计数缓冲单元高地址中断计数缓冲单元中地址中断计数缓冲单元低地址数据显示低位数据显示中位数据显示高位数据显示最高位LCD_XEQU3FH;LCDTIMER_HEQU30H;TIMER_LEQU31H;TIMCOUNTEQU32H;INT_GEQU35H;INT_HEQU34H;INT_LEQU33H;T_SEQU36H;T_MEQU37H;T_HEQU38H;T_GEQ

49、U39H;JORG0000HJMPMAIN;主程序开始ORG000BHJMPTIMER_INT;定时器T0中断服务程序ORG001BH;定时器T1中断服务程序JMPTIMER1ORG0030H;MAIN:MOVSP,#60H;设置SP指针LCALLPRO_SET;初始化CALLSET_LCDLCALLTIM_T0;LCD1602是慢速显示器件,故100MS显示一次。JMAIN1:MOVR5,40MAIN2:ACALLDELAY1;3msDJNZR5,MAIN2ACALLSBIN_SBCDCALLCONVJMPMAIN1;T1计数器中断服务子程序;计T1计数器溢出次数;TIMER1:INC2AH

50、RETI;初始化程序;PRO_SET:MOVA,#00HMOVB,#00HMOV2AH,AMOVP0,#0FFHMOVP1,#0FFHMOVP2,#0FFHMOVINT_H,#00HMOVINT_L,#00HMOVINT_G,#00HMOVT_S,#00HMOVT_H,#00HMOVT_M,#00HMOVT_G,#00HMOVTIMCOUNT,#00H理论上定时50MS(3CB0H), 实际定时 49.985MS(3CBFH) 较合MOVTIMER_H,#3CH;MOVTIMER_L,#0BFH;CLRBEEPSETBP3.5;P3.5端口置输入状态RET;T1(TIMER1的外部输入脚);L

51、CD初始化设置;SET_LCD:CLRLCD_ENCALLINIT_LCD;初始化LCDCALLDELAY1MOVDPTR,#INFO1;指针指到显示信息1MOVA,#1;显示在第一行CALLLCD_SHOWMOVDPTR,#INFO2;指针指到显示信息2MOVA,#2;显示在第二行CALLLCD_SHOWRET;INFO1:DB"072cairuigang",0;LCD第一行显示信息INFO2:DB"Freq:HZ",0;LCD第二行显示信息;LCD接口初始化;8位I/O控制;INIT_LCD:MOVA,#38H;双列显示,字形5*7点阵CALLWCOM

温馨提示

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

评论

0/150

提交评论