1、摘 要摘 要目前,电子领域正朝着集成化,微型化的方向飞速发展。微电子技术的快速更新和工业测量的大量需求,使便携式仪表有着很好的发展前景。 便携式仪表一般具有携带方便,界面友好,操作简单,成本低,功耗低等特点,这些在其电路设计中应给予充分考虑。 本文通过对便携式仪表典型硬件结构的分析,总结了各通用模块的功能和特点,对几种解决方案进行了介绍和比较。并以多功能便携式仪表为例,进行了电路设计。系统以AT89C52为核心,用键盘和液晶模块作为输入和输出装置,用汇编语言编程使单片机实现键盘识别,功能转换和液晶显示等控制。 针对电源模块单电源供电多路电压输出的特点,文中给出了常见的解决方案,最后对系统调试的
2、基本过程进行了较详细的介绍。关键词:便携式仪表; 液晶显示; 键盘扫描; 接口II佳木斯大学教务处 第 页AbstractAbstractNowdays, electronic area is fast developing to the integration and micromation.with the fast update of the microelectronics technology and the large demand of the industrial measurements, Protables instruments have a very bright fu
3、ture. Portable instruments have many characteristics such as convenience, friendly interface, easy control, low cost, low power waste.These should be considered in the design of its circuit.By analyzing the typical hardware structure of portable instrument,this text summarizes the function and chara
4、cteristics of the interchangeable modules,introduces several of a solutions compared.On this condition,the circuit of a multifunctional instrument given as an instance are designed.The project is base on the AT89C52, and the keyboard and LCD are used as the input and output device.the program compil
5、ed in Assemble Language make the SCM control keyboard scan , function swith and LCD display .In addition,on account of their special requirements of single voltage input and multi-voltage output,a common solution is given to solve such problems in the text ,at the end of which introduce the basic pr
6、ocess of debugging in detail.Key Words:Portable;Instruments;LCD Scanner;Keyboard;Interface要删除行尾的分节符,此行不会被打印毕 业 论 文(设 计)用 纸目录摘 要IAbstractII第1章 绪论11.1 功能描述1第2章 系统分析与设计32.1 系统分析32.2 系统分析4第3章 关键技术83.1 液晶电源电路设计83.2 液晶显示123.3 行列键盘的输入243.4 键盘的软件去抖323.5 C51和汇编的混合编程33第4章 电路454.1 总体设计45第5章 程序设计48第6章 调试69结论74致
7、 谢75参考文献77附录1 中文译文78附录2英文原文84千万不要删除行尾的分节符,此行不会被打印。在目录上点右键“更新域”,然后“更新整个佳木斯大学教务处 第 III 页毕 业 论 文(设 计)用 纸第1章 绪论1.1 功能描述便携式仪表有着广泛的用途,如万用表、转速表等。目前,大部分的数字便携式仪表是基于单片机系统开发的。在单片机系统中,除了需要完成特定的算法和传感器等器件外,还需要输入、输出装置。在便携式仪表中,输入装置一般是键盘,而输出装置一般是液晶显示模块。 液晶显示模块和键盘输入模块作为便携式仪表的通用器件,在单片机系统的开发过程中也可以作为常用的程序和电路模块进行整体设计。便携式
8、仪表可广泛用于工业数据采集系统、矿场信号采集、电路调试等多种场合,而便携式仪表的输入输出模块的主要功能表现在:实现按键内容的液晶显示:液晶显示当前被使用者按下的按键内容,以及该键被按下的次数。实现按键功能的液晶显示:液晶显示当前被按下的按键所对应的功能。例如,当按下启动按键时,在液晶上显示“READY”字样等。实现便携式仪表的操纵输入:通过键盘,实现使用者对便携式仪表的操作。实现便携式仪表的结果输出:通过液晶显示模决,显示当前功能的结果输出,例如,当测量完毕时,显示当前测量的电压数值等。 在设计本设计便携式仪表的输入输出模块时,以上的功能均需要满足,其中主要部分就是液晶显示模块的驱动和行列键盘
9、的输入。而这两个功能也正是单片机系统中常用的关键技术,所以本设计着重介绍这两个模块的功能。本设计使用的便携式仪表的输入输出模块具有以下的特点:携带方便:体积小,重量轻。界面友好:液晶显示模块可以清晰的显示输出结果和功能提示。操作简单:采用行列式键盘输入,通过键盘实现显示功能和内容。成本低:采用普通的电池作为电源。低功耗:液晶显示模块可以设置低功耗模式,从而延长工作时间。第2章 系统分析与设计2.1 系统分析便携式仪表的基本机构如图2-1所示。从图中可以看出,对于任何一种便携式仪表而言,除了功能传感器需要具备自身的要求和特点之外,液晶显示模块和键盘输入模块均是通用模块,其主要的功能也大致相同,这
10、也是本设计要介绍液晶显示和键盘功能的目的所在。键盘操纵指令3V电 源5V-10V功能传感器单片机液晶模块5V图2-1便携式仪表的基本功能模块从图中可以看出,便携式仪表的主要功能模块分为3类: 数据采集:是指在单片机的控制下,使用功能传感器完成特定信号的测量和数据采集的功能。传感器将采集到的信号和数据传输到单片机中。 结果显示:是指单片机将采集到的数据发送到液晶显示模块,并控制液晶显示模块按照一定的格式将其显示的功能。 操纵输入:是指操纵者或其他器件向单片机发送控制指令,用于控制仪器的模式,该指令一般通过键盘输入。单片机在控制指令的要求下,完成一定功能,如进行信号测量、数据显示等。2.2 系统分
11、析在技术方案中,主要涉及到系统组成和器件的选择。对于本设计而言,主要是指电源方案、显示方案和键盘输入方案这3个方面。 1.电源方案的选择 可供选择的电源稳压变换的集成电源器件主要有如下几类: 低压差线性稳压器件。 通用开关型稳压器件。 多功能或专用的电源器件。 电压基准器件。 各类电源监控管理器件。 从体积上考虑,电源稳压变换器件与电路中的其他器件一样选用IC芯片,而不宜选用传统的线性稳压器件:由于使用电池供电,经过一段时间的放电后,电池电压会有所下降,这时电源模块应仍能保持稳定的输出,这就要求电源部分对输入电压的要求不能太苛刻,要允许输入电压在一定范围内变化。 在各种集成电源器件中,通用开关
12、型集成稳压器件有较高的电源效率,适应较宽的输入电压范围,容易通过变换, 产生多种类型的输出电压,非常适合于使用电池供电系统,在便携式仪表产品中有着广泛的应用。这类DC-DC转换器件可以分为: (1)按控制方式不同 脉冲宽度调制式(PWM )。 脉冲频率调制式(PFM)。 开关电容泵式。 (2)按输入电压不同 升压式。 降压式。 工作于升压和降压两种状态的转换器。 (3)按输出电压不同 单一固定/可调电压输出。 多路固定/可调电压输出。脉冲宽度调制式(PWM)转换器工作于固定的开关频率,其滤波电路的设计较简单;脉冲频率调制式(PFM)转换器在小功率输出时可望获得较低的静态电流;开关电容泵式转换器
13、的外围电路简单,适用于小输出电流的电源变换。从外围电路的复杂程度来看,固定电压输出比可调电压输出的简单,单一电压输出的比多路电压输出简单。2.液晶显示模块的选择选择合适的液晶模块对于便携式仪表的外观和功能的实现起到至关重要的作用。目前,液晶模块有下述3种类型。 (1)数显液晶模块 这是一种由段型液晶显示器件与专用的集成电路组装成一体的功能部件,只能显示数字和一些标识符号。段型液晶显示器件大多应用在便携、袖珍设备上。由于这些设备体积小,所以尽可能不将显示部分设计成单独的部件,即使一些应用领域需要单独的显示组件,那么也应该使其除具有显示功能外,还应具有一些信息接收、处理、存储传递等功能,由于它们具
14、有某种通用的、特定的功能而受市场的欢迎。 (2)液晶点阵字符模块 它是由点阵字符液晶显示器件和专用的行、列驱动器、控制器及必要的连接件,结构件装配而成的,可以显示数字和西文字符。这种点阵字符模块本身具有字符发生器,显示容量大,功能丰富。一般该种模块最少也可以显示8位1行或16位1行以上的字符。这种模块的点阵排列是由57、58或511的一组组像素点阵排列组成的。每组为1位,每位间有一点的间隔,每行间也有一行的间隔,所以不能显示图形。 (3)点阵图形液晶模块这种模块也是点阵模块的一种,其特点是点阵像素连续排列,行和列在排布中均没有空隔。因此可以显示连续、完整的图形。由于它也是有X-Y矩阵像素构成的
15、,所以除显示图形外,也可以显示字符。有下述3种类型。 行、列驱动型 这是一种必须外接专用控制器的模块,其模块只装配有通用的行、列驱动器,这种驱动器实际上只有对像素的一般驱动输出端,而输入端一般只有4位以下的数据输入端、移位信号输入端、锁存输入端、交流信号输入端等,如HD44100,IID66I00等。此种模块必须外接控制电路,如HD6I830, SED1330等才能与计算机连接。该种模块数量最多,最普遍。虽然需要采用自配控制器,但也可以自行选择不同控制器。行、列驱动-控制型 这是一种可直接与计算机接接口相连,依靠计算机直接控制驱动器的模块。这类模块所用的列驱动器具有I/O总线数据接口,可以将模
16、块直接挂在计算机的总线上,省去了专用控制器,因此对整机系统降低成本有好处。对于像素数量不大,整机功能不多;对计算机软件编程又很熟悉的用户非常适用,不过它会占用系统的部分资源。行、列控制型 这是一种内藏控制器型的点阵图形模块。也是比较受欢迎的一种类型.这种模块不仅装有如第一类的行、列驱动器,而且也装配有如T6963C等的专用控制器。这种控制器是液晶驱动器与计算机的接口,它以最简单的方式受控于计算机,接收并反馈计算机的各种信息,经过自己独立的信息处理实现对显示缓冲区的管理,井向驱动器提供所需要的各种信号、脉冲,操纵驱动器实现模块的显示功能。这种控制器具有自己一套专用的指令,并具有自己的字符发生器C
17、GROM。用户必须熟悉这种控制器的详细说明书,才能进行操作。这种模块使用户摆脱了对控制器的设计、加工、制作等一系列工作,又使计算机避免了对显示器的繁琐控制,节约了主机系统的内部资源。3.键盘的选择 键盘按结构的不同可分为独立式按键键盘和行列类键盘两类,每类按译码方式的不同又分为编码式和非编码式两种。单片机中一般使用的都是用软件来识别和产生键代码的非编码键盘 行列式键盘的编码方式有静态和动态两种。静态接口上主要由一个行编码器和一个列编码器构成;动态接口可采用计数器、译码器和数据选择器来构成。这两种键盘由硬件完成键的编码任务。一般在小型仪器仪表和控制系统中,使用较多的是行列式和独立式的非编码键盘;
18、如果系统要求实现多键同时按下的处理,则用非编码独立方式较为合适。佳木斯大学教务处 第 90 页第3章 关键技术液晶显示模块在设计时需要解决的主要问题在于3个方面,一是液晶显示膜块的驱动和编程,二是行列键盘的输入,三是在编程过程中牵涉到的C51和汇编语言的混合编程技术。在本设计中,和这三个方面相关的关键技术主要包括:液晶显示模块的电源一液晶模决的电源需要提供两路不同的电压,如何在电源单输入的情况下,设计整个单片机系统的多路电源输出,这是设计单片机系统时首先需要解决的问题。液晶显示模块的驱动和编程主要是设计液晶模块和单片机的接口电路,以及利用单片机对液晶模块的驱动和操作。行列键盘的输入一行列键盘是
19、本设计中单片机系统的输入接口:在本设计中将说明如何在单片机系统中使用行列键盘,从而实现对行列键盘的输入,控制单片机系统的功能显示。键盘软件去抖在键盘输入时,由于人工输入和按键的机械特性,按健会发生颤动,从而影响键盘输入信号。本设计中将详细介绍如何利用单片机的程序消除按键输入时的抖动。C51和汇编的混合编程C51和汇编的混合编程是单片机编程中的重要内容,也是一种提高程序设计质量的关键技术。在本设计中,将详细介绍如何利用已有的汇编驱动程序,用C51和汇编设计整个单片机系统的程序。以下就分别介绍上述5项关键技术。3.1 液晶电源电路设计1.作用 液晶电源电路设计的主要作用是为液晶显示模块提供工作电压
20、。同时,液晶显示模块的电源设计也是整个系统电源设计中的重要组成部分。 一般情况一下,液晶器件的驱动需要两种不同的电源电压,一种是5V,另一种是-10v。液晶电源电路就是需要将输入的电压转换成这两种电压信号输出,为液晶。显示模块提供工作电压。同时,需要注意液晶电源的设计需要综合考虑整个单片机系统的供电方案。2.技术方案便携式仪器体积虽小,却是一个很完整的系统,系统中不同的部分对于电源的需求是不同的,因此不可避免地会遇到两种甚至两种以上的电源需求,这就是电源部分要解决的关键问题。在设计具体的电源模块时要注意如以下几个方面:为降低系统功耗,减小仪表体积,应尽可能地选用CMOS器件。 根据容许的空间和
21、需求的容量合理地选择电池,从互换性角度考虑应尽量选用普通电池作为电源。 选用的合适的电源稳压变换器件,在满足电源需求的前提下,使电源模块的外围电路 简单,减小占用的空间。 (1)电源部分电压的输入输出要求市场上可供选择的电池规格多种多样,除了较常规的1.2V(1.2V整数倍)的镍镉充电电池(电池组)、1.5V和9V的干电池和3.6V的锂电池以外,还有各种特殊的3V,4.5V,5V,6V和12V的电池可供选择,但从使用者更换或购买备用电池的方便的角度考虑,应尽可能使用互换性更好的普通电池。因此希望选择2节5号干电池作为电源部分的输入。 传感器及其驱动电路的电压需求为+5V;单片机及接口部分、外部
22、存储器部分和其他一些数字电路部分需要+5V电压;LCD显示输出除了需要提供+5V的工作电压外,还需要提供-10V的对比度调节电压。 由以上分析得到电源部分的设计要求为+3V输入,+5V和-10V双电压输出。根据此电源输入输出要求选择相应的集成电源稳压变换器件,在满足电源要求的前提下,使外围电路尽可能的简单,体积尽可能小。 (2)电源稳压变换器件的选择 选用MAX1677作为超声硬度计电源部分的核心器件。 由于MAX1677输入电压范围(0.7V-5.5V)较大,可以依据不同系统提供的安装的电池空间和所需的不同电池电压与容量,灵活地选择电池的种类,13节普通干电池、碱性电池、镍镉充电电池或一节锂
23、电池均可以使系统正常工作。使用MAX 1677的电源部分实际电路原理图,若使用0805表贴元件,则此电源处理电路在电路板上实际占用尺寸只有22mm17mm。MAX1677是双电压输出升压DC-DC变换器,适用于需两种可调电压输出的便携式仪表。其主要性能为:允许的输入电压范围为0.7V-5.5V;主输出,2.5V-5.5V可调电压输出,或工厂预设值3.3 V输出,最大输出电流可达350mA;第二输出,可为LCD对比度调节提供+28V范围内的电压;电源效率可达95%;16脚QSOP封装,体积很小,不需要外部场效应管。其他性能还包括20uA静态工作电流、1uA关断维持电流和电池欠电压监测。3.具体实
24、现(1)器件选择和功能MAX1677:电压转换芯片,输入为3V,输出两路电压,分别是+5V和-10V,作为系统电源和液晶显示模块的背光电源。L1、L2:磁芯电感,选用CoilCraft(线艺)的DO1608C-103表贴磁芯电感,电感值为10uH。D1、D2:肖特基二极管,但也可选用其他型号,只要反相耐压大于16v即可。R1、R2:电阻,R1和R2的比值决定了LCD对比度输出的电压值Vlcd图中的Vout1 ),关系式为R1=R2|Vlcd|1.25(V),其中R1的取值范围为500K2M。R3、R4:电阻,R1和R4的比值决定了主输出电压值Vout(对应图中的VOUT1),关系式为R3=R4
25、(Vout 1.25V)-1,其中R4的取值范围为10K200K。R5、R6:电阻,R5和R6的比值决定了系统欠电压监测的门槛电压值Vtrip,关系式为R5=R6(Vtrip0.614V)-1,其中R6130K。当电池电压正常时,电池电压过低输出管脚LBO(Low-Battery Output )输出保持高电平;一旦电池电压低于门槛电压Vtrip时,LBO管脚输出变为低电平。如果不使用欠电压监测的话,只需将第3脚(LBI)接地。表3-1 MAX1677管脚的定义管脚号管脚名功能1OUT芯片电源输入端,接0.1F旁路电容到地,与POUT脚间通过10串联电阻连接2FB主升压电路反馈输入端。短路到地
26、为3.3V输出,外接分压电阻到OUT脚,输出电压2.5V到5.5V可调3LBI电池低电压检测比较器输入端。内部门限电平为614mV。可通过外部分压电阻设置电池低电压检测电平4LBO电池低电压检测比较器输出端。LBI低于内部门限电平614mV时,LBO输出为低。5CLK/SEL同步时钟和PWM模式选择输入端。CLK/SEL=低电平,小功率,低能耗电流PFM模式;CLK/SEL=高电平,低噪声,大功率PWM模式(300KHz),CLK/SEL=外部时钟(200KHz到400KHz),外同步PWM模式6LCDONLCD偏压电路使能端。高电平启动LCD偏压电路,主升压电路必须先启动7LCDPOLLCD
27、偏压极性选择端8REF1.25V基准输出,外接0.1F旁路电容9GND地10LCDFBLCD升压电路反馈输入端,正压输出时,内部门限电平为1.25V,负压输出时,为0V11ON芯片使能端,高电平启动MAX167712LCDLXLCD28V升压功率开关管漏极13LCDGNDLCD28V升压功率开关管源极14PGND主升压电路N-沟道MOSFET源极15LX主升压电路内部功率开关漏极16POUT主升压电路电源输出端,内部同步整流P-沟道MOSFET源极(2)地址分配和硬件连接此处只列出和本设计相关的、关键部分的单片机管脚连接和相关的地址分配。Vin:电源电路的输入端,连接两节1.5V的电池,形成便
28、携式仪表的电源。Vout 1:连接MAX 1677的16管脚,输出+5V的电压,作为系统的电源电压。Vout2:连接MAX 1677的10管脚,输出-10v的电压,作为液晶显示模块的背光电源电压。Low-Battery Output:连接MAX 1677的4管脚,输出电源电压不足的报警信号,也就是MAX 1677中的LBO的信号。3.2 液晶显示1.作用本设计中需要重点介绍的就是基于单片机系统的液晶显示部分。在单片机系统中,液晶显示是单片机系统中反应系统输出和操纵输入的有效。液晶显示模块是一种将液晶显示器件、连接件,集成电路,PCB线路板,背光源,结构件装配在一起的组件。英文名称叫“LCD M
29、odule”,简称“LCM”,中文一般称为“液晶显示模块”。在单片机系统中使用液晶显示模块作为输出器有以下优点:数字式接口液晶显示器都是数字式的,和单片机系统的接口更加简单,操作也更加方便。 体积小、重量轻 液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示目的,在质量上要比相同显示面积的传统显示器件要轻得多。 功率消耗小 相比而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其他显示器件也要小得多。 2.技术方案 通过在第二节中的技术方案的论述,以及对各类液晶显示模块的比较,本次选择较为常用的点阵图形式液晶模块从而使本设计更具备广泛性。系统使用的点阵图形式液晶模块为香
30、港精电公司(VARITRONIX)点阵图形式液晶模块,型号为MGLS-1202A是内置SED1520控制驱动器的图形液晶显示模块,点阵数120X32,点大小0.60.425mm,模块尺寸为75.0x54.0mm,视频尺寸6026.5mm。 (1)MGLS-12032A液晶模块的特性MGLS-12032A液晶模块是由两片SED1520来驱动的,两个SED 1520都只用了其中的60个列驱动口(SEGOISEG59 )。分别驱动液晶显示器的左右半屏。其内部逻辑电路如图3-3所示。MGLS-12032A液晶模块的接口端共16个管脚 ,各管脚的具体说明见表3-2。(2)SED1520液晶显示控制驱动器
31、的特性 SED1520液晶显示控制驱动器集行、列驱动器和控制器与一体,被广泛应用于小规模液晶显示模块,其基本功能如下: 内置32行80列共2560位显示RAM区,RAM中的1位数据控制液晶屏上一个像素的亮(1)、暗(0)状态。显示RAM的结构见图3-4所示。具有16个行驱动输出和61个列驱动输出。 可以直接与80系列微处理器相连。 驱动占空比为1/16或1/32。 可以级联使用,以扩展行、列驱动能力。内部具有18kHz时钟发生器,不需要外部提供时钟发生器即可工作。图3-3 SED1520显示RAM结构图表3-2 MGLS-12032A液晶模块接口的定义序号管脚符号管脚名称说明1GND逻辑电源地
32、2Vcc逻辑电源+5V3V0工作负电压提供对比度调节负电压4A0数据/指令通道选择A0=0 选择数据通道;A0=1 选择指令通道5R/W读/写选择信号R/W=0写操作;R/W=1读操作6E1控制器1的读写使能E1=0禁用;E1=1允许使用7E2控制器2的读写使能E2=0禁用;E2=1允许使用8NC空916DB0DB7三态数据总线 (3)液晶模块接口方式选择液晶模块有3种接口方式可供选择:将单片机的并行口与液晶模块的数据总线相连的间接控制方式。存储器映像方式连接的直接访问方式。利用其他输入输出接口芯片实现连接的自主控制方式。图3-4 SED1520显示RAM结构图由于SED1520控制器可以直接
33、与MCS-51系列单片机相连,可以不必使用其他的接口芯片:另一方面,单片机的通用并行接口P1口已被行列式键盘占用,因此选择存储器映像方式的接口,将液晶模块当作存储器的一部分对待,直接使用存储器读写进行I/O操作。这种存储器映像方式的接口电路示意图如图2一8所示,将液晶模块的数据总线(PO口)直接相连,液晶模块的片选与控制引脚与单片机的高8位址址线(P2口)相连,这样对液晶模块的各种指令操作,实际上就是与相应的控制地址交换数据。按照图3-5的连接方式,则液晶模块的各基本指令操作对应的控制地址如表3-3所示。(4)液晶显示的字符输出要对液晶模块进行控制,需要3个最基本的控制操作:分别向两SED15
34、02控制器写指令代码、写显示数据和读显示数据。完成这三项操作的前提条件是相应SEF31520处于准备好的状态,当SED1520处于忙的状态时,除了读状态字指令外,其他指令均不起作用,因此在访问SED1520前,都要先读取控制器当前状态,判断是否准备好。图3-5 液晶模块与单片机的接口电路图表3-3 液晶模块控制地址的定义操作E1地址E2地址写指令代码8000H4000H读状态字8200H4200H写显示数据8100H4100H读显示数据8300H4300H由于单片机内部ROM容量的限制,使用西文字符库进行显示,每个字符大小为6X8点阵,以二维数组的格式存放在ROM中。二维数组的一行表示一个字符
35、,行号即为字符的代码,计算公式:字符代码=ASCII码-30H;二维数组的每个元素对应各字符的每列中8点状态得列数据。向液晶模块输出1个字符的过程就是,由液晶屏显示区的指定字符行的指定列开始,连续输出该字符对应的字符库中的6个列数据。MGLS- 12032A液晶模块中液晶屏显示区为12032点阵,如图3-6所示,每8个像素行组成1页(字符行),整个显示区共分为4页;显示区的左半区受E1控制器的60个列驱动器控制,右半区受E2控制器的60个列驱动器控制。图3-6 液晶屏显示区示意图当字符输出的指定位置出现在E1和E2控制区的交界线附近时,如不进行适当处理的话,字符是无法被完整显示的,因此必须加入
36、切换控制区以及换页的自动调整处理,得到完整显示的字符输出。带自动调整的单个字符输出的子程序流程图如图3-7所示。(5)字符串与变量的液晶显示便携式仪表一般要利用液晶显示测量的数值与相应单位,因此需要了解在上述单个字符输出基础上的字符串与变量数值的输出。由于FranklinC51编译器给出了函数“printf”的字符输出核心程序putchar.c的源程序代码,可以根据用户LCD的硬件连接加以修改,因此只需要用以上单个字符输出的子程序替换原来的“putchar.c”,就可以方便地利用priritf函数完成字符串与变量数值的输出了。原有的“putchar.c”的源程序代码是针对RS-232串行通信的
37、单个字符传输printf函数就可以完成数据的串行通信传输。但是系统中还有RS-232要将printf函数保留给串行通信使用就必须重新编制字符串与变量数值输出的函数。有确定长度的字符串输出很容易实现,但对于变量数值的输出,从数值转换成字符,其字符长度是变化不确定的。解决的方法是使用Sprintf函数,将变量的数值转换成字符串存放到输出缓冲区中,并返回字符串长度,再利用确定长度的字符串输出函数进行输出,完成字符串与变量数值的输出。单个字符显示字符换行判断:点阵列数114?字符行数=字符行数+1点阵列数=0点阵列数=60?字符元素列=0点阵列数=点阵列数-60点阵列数送至E2控制器在E2该列写入字符
38、列控制字点阵列数送至E1控制器在E1该列写入字符列点阵列数=点阵列数+1字符元素列=字符元素列+1字符元素列=6?返回指定字符点阵首列位置图3-7 单个字符输出子程序流程3具体实现单片机和LCD的接口电路如图3-8所示。(1) 电路原理和器件选择(2) 在这里仅列出单片机和LCD接口部分电路的器件名称和相关的主要功能。89C52:LCD的控制器,控制字符的发送和点阵显示的时序。LCD:液晶显示模块。在单片机的控制下,按照要求的格式显示接收到的数据。74LS00、74LS04:由于LCD并没有独立的片选信号,所以使用单片机的读写信号进行选通,而74LS00、74LS04则是转换读写信号的电平,同
39、时作为片选信号。(2)地址分配和连接:此处只列出和本设计相关的、关键部分的单片机管脚连接和相关的地址分配。主要是单片机和LCD之间的信号连接和地址分配。E1、E2:连接经过74LS00、74LS04转换后的单片机读写信号,作为单片机对LCD的片选信号。A8:单片机对LCD的数据/指令通道的选择。A9:单片机对LCD的读写选择信号。D0-D7:单片机和LCD的数据总线。(3)液晶显示的程序液晶的显示程序是整个程序中最为重要的程序,主要包括3个子程序模块,分别是:液晶驱动cdwe.a51的程序:向液晶的驱动模块写入控制字,具体的控制字格式和内容可以参看液晶驱动模决手册中的规定。液晶驱动inclr.
40、a51的程序:液晶模决的清屏功能。液晶字符显示程序disp.c的程序:液晶的数据显示功能。在这里分别列出它们关键部分的程序代码:液晶驱动cdwe.a51的内容;;定义全局变量COM和DAT,全局函数CWE1(),DWE1(),CWE2(),DWE2()PUBLIC COM,DAT,CWE1, DWE1,CWE2,DWE2;COM存放控制指令,DAT存放显示数据RAM SEGMENTDATAPGM SEGMENTCODE;CWE1()子函数,传递变量COM到控制器E1,参数为#CWADD1实现控制指令的传递CWE1: PUSH DPL PUSH DPH MOV DPTR #CRADD1CWE10
41、1: MOVX A, DPTR JB ACC7, COM MOV DPTR, #CRADD1 MOV A, COM MOVX DPTR A POP DPH POP DPL RETDWE1()子函数,传递变量DAT到控制器E1,参数为#CRADD1 PUSH DPL PUSH DPH MOV DPTR, #CRADD 1DWE101 MOVX A, DYTR JB ACC.7, DWE101 MOV DPTR, #DWADDI MOV A DAT MOVX DPTR, A POP DPH POP DPL RETCWE2()子函数,传递变量COM到控制器E2,参数为#CWADDz,实现控制指令的传递CWE2 PUSH DPL PUSH DPH MOV DPTR, #CRADD2CWE201 MOVX A, DPTR JB ACC.7, CWE201 MOV DPTR #CRADD2 MOV A, COM MOVX DPTR, A POP DPH POP DPL RETDWE2()子函数,传递变量DAT到控制器E2,参数为#CRADD2,实现控制数据的传递DWE2 PUSH DPL PUSH DPH MOV DPTR, #CRADD2CWE201 MOVX A, DPTR JB ACC.7, CWE201 MOV DPTR #CRADD2 MOV A DAT