1、电机转速测量系统设计测控系统原理与设计课程设计姓名:学号:华东交通大学课程设计目录1设计任务书.12设计题目.23系统介绍.24系统设计方案.24.1 方案论证与选择.34.1.1 转速测量的方法.34.1.2 整体控制方式.34.1.3 传感器模块.34.1.4 显示模块.44.2 方案描述.55系统理论分析与计算.55.1 信号采集电路的分析.55.2 电机转速的计算.66硬件电路设计.76.1 单片机模块.76.1.1 STC89c52单片机简介.错误!未定义书签。6.1.2 时钟电路.86.1.3 复位电路.96.2 显示电路.97软件 设计.107.1 系统总体设计.107.2 中断
2、子程序设计.117.3 定时子程序设计.117.4 显示子程序设计.128测试方案.128.1 电路调试.128.1 软件调试.129心得体会.1310参考文献.1511附录.16附录一电路仿真图.16附录二程序清单.16附录三电路图.22附录四实物图.231设计任务1华东交通大学课程设计2设计题目3系统介绍转速的测量原理有两种:对于较高的转速,记录单位时间内的转速或 角度,即频率测量法;对于较低的转速,记录每转所用的时间或没特定角 度多用的时间,即周期测量法。因为本系统测量对象为直流电动机,转速 较高,所以选择频率测量法,即在固定的测量时间内,对传感器产生的脉 冲进行计数,从而算出实际转速。
3、假设测量时间为Tc(min),脉冲个数为 P,光码盘的小孔个数为m,则可算出实际转速N(r/min)为:N=60?n/(P?Tc)当采样周期为is,光码盘开孔数为4个时,其实际转速N为:N=60?P/4本设计中采用光电传感器采集信号,方便了信号的采集,也提高了测 量的精度,但容易受外界光线和环境的干扰,编码盘与电机转轴的固定连 接,都是本设计的难点。用1602LCD的数码管以动态扫描清晰的显示了实 时的转速,程序的编写成了本设计的重点。4系统设计方案本系统主要由单片机模块、传感器模块以及显示模块组成,下面分别 论述这几个模块的选择。24.1 方案论证与选择4.1.1 转速测量的方法方案一:测周
4、期法(T法)它是测量光电脉冲发生器所产生的相邻两个转速脉冲信号的时间来 确定转速。相邻两个转速脉冲信号时间的测量是采用对已知高频脉冲信号 进行计数来实现的。在极端情况下,时间的测量会产生?1个高频脉冲周期,因此T法在被测转速较低(相邻两个转速脉冲信号时间较大)时,才有较高 的测量精度,所以T法适合于低速测量。方案二:测频法(M法)在规定的检测时间内,检测光电脉冲发生器所产生的脉冲信号的个数 来确定转速。虽然检测时间一定,但检测的起止时间具有随机性,因此M 法测量转速在极端情况下会产生?1个转速脉冲的误差。当被测转速较高或 电机转动一圈发出的转速脉冲信号的个数较大时,才有较高的测量精度,因此M法
5、适合于高速测量。方案三:频率/周期法(M/T法)它是同时测量检测时间和在此检测时间内光电脉冲发生器所产生的 转速脉冲信号的个数来确定转速。由于同时对两种脉冲信号进行计数,因 此只要“同时性”处理得当,M/T法在高速和低速时都具有较高的测速精度。由于M/T法可在整个速度范围内获得高分辨率,可在不损失精度和分辨率 的前提下获得快速响应。本次设计采用测频法。4.1.2 整体控制方式方案一:采用集成电路控制方式光电传感器感受到光信号并转换成电信号,此时的电信号为模拟信号,经信号处理电路滤除干扰,并转换成能被计数器接受的方波信号或脉冲信 号,再经过计数、译码、显示电路,由数码管显示转速。可实现功能,但
6、电路较复杂,系统调试也较繁杂。方案二:采用单片机模块控制方式单片机模块接收脉冲信号,进行计数、处理,把数据传送给LCD显示 模块,达到实时检测和反馈的功能。基于单片机的转速测量系统,具有硬 件电路简单,程序简单和运算速度快,测速范围广,抗干扰性能好的特点。综合以上两种方案,选择方案二。4.1.3 传感器模块方案一:采用红外传感器3华东交通大学课程设计红外传感器是利用红外线的物理性质来进行测量的传感器,为反射式。红外线传感器测量时不与被测物体直接接触,因而不存在摩擦,并且有灵 敏度高,反应快等优点。但红外线的发射、接收不好控制,而且容易受到 外界光线和环境的干扰。方案二:采用霍尔传感器霍尔传感器
7、是根据霍尔效应原理制成的霍尔元件。传感器的定子上有2个互相垂直的绕组A和B,在绕组的中心线上粘有霍尔片HA和HB,转子为永久磁钢,霍尔元件HA和HB的激励电机分别与绕组A和B相连,它们的霍尔电极串联后作为传感器的输出。采用霍尔传感器在信号采样的时 图1霍尔转速传感器结构图候,会出现采样不精确,因为它是靠磁性感应才采集脉冲的,使用时 间久了会出现磁性变小,影响脉冲的采样精度。方案三:采用光电传感器光电传感器是通过把光强度的变化转换成电信号的变化来实现控制 的。光电传感器在一般情况下,有三部分构成,它们分为:发送器、接收 器和检测电路。发送器对准目标发射光束,发射的光束一般来源于半导体 光源,发光
8、二极管(LED)、激光二极管及红外发射二极管。光束不间断地发 射,或者改变脉冲宽度。接收器有光电二极管、光电三极管、光电池组成。在接收器的前面,装有光学元件如透镜和光圈等。在其后面是检测电路,它能滤出有效信号和应用该信号。止匕外,光电开关的结构元件中还有发射板和光导纤维。三角反射板是结构牢固的发射装置。它由很小的三角锥体反射材料组成,能够使光束准确地从反射板中返回,具有实用意义。图2光电传感器原理示意图4.1.4 显示模块方案一:用数码管动态显示,可以显示数字,但显示的内容有限,接 线繁多,且不能连续显示字符,有一定局限性。方案二:采用LED点阵显示,能动态扫描,变换颜色,但体积比较大,需4
9、综合以上3种方案,选择方案三。要很多点阵组合使用,显示较为繁琐,但需要的I/O资源较多,影响 总体布局。方案三:采用LCD液晶显示,显示内容最丰富,不仅编程灵活,显示可靠,而且电路简单,易与单片机连接,明亮对比度可调,显示非常清晰,是一种非常好的方案。综合以上,选择方案三。4.2 方案描述本设计主要用STC89C52单片机作为控制核心,由光电传感器、LCD动 态显示屏构成。STC89c52单片机接收光电传感器传来的脉冲信号,单片机 根据外部中断,以及内部定时器进行记数计算出电机转速送到LCD显示,使能实时读出电机的转速。光电传感器信号调理 STC89C52单片机显示电路图3系统总体方框图5系统
10、理论分析与计算5.1 信号采集电路的分析采集光信号的电路原理图如图4所示:图4采集光信号的电路原理图在图中,U3为槽型光耦,它的左端是发光二极管,因为发光二极管的 驱动5华东交通大学课程设计电流为520mA,所以设置R2的值为500 Q,同理设置,光电接收晶 体管的下拉电阻即R3为:10KQ。光耦的输出端用三极管进行电压放大,为 使T1输出的电平为TTL电平,将R5和R4的阻值设定为1KQ。该部分设计采用了红外光电传感器,进行非接触式检测。当有物体挡 在红外光电发光二极管和高灵敏度的光电晶体管之间时,传感器将会输出 一个低电平,而当没有物体挡在中间时,则输出高电平,从而形成一个脉 冲。系统在光
11、电传感器收发端之间加上电动机,并在电动机转轴上安装一 转盘。在这个转盘的边沿处挖若干个圆形通光孔,把传感器的检测部分放 在圆孔的圆心位置。每当转盘旋转时,传感器将输出若干个脉冲。把这些 脉冲通过放大整形成单片机可以识别的TTL电平,即可计算出轮子的转速。转盘的圆孔的个数决定了测量的精度,个数越多,精度越高。这样就可以再单位时间里尽可能多地得到脉冲数。从而避免了因为两个过孔之间 距离过大,而正好在过孔之前或者是在下一个过孔之前就停止了,造成较 大的误差。设计中转盘的圆孔的实际个数受到技术限制。为了达到预定的 效果设计,在转盘过孔的设计上采用4个过孔,再通过软件对采集的数据 进行计算。图5光码盘5
12、.2 电机转速的计算在编程时让单片机每隔一秒记录一次接收到的脉冲总数,然后根据如 下计算电机的转速PT)n=60?N/(?n:电机转速T:采样周期N:采样周期T内光脉冲个数P:光码盘开孔的总数当采样周期为1秒时,转速n=60?f/P冲个数66硬件电路设计6.1 单片机模块(2)f:1秒内采集到的光脉单片微型计算机简称单片机,它把组成微型计算机的各个功能部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、可编程存储 器EPROM、并行及串行输入输出I/O接口电路、定时器/计数器、中断控 制器等部件集成在一块半导体芯片上,构成一个完整的微型计算机。6.1.1 STC89C52单片机简介
13、STC89c52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片 上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89c52为众多嵌 入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O 口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量 2级中断结构),全双工串行口。
14、另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保 存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为 止。最高运作频率35MHz,6T/12T可选。图6单片机管脚图VCC:供电电压GND:接地7华东交通大学课程设计PO:PO 口为一个8位漏级开路双向I/O 口,每脚可吸收8TTL n电 流。当P1 口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部 程序数据存储器,它可以被定义为数据/地址的第八位。P1:P1 口是一个内部提供上拉电阻的8位双向
15、I/O 口,P1 口缓冲 器能接收输出4TTL门电流。P1 管脚写入1后,被内部上拉为高,可用 作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的 缘故。P2:P2 口为一个内部上拉电阻的8位双向I/O 口,P2 口缓冲器可 接收,输出4个TTL门电流,当P2 口被写“1”时,其管脚被内部上拉电 阻拉高,且作为输入。并因此作为输入时,P2 的管脚被外部拉低,将输 出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或16位 地址外部数据存储器进行存取时,P2 口输出地址的高八位。P3:P3 管脚是8个带内部上拉电阻的双向I/O 口,可接收输出4 个TTL门电流。当P3
16、 口写入“1”后,它们被内部上拉为高电平,并用作 输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由 于上拉的缘故。P3 口也可作为STC89c52的一些特殊功能口。6.1.2 时钟电路 时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地一拍一拍地工作。因此,时钟频率 直接影响单片机的速度,时钟电路的质量也直接影响单片机系统稳定性。常用的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。图7单片机晶振电路图8单片机复位电路单片机内部有一个用于构成振荡器的高增益反向放大器,该高增益反 向放大器的输入端为芯片引脚XTAL1,输出端为引脚XT
17、AL2这两个引脚跨 接在石英晶体振荡器和微调电路,就构成一个稳定的自激振荡器。电路中的电容C1和C2典型值通常选择30pF左右,该电容大小会影 响振荡器频率的高低,振荡器的稳定性和起振的快速性。晶振的振荡器频 率的范围通常8在1.212MHz之间,晶体的频率越高,则系统得时钟频率也就变高,单片机的运行速度也就越快。但反过来运行速度快,对存储器的速度要求就高。对印刷电路板的工艺要求也高,即要求浅间的寄生电容要小;晶体和电容应尽 可能安装得与单片机芯片靠近,以减少寄生生活,更好的保证振荡器稳定,可 靠地工作。6.1.3 复位电路为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路
18、的第一功能是上电复位。一般微机电路正常工作需要供电电源为 5V5%,即4.755.25V。由于微机电路是时序数字电路,它需要稳定的时钟信 号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳 定工作时,复位信号才被撤除,微机电路开始正常工作。单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始 状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯 片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如 果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU 就可以响应并将系统复位。单片机系统的复位方式有:
19、手动按钮复位和上电复 位。6.2 显示电路LCD1602液晶显示模块可以和单片机STC89C52直接接口,电路如图所Zj O图9显示电路1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的 2条线是背光电源线。液晶显示模块是一个慢显示器件,所以在执行每 条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。9华东交通大学课程设计图10 LCD1602管脚图3.3V或5V的工作电压,对比度可调。内含复 位电路,可提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能。有80字节 显示数据存储器DDRAM,并建有192个5X7点阵的字型的字符发生器CGR
20、OM,有 8个可由用户自定义的5X7的字符发生器CGRAMo7软件设计7.1 系统总体设计单片机按编入的程序运行,开始后对显示液晶的初始化及中断定时的 初始化,为后续程序做好准备,初始化好后开始检测定时是否到达1秒,等到达1秒后便取出计数脉冲值,将脉冲值经算法运算后得出转速信息送到液 晶模块显示,如此循环每隔1秒刷新一次转速显示。系统总体流程图如图11 所示。图11系统总体流程图107.2 中断子程序设计中断程序为下降沿触发,从ITO引脚传送到单片机,程序每来一次中 断,表明有脉冲触发,计一次脉冲,不断的中断循环,来一个脉冲触发一 次中断。中断图12中断子程序流程图7.3定时子程序设计定时函数
21、为计时50ms的函数,定时器初始化完成后便开始计时,每 一次计时为50ms,在定时程序中判断是否计时20次到达1秒,到达1秒后 便计时完毕,由单片机相应其它子程序,由重新开始计时。定时子程序设 计流程图如图13所示。图13定时子程序流程图11华东交通大学课程设计7.4显示子程序设计显示程序初始化完毕后,等待由定时器的1秒计时完毕后,将中断函 数产生的脉冲值计算后送到液晶显示部分显示,每隔1秒计时刷新一次显 示,如此循环。图14显示子程序流程图8测试方案8.1电路调试在本次课程设计中我的电路部分出了很多问题,期间我也换了很多次 电路,虽然是个很简单的采集电路,但是由于各种原因,总是不能实现作 用
22、。我一部分一部分的排查电路,最终搭建成功。传感器模块是电路的核 心,主要部件是槽型光耦,我在百度上搜索了槽型光耦的引脚图、内部结 构图以及特性参数。通过计算光耦内部的发光二极管的发光电流,设置其 下拉电阻的大小,使得发光二极管的发光效率较高。光电三极管在接收光 之后,其集电极和发射级之间导通,在它的集电极加上一负载电阻,在集 电极做输出。由于集电极输出电压不是TTL电平,所以加上一个三极管,对其进行放大,是其变成TTL电平,即可直接接单片机的I/O 口,对其输 出脉冲进行计数。8.1软件调试由于本程序较大,而C语言编程具有很强的灵活性,便于编写与理解,因此采用C程序语言编写。采用自下而上的调试
23、方法,先调试功能电路,再调试整个系统。我们所使用的调试软件是51系列单片机开发软件Keil C51,它是一个 基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0 以上的版12本将编译和仿真软件统一为u Vision o Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案。Keil能以单步执行、过程单步执行、全速执行等多种运行方式进行程 序调试。如果发现程序有错,可采用在线汇编功能对程序进行在线修改,不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。对于一些必须满足一定条件(如按键被
24、按 下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断 点设置的方法处理。在模拟调试程序后,还须通过编程器将.hex目标文件 烧写入单片机中才能观察目标样机真实的运行状况。这次我们还用到了 Protel软件画电路图,在之前的课程设计中我们没 有用过Protel,因此我又学习了 Protel软件的使用,我运用的是Protel的 升级版 Altium DesigneroAltium Designer是原Protel软件开发商Altium公司推出的一体化的电 子产品开发系统,主要运行在Windows操作系统。这套软件通过把原理图 设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完
25、整性分析和 设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设 计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率 大大提高。Altium Designer除了全面继承包括Protel 99SE Protel DXP在内 的先前一系列版本的功能和优点外,还增加了许多改进和很多高端功能。该平台拓宽了板级设计的传统界面,全面集成了 FPGA设计功能和SOPC 设计实现功能,从而允许工程设计人员能将系统设计中的FPGA与PCB设 计及嵌入式设计集成在一起。主要功能有:原理图设计、印刷电路板设计、FPGA的开发、嵌入式开发、3DPCB设计。9心得体会通过此次课程设计,使我更
26、加扎实的掌握了有关电路和单片机设计方 面的知识,在设计过程中虽然遇到了一些问题,但是经过同学和老师的帮 助都一一解决了,真的非常感谢他们。在这过程中,我的专业知识以及专 业技能都有所提升。通过这次课程设计,我也掌握了某些传感器的原理以 及电路连接方法。由于我对单片机和C语言的基础知识不是很扎实,因此真的感觉自己 走了不少的弯路,甚至课程设计过了很长时间。通过这次课程设计又重新 学习了 C语言以及单片机。仿真时,主要使用软件keilProteus 8 Professionalo 其中keil用来编写C语言程序,以及编译连接使之产生后缀名为hex的文 件,将其烧录在软件Proteus 8 Prof
27、essional中进行测试仿真调试。还运用 到了 Altium Designer用来画电路图。这次实习的重点就是如何编写程序以 及仿真中的行骗各个管脚的连接问题,主要的元器件有STC89c52、lcdl602 液晶显示等。13华东交通大学课程设计当你用心的去做一件事的时候,这件事就不会轻易的用不知对错的结 果去应付你,就像你不会去拿这样的态度去对待它,做一件事和想一件事 也不会是一样,如果当时我只是停留在第一天的空想,我就不会在编程和 仿真的过程中发现和改正那么多的错误。实践之所以高于理论,或许正是 因为它为我们提供了更多犯错误和改正错误的机会吧。本次设计把理论应用到了实践中,同时通过设计,也
28、加深了自己对理 论知识的理解和掌握,在解决困难的过程中,获得了许多专业方面的知识,拓展了视野。提高了理论水平和实际的动手能力,学会了解决问题的方法,激发了我的探索精神。这样的课程设计是很好的锻炼机会,只是这已经是我 们的最后一个课程设计了,以后只有毕业设计这个巨大的挑战在等待着我。通过实验设计使我深入了解到课程设计在大学学习的重要性,课程设计增 强了我们的实践动手能力,也为毕业设计提供了宝贵的经验。1410参考文献 附录一电路仿真图11附录华东交通大学课程设计15精解M.2009.191-217.11蓝和慧,宁武,闫晓金.全国大学生电子设计竞赛单片机应用技能学.2012.194-211.10李
29、丽荣,张常全,郑建红.51单片机应用设计M.北京理工大大学.2010.124-140.天9肖婿.单片机系统设计与仿真一一基于ProtuesM.北京航空航8周润景.PROTEUS入门实用教程M.机械工业.2011.57-85.学.2011.189-221.7马忠梅.单片机的C语言应用程序设计M.北京航空航天大童诗白.模拟电子技术基础M.高等教育.2010.128-169.5谭浩强.C程序设计(第二版)M.清华大学.2001.78-105.2011.169-185.4刘笃仁.传感器原理及应用技术M.西安电子科技大学.2011.89-112.3何立民.单片机应用技术选编M.北京航空航天大学.2秦曾煌
30、.电工学M.高等教育.2009.36-86.子科技大学.2009.124-162.1张毅坤.陈善久,裘雪红.单片微型计算机原理及应用M.西安电附录二程序清单#include<reg52.h>#include<intrins.h>unsigned char code cdisl=SPEED:);unsigned char code cdis2=r/min);sbit LCD_RS=P2 A 3;寄存器选择位,将RS位定义为P2.3引脚sbit LCD_RW=P2A 4;读写选择位,将RW位定义为P2.4引脚sbit LCD_EN=P2 A 5;使能信号位,将EN位定义为P
31、2.5引脚bit sec=0;unsigned char msec=0,Hdata=0,Ldata=0,Count=0;unsigned long temp=0;16unsigned char data display1=0 x00,0 x00,0 x00,0 x00z 0 x00);char code reserve3_at_ 0 x3b;保留 0 x3b 开始的 3 个字节/*us延时函数void delayNOPf)_nopj);_nop_();_nop_();_nop_();)ms延时函数*/void delaymsfunsigned int ms)unsigned char n;wh
32、ile(ms-)for(n=0;n<114;n+)*检查LCD忙状态lcd_busy 为 1 时,忙,等待。Icd-busy为。时,闲,可写指令与数据。*/皿 lcd_busy()bit result;LCD_RS=O;根据规定,RS为低电平,RW为高电平时,可以读状态LCD_RW=1;LCD_EN=1;/EN=1,才允许读写delayNOP();空操作,给硬件反应时间result=(bit)(PO&0 x80);将忙碌标志电平赋给 P0.717华东交通大学课程设计LCD_EN=0;将E恢复低电平return(result);)写指令数据到LCDRS=L,RW=L,E=高脉冲,D
33、0-D7;指令码。void lcd_wcmd(unsigned char cmd)while(lcd_busy();如果忙就等待LCD_RS=0;根据规定,RS和R/W同时为低电平时,可以写入指令LCD_RW=0;LCD_EN=1;E置低电平(写指令时,E为高脉冲,就是让E从。到1 发生正跳变,所以应先置“0)P0=cmd;将数据送入P0 口,即写入指令或地址delayNOP();空操作,给硬件反应时间LCD_EN=0;当E由高电平跳变成低电平时,液晶模块开始执行命令)/*将数据(字符的标准ASCII码)写入液晶模块 RS=H,RW=L,=高脉冲,D0-D7;数据。void lcd_wdat(
34、unsigned char dat)while(lcd_busy();LCD_RS=1;RS为高电平,RW为低电平时,可以写入数据LCD_RW=0;LCD_EN=1;PO=dat;将数据送入PO 口,即将数据写入液晶模块delayNOP();LCD_EN=0;当E由高电平跳变成低电平时,液晶模块开始执行命令)LCD初始化设定*/void lcd_init()delayms(15);延时15ms,首次写指令时应给LCD 一段较长的反应时 问lcd_wcmd(0 x38);显示模式设置:16*2显示,5*7点阵,8位数据delayms;延时5ms,给硬件一点反应时间18lcd_wcmd(0 x38
35、);delayms;延时5ms,给硬件一点反应时间lcd_wcmd(0 x38);连续三次,确保初始化成功delayms;延时5ms,给硬件一点反应时间lcd_wcmd(0 x0c);显示模式设置:显示开,无光标,光标不闪烁delayms;延时5ms,给硬件一点反应时间lcd_wcmd(0 x06);显示模式设置:光标右移,字符不移delayms;延时5ms,给硬件一点反应时间lcd_wcmd(0 x01);清屏幕指令,将以前的显示内容清除delayms;延时5ms,给硬件一点反应时间)/*指定字符显示的实际地址*/void lcd_pos(unsigned char pos)lcd_wcmd
36、(pos|0 x80);数据指针=80+地址变量)显示函数*/vo j d play()unsigned char n;for(n=0;n<=3;n+)数据转换displayn=temp%10+0 x30;temp=temp/10;)display4=temp+0 x30;for(n=4;n>0;n-)高位为0不显示if(displayn=0 x30)displayn=0 x20;elsebreak;19华东交通大学课程设计)Icd_pos(0 x46);显示实际频率值for(n=4;n!=Oxff;n-)lcd_wdat(displayn);)主函数*/void main)uns
37、igned char m;unsigned long frq_num;PO=Oxff;lcd_init();/LCD 初始化Icd_pos(0 x00);设置显示位置为第一行for(m=0;m<6;m+)lcd_wdat(cdislm);显示字符Icd_pos(0 x4b);设置显示位置为第二行for(m=0;m<5;m+)Icd_wdat(cdis2m);显示字符TMOD=0 x51;定时器0工作在定时方式定时器1工作在计数方式TH0=0 x4c;/50ms 定时TL0=0 x00;TH1=0 x00;计数初值TL1=0 x00;ETO=1;使能 TIMER0 中断ET1=1;使
38、能 TIMER1 中断EA=1;允许中断PT1=1;定义TIMER1中断优先TRO=1;TR1=1;while(1)if(sec)20Hdata=TH1;取计数值Ldata=TL1;frq_num=(Count*65535+Hdata*256+Ldata)*60/4);取数计算TH1=O;TL1=0;sec=0;Count=0;TRI=1;TRO=1;决定了中断方式为T1定时计数中断)temp=frq_num;piay();)/*TimeO中断函数TimeO()interrupt 1THO=0 x4c;/50ms 定时TLO=0 x00;msec+;if(msec=20)/5O*2O=1STRO=O;关闭 TIMEROTRI=0;关闭 TIMERmsec=0;sec=1;置秒标记位)/*Timel中断函数*/voidTimel()interrupt 3Count+;)21华东交通大学课程设计附录三电路图22附录四实物图23