资源描述
光电开关转速测量系统设计摘 要:本文设计了一种基于AT89S52单片机的光电开关转速测量系统。该系统采用对射式光电开关产生与齿轮相对应的脉冲信号,使用AT89S52单片机采样脉冲信号并计算每分钟内脉冲信号的数目,即电机对应的转速值,最终系统通过1602LCD液晶显示屏实时显示电机的转速值。经过仿真测试和软硬件系统的搭建,本系统满足设计要求,且结构简单、实用。系统在降低测速器成本,提高测速稳定性及可靠性等方面有一定价值,具有广泛的应用前景。关键词:转速测量,单片机,光电开关 1 绪论1.1 课题背景 一种量大面广的产品,广泛应用于国民经济的各个行业中。而电机的生产王国正在由日本转移到中国,尤其是浙江温州和广东珠三角地区。广东省佛山市顺德区就有大大小小的电机生产厂家上百家,每年生产上亿台电机,同时顺德有许多家电生产厂家,家电中也要大量用到电机,不管是电机生产厂家,还是将电机作为它们的产品中的零部件的厂家,要将它们的产品打到国际市场上,迫切需要IS09002认证,IS09002要求生产产品所用的零部件以及最终的产品都要经过本单位的质量检测,也就是说,在顺德,每年要检测几亿个电机,对电机的测试仪的需求非常迫切。电机测试的参数主要有:效率、功率因数、定子输入电流、转矩、转速等,本课题主要研究转速的测量。1.2 国内外发展情况转速是各类电机运行中的一个重要物理量,如何准确、快速而又方便地测量电机转速,极为重要。目前国内外常用的转速测量方法有离心式转速表测速法、测速发电机测速法、闪光测速法、光电码盘测速法和霍尔元件测速法。(1)离心式转速表测速法离心式转速表是利用离心原理制成的测速仪表,可以直接读出转速。测转速时,转速表的端头要插入电机转轴的中心孔内,插入前,应注意清除中心孔中的油污,并使转速表的轴与电机的轴保持同心,不可上下左右偏斜,否则易将表轴扭坏,并影响准确读数,而且转速表要间歇使用,以减少磨损和发热。如果要改变量程,还要将转速表取出停转后再改变量程2。(2) 测速发电机测速法测速发电机测转速时,测速发电机连接到被测电机的轴端,将被测电机的机械转速变换为电压信号输出E=CeFn,在输出端接一个刻度以转速为单位的电压表,即可读出转速。(3) 闪光测速法闪光测速法是利用可调脉冲频率的专用电源施加于闪光灯上,将闪光灯的灯光照到电机转动部分(可在电机端轴上粘贴一张标记纸片),当调整脉冲频率使黑色扇形片静止不动时,此时脉冲的频率是与电机转动的转速是同步的。若脉冲频率为f,则电机的转速为n=60f(rmin) 。(4) 光电码盘测速法光电码盘测速法是通过测出转速信号的频率或周期来测量电机转速的一种无接触测速法。光电码盘安装在转子端轴上,随着电机的转动,光电码盘也跟着一起转动,如果有一个固定光源照射在码盘上,则可利用光敏元件来接收到的光的次数就是码盘的编码数6。若编码数为60,测量时间为t,测量到的脉冲数为N,则n=N/t。(5) 霍尔元件测速法霍尔元件测速法是利用霍尔开关元件测转速的。霍尔开关元件内含稳压电路、霍尔电势发生器、放大器、施密特触发器和输出电路。输出电平与TTL电平兼容,在电机转轴上装一个圆盘,圆盘上装若干对小磁钢,小磁钢越多,分辨率越高,霍尔开关固定在小磁钢附近,当电机转动时,每当一个小磁钢转过霍尔开关,霍尔开关便输出一个脉冲,计算出单位时间的脉冲数,即可确定旋转体的转速。在这五种测速方法中,离心式转速表测速法和测速发电机测速法所用的都是现成的测速仪表,容易得到。但转速表或测速机都要与电机同轴连接,一方面增加了电机机组安装难度,另一方面有些微电机功率很小,转速表或测速机消耗的功率占了微电机大部分,更有甚者微电机甚至拖不动这些仪表,所以对微特电机的测速,这二种方法不适用。霍尔元件测速法和光电码盘测速法的测速方法基本类似,都是在转轴上装一个很轻巧的传感器,将电机的转动信号通过磁(霍尔元件)或光(光电码盘)转换为电脉冲,从而通过计算电脉冲的个数来测速。闪光测速法目前实际应用不广泛,主要是光源的问题。本课题研究的是其中的光电码盘测速法。1.3 本论文的研究内容本文针对电机的转速进行测量,以单片机为核心对光电开关产生的数字信号进行运算,从而测得电机的转速,然后用1602LCD液晶显示屏把电机的转速显示出来。即通过光电开关将电机的转数转换成0,1的数字量,只要转轴每旋转一周,产生一个或固定的多个脉冲,并将脉冲送入单片机中进行计数和计算,就可获得转速的信息。2 系统设计系统主要由AT89S52单片机处理系统、电机、传感器检测单元、信号处理单元和显示系统等几个部分组成,如图1:转动系统信号采集及其处理单片机处理电路 显示电路图1 系统组成框图(1) 转动系统本设计中采用对射式光电传感器测量电机转速。当不透光的物体挡住发射与接收之间的间隙时,开关管关断,反之打开。测装置按照发动机上传感器的实际安装位置进行安装。将信号盘固定在电动机转轴上,光电转速传感器正对着信号盘。测量头由光电转速传感器组成,而且测量头两端的距离与信号盘的距离相等。测量用器件封装后,固定装在贴近信号盘的位置,当信号盘转动时,光电元件即可输出正负交替的周期性脉冲信号。信号盘旋转一周产生的脉冲数,等于其上的齿数。因此,脉冲信号的频率大小就反映了信号盘转速的高低。该装置的优点是输出信号的幅值与转速无关,而且可测转速范围大,一般为1r/s104 r/s以上,精确度高。(2) 信号采集及其处理被测物理量经过传感器变换后,变为电阻、电流、电压、电感等某种电参数的变化值。为了进行信号的分析、处理、显示和记录,须对信号作放大、运算、分析等处理,这就引入了中间变化电路。(3) 单片机处理电路用于测量转速的脉冲通过P3.5/T1输入单片机,用AT89S52的定时计数器T1对脉冲信号进行计数,用定时计数器T0进行定时,每10ms产生一个中断对1602LCD液晶显示屏进行刷新,产生500个中断后(即5s),进行一次转速处理,再通过单片机对T1的脉冲数进行运算转换后,用1602LCD液晶显示屏显示电机的转速。(4) 显示电路 系统通过1602LCD液晶显示屏实时显示电机的转速值。3 硬件设计硬件设计电路图如附录1所示。本系统分为信号采集与处理单元,主控单元以及显示单元三大部分。3.1 信号采集及其处理单元本设计中采用对射式光电传感器测量电机转速。当不透光的物体挡住发射与接收之间的间隙时,开关管关断,反之打开。可以制作一个遮光叶片如图2(b)所示,安装在电机转轴上,当叶片转动时,光电开关产生脉冲信号。当叶片数较多时,旋转一周可以获得多个脉冲信号。 假设系统采用10个叶片,在一秒钟的内产生了100脉冲,则电机的转速就为10r/s。 (a)传感器 (b)转盘图2 传感器及转盘3.1.1 转速测量原理本设计采用频率测量法,其测量原理为,在固定的测量时间内,计取转速传感器发生的脉冲个数(即频率),从而算出实际转速。设固定的测量时间T (min),计数器计取的脉冲个数m1,假定脉冲发生器每转输出p个脉冲,对应被测转速为N(r/min),就可算出实际转速值N = 60m1/ pT。3.1.2 检测装置安装 此检测装置按照发动机上传感器的实际安装位置进行安装。如图3,将信号盘固定在电动机转轴上,光电转速传感器正对着信号盘。光电转速传感器接有4根导线,用于连接发光二极管和光敏三极管,其中发光二极管的红线连接其正极,绿线连接其负极,光敏三级管的红线连接其集电极,绿线连接其发射极。测量头由光电转速传感器组成,而且测量头两端的距离与信号盘的距离相等。测量用器件封装后,固定装在贴近信号盘的位置,当信号盘转动时,光电元件即可输出正负交替的周期性脉冲信号。信号盘旋转一周产生的脉冲数,等于其上的齿数。因此,脉冲信号的频率大小就反映了信号盘转速的高低。该装置的优点是输出信号的幅值与转速无关,而且可测转速范围大,一般为1r/s104 r/s以上,精确度高。图3 转速检测装置3.1.3 信号处理电路 被测物理量经过传感器变换后,变为电阻、电流、电压、电感等某种电参数的变化值。为了进行信号的分析、处理、显示和记录,须对信号作放大、运算、分析等处理,这就引入了中间变化电路。根据系统需要设计了如图4所示的中间变换电路。其中,R1、R4 起限流作用,R2 起分流作用,R3 为输出电阻。当转盘上的梯形孔旋转至与光电开关的透光位置重合时,输出低电平;当通光孔被遮住时,输出高电平。图4 电路图目前,光电开关已被用作物位检测、液位控制、产品计数、宽度判别、速度检测、定长剪切、孔洞识别、信号延时、自动门传感、色标检出、冲床和剪切机以及安全防护等诸多领域。此外,利用红外线的隐蔽性,还可在银行、仓库、商店、办公室以及其它需要的场合作为防盗警戒之用。光电开关把发射端和接收端之间光的强弱变化转化为电流的变化以达到探测的目的。由于光电开关输出回路和输入回路是电隔离的(即电缘绝),所以它可以在许多场合得到应用。光电传感器具有线性度好、分辨率高、噪音小和精度高、无触点、无机械碰撞、响应快、控制精度高,而且能识别色标等优点,在此我们选择光电转速传感器来进行转速的检测。3. 光电开关有以下几种类型(1)漫反射式光电开关:它是一种集发射器和接收器于一体的传感器,当有被检测物体经过时,物体将光电开关发射器发射的足够量的光线反射到接收器,于是光电开关就产生了开关信号。当被检测物体的表面光亮或其反光率极高时,漫反射式的光电开关是首选的检测模式(2)镜反射式光电开关:它亦集发射器与接收器于一体,光电开关发射器发出的光线经过反射镜反射回接收器,当被检测物体经过且完全阻断光线时,光电开关就产生了检测开关信号。(3)对射式光电开关:它包含了在结构上相互分离且光轴相对放置的发射器和接收器,发射器发出的光线直接进入接收器,当被检测物体经过发射器和接收器之间且阻断光线时,光电开关就产生了开关信号。当检测物体为不透明时,对射式光电开关是最合适的检测装置。(4)槽式光电开关:它通常采用标准的U字型结构,其发射器和接收器分别位于U型槽的两边,并形成一光轴,当被检测物体经过U型槽且阻断光轴时,光电开关就产生了开关量信号。槽式光电开关比较适合检测高速运动的物体,并且它能分辨透明与半透明物体,使用安全可靠。(5)光纤式光电开关:它采用塑料或玻璃光纤传感器来引导光线,可以对距离远的被检测物体进行检测。通常光纤传感器分为对射式和漫反射式。 本课题中使用的光电开关是根据光敏二极管工作原理制造的一种感应接收光强度变化的器件,当它发出的光被目标反射或阻断时,则接收器感应出相应的电信号。它包含调制光源,由光敏元件等组成的光学系统、放大器、开关或模拟量输出装置,其工作原理如图5所示。光电式传感器由独立且相对放置的光发射器和收光器组成。当目标通过光发射器和收光器之间并阻断光线时,传感器输出信号。它是效率最高、最可靠的检测装置。槽形(U形)光电开关是对射式的变形,其优点是无须调整光轴。 图5 光电传感器原理图3.2主控单元如下图所示,X1为12MHz的晶振,9口为复位接口,通过开关控制。用于测量转速的脉冲通过P3.5/T1输入单片机,用AT89S52的定时计数器T1对脉冲信号进行计数,用定时计数器T0进行定时,每10ms产生一个中断对1602LCD液晶显示屏进行刷新,产生100个中断后(即1s),进行一次转速处理,再通过单片机对T1的脉冲数进行运算转换后,用1602LCD液晶显示屏显示电机的转速。如图8所示: 图8 AT89S52单片机处理电路3.2.1 时钟电路 单片机各功能部件的运行都是以时钟控制信号为基准,有条不紊地一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。本设计中此采用内部时钟方式,如图9所示,以石英晶体振荡器和两个片电容组成外部振荡源。片内的高增益反相放大器通过XTAL1、XTAL2外接,作为反馈元件的片外晶体振荡器与电容组成的并联谐振回路构成一个自激振荡器,向内部时钟电路提供振荡时钟。振荡器的频率取决于晶振的振荡频率,振荡频率范围为1.212MHz。工程应用时通常采用6MHz或12MHz。图中X1为12MHz,电容C2、C4为33pF,它们一起构成此单片机的自激振荡器。图9 时钟电路连接图3.2.2 复位电路单片机的RST引脚为复位(Reset)端。当单片机振荡器工作时,该引脚上出现持续两个机器周期的低电平,就可以实现系统复位,使单片机回到初始状态。如图10所示,本设计采用手动复位,用一个电容与一个10K电阻串联组成,电阻接VCC,电容接地,RESET脚接在它们中间,RC选择10uF,按键与200R电阻串联,在电容两端并联,就成了按键复位电路,未上电时,RST端为高电平,只要按下这个按键,RST端转换为低电平,经过两个机器周期后,单片机就能复位。图10 AT89S52单片机处理电路3.2.3 AT89S52单片机介绍 AT89S52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 主要性能(1)与MCS-51单片机产品兼容(2)8K字节在系统可编程Flash存储器(3)1000次擦写周期(4)全静态操作:0Hz33Hz(5)三级加密程序存储器(6)32个可编程I/O口线(7)三个16位定时器/计数器(8)八个中断源(9)全双工UART串行通道(10)低功耗空闲和掉电模式(11)掉电后中断可唤醒(12)看门狗定时器(13)双数据指针(14)掉电标识符 引脚功能图11 AT89S52引脚图VCC : 电源GND : 地P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在 flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。引脚号 第二功能P1.0 :T2(定时器/计数器T2的外部计数输入),时钟输出P1.1 :T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5 :MOSI(在系统编程用)P1.6 :MISO(在系统编程用)P1.7 :SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用。在flash编程和校验时,P3口也接收一些控制信号。引脚号第二功能P3.0 RXD(串行输入)P3.1 TXD(串行输出)P3.2 INT0(外部中断0)P3.3 INT0(外部中断0)P3.4 T0(定时器0外部输入)P3.5 T1(定时器1外部输入)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器写选通)RST: 复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当 AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。3.2.4 定时与计数设计根据设计需要选择方式1比较合适,当M1、M0为01时,定时器/计数器工作于方式1,这时定时器/计数器的等效电路如图6所示:图6 定时/计数器方式1逻辑结构框图此时,定时/计数器为16位的计数器,由TLX(X=0,1)的低5位和THX的高8位组成。TLX低5位溢出则向THX进位,THX计数溢出则置位TCON中的溢出标志位TFX。系统选择定时/计数方式1,以T1作为计数器对光电开关产生的脉冲进行计数,用T0作为定时器,每10ms产生一定时中断对1602LCD液晶显示屏进行刷新,产生100次中断后,对T1接受到的脉冲数进行计算处理,得出转速。(1)用于定时工作方式,其定时时间为: T=(216-t1的初值)振荡周期12此设计采用的是12MHz的晶振,定时器T0定时为10ms,将参数带入公式 :t1=65536-10000=55536;换成十六进制,则t1=0xd8f0 ; 所以对于定时器T0有,TMOD = 0x01;TH0 = 0xd8;TL0 = 0xf0;(2)用于计数工作方式,计数长度为: 216=65536(个外部脉冲)由此可知规定时间(1s)内外部脉冲个数不超过65536即可。定时/计数器的结构定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。定时/计数器结构如图7所示: 图7 定时/计数器结构定时/计数器的控制AT89S52单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。1.工作方式寄存器TMOD工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下:表1 工作方式寄存器TMOD格式GATE:门控位。GATE0时,以运行控制位TRX(X=0,1)来启动定时/计数器运行;GATA1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作;C/T计数器模式和定时器模式选择位C/T=1时,选择计数器模式,计数器对外部输入引脚T0(P3.4)或T1(P3.5)的外部脉冲计数;C/T=0时,选择定时器模式。M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。表 2 M1M0工作方式2.控制寄存器TCON TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下:表 3 控制寄存器TCON格式位76543210字节地址:88HTF1TR1TF0TR0TCONTF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。TR0(TCON.4):T0运行控制位,其功能与TR1类同。中断控制CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。表4 位76543210字节地址:88HEAESET1EX1ET0EX0IE EX0(IE.0),外部中断0允许位; ET0(IE.1),定时/计数器T0中断允许位; EX1(IE.2),外部中断0允许位; ET1(IE.3),定时/计数器T1中断允许位; ES(IE.4),串行口中断允许位; EA (IE.7), CPU中断允许(总允许)位。3.3 显示单元3.3.1 LCD原理 各种图形的显示原理 线段的显示:点阵图形式液晶由MN个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共168=128个点组成,屏上6416个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。 字符的显示:LCD显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。 汉字的显示:字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5右边为2、4、6根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节直到32B显示完就可以LCD上得到一个完整汉字 。本设计选用了1602型LCD。字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图。图12 1602LCD的基本参数及引脚功能 1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图图13 1602LCD分为带背光和不带背光(1)LCD1602主要技术参数: 显示容量:162个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm(2)引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表表5 引脚接口说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。3.3.2 液晶显示模块电路 图14是液晶模块LCD1602与单片机的接口电路。液晶模块的1脚和2脚分别接入电源的地和电源。310脚分别接单片机的8个P2口。11、13脚接单片机P3.0、P3.2,12脚接地,表示LCD的使能,是读取还是写入信号,是传输数据还是将指令由单片机内部程序作用实现。14脚通过一个10K可调电阻接地,使得LCD的显示的对比度适中,防止由于对比度过高产生“鬼影”。图14 1602液晶显示模块电路原理图4 软件设计4.1 语言的选用 本设计中采用的处理器是AT89S52单片机,由此可采用面向MCS-51的程序设计语言,包括ASM51汇编语言和C51高级语言,这两种语言各有特点。汇编语言更接近机器语言,常用来编制与系统硬件相关的程序,如访问I/O端口、中断处理程序、实时控制程序、实时通信程序等;而数学运算程序则适合用C51高级语言编写,因为用高级语言编写运算程序可提高编程效率和应用程序的可靠性。 C语言是一种通用的计算机程序设计语言,在国际上十分流行,它即可用来编写计算机系统程序,也可以用来编写一般的应用程序。以前计算机的系统软件主要是用汇编语言编写的,对于单片机应用系统来说更是如此。由于汇编语言程序的可读性和可移植性都较差,采用汇编语言编写单片机应用程序的周期长,而且调试和排错也比较困难。C语言具有很好的可移植性和硬件控制能力,表达和运算能力也较强。它具有以下特点:1 语言简洁,使用方便灵活。2 可移植性好。3 表达能力强。4 表达方式灵活。5 可进行架构化程序设计。6 可以直接操作计算机硬件。7 生成的目标代码质量高。为了提高编制计算机系统和应用程序的效率,改善程序的可读性和可移植性,在此采用高级语言编程。4.2 程序设计流程图本系统用计数程序采集信号脉冲,用定时器产生中断,对1602LCD液晶显示屏刷新和缓冲区数据进行更新,辅以1602LCD液晶显示屏进行显示。计数程序流程如图15;定时显示程序流程如图16。开始初始化计数器T1计数脉冲Flag_clac=1? N按公式:转速=60*脉冲数/(齿轮数*T)计算数据 数据缓冲区 图15 脉冲计数程序流程图程序说明:将定时器设置为方式1,对外部脉冲进行计数,并判断Flag_clac的值。当Flag_calc=1时,将脉冲的数值由十六进制转换成十进制,按转速转换公式转换后,载入数据缓冲区。初始化定时10ms?T=500?Flag_clac=1数据缓冲区显示时间计数清零T=0产生定时中断开始时间计数T+ N Y 图16 定时显示程序流程图程序说明:定时器设置为方式1,定时10ms。当定时达到10ms时,产生中断,对1602LCD液晶显示屏进行刷新,显示转速,并使时间计数标志T加1。当时间计数标志T=500时,使Flag_calc置1,取出计数器在此时间内计算的脉冲数,通过转速计算程序计算得出转速值后,存入数据缓冲区,供1602LCD液晶显示屏显示使用。5 系统仿真与电路调试5.1 系统仿真系统结合Keil uVersion3.0和伟福进行编译,通过Proteus来仿真。5.1.1 程序编译与以往的80C51单片机不同,AT89S52具有在线调试和下载功能,它由支持AT89S52的开发工具包Keil uVersion2.0开发系统来提供。也就是说,在用户系统保留AT89S52的情况下,通过开发系统与AT89S52的串行接口通信,直接对用户系统进行调试,并在调试完成后将调试好的程序下载到AT89S52中。Keil uVersion3.0开发系统提供四项功能:编译、下载、调试和模拟,分别由Keil uVersion2.0提供的编译器、在线串行下载器、调试器和模拟器来实现。Keil uVersion2.0编译器可在Windows操作系统下直接使用,编译C语言源程序,并生成16进制文件和列表文件。调试器采用Windows系统,允许用户使用AT89S52的UART串行接口在芯片上调试代码执行。在典型调试对话中,调试器提供对片内所有外围设备的访问、单步和设置断点的代码执行控制方式。模拟器采用Windows系统,能完全模拟AT89S52的所有功能。模拟器使用简单,结合了许多标准调试特征,包括多断点、单步以及代码执行跟踪等能力。同样伟福仿真器是国内较好的仿真器之一,它能够仿真的CPU品种多、功能强。通过更换仿真头POD,可以对不同的CPU进行仿真。可仿真51系列,196系列,PIC系列,飞利蒲公司的552、LPC764、DALLAS320,华邦438等51增强型CPU。由于伟福编译过程没有Keil uVersion2.0那么繁琐,能对程序进行直接编译,省去了建立和设置工程等步骤,使用方便、快捷。所以本设计以Keil uVersion2.0为基础,运用伟福来编译程序。5.1.2 电路仿真仿真部分运用Proteus仿真软件来实现,Proteus 软件是一款强大的单片机仿真软件,它除了具有和其他工具一样的原理编辑、印制电路板(PCB)自动或人工布线及电路仿真外,最大的特色是其电路仿真是交互的、可视化的。对于单片机学习和开发帮助极大。Proteus ISIS 是英国Lab center 公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和数字集成电路,包括单片机。通过Proteus可以绘制硬件原理图,并设置元件参数;为单片机及其程序以及外部接口电路的仿真提供可能,验证设计的可行性与合理性;还可以为连接实际的硬件电路做好准备;如有必要时,可以利用它来设计电路板。5.2 电路调试通过叶片在对射式传感器间转动,得到光电开关产生脉冲信号,再经过脉冲信号处理电路,输入单片机的T1外部脉冲计数口(即P3.5口),由单片机处理得出转速后,连接4连1602LCD液晶显示屏显示转速。对电机的转速进行测量,以单片机为核心对光电开关产生的数字信号进行运算,从而测得电机的转速,然后用1602LCD液晶显示屏把电机的转速显示出来。即通过光电开关将电机的转数转换成0,1的数字量,只要转轴每旋转一周,产生一个或固定的多个脉冲,并将脉冲送入单片机中进行计数和计算,就可获得转速的信息,实物图如下。图17 实物图 图17中1602LCD液晶显示屏上有两组数字,上排为转速,如图7n/s,下排为预设值,如图是8/s,如转速小于预设值,则蜂鸣器不会报警,反正成立,如图18图18 实物图图19实物图6 小结 本设计采用光电开关测速法,利用对射式光电开关采集转速信号,通过信号处理电路得到适合的脉冲后,输入单片机进行处理、计算,得出实际的转速值,辅以1602LCD液晶显示屏显示。此系统实现了设计的要求:(1)光电开关与电机转换平台简单适用(2)采集电路能实时采集转速信息(3)单片机处理系统运算快速简单,程序可读性强,条理分明,能形成独立模块以便于其他类似系统的计算(4)1602LCD液晶显示屏为主体的人机界面能准确显示速度值 本设计存在的问题:(1)系统选择位数最多的定时/计数器工作方式1(为16位),但仍有其局限性。此计数器的最大计数脉冲数为63336(216),若每秒钟计算一次,则当1秒内外部脉冲的输入数超过65536个时,计数器会溢出,从而产生中断,使得测出的转速值小于实际的转速值。根据转速计算方法(若转盘齿数为10),Vmax=65536*60s/(10*1)=39321r/min,所以本系统不能测量范围不能超过此值。(2)通过T1计数时,单片机每读取一个脉冲至少需要3个机器周期的时间来完成。本系统采用的晶振为12MHz,所以一个机器周期Tcy=12/f=1us。若要使单片机准确读取外部脉冲,则脉冲的输入周期不能超过3us。如此可计算(转盘齿数为10),系统能测量的转速需低于:Vmax=60s/(3us*10)=6000000r/min。(3)此外,光电开关的反应速度也会对转速测量值的大小产生影响。若转速过快,则光电开关来不及处理,这样会造成测速不准,甚至测不出数值。针对存在的问题,可以采取以下方法改进:(1)采用时钟频率更高、定时/计数器位数更多的单片机来处理脉冲,现某些高速单片机可达到40MHz的处理速度,可以大大提高测速范围。(2)应用反应速度更快的传感器来做光电开关。现在高速光电开关的响应速度可达到0.1ms,每分钟可进行30万次检测操作,这样就能检出高速转动的微小物体。综上所述,在测速过程中,虽然由于硬件的缘故,未能实现对高速的测量,但本装置结构简单、实用,在降低测速器成本,提高测速稳定性及可靠性等方面有一定价值,而且可以达到一般工业测速的测量标准,具有广泛的前景。附录1 原理图 附录2 源程序#include#include#define uchar unsigned char#define uint unsigned intsbit lcden=P26;/定义1602使能端sbit lcdrs=P24;sbit lcdrw=P25;sbit a=P10;/对射传感器的信号输出端sbit add=P34;/按键加一变量sbit jian=P35;/按键减一变量sbit bj=P23;/蜂鸣器端口char zhuan16;/设置临时数组uint num2;/每秒的转速uint number=7;/设定转速的初值,在其基础上按键加一或按键减一uint num=0;/转数变量void Init_Timer0(void);void delay(uint z)/延迟函数uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)/1602写命令lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)/1602写数据lcdrs=1;lcden=1;P0=date;delay(5);lcden=0;void LCD_Write_String(uchar x,uchar y,uchar *s) /向1602写字符串 if (y = 0) write_com(0x80 + x); /表示第一行 else write_com(0xC0 + x); /表示第二行 while (*s) write_date( *s); s+; void LCD_Write_Char(uchar x,uchar y,uchar Data) /向1602写字符 if (y = 0) write_com(0x80 + x); else write_com(0xC0 + x); write_date( Data); void init()/初始化bj=0;/蜂鸣器初始化write_com(0x01);/1602初始化lcdrw=0;lcden=0;write_com(0x38);write_com(0x0e);write_com(0x06);LCD_Write_Char(13,0,n);LCD_Write_Char(14,0,/);LCD_Write_Char(15,0,s);LCD_Write_Char(13,1,n);LCD_Write_Char(14,1,/);LCD_Write_Char(15,1,s);void main()init();while(1)if(a=1)/对射传感器检测障碍物 num+;/计转数 while(a);sprintf(zhuan,zhuansu%2d,num); LCD_Write_String(0,0,zhuan);Init_Timer0();/定时1ssprintf(zhuan,zhuansu %2d,num2);/输出一秒的转速 LCD_Write_String(0,0,zhuan);if(num2=number)/转速超过设定值报警bj=1;if(num2number)/转速不超过设定值报警bj=0;if(!add) /按下相应的按键,1602LCD液晶显示屏显示相应的码值 delay(5); if(!add) number=number+1;sprintf(zhuan,yushe %7d,number);/打印温度值 LCD_Write_String(0,1,zhuan);/显示第二行 while(!add); if(!jian) /按下相应的按键,1602LCD液晶显示屏显示相应的码值 delay(5); if(!jian) number-; sprintf(zhuan,yushe %7d,number);/打印温度值 LCD_Write_String(0,1,zhuan);/显示第二行 while(!jian); void Init_Timer0(void) TMOD |= 0x01; /使用模式1,16位定时器,使用|符号可以在使用多个定时器时不受影响 /TH0=0x00; /给定初值 /TL0=0x00; EA=1; /总中断打开 ET0=1; /定时器中断打开 TR0=1; /定时器开关打开/*- 定时器中断子程序-*/void Timer0_isr(void) interrupt 1 static unsigned int num1; TH0=(65536-2000)/256; /重新赋值 2ms TL0=(65536-2000)%256; num1+; if(num1=500) /计时1s num1=0;num2=num; num=0; /读标志位置1
展开阅读全文