摘 要
随着科技的迅速发展,单片机的应用也越来越广泛,并带动传统控制检测技术不断更新。现在的车速表大多是电子式的,用LED数码管或LCD即时显示,显示更加直观。电子式车速表采用接触车速传感器代替软轴传动,可使车速表的安装位置不受距离,进一步有效地克服了机械式车速表中的诸多不足。
本次设计给出了以ATS51为核心,利用单片机的运算和控制功能,并采用系统化LCD显示模块实时显示所测速度的设计方案以及系统软件。
该方案由于使用了LCD显示模块,以及高效快速算法,因而可在节约系统资源和简化程序设计的基础上保证测量精度和系统实时性 。速度显示部分采用LCD显示, 因而节省了所需单片机的口线和外围器件, 同时也简化了显示部分的软件编程。案实现了电动车速度即时显示。
关键词:单片机;霍尔传感器;LCD显示
I
毕业设计(论文)说明书
Abstract
Along with the quick development of science and technology, the application of SCM and more extensive, drive traditional control test technology constantly updated. Now the speed table is mostly
electronic, use LED digital tube or LCD instantly shows, show more intuitive. Electronic speed table by using the contact speed sensor
instead of soft shaft transmission speed table, can make the installation position of not affected by distance limit, further effectively overcome the speed to the table of mechanical some shortcomings.
This design is given based on ATS51 as the core, of the
microcontroller calculation and control function, and by using the
systematic LCD display module real-time display measured the speed of design program and system software.
The scheme by using LCD display module, and quick and efficient algorithm, thus in saving system resources and simplify programming based on guarantee measuring precision and real-time system. Speed shows part adopts LCD display, thereby saving the required
microcontroller mouth lines and peripheral equipments, simultaneously also simplifies shows part of the software programming. Case realized the electric car speed instantly shows.
Keywords: SCM, Hall sensors; LCD display
II
毕业设计(论文)说明书
目 录
摘 要 ....................................... I Abstract ..................... 错误!未定义书签。 1 引 言 ....................................... 1 1.1 选题背景 ................................ 1 1.2 研究意义 ................................ 1 1.3 研究内容 ................................ 2 2 总体设计方案 ................................ 3 3 系统单元模块概述 ............................ 4 3.1 传感器选择 .............................. 4 3.2 单片机选型 .............................. 7 3.3 显示模块选型 ............................ 9 3.4 速度算法概述 ........................... 12 4 系统硬件设计 ............................... 17 4.1 单片机的外部结构-引脚功能错误!未定义书签。 4.1 液晶显示电路的原理与设计 ............... 17 4.1霍尔传感器电路的设计 ... 错误!未定义书签。 4.1.3 晶振电路 ........... 错误!未定义书签。 4.3 数据处理过程 ........................... 35 5 系统仿真与分析 ............................. 37 5.1仿真结果 ............................... 37 5.2仿真分析 ............................... 37 6 系统软件设计 ............................... 38 6.1 系统软件总流程图 ....................... 38 6.2 速度处理子程序 ......... 错误!未定义书签。 6.3 显示子程序 ............. 错误!未定义书签。 7 总结与展望 ................................. 40
III
毕业设计(论文)说明书
致 谢 ....................................... 41 参考文献 ..................................... 42 附录A 程序清单 ............................... 43 附录B 电路图 ................................. 51
IV
1 引 言
1.1 选题背景
在全球倡导绿色环保的大趋势下,我国加大了对车辆排放和噪声的管理,由于电动自行车具有无污染、低噪声和轻便快捷等优点,是一种绿色环保的交通工具。随着我国城市规模的迅速扩大及农村道路的日益改善,长期依靠脚踏自行车的人们将会把目标转向电动自行车,对电动自行车需求也会越来越大。人们对环境的关注以及相关技术的更新,有力地促进了电动自行车的发展。
我国电动车的研究相比欧美国家起步较晚。直到上个世纪90年代中期,我国才掀起开发研究的高潮,但主要集中在上海、北京、广东等地,到90年代后期基本覆盖全国主要经济发达地区如江苏、浙江、山东等省。虽然我国电动车研究起步晚,但从技术角度来看,我们并不落后于世界。我国电动自行车产业基本保持与世界同步发展水平。 1.2 研究意义
传统的机械式车速表是由旋转磁场作用于转动盘,使转动盘连同车速表指针发生同向的偏转。当电磁转矩与弹簧产生的阻力矩平衡时,指针偏转停留在某一角度上。指针偏转角与车速成正比,因而可用其表示车速。
机械式车速表的缺陷是明显的。由于表盘指针偏转程度正比于软轴的转动时产生的磁力,当转速较低的时候,磁力较小,随转速变化波动较大。因此,低速时车速表指针摆动剧烈、测量及显示精度不高。对于发动机后置的车辆,要将车速表指针的偏转动力由变速箱经软轴等传至驾驶室,软轴
1
必然布置的较长,如何将这种长长的转动软轴从结构上布置妥当,肯定是一件十分困难的事情。
现在的车速表大多是电子式的,用LED数码管或LCD显示,使速度显示更加直观。采用接触车速传感器代替软轴传动,可使车速表的安装位置不受距离,有效地克服了机械式车速表中的诸多不足。
电子式车速表更加智能,车速表的功能也更加人性化,如加上了里程累计、超速提醒等功能。 1.3 研究内容
本设计以ATS51为核心,通过霍尔传感器来检测自行车的运转情况进而实现电动自行车的速度,最后用LCD能直观的将速度显示给用户,从而弥补了机械式的缺点。
主要研究内容: 1.传感器电路模块设计 2.显示电路设计 3.掉电保护电路设计 4.单片机外围电路的设计 5.模拟自行车转速设计
2
2 总体设计方案
本速度里程表由信号预处理电路、ATS51单片机、LCD显示电路和系统软件组成。速度显示采用LCD显示模块, 所得的数据直接传送到单片机, 因而节省了所需单片机的口线和外围器件, 同时也简化了显示部分的软件编程。
系统软件包括单片机和液晶模块的初始化模块、液晶模块的写数据/ 命令子模块、周期测量模块、速度里程计算模块、数据存储模块、速度和里程显示数据转BCD 码模块、显示数据消多余零模块、数据显示模块以及实时中断服务模块等。
该设计能实时地将所测的速度显示出来。该速度表能将传感器输入到单片机的脉冲信号的宽度(传感器将车速转变成相应宽度的脉冲信号) 实时地测量出来,然后通过单片机计算出速度, 再将所得的数据存储到串口数据存储器, 并由LCD显示模块实时显示出所测速度。设计时, 应综合考虑测速精度和系统反应时间。本设计用测量脉冲频率来计算速度, 因而具有较高的测速精度。为了保证系统的实时性, 系统的速度转换模块和显示数据转BCD 码模块都采用快速算法。另外, 还应尽量保证其它子模块在编程时的通用性和高效性。本设计的速度和里程值采用LCD显示。系统方框图如图2-1所示。
3
霍尔传感 器 信号传输 单片机 ATS51 LCD显示 电源
图2-1 系统方框图
3 系统单元模块概述
3.1 传感器选择
方案一、光电传感器。
光电传感器是应用非常广泛的一种器件,各种各样的形式,如透射式、反射式等,基本原理就是当发射管光照射到接收管时,接收管导通,反之关断。以透射式为例,如图3-1所示,当不透光的物体挡住发射与接收之间的间隙时,开关管关断,否则打开。为此可以制作一个遮光叶片如图3-2所示,安装在转轴上,当扇叶经过时,产生脉冲信号。当叶片数较多时,旋转一周可以获得多个脉冲信号。
图3-1 光电传感器的原理图
4
图3-2 遮光叶片
将光敏电阻安装在自行车前又的一侧,在同等高度的另一侧安上一个高亮度的发光二极管。在同等高度的辐条上贴上一圈黑色材料,并在黑色材料上打上等间距的小孔,这样当小孔经过光敏电阻时,光敏电阻根据光电流的变化发出脉冲, 从而测量里程。
方案二、光电编码器
光电编码器的工作原理与光电传感器一样,不过它已将光电传感器、电子电路、码盘等做成一个整体,只要用连轴器将光电传感器的轴与转轴相连,就能获得多种输出信号。它广泛应用于数控机床、回转台、伺服传动、机器人、雷达、军事目标测定等需要检测角度的装置和设备中。如图3-3所示,是某光电编码器的外形。
图3-3 成品光电编码器
将旋转编码器安装在车轴上,这样每当车轮转过一定的距离编码器就会发出一个脉冲。利用脉冲数对里程进行测量。
方案三、霍尔传感器
霍尔传感器是对磁敏感的传感元件,常用于开关信号采
5
集的有CS3020、CS3040、A04E等,这种传感器是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,输出通常是集电极开路(OC)门输出,工作电压范围宽,使用非常方便。
图3-4 霍尔元件和磁钢实际图
使用霍尔传感器获得脉冲信号,其机械结构也可以做得较为简单,只要在转轴的圆周上粘上一粒磁钢,让霍尔开关靠近磁钢,就有信号输出,转轴旋转时,就会不断地产生脉冲信号输出。如果在圆周上粘上多粒磁钢,可以实现旋转一周,获得多个脉冲输出, 单片机根据脉冲数来计算里程。霍尔元件和磁钢如图3-4所示。在粘磁钢时要注意,霍尔传感器对磁场方向敏感,粘之前可以先手动接近一下传感器,如果没有信号输出,可以换一个方向再试。这种传感器不怕灰尘、油污,在工业现场应用广泛。
光敏电阻对光特别敏感,当白天行驶时,外界光敏电阻对光特别敏感,当白天行驶时,外界光源导致光敏电阻发出错误信号;光敏电阻对环境的要求相当高,如果光敏电阻或发光二极管被泥沙或灰尘所覆盖,光敏电阻就不能再进行测量;在雾天和雨天光敏电阻的测量的效果也不好。而编码器必须安装在车轴上,这样安装就会给用户带来很多不便。霍
6
尔元件不受天气的影响,即便被泥沙或灰尘覆盖对测量也不会有任何影响。由霍尔元件加整形电路构成的霍尔开关系统,具有输出响应快,数字脉冲性能好,安装方便,性能可靠,不受光线、泥水等因素影响,价格便宜的优点。所以本设计采用方案三霍尔传感器。(型号A441) 3.2 单片机选型
ATS51/LS51单片机是低功耗的、具有4KB在线课编程Flash存储器的单片机。它与通用80C51系列单片机的指令系统和引脚兼容。片内的Flash可允许在线重新编程,也可使用非易失性存储器编程。他将通用CPU和在线可编程Flash集成在一个芯片上,形成了功能强大、使用灵活和具有较高性能性价比的微控制器。 ATS51/LS51具有如下特性:
--片内程序存储器含有4KB的Flash存储器,允许在线编程,檫写周期可达1000次;
--片内数据存储器内含128字节的RAM; --I/O口具有32根可编程I/O线; --具有两个16位I/O线;
--中断系统具有6个中断源、5个终端矢量、2个中断优先级的中断结构;
--串行口是一个全双工的串行通信口;
7
--具有两个数据指针DPTR0和DPTR1; --低功耗节电模式有节电模式和掉电模式; --包含3级程序锁定位;
--ATS51的电源电压为4.0-5.5V,ATLS51的电源电压为2.7-4.0V;
-振荡器频率0-33MHz(ATS51),0-16MHz(ATLS51); --具有片内看门狗定时器;
--灵活的在线片内编程模式(字节和页编程模式); --具有断电标志模式POF;
S51 相对于C51 增加的新功能包括:
-- 新增加很多功能,性能有了较大提升,价格基本不变,甚至比C51 更低!
-- ISP 在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作 环境中剥离。是一个强大易用的功能。
-- 最高工作频率为33MHz,大家都知道C51 的极限工作频率是24M,就是说S51 具有更 高工作频率,从而具有了更快的计算速度。 -- 具有双工UART 串行通道。
8
-- 内部集成看门狗计时器,不再需要像C51 那样外接看门狗计时器单元电路。 -- 双数据指示器。 -- 电源关闭标识。
-- 全新的加密算法,这使得对于S51 的解密变为不可能,程序的保密性大大加强,这样
就可以有效的保护知识产权不被侵犯。
-- 兼容性方面:向下完全兼容51 全部字系列产品。比如8051、C51 等等早期MCS-51 兼
容产品。也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051 还
是C51 还是MCS-51 等等),在S51 上一样可以照常运行,这就是所谓的向下兼容。
3.3 显示模块选型
单片机系统中常用的显示器有:发光二极管LED显示器、液晶LCD显示器等。在这里由于单片机测速系统比较简单,所以直接选用了LCD显示器。
方案一 LED静态显示器。
静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用
9
CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。
方案二、LED动态显示器。
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
方案三、用液晶显示器LCD显示信息。
LCD显示器工作原理就是利用液晶的物理特性;通电时排列变得有序,使光线容易通过;不通电时排列混乱,阻止光线通过,说简单点就是让液晶如闸门般地阻隔或让光线穿透。 LCD的好处有:与CRT显示器相比,LCD的优点主要包括零辐射、低功耗、散热小、体积小、图像还原精确、字符显示锐利等。
在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。
在单片机系统中应用晶液显示器作为输出器件有以下几个优
10
点: 显示质量高
由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。
数字式接口,液晶显示器都是数字式的,和单片机系统的
接口更加简单可靠,操作更加方便。 体积小、重量轻 液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。功耗低,相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。所以我们在这个系统中采用动态LCD。(型号1602)
图 3-5 LCD1602实物图
11
3.4 速度算法概述
速度测量是工控系统中最基本的需求之一,最常用的是用数字脉冲测量某根轴的转速,再根据机械比、直径换算成线速度。脉冲测速最典型的方法有测频率(M法)和测周期(T法)。
M法是测量单位时间内的脉数换算成频率,因存在测量时间内首尾的半个脉冲问题,可能会有2个脉的误差。速度较低时,因测量时间内的脉冲数变少,误差所占的比例会变大,所以M法宜测量高速。如要降低测量的速度下限,可以提高编码器线数或加大测量的单位时间,使用一次采集的脉冲数尽可能多。
T法是测量两个脉冲之间的时间换算成周期,从而得到频率。因存在半个时间单位的问题,可能会有1个时间单位的误差。速度较高时,测得的周期较小,误差所占的比例变大,所以T法宜测量低速。如要增加速度测量的上限,可以减小编码器的脉冲数,或使用更小更精确的计时单位,使一次测量的时间值尽可能大。
本系统采用多倍周期法。M法、T法各且优劣和适应范围,编码器线数不能无限增加、测量时间也不能太长(得考虑实时性)、计时单位也不能无限小,所以往往候M法、T法都无法胜任全速度范围内的测量。因此产生了M法、T法结合的多倍周期法:低速时测周期、高速时测频率。
当车轮转动时,霍尔元件输出连续脉冲信号,此时的车速计算就是将脉冲频率转换为车轮的转速。目前,常用的转速计算方法有以下几种:频率法、周期法和多倍周期法。在总结多倍周期法的计算原理,分析计算误差的基础上,提出了一种新的转速计算方法---转速计算的精度自适应方法。这
12
种方法在保证各频带转速计算精度的同时,也能满足本系统检测的实时性的要求,较好地克服了传统转速计算方法的局限性。
轮速V计算公式见式(3-1):
V=(2r/z) f (3-1)
式中r——滚筒半径;z——磁片数量;f——转速脉冲频率。对于确定的系统,2r/z为常数,所以车速计算的误差分析转换成转速输出脉冲频率的误差分析。
对于转速低频测量,周期法有较高的精度,而对于转速高频测量,频率法有较高精度。因此如果把周期法与频率法结合起来,采用转速脉冲周期倍乘的措施,可以展宽转速测量范围,提高测量精度。这就是多倍周期法。转速脉冲信号按固定分频数进行分频,使得被测周期得到倍乘,计算转速脉冲频率f:
f
1T1m1m1T1m1T
(3-2)
式中m—周期倍乘数;
1T1 —实际转速输出脉冲信号的周期;
T—m分频脉冲周期。
1在实际的软件实现过程中,m分频脉冲周期T总是换算
1成N 个时标信号周期进行计算,这时可认为T0N0,代入
式(2-2)有:
fm1N0
13
(3-3)
由于采用转速周期倍乘措施,这样所测得的Nm11N/m1.为
个转速脉冲周期的平均值。由于每个转速脉冲周期都存在
1着T的误差,如磁片在滚筒端面的圆周边缘分布不均匀等,
T1有正有负,所以取m1个转速周期的平均值的误差必然小于
单个周期的误差,从而提高了转速测量的精度。转速计算多倍周期法对于不同转速频率范围都能达到很高的测量精度。但是,由于这种方法对低频转速脉冲信号进行了倍乘,所以,多倍周期法在提高高额转速计算精度的同时,拉大了低频转速计算的时间间隔,从而降低了低速检测时的实时性。具体测量原理如图3-5所示。
T1转速脉冲TmT1分频脉冲0时标脉冲N0
图3-6 多倍周期法测量原理图
此方法是以多倍周期法为基础,并结合转速的计算精度和检测的实时性的要求设计完成的。这种方法和多倍周期法的区别在于多倍周期法的转速脉冲倍乘数m为固定值,造成
1了低速计算实时性差的歃点,而精度自适应方法则克服了这一缺点,在保证高速、低速计算精度的同时,很好地保证了低速检测的实时性。此方法关键是式(3-2)中m值的选取,须
1
14
根据精度的要求和时间等条件来确定。首先,为保证检测的实时性,设定最大的测试周期为T,由时问条件可
m以确定m的上限值为:
1m1TmT1
(3-4)
然后,根据精度要求的条件,可求出m的下限值。
1由式(3-3)可得:
df
f(dNNd00)
(3-5)
由式(3-5)可知,测量误差来自两部分:一部分是时标信号脉冲计数误差d/N,这种误差即±1字误差,此时dN=士1;
N另一部分为时标精度误差d0/0,这是一种常值误差,通常单
6片机用晶体振荡器定时,d精度相当高,保证在10以下,
0所以此项误差一般可以忽略。根据以上分析,误差主要来自时标信号脉冲计数误差,即:
dffdNNdNm1T10m1T1
若精度要求为a%,即:
0 (3-6)
df fa%
(3-7)
15
m11000aT1 (3-8)
1综合式(3-4)和式(3-8),即可确定m值:
1000m1TmT1
aT1 (3-9)
在实际计算过程中,以每个测试周期中的第一个转速周期T作为求解m值的试算脉冲。得到m的下限值,再由测试
111周期计算出m的上限值,从中取一个合适的整数值,作为当
1前测试周期内的转速脉冲分颓值 由于固定转速计算精度,所以转速越高,m值越大,转速越低,m值越小。这样,既保
11证了转速计算精度,又提高了低速检测的实时性。
。由于T在具体的检测系统中是已知的,由式(3-4)可知,
1求
m1的上限值只须求出此测试周期内T的值。利用
1ATC2051单片机中的定时器/计数器T。的门控位GATE测量INTO(P3.2)引脚上出现的转速脉冲宽度.T的值即为转
1速脉冲宽度的2倍。同理,利用T的值可求出m的下限值。
11然后再用插值法从下限值和上限值得到一个整数值.即为当前测试周期内的分频值。求出m值后,再按多倍周期法的转
1速计算公式,利用ATS51单片机的定时器/计数器在mT时
1间内,对时标脉冲进行计数,其值为N,这样即可精度自适应方法的软件设计关键在于计算出每个测试周期内的m的值
1求出车速
16
4 系统硬件设计
4.1 单片机的功能及其引脚
51系列单片机8031、8051及c51/s51均采用40Pin封装的双列直接DIP结构。上图是它们的引脚配置:40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:
图4-1单片机(ATS51)外观 (2) 单片机(ATS51)的引脚功能图
17
图4-2单片机(ATS51)的引脚功能图 1、电源引脚
Vcc 40脚 正电源脚,工作电压为5V,另有ATLV51工作电压则是2.7-6V, 引脚功能一样。 GND 20 接地端
18
2.外接晶体引脚
Pin19:时钟XTAL1脚, Pin18:时钟XTAL2脚,
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF左右。
型号同样为ATC51的芯片,在其后面还有频率编号,有12,16,20,24MHz可选。大家在购买和选用时要注意了。如ATC51 24PC就是最高振荡频率为24MHz,40P6封装的普通商用芯片。 3.复位 RST 9
在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个脚
19
保持高电平,51芯片便循环复位。复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的0000H处开始运行程序。常用的复位电路如下图所示。
复位操作不会对内部RAM有所影响。当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。什么叫复位?复位是单片机重新执行程序代码的意思。
8051的复位方式可以是自动复位,也可以是手动复位,见下图。此外,RESET/Vpd还是一复用脚,Vcc掉电期间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
20
输入输出(I/O)引脚:
Pin39-Pin32为P0.0-P0.7输入输出脚,称为P0口,是一个8位漏极开路型双向I/O口。内部不带上拉电阻,当外接上拉电阻时,P0口能以吸收电流的方式驱动八个LSTTL负载电路。通常在使用时外接上拉电阻,用来驱动多个数码管。在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,不需要外接上拉电阻。
Pin1-Pin8为P1.0-P1.7输入输出脚,称为P1口,是一个带内部上拉电阻的8位双向I/0口。P1口能驱动4个LSTTL负载。通常在使用时外不需要外接上拉电阻,就可以直接驱动发光二极管。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
4.其它的控制或复用引脚
(1) ALE/PROG 30 访问外部存储器时,ALE(地址锁存允许)
21
的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率输出脉冲信号(此频率是振荡器频率的1/6)。在访问外部数据存储器时,出现一个ALE脉冲。对Flash存储器编程时,这个引脚用于输入编程脉冲PROG
(2) PSEN 29 该引是外部程序存储器的选通信号输出端。当ATC51由外部程序存储器取指令或常数时,每个机器周期输出2个脉冲即两次有效。但访问外部数据存储器时,将不会有脉冲输出。
(3) EA/Vpp 31 外部访问允许端。当该引脚访问外部程序存储器时,应输入低电平。要使ATS51只访问外部程序存储器(地址为0000H-FFFFH),这时该引脚必须保持低电平。对Flash存储器编程时,用于施加Vpp编程电压。
看到这您对ATS51引脚的功能应该有了一定的了解了,引脚在编程和校验时的时序我们在这里就不做详细的探讨,通常情况下我们也没有必要去撑握它,除非你想自己开发编程器。 5 引脚功能:
MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照----单片机引脚图:
22
l P0.0~P0.7 P0口8位双向口线(在引脚的39~32号端子)。 l P1.0~P1.7 P1口8位双向口线(在引脚的1~8号端子)。 l P2.0~P2.7 P2口8位双向口线(在引脚的21~28号端子)。 l P3.0~P3.7 P2口8位双向口线(在引脚的10~17号端子)。 这4个I/O口具有不完全相同的功能,大家可得学好了,其它书本里虽然有,但写的太深,初学者很难理解,这里都是按我自已的表达方式来写的,相信你也能够理解。 P0口有三个功能:
(1)、外部扩展存储器时,当做数据总线(如图1中的D0~D7为数据总线接口)
(2)、外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口)
(3)、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。 P1口只做I/O口使用:其内部有上拉电阻。
23
P2口有两个功能:
1、扩展外部存储器时,当作地址总线使用 2、做一般I/O口使用,其内部有上拉电阻; P3口有两个功能:
除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明。
有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的,
即:编程脉冲:30脚(ALE/PROG) 编程电压(25V):31脚(EA/Vpp)
接触过工业设备的兄弟可能会看到有些印刷线路板上会有一个电池,这个电池是干什么用的呢?这就是单片机的备用电源,当外接电源下降到下限值时,备用电源就会经第二功
24
能的方式由第9脚(即RST/VPD)引入,以保护内部RAM中的信息不会丢失。
(注:这些引脚的功能应用,除9脚的第二功能外,在“新动力2004版”学习套件中都有应用到。)
在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢?他起什么作用呢?都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。
ALE/PROG 地址锁存控制信号:
在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。(在后面关于扩展的课程中我们就会看到8051扩展 EEPROM电路,在图中ALE与74LS373锁存器的G相连接,当CPU对外部进行存取时,用以锁住地址的低位地址,即P0口输出。ALE有可能是高电平也有可能是低电平,当ALE是高电平时,允许地址锁存信号,当访问外部存储器时,ALE信号负
25
跳变(即由正变负)将P0口上低8位地址信号送入锁存器。当ALE是低电平时,P0口上的内容和锁存器输出一致。关于锁存器的内容,我们稍后也会介绍。
在没有访问外部存储器期间,ALE以1/6振荡周期频率输出(即6分频),当访问外部存储器以1/12振荡周期输出(12分频)。从这里我们可以看到,当系统没有进行扩展时ALE会以1/6振荡周期的固定频率输出,因此可以做为外部时钟,或者外部定时脉冲使用。
PORG为编程脉冲的输入端:在第五课单片机的内部结构及其组成中,我们已知道,在8051单片机内部有一个4KB或8KB的程序存储器(ROM),ROM的作用就是用来存放用户需要执行的程序的,那么我们是怎样把编写好的程序存入进这个ROM中的呢?实际上是通过编程脉冲输入才能写进去的,这个脉冲的输入端口就是PROG。
PSEN 外部程序存储器读选通信号:在读外部ROM时PSEN低电平有效,以实现外部ROM单元的读操作。 (1)、内部ROM读取时,PSEN不动作;
(2)、外部ROM读取时,在每个机器周期会动作两次; (3)、外部RAM读取时,两个PSEN脉冲被跳过不会输
26
出;
(4—)、外接ROM时,与ROM的OE脚相接。 参见图2—(8051扩展2KB EEPROM电路,在图中PSEN与扩展ROM的OE脚相接) EA/VPP 访问和序存储器控制信号 1、接高电平时:
CPU读取内部程序存储器(ROM)
扩展外部ROM:当读取内部程序存储器超过0FFFH(8051)1FFFH(8052)时自动读取外部ROM。
2、接低电平时:CPU读取外部程序存储器(ROM)。在前面的学习中我们已知道,8031单片机内部是没有ROM的,那么在应用8031单片机时,这个脚是一直接低电平的。 3、8751烧写内部EPROM时,利用此脚输入21V的烧写电压。
RST 复位信号:
27
当输入的信号连续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作,当复位后程序计数器PC=0000H,即复位后将从程序存储器的0000H单元读取第一条指令码。
XTAL1和XTAL2 :
外接晶振引脚。当使用芯片内部时钟时,此二引脚用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
VCC:电源+5V输入 VSS:GND接地。
4.2 液晶显示电路的原理与设计 1液晶显示原理
液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。 2液晶显示器的分类
28
液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。 3液晶显示器各种图形的显示原理: 线段的显示
点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,„„(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和暗线组成的虚线。这就是LCD显示的基本原理。 字符的显示
用LCD显示一个字符时比较复杂,因为一个字符由6×8或
29
8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。 汉字的显示
汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5„„右边为2、4、6„„根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节„„直到32B显示完就可以LCD上得到一个完整汉字。 4 LCD1602简介
功能简介:其液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,每一个字符都有一个固定的代码。LCD1602以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。
30
外形尺寸(LxWxH)80.0x36x12.0 视域尺寸(WxHxT) .5x13.8 驱动电压(V) 5.0V or 3.3V 工作温度:(oC) 0~50 or -20~70 存储温度:(oC) -10~60 or -30~80 显示类型: STN or FSTN 颜色: 蓝色(带背光) 生产工艺: SMT 其主要技术参数为: 显示容量:4.5~5.5V; 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.95×4.35(WXH)mm
1602采用标准的16脚接口,其管脚定义如下: 第1脚:VSS为地电源。 第2脚:VDD接5V正电源。
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可
31
以读忙信号,当RS为高电平RW为低电平时可以写入数据。
4.3 霍尔传感器电路设计
在信号脉冲发生源上,本系统采用的是开关型霍尔传感器。
以磁场作为媒介,利用霍尔传感器可以检测多种物理量,如位移、振动、转速、加速度、流量、电流、电功率等。它不仅可以实现非接触测量,并且采用永久磁铁产生磁场,不需附加能源。另外霍尔传感器尺寸小、价格便宜、应用电路简单、性能可靠,因而获得极为广泛的应用。除了直接利用霍尔传感器外,还利用它开发出各种派生的传感器。
金属或半导体薄片的两个端面通以控制电流Ic,并在薄片的垂直方向上施加磁感应强度为B的磁场,则在垂直于电流和磁场的方向上将产生电势Uh,称为霍尔电势或霍尔电压(如图l所示)。霍尔电势Uh=KhIcB(其中Kh为霍尔元件灵敏度,它与所用的材料及几何尺寸有关)。这种现象称为霍尔效应,而用这种效应制成的元件称为霍尔元件。由于霍尔元件输出的电压信号较小,并且有一定温度误差,目前已较少直接使用霍尔元件作传感器。霍尔传感器原理图如图4-6所示。
32
图4-6 霍尔传感器磁场效应
本系统采用开关型霍尔传感器A04E。开关型霍尔传感器是一种集成传感器,它内部含有霍尔元件、放大器、稳压电源、带一定滞后特性的比较器及集电极开路输出部分等,如图4-7所示。
图4-7 开关型霍尔传感器内部结构图 开关型霍尔传感器的工作特性如图4-8 所示。
图4-8 开关型霍尔传感器工作特性
33
当外加的磁感应强度超过动作点Bop时,传感器输出低电平,但磁感应强度降到动作点Bop以下时,传感器输出电平不变,一直要降到释放点BRE时,传感器才由低电平跃变为高电平。Bop与Bre之间的滞后(或称为回差)使开关动作更为可靠。
图4-9 霍尔传感器检测转速示意图
霍尔传感器检测转速示意图4-9如下。在非磁材料的圆盘边上粘贴一块磁钢,霍尔传感器固定在圆盘外缘附近。圆盘每转动一圈霍尔传感器便输出一个脉冲。通过单片机测量产生脉冲的频率,就可以得出圆盘的转速。同样道理,根据圆盘(车轮)的转速,再结合圆盘的周长就是计算出物体的位移。如果要增加测量位移精度,可以在圆盘(车轮)上多增加几个磁钢。
由于传感器内部为集电极开路输出,所以需外接一个上拉电阻,其阻值与电源电压大小有关,一般取1~2k,如图4-10所示。
34
VCC1RL2KS NH23Vout 图4-10 传感器输出电路 4-18 速度显示电路 4.4 数据处理过程 待测信号经预处理电路后加至单片机的P3. 2( INT0) 引脚可为单片机测量信号周期提供有效的输入信号。单片机通过检测P3.2引脚电平来决定是否启动测量周期程序。当该引脚为高电平时,系统处于等待状态,要一直到该引脚出现低电平时才开始测周期。测量时首先将零赋给THO、TL0 两个寄存器以将定时器T0 的运行控制位TR0 置位,同时也将ET0 置位以允许定时器T0 中断。然后再判断P3. 2 引脚是否还为低电平,如为低电平则等待,直到出现高电平再开始判断P3. 2 引脚是否为低电平,当其不是低电平时再等待。一旦出现低电平,则立即复位TR0终止定时器,以结束测周期程序。测周期过程中可能会发生定时器T0 的中断,每发生一次中断则将R0 寄存器加一,因此R0 实际上是周期值的高字节。测出的周期值存储在R0、TH0、TL0 三个寄存器中,然后将其转换成速度。速度是用车轮的周长除以脉冲周期得到的。由于 35
所测周期的单位是μs,因此在相除转换时应将被除数扩大106 倍,以保证得出正确的速度。将显示的速度放到R1、R2、R3 三个寄存器后即可调用转换BCD 代码模块,以将数据值转换成压缩的BCD代码并显示处理。考虑到对响应时间的要求,BCD 代码模块采用快速算法。数据转变成相应的压缩BCD 代码后,可调用显示消多余零和显示数据存储模块,并将要显示的数据值通过查表转换成相应的数据显示缓冲区以备显示。
36
5 系统仿真与分析
5.1仿真结果
图5-1 图5-2
5.2仿真分析
由于信号处理电路已把脉冲信号转化为方波信号输入到单片机中,且信号频率和方波周期是对应关系,因此当改变信号频率时输入方波信号周期也随着发生变化,显示的速度值也不一样。图5-1,图5-2分别表示对应脉冲频率值为6.7Hz ,10.62Hz时的速度。
经验证,若继续改变脉冲信号频率值则显示速度继续发生变化,脉冲信号频率越高,对应的的速度值也越大,这与现实生活中的相符合。
因此,本系统设计方案满足了测电动车即时速度的要求,达到了预期目标。
37
6 系统软件设计
6.1 系统软件总流程图
图5-1 系统主程序流程图
38
总流程图如图5-1所示。系统软件包括单片机初始化模块、周期测量模块、速度里程计算模块、数据存储模块、速度和里程显示等。
将车圈长度调入 4EH.4FH 出错提示 P1.7=1 P1.6=1 初始化 开始
39
7 总结与展望
本设计以ATC2051为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示所测速度的设计方案,以及串口数据存储电路和系统软件。
论文主要是在参考各种资料和相关的专业文献的基础上完成的,所参考的专业文献在论文中已经列单出来,但还有部分来源资料参差不齐不能在论文中详细列出,在这里也说明一下。论文的整个制作过程的确不容易,现在回想一下那段时日,有艰辛的一面,亦有喜悦的一面,但整个过程总结来说还是蛮充实的,毕竟在整个设计的过程中,自己又对已经学过的专业课知识梳理了一下,而且对于实际的应用和需求也参考了各个方面的资料,所以整个设计过程下来,自己整体的专业知识水平又进行了一次升华。
本方案基本实现了电动车速度即时显示,并可通过控制两个按键显示速度或里程,但也存在两个不足之处:一是LED数码管只有两个,当速度超过99km/h时(当然电动车速度一般不超过该值),不能显示出来;二是没有对小数位进行控制,系统默认对速度里程值取整处理,尽管算法很准确但是由于系统本身设置的原因测量值只能精确到个位。由于时间紧迫和个人水平不高的原因,并没有能在毕业设计中解决这些问题,这也是本次设计的瑕疵,本人对此也感到很遗憾。
随着科技的不断发展,电子式车速表也在不断的完善中,随着传感器的广泛应用,电子式车速表的功能日益多样化,如加入时钟,电瓶电量显示等。
40
致 谢
首先,我要感谢我的指导老师赵剑锷老师王继红老师。本论文从题目的确定、写作、修改到最后定稿得到了的悉心指导。特别是我多次向他询问论文中的一些不明白的问题时,总是耐心的为我讲解,帮我分析。他严肃的教学态度,严谨的治学精神和精益求精的工作作风深深地感染和激励着我。
此外,还要感谢我的同学,他们在我的论文写作过程中给了我大的帮助。我最想对他们说的是:能够顺利完成论文,是因为一路上有你们的支持,谢谢!
再次衷心地感谢赵老师、王老师和所有在我论文写作过程中给予过我帮助的人们。
对于这次毕业设计的制作,我有很多的感触,但是若要用完整的文字把它表达出来,真的不知道该怎样写。回首四年的大学时光,有值得回忆的美好往事,也有不堪讲述的琐事,有让我意气风发的成功,也有让我垂头丧气的失败,真的一言难尽。只希望能平淡的度过最后的这一段时光,拿到毕业证和学位证,满怀希望的地离开校园踏向工作岗位,并在以后的工作中不断地学习,让自己不断进步。
最后,感谢各位评审老师的评阅。由于本人水平有限,论文中难免存在一些不足和错误,请各位老师批评指正。
41
参考文献
[1]余发山主编.单片机原理及应用技术.中国矿业大学出版社.2003.12.21-32
[2]董爱华主编.检测与转换技术.中国电力出版社.2007.12 [3]康华光主编.电子技术基础数字部分(第五版).2006.137-153 430-460
[4]朱经利,蒋玉亮等编著.海尔家用洗衣机原理和维修.人民邮电出版社. 1999.63-152
[5]孟庆龙,张鸿海等编著.小鸭家用洗衣机原理和维修.人民邮电出版社.1999.31-45
[6]谢自美主编.电子线路设计·实验·测试.华中理工大学出版社. 2000.7.11-15
[7]张友汉主编.电子线路设计应用手册.福建科学技术出版社. 2000.7
[8]宋家友主编. 集成电子线路手册.福建科学技术出版社. 2002.5
[9]吴金戌等编著.8051 单片机实践与应用.清华大学出版社. 2002
[10]阎石编著.数字电子技术基础.高等教育出版社.1998 [11]张顺兴编著.数字电路与系统.东南大学出版社.2001 [12]赵家贵主编.新编传感器电路设计手册.中国计量出版社.2002.9
[13]丁杰元主编.单片机微机原理及应用.机械工业出版社 .1998.8
[14]沙占友等主编.单片机外围电路设计.电子工业出版社. 2003.1
42
附录A 程序清单
; K1=P1.4 K2=P1.5 K3=P1.6 K4=P1.7
;* 1602LCD显示秒表 *
;* K3 --- 控制按键 *
;* 第一次按下时,开始计时,第二次按下时,暂停计时。 *
;* 第三次按下时,累计计时,第四次按下时,暂停计时。 *
;* K4 --- 清零按键: *
;* 在任何状态下,按一下K4,均可清零。 *
;* *
;--------------------------------------- ;晶振 11.0592M ;定时器0,方式1
;计时中断程序每隔10ms中断一次
;--------------------------------------- TLOW EQU 0ECH ;定时器初值 THIGH EQU 078H PI EQU 03H CYCLE EQU 08H
SIGN EQU 30H TEMP EQU 31H NUM EQU 32H SPEED EQU 33H
RS EQU P1.5 ;LCD控制端口定义 RW EQU P1.6 EN EQU P1.7 TEST_LED EQU P1.4
43
TEST_LED1 EQU P1.3
;---------------------------------------------------- ORG 0000H JMP START ORG 03H JMP EXT_INT ORG 0BH JMP T0_INT
;---------------------------------------------------- START: MOV SP,#60H CLR EN
CALL SET_LCD
CALL INIT_TIMER_COUNT ;初始化定时器 SETB TR0 JMP $
;------------------------------------------------------------ INIT_TIMER_COUNT: ;初始化定时器接口
MOV TMOD,#01H ;设置定时器0 工作模式为模式1
MOV IE, #82H ;启用定时器0 中断产生 MOV TL0,#TLOW MOV TH0,#THIGH MOV NUM,#0 MOV SIGN,#0 MOV TEMP,#0 SETB IT0 SETB EX0 RET
;-------------------------------------------------------------
EXT_INT: INC TEMP CPL TEST_LED1 RETI T0_INT:
PUSH ACC ;定时器0计时中断程序 MOV TL0,#TLOW MOV TH0,#THIGH
44
INC NUM MOV A,NUM CJNE A,#20,TT MOV NUM,#0 CPL TEST_LED CAL: MOV B,#PI MOV A,TEMP MUL AB MOV B,#CYCLE DIV AB MOV SPEED,A CALL BYTE_TO_BCD CALL DISPLAY MOV TEMP,#0 TT: POP ACC RETI
;********************************************************************
;********************************************************************
;** Function: byte_to_bcd **
;** Purpose: Convert a single byte into two BCD digits **
;** Input: A = Byte to convert (0x00-0xFF) **
;** Output: A = High nibble (ASCII 0x30-0x39,0x41-0x46) **
;** R0 = Low nibble (ASCII 0x30-0x39, 0x41-0x46) **
;** Destroyed Registers: None **
;********************************************************************
;********************************************************************
45
;**************************************************************************** ;
; Description: ; Convert Value In Acc From Hex To BCD. ;
; Entry Requirements: ; Acc Has Value To Convert To BCD ;
; On Exit: ; DPTR Has Value Of Acc In BCD ;
; Affected: ; PSW.CY, PSW.Z, PSW.P, Acc, R3,R4 ;
; Stack: ; 2 Bytes, Not Including Space Used By Called Routines ;
; Comments: ; Values Greater Than 255 Will Not Work Properly. If Acc == 12, DPTR ; == 0012. If Acc = 255, R4R3 = 0255. ;
BYTE_TO_BCD: PUSH B ; Save B PUSH ACC ; Save Acc MOV B,#100 ; Divide By 100 DIV AB ; Do Divide MOV R4,A JNZ DEC_100 ; Store In DPH POP ACC CONT_MATH: ; Recover Acc MOV B,#10 ; Divide By 10 DIV AB ; Do Divide SWAP A ; Move Result To High Of A ORL A,B ; OR In Remainder MOV R3,A ; Move To DPL
46
POP B ; Recover B RET ; Return To Caller DEC_100: POP ACC SUBB A,#100 JMP CONT_MATH ;
DISPLAY: MOV A,R3 ANL A,#0F0H SWAP A ORL A,#30H MOV R4,A MOV B,#0 CALL LCDP2 MOV A,R3 ANL A,#0FH ORL A,#30H MOV B,#1 CALL LCDP2 RET
;--------------------------------------------------------- ; LCD CONTROL
;--------------------------------------------------------- SET_LCD: ;对 LCD 做初始化设置及测试 CLR EN
CALL INIT_LCD ;初始化 LCD MOV R5,#10 CALL DELAY
MOV DPTR,#LMESS1 ;指针指到显示消息1 MOV A,#1 ;显示在第一行 CALL LCD_PRINT
MOV DPTR,#LMESS2 ;指针指到显示消息2 MOV A,#2 ;显示在第二行 CALL LCD_PRINT
47
RET
;---------------------------------------------------------- INIT_LCD1: ;LCD 控制指令初始化 MOV A,#38H ;双列显示,字形5*7点阵 CALL WCOM ; call delay1
MOV A,#0CH ;开显示,显示光标,光标不闪烁 CALL WCOM ; call delay1
MOV A,#01H ;清除 LCD 显示屏 CALL WCOM ; call delay1 RET
;---------------------------------------------------------- ENABLE: ;写指令
CLR RS ;RS=L,RW=L,E=高脉冲 CLR RW ;D0-D7=指令码 SETB EN
ACALL DELAY1 CLR EN RET
;---------------------------------------------------------- LCD_PRINT: ;在LCD的第一行或第二行显示字符
CJNE A,#1,LINE2 ;判断是否为第一行
LINE1: MOV A,#80H ;设置 LCD 的第一行地址 CALL WCOM ;写入命令
CALL CLR_LINE ;清除该行字符数据
MOV A,#80H ;设置 LCD 的第一行地址 CALL WCOM ;写入命令 JMP FILL
LINE2: MOV A,#0C0H ;设置 LCD 的第二行地址 CALL WCOM ;写入命令
CALL CLR_LINE ;清除该行字符数据
MOV A,#0C0H ;设置 LCD 的第二行地址 CALL WCOM
FILL: CLR A ;填入字符
MOVC A,@A+DPTR ;由消息区取出字符 CJNE A,#0,LC1 ;判断是否为结束码
48
RET
LC1: CALL WDATA ;写入数据 INC DPTR ;指针加1
JMP FILL ;继续填入字符 RET
;------------------------------------------------------- CLR_LINE: ;清除该行 LCD 的字符 MOV R0,#24 CL1: MOV A,#' ' CALL WDATA DJNZ R0,CL1 RET
;------------------------------------------------------- DE: MOV R7,#250 ;延时500微秒 DJNZ R7,$ RET
;------------------------------------------------------- EN1:
CLR RW
SETB EN ;短脉冲产生启用信号 CALL DE CLR EN CALL DE RET
;------------------------------------------------------ INIT_LCD: ;8位I/O控制 LCD 接口初始化 MOV P0,#38H ;双列显示,字形5*7点阵 call enable call delay1
MOV P0,#38H ;双列显示,字形5*7点阵 call enable call delay1
MOV P0,#38H ;双列显示,字形5*7点阵 call enable call delay1 CALL INIT_LCD1 RET
;----------------------------------------------------- WCOM: ;以8位控制方式将命令写至LCD
49
MOV P0,A ;写入命令 call enable RET
;----------------------------------------------------- WDATA: ;以8位控制方式将数据写至LCD MOV P0,A ;写入数据 SETB RS ;设置写入数据 CALL EN1 RET
;----------------------------------------------------- ;第二行显示字符
;----------------------------------------------------- LCDP2: ;在LCD的第二行显示字符 PUSH ACC ;
MOV A,B ;设置显示地址
ADD A,#0C0H ;设置LCD的第二行地址 CALL WCOM ;写入命令 POP ACC ;由堆栈取出A CALL WDATA ;写入数据 RET
;---------------------------------------------------- DELAY: ;延时10MS MOV R6,#50 D1: MOV R7,#100 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,DELAY RET
;----------------------------------------------------- DELAY1: ;延时5MS MOV R6,#25 D2: MOV R7,#100 DJNZ R7,$ DJNZ R6,D2 RET
;------------------------------------------------- LMESS1: DB \"the speed is\第一行显示消息 LMESS2: DB \" m/s\第二行显示消息
;-------------------------------------------------
50
MMENU: DB \" SECOND-CLOCK 0 \MADJ: DB \" BEGIN COUNT 1 \MADJ1: DB \" PAUST COUNT 2 \MADJ2: DB \" BEGIN COUNT 3 \MADJ3: DB \" PAUST COUNT 4 \
;------------------------------------------------- MENU: ;LCD 显示工作菜单消息 MOV DPTR,#MMENU MOV A,#1
CALL LCD_PRINT RET
;------------------------------------------------- END
附录B 电路图
51
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- stra.cn 版权所有 赣ICP备2024042791号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务