毕业设计11说明书

更新时间:2024-06-16 07:00:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

题目:

便携式仪表显示与键盘输入设备设计

姓 名:班级学号:指导教师:杜周 0608014832 张保军

摘 要

摘 要

目前,电子领域正朝着集成化,微型化的方向飞速发展。微电子技术的快速更新和工业测量的大量需求,使便携式仪表有着很好的发展前景。

便携式仪表一般具有携带方便,界面友好,操作简单,成本低,功耗低等特点,这些在其电路设计中应给予充分考虑。

本文通过对便携式仪表典型硬件结构的分析,总结了各通用模块的功能和特点,对几种解决方案进行了介绍和比较。并以多功能便携式仪表为例,进行了电路设计。系统以AT89C52为核心,用键盘和液晶模块作为输入和输出装置,用汇编语言编程使单片机实现键盘识别,功能转换和液晶显示等控制。

针对电源模块单电源供电多路电压输出的特点,文中给出了常见的解决方案,最后对系统调试的基本过程进行了较详细的介绍。

关键词:便携式仪表; 液晶显示; 键盘扫描; 接口

佳木斯大学教务处 第 I 页

Abstract

Abstract

Nowdays, 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 future. 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 characteristics 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 compiled 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 process of debugging in detail.

Key Words:Portable;Instruments;LCD Scanner;Keyboard;Interface

佳木斯大学教务处 第 II 页

Abstract

目录

摘 要 ..................................................................................................................................... I Abstract ................................................................................................................................ II 第1章 绪论 ........................................................................................................................ 1 1.1 功能描述 ................................................................................................................... 1 第2章 系统分析与设计 .................................................................................................... 3 2.1 系统分析 ................................................................................................................... 3 2.2 系统分析 ................................................................................................................... 4 第3章 关键技术 ................................................................................................................ 8 3.1 液晶电源电路设计 ................................................................................................... 8 3.2 液晶显示 ................................................................................................................. 12 3.3 行列键盘的输入 ..................................................................................................... 24 3.4 键盘的软件去抖 ..................................................................................................... 32 3.5 C51和汇编的混合编程 .......................................................................................... 33 第4章 电路 ...................................................................................................................... 45 4.1 总体设计 ................................................................................................................. 45 第5章 程序设计 .............................................................................................................. 48 第6章 调试 ...................................................................................................................... 69 结论 .................................................................................................................................... 74 致 谢 .................................................................................................................................. 75 参考文献 ............................................................................................................................ 77 附录1 中文译文 ............................................................................................................... 78 附录2英文原文 ................................................................................................................ 84

佳木斯大学教务处 第 II 页

I

毕 业 论 文(设 计)用 纸

第1章 绪论

1.1 功能描述

便携式仪表有着广泛的用途,如万用表、转速表等。目前,大部分的数字便携式仪表是基于单片机系统开发的。在单片机系统中,除了需要完成特定的算法和传感器等器件外,还需要输入、输出装置。在便携式仪表中,输入装置一般是键盘,而输出装置一般是液晶显示模块。

液晶显示模块和键盘输入模块作为便携式仪表的通用器件,在单片机系统的开发过程中也可以作为常用的程序和电路模块进行整体设计。

便携式仪表可广泛用于工业数据采集系统、矿场信号采集、电路调试等多种场合,而便携式仪表的输入输出模块的主要功能表现在:

·实现按键内容的液晶显示:液晶显示当前被使用者按下的按键内容,以及该键被按下的次数。

·实现按键功能的液晶显示:液晶显示当前被按下的按键所对应的功能。例如,当按下启动按键时,在液晶上显示“READY”字样等。

·实现便携式仪表的操纵输入:通过键盘,实现使用者对便携式仪表的操作。 ·实现便携式仪表的结果输出:通过液晶显示模决,显示当前功能的结果输出,例如,当测量完毕时,显示当前测量的电压数值等。

在设计本设计便携式仪表的输入输出模块时,以上的功能均需要满足,其中主要部分就是液晶显示模块的驱动和行列键盘的输入。而这两个功能也正是单片机系统中常用的关键技术,所以本设计着重介绍这两个模块的功能。

本设计使用的便携式仪表的输入输出模块具有以下的特点: ·携带方便:体积小,重量轻。

·界面友好:液晶显示模块可以清晰的显示输出结果和功能提示。

佳木斯大学教务处 第 1 页

毕 业 论 文(设 计)用 纸

·操作简单:采用行列式键盘输入,通过键盘实现显示功能和内容。 ·成本低:采用普通的电池作为电源。

·低功耗:液晶显示模块可以设置低功耗模式,从而延长工作时间。

佳木斯大学教务处

第 2 页

毕 业 论 文(设 计)用 纸

第2章 系统分析与设计

2.1 系统分析

便携式仪表的基本机构如图2-1所示。从图中可以看出,对于任何一种便携式仪表而言,除了功能传感器需要具备自身的要求和特点之外,液晶显示模块和键盘输入模块均是通用模块,其主要的功能也大致相同,这也是本设计要介绍液晶显示和键盘功能的目的所在。

3V 电 源 5V -10V 5V 功能传感器 单片机 液晶模块 操纵指令 键盘

图2-1便携式仪表的基本功能模块

从图中可以看出,便携式仪表的主要功能模块分为3类:

·数据采集:是指在单片机的控制下,使用功能传感器完成特定信号的测量和数据采集的功能。传感器将采集到的信号和数据传输到单片机中。

·结果显示:是指单片机将采集到的数据发送到液晶显示模块,并控制液晶显示模块按照一定的格式将其显示的功能。

·操纵输入:是指操纵者或其他器件向单片机发送控制指令,用于控制仪器的模式,该指令一般通过键盘输入。单片机在控制指令的要求下,完成一定功能,如进行信号测量、数据显示等。

佳木斯大学教务处 第 3 页

毕 业 论 文(设 计)用 纸

2.2 系统分析

在技术方案中,主要涉及到系统组成和器件的选择。对于本设计而言,主要是指电源方案、显示方案和键盘输入方案这3个方面。 1.电源方案的选择

可供选择的电源稳压变换的集成电源器件主要有如下几类: ·低压差线性稳压器件。 ·通用开关型稳压器件。 ·多功能或专用的电源器件。 ·电压基准器件。

·各类电源监控管理器件。

从体积上考虑,电源稳压变换器件与电路中的其他器件一样选用IC芯片,而不宜选用传统的线性稳压器件:由于使用电池供电,经过一段时间的放电后,电池电压会有所下降,这时电源模块应仍能保持稳定的输出,这就要求电源部分对输入电压的要求不能太苛刻,要允许输入电压在一定范围内变化。

在各种集成电源器件中,通用开关型集成稳压器件有较高的电源效率,适应较宽的输入电压范围,容易通过变换, 产生多种类型的输出电压,非常适合于使用电池供电系统,在便携式仪表产品中有着广泛的应用。这类DC-DC转换器件可以分为:

(1)按控制方式不同

·脉冲宽度调制式(PWM )。 ·脉冲频率调制式(PFM)。 ·开关电容泵式。 (2)按输入电压不同 ·升压式。

佳木斯大学教务处 第 4 页

毕 业 论 文(设 计)用 纸

·降压式。

·工作于升压和降压两种状态的转换器。 (3)按输出电压不同

·单一固定/可调电压输出。 ·多路固定/可调电压输出。

脉冲宽度调制式(PWM)转换器工作于固定的开关频率,其滤波电路的设计较简单;脉冲频率调制式(PFM)转换器在小功率输出时可望获得较低的静态电流;开关电容泵式转换器的外围电路简单,适用于小输出电流的电源变换。从外围电路的复杂程度来看,固定电压输出比可调电压输出的简单,单一电压输出的比多路电压输出简单。

2.液晶显示模块的选择

选择合适的液晶模块对于便携式仪表的外观和功能的实现起到至关重要的作用。目前,液晶模块有下述3种类型。 (1)数显液晶模块

这是一种由段型液晶显示器件与专用的集成电路组装成一体的功能部件,只能显示数字和一些标识符号。段型液晶显示器件大多应用在便携、袖珍设备上。由于这些设备体积小,所以尽可能不将显示部分设计成单独的部件,即使一些应用领域需要单独的显示组件,那么也应该使其除具有显示功能外,还应具有一些信息接收、处理、存储传递等功能,由于它们具有某种通用的、特定的功能而受市场的欢迎。

(2)液晶点阵字符模块

它是由点阵字符液晶显示器件和专用的行、列驱动器、控制器及必要的连接件,结构件装配而成的,可以显示数字和西文字符。这种点阵字符模块本身具有字符发生器,显示容量大,功能丰富。一般该种模块最少也可以显示8位1行或16位1行以上的字符。这种模块的点阵排列是由5×7、5×8或5×11的一组组像素

佳木斯大学教务处 第 5 页

毕 业 论 文(设 计)用 纸

点阵排列组成的。每组为1位,每位间有一点的间隔,每行间也有一行的间隔,所以不能显示图形。 (3)点阵图形液晶模块

这种模块也是点阵模块的一种,其特点是点阵像素连续排列,行和列在排布中均没有空隔。因此可以显示连续、完整的图形。由于它也是有X-Y矩阵像素构成的,所以除显示图形外,也可以显示字符。有下述3种类型。 ·行、列驱动型

这是一种必须外接专用控制器的模块,其模块只装配有通用的行、列驱动器,这种驱动器实际上只有对像素的一般驱动输出端,而输入端一般只有4位以下的数据输入端、移位信号输入端、锁存输入端、交流信号输入端等,如HD44100,IID66I00等。此种模块必须外接控制电路,如HD6I830, SED1330等才能与计算机连接。该种模块数量最多,最普遍。虽然需要采用自配控制器,但也可以自行选择不同控制器。

·行、列驱动-控制型

这是一种可直接与计算机接接口相连,依靠计算机直接控制驱动器的模块。这类模块所用的列驱动器具有I/O总线数据接口,可以将模块直接挂在计算机的总线上,省去了专用控制器,因此对整机系统降低成本有好处。对于像素数量不大,整机功能不多;对计算机软件编程又很熟悉的用户非常适用,不过它会占用系统的部分资源。

·行、列控制型

这是一种内藏控制器型的点阵图形模块。也是比较受欢迎的一种类型.这种模块不仅装有如第一类的行、列驱动器,而且也装配有如T6963C等的专用控制器。这种控制器是液晶驱动器与计算机的接口,它以最简单的方式受控于计算机,接收并反馈计算机的各种信息,经过自己独立的信息处理实现对显示缓冲区的管理,井向驱动器提供所需要的各种信号、脉冲,操纵驱动器实现模块的显示功能。这种控

佳木斯大学教务处 第 6 页

毕 业 论 文(设 计)用 纸

制器具有自己一套专用的指令,并具有自己的字符发生器CGROM。用户必须熟悉这种控制器的详细说明书,才能进行操作。这种模块使用户摆脱了对控制器的设计、加工、制作等一系列工作,又使计算机避免了对显示器的繁琐控制,节约了主机系统的内部资源。

3.键盘的选择

键盘按结构的不同可分为独立式按键键盘和行列类键盘两类,每类按译码方式的不同又分为编码式和非编码式两种。单片机中一般使用的都是用软件来识别和产生键代码的非编码键盘

行列式键盘的编码方式有静态和动态两种。静态接口上主要由一个行编码器和一个列编码器构成;动态接口可采用计数器、译码器和数据选择器来构成。这两种键盘由硬件完成键的编码任务。

一般在小型仪器仪表和控制系统中,使用较多的是行列式和独立式的非编码键盘;如果系统要求实现多键同时按下的处理,则用非编码独立方式较为合适。

佳木斯大学教务处 第 7 页

毕 业 论 文(设 计)用 纸

第3章 关键技术

液晶显示模块在设计时需要解决的主要问题在于3个方面,一是液晶显示膜块的驱动和编程,二是行列键盘的输入,三是在编程过程中牵涉到的C51和汇编语言的混合编程技术。

在本设计中,和这三个方面相关的关键技术主要包括:

·液晶显示模块的电源一液晶模决的电源需要提供两路不同的电压,如何在电源单输入的情况下,设计整个单片机系统的多路电源输出,这是设计单片机系统时首先需要解决的问题。

·液晶显示模块的驱动和编程—主要是设计液晶模块和单片机的接口电路,以及利用单片机对液晶模块的驱动和操作。

·行列键盘的输入一行列键盘是本设计中单片机系统的输入接口:在本设计中将说明如何在单片机系统中使用行列键盘,从而实现对行列键盘的输入,控制单片机系统的功能显示。

·键盘软件去抖—在键盘输入时,由于人工输入和按键的机械特性,按健会发生颤动,从而影响键盘输入信号。本设计中将详细介绍如何利用单片机的程序消除按键输入时的抖动。

·C51和汇编的混合编程—C51和汇编的混合编程是单片机编程中的重要内容,也是一种提高程序设计质量的关键技术。在本设计中,将详细介绍如何利用已有的汇编驱动程序,用C51和汇编设计整个单片机系统的程序。

以下就分别介绍上述5项关键技术。

3.1 液晶电源电路设计

1.作用

液晶电源电路设计的主要作用是为液晶显示模块提供工作电压。同时,液晶显示模块的电源设计也是整个系统电源设计中的重要组成部分。

一般情况一下,液晶器件的驱动需要两种不同的电源电压,一种是5V,另一种是

佳木斯大学教务处 第 8 页

毕 业 论 文(设 计)用 纸

-10v。液晶电源电路就是需要将输入的电压转换成这两种电压信号输出,为液晶。显示模块提供工作电压。同时,需要注意液晶电源的设计需要综合考虑整个单片机系统的供电方案。

2.技术方案

便携式仪器体积虽小,却是一个很完整的系统,系统中不同的部分对于电源的需求是不同的,因此不可避免地会遇到两种甚至两种以上的电源需求,这就是电源部分要解决的关键问题。在设计具体的电源模块时要注意如以下几个方面:

·为降低系统功耗,减小仪表体积,应尽可能地选用CMOS器件。

·根据容许的空间和需求的容量合理地选择电池,从互换性角度考虑应尽量选用普通电池作为电源。

·选用的合适的电源稳压变换器件,在满足电源需求的前提下,使电源模块的外围电路 简单,减小占用的空间。 (1)电源部分电压的输入输出要求

市场上可供选择的电池规格多种多样,除了较常规的1.2V(1.2V整数倍)的镍镉充电电池(电池组)、1.5V和9V的干电池和3.6V的锂电池以外,还有各种特殊的3V,4.5V,5V,6V和12V的电池可供选择,但从使用者更换或购买备用电池的方便的角度考虑,应尽可能使用互换性更好的普通电池。因此希望选择2节5号干电池作为电源部分的输入。

传感器及其驱动电路的电压需求为+5V;单片机及接口部分、外部存储器部分和其他一些数字电路部分需要+5V电压;LCD显示输出除了需要提供+5V的工作电压外,还需要提供-10V的对比度调节电压。

由以上分析得到电源部分的设计要求为+3V输入,+5V和-10V双电压输出。根据此电源输入输出要求选择相应的集成电源稳压变换器件,在满足电源要求的前提下,使外围电路尽可能的简单,体积尽可能小。 (2)电源稳压变换器件的选择

选用MAX1677作为超声硬度计电源部分的核心器件。

由于MAX1677输入电压范围(0.7V-5.5V)较大,可以依据不同系统提供的安装的电

佳木斯大学教务处 第 9 页

毕 业 论 文(设 计)用 纸

池空间和所需的不同电池电压与容量,灵活地选择电池的种类,1~3节普通干电池、碱性电池、镍镉充电电池或一节锂电池均可以使系统正常工作。使用MAX 1677的电源部分实际电路原理图,若使用0805表贴元件,则此电源处理电路在电路板上实际占用尺寸只有22mm×17mm。

MAX1677是双电压输出升压DC-DC变换器,适用于需两种可调电压输出的便携式仪表。其主要性能为:允许的输入电压范围为0.7V-5.5V;主输出,2.5V-5.5V可调电压输出,或工厂预设值3.3 V输出,最大输出电流可达350mA;第二输出,可为LCD对比度调节提供+28V范围内的电压;电源效率可达95%;16脚QSOP封装,体积很小,不需要外部场效应管。其他性能还包括20uA静态工作电流、1uA关断维持电流和电池欠电压监测。

3.具体实现 (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的取值范围为500KΩ~2MΩ。

·R3、R4:电阻,R1和R4的比值决定了主输出电压值Vout(对应图中的VOUT1),关系式为R3=R4×[(Vout ÷1.25V)-1],其中R4的取值范围为10KΩ~200KΩ。

·R5、R6:电阻,R5和R6的比值决定了系统欠电压监测的门槛电压值Vtrip,关系式为R5=R6×[(Vtrip÷0.614V)-1],其中R6≦130KΩ。当电池电压正常时,电池电压过低输出管脚LBO(Low-Battery Output )输出保持高电平;一旦电池电压低于门槛电压Vtrip时,LBO管脚输出变为低电平。如果不使用欠电压监测的话,只需将第3脚(LBI)接地。

佳木斯大学教务处 第 10 页

毕 业 论 文(设 计)用 纸

表3-1 MAX1677管脚的定义

管脚号 1

管脚名 OUT

功能

芯片电源输入端,接0.1μF旁路电容到地,与POUT脚间通过10Ω串联电阻连接

2

FB

主升压电路反馈输入端。短路到地为3.3V输出,外接分压电阻到OUT脚,输出电压2.5V到5.5V可调

3

LBI

电池低电压检测比较器输入端。内部门限电平为614mV。可通过外部分压电阻设置电池低电压检测电平

4

LBO

电池低电压检测比较器输出端。LBI低于内部门限电平614mV时,LBO输出为低。

5

CLK/SEL

同步时钟和PWM模式选择输入端。CLK/SEL=低电平,小功率,低能耗电流PFM模式;CLK/SEL=高电平,低噪声,大功率PWM模式(300KHz),CLK/SEL=外部时钟(200KHz到400KHz),外同步PWM模式

6 7 8 9 10

LCDON LCD偏压电路使能端。高电平启动LCD偏压电路,主升压电路必须先启动 LCDPOL REF GND LCDFB

1.25V基准输出,外接0.1μF旁路电容 地

LCD升压电路反馈输入端,正压输出时,内部门限电平为1.25V,负压输出时,为0V

11 12 13 14 15 16

ON

芯片使能端,高电平启动MAX1677 LCD偏压极性选择端

LCDLX LCD28V升压功率开关管漏极 LCDGND PGND LX POUT

主升压电路N-沟道MOSFET源极 主升压电路内部功率开关漏极

主升压电路电源输出端,内部同步整流P-沟道MOSFET源极 LCD28V升压功率开关管源极

(2)地址分配和硬件连接

此处只列出和本设计相关的、关键部分的单片机管脚连接和相关的地址分配。

佳木斯大学教务处 第 11 页

毕 业 论 文(设 计)用 纸

·Vin:电源电路的输入端,连接两节1.5V的电池,形成便携式仪表的电源。 ·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 Module”,简称“LCM”,中文一般称为“液晶显示模块”。

在单片机系统中使用液晶显示模块作为输出器有以下优点: ·数字式接口

液晶显示器都是数字式的,和单片机系统的接口更加简单,操作也更加方便。 ·体积小、重量轻

液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示目的,在质量上要比相同显示面积的传统显示器件要轻得多。 ·功率消耗小

相比而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其他显示器件也要小得多。 2.技术方案

通过在第二节中的技术方案的论述,以及对各类液晶显示模块的比较,本次选择较为常用的点阵图形式液晶模块从而使本设计更具备广泛性。系统使用的点阵图形式液晶模块为香港精电公司(VARITRONIX)点阵图形式液晶模块,型号为MGLS-1202A是内置SED1520控制驱动器的图形液晶显示模块,点阵数120X32,点大小0.6×

佳木斯大学教务处 第 12 页

毕 业 论 文(设 计)用 纸

0.425mm,模块尺寸为75.0x54.0mm,视频尺寸60×26.5mm。

(1)MGLS-12032A液晶模块的特性

MGLS-12032A液晶模块是由两片SED1520来驱动的,两个SED 1520都只用了其中的60个列驱动口(SEGOISEG59 )。分别驱动液晶显示器的左右半屏。其内部逻辑电路如图3-3所示。

MGLS-12032A液晶模块的接口端共16个管脚 ,各管脚的具体说明见表3-2。 (2)SED1520液晶显示控制驱动器的特性

SED1520液晶显示控制驱动器集行、列驱动器和控制器与一体,被广泛应用于小规模液晶显示模块,其基本功能如下:

·内置32行×80列共2560位显示RAM区,RAM中的1位数据控制液晶屏上一个像素的亮(1)、暗(0)状态。显示RAM的结构见图3-4所示。 ·具有16个行驱动输出和61个列驱动输出。 ·可以直接与80系列微处理器相连。 ·驱动占空比为1/16或1/32。

·可以级联使用,以扩展行、列驱动能力。

·内部具有18kHz时钟发生器,不需要外部提供时钟发生器即可工作。

图3-3 SED1520显示RAM结构图

佳木斯大学教务处 第 13 页

毕 业 论 文(设 计)用 纸

表3-2 MGLS-12032A液晶模块接口的定义

序号 管脚符号 管脚名称 说明 1 GND 逻辑电源地 2 Vcc 逻辑电源+5V

3 V0 工作负电压 提供对比度调节负电压 4

A0

数据/指令通道选择

A0=0 选择数据通道; A0=1 选择指令通道

5 R/W 读/写选择信号

R/W=0写操作;R/W=1读操作

6 E1 控制器1的读写使能 E1=0禁用;E1=1允许使用 7 E2 控制器2的读写使能 E2=0禁用;E2=1允许使用 8

NC

9~16 DB0~DB7 三态数据总线

(3)液晶模块接口方式选择 液晶模块有3种接口方式可供选择:

·将单片机的并行口与液晶模块的数据总线相连的间接控制方式。 ·存储器映像方式连接的直接访问方式。

·利用其他输入输出接口芯片实现连接的自主控制方式。

佳木斯大学教务处 第 14

毕 业 论 文(设 计)用 纸

图3-4 SED1520显示RAM结构图

由于SED1520控制器可以直接与MCS-51系列单片机相连,可以不必使用其他的接口芯片:另一方面,单片机的通用并行接口P1口已被行列式键盘占用,因此选择存储器映像方式的接口,将液晶模块当作存储器的一部分对待,直接使用存储器读写进行I/O操作。这种存储器映像方式的接口电路示意图如图2一8所示,将液晶模块的数据总线(PO口)直接相连,液晶模块的片选与控制引脚与单片机的高8位址址线(P2口)相连,这样对液晶模块的各种指令操作,实际上就是与相应的控制地址交换数据。

按照图3-5的连接方式,则液晶模块的各基本指令操作对应的控制地址如表3-3所示。

(4)液晶显示的字符输出

要对液晶模块进行控制,需要3个最基本的控制操作:分别向两SED1502控制器写指令代码、写显示数据和读显示数据。完成这三项操作的前提条件是相应SEF31520处于准备好的状态,当SED1520处于忙的状态时,除了读状态字指令外,其他指令均不起作用,因此在访问SED1520前,都要先读取控制器当前状态,判断是否准备好。

图3-5 液晶模块与单片机的接口电路图

佳木斯大学教务处 第 15 页

毕 业 论 文(设 计)用 纸

表3-3 液晶模块控制地址的定义

操作 写指令代码 读状态字 写显示数据 读显示数据

E1地址 8000H 8200H 8100H 8300H

E2地址 4000H 4200H 4100H 4300H

由于单片机内部ROM容量的限制,使用西文字符库进行显示,每个字符大小为6X8点阵,以二维数组的格式存放在ROM中。二维数组的一行表示一个字符,行号即为字符的代码,计算公式:字符代码=ASCII码-30H;二维数组的每个元素对应各字符的每列中8点状态得列数据。向液晶模块输出1个字符的过程就是,由液晶屏显示区的指定字符行的指定列开始,连续输出该字符对应的字符库中的6个列数据。

MGLS- 12032A液晶模块中液晶屏显示区为120×32点阵,如图3-6所示,每8个像素行组成1页(字符行),整个显示区共分为4页;显示区的左半区受E1控制器的60个列驱动器控制,右半区受E2控制器的60个列驱动器控制。

图3-6 液晶屏显示区示意图

当字符输出的指定位置出现在E1和E2控制区的交界线附近时,如不进行适当处理的话,字符是无法被完整显示的,因此必须加入切换控制区以及换页的自动调整处理,得到完整显示的字符输出。带自动调整的单个字符输出的子程序流程图如图3-7

佳木斯大学教务处 第 16 页

毕 业 论 文(设 计)用 纸

所示。

(5)字符串与变量的液晶显示

便携式仪表一般要利用液晶显示测量的数值与相应单位,因此需要了解在上述单个字符输出基础上的字符串与变量数值的输出。

由于FranklinC51编译器给出了函数“printf”的字符输出核心程序putchar.c的源程序代码,可以根据用户LCD的硬件连接加以修改,因此只需要用以上单个字符输出的子程序替换原来的“putchar.c”,就可以方便地利用priritf函数完成字符串与变量数值的输出了。

原有的“putchar.c”的源程序代码是针对RS-232串行通信的单个字符传输printf函数就可以完成数据的串行通信传输。但是系统中还有RS-232要将printf函数保留给串行通信使用就必须重新编制字符串与变量数值输出的函数。

有确定长度的字符串输出很容易实现,但对于变量数值的输出,从数值转换成字符,其字符长度是变化不确定的。解决的方法是使用Sprintf函数,将变量的数值转换成字符串存放到输出缓冲区中,并返回字符串长度,再利用确定长度的字符串输出函数进行输出,完成字符串与变量数值的输出。

佳木斯大学教务处 第 17 页

毕 业 论 文(设 计)用 纸

佳木斯大学教务处单个字符显示 指定字符点阵首列位置 字符换行判断: 点阵列数>114? 字符行数=字符行数+1 点阵列数=0 字符元素列=0 点阵列数>=60? 点阵列数=点阵列数-60 点阵列数送至E2控制器 在E2该列写入字符列控制字 点阵列数送至E1控制器 在E1该列写入字符列 点阵列数=点阵列数+1 字符元素列=字符元素列+1 字符元素列=6? 返回 图3-7 单个字符输出子程序流程

第 18 页

毕 业 论 文(设 计)用 纸

3.具体实现

单片机和LCD的接口电路如图3-8所示。

(1) 电路原理和器件选择

(2) 在这里仅列出单片机和LCD接口部分电路的器件名称和相关的主要功能。 ·89C52:LCD的控制器,控制字符的发送和点阵显示的时序。

·LCD:液晶显示模块。在单片机的控制下,按照要求的格式显示接收到的数据。 ·74LS00、74LS04:由于LCD并没有独立的片选信号,所以使用单片机的读写信号进行选通,而74LS00、74LS04则是转换读写信号的电平,同时作为片选信号。

(2)地址分配和连接:

此处只列出和本设计相关的、关键部分的单片机管脚连接和相关的地址分配。主要是单片机和LCD之间的信号连接和地址分配。

·E1、E2:连接经过74LS00、74LS04转换后的单片机读写信号,作为单片机对

佳木斯大学教务处 第 19 页

毕 业 论 文(设 计)用 纸

LCD的片选信号。

·A8:单片机对LCD的数据/指令通道的选择。 ·A9:单片机对LCD的读写选择信号。 ·D0-D7:单片机和LCD的数据总线。 (3)液晶显示的程序

液晶的显示程序是整个程序中最为重要的程序,主要包括3个子程序模块,分别是:

·液晶驱动cdwe.a51的程序:向液晶的驱动模块写入控制字,具体的控制字格式和内容可以参看液晶驱动模决手册中的规定。

·液晶驱动inclr.a51的程序:液晶模决的清屏功能。 ·液晶字符显示程序disp.c的程序:液晶的数据显示功能。 在这里分别列出它们关键部分的程序代码: ·液晶驱动cdwe.a51的内容;

;定义全局变量COM和DAT,全局函数CWE1(),DWE1(),CWE2(),DWE2() PUBLIC COM,DAT,CWE1, DWE1,CWE2,DWE2 ;COM存放控制指令,DAT存放显示数据 RAM SEGMENTDATA PGM SEGMENTCODE

;CWE1()子函数,传递变量COM到控制器E1,参数为#CWADD1实现控制指令的传递

CWE1: PUSH DPL PUSH DPH

MOV DPTR #CRADD1 CWE101: MOVX A, @DPTR JB ACC7, COM MOV DPTR, #CRADD1 MOV A, COM MOVX @DPTR A

佳木斯大学教务处 第 20 页

毕 业 论 文(设 计)用 纸

POP DPH POP DPL RET

DWE1()子函数,传递变量DAT到控制器E1,参数为#CRADD1 PUSH DPL PUSH DPH

MOV DPTR, #CRADD 1 DWE101 MOVX A, @DYTR JB ACC.7, DWE101 MOV DPTR, #DWADDI MOV A DAT MOVX @DPTR, A POP DPH POP DPL RET

CWE2()子函数,传递变量COM到控制器E2,参数为#CWADDz,实现控制指令的传递

CWE2 PUSH DPL PUSH DPH

MOV DPTR, #CRADD2 CWE201 MOVX A, @DPTR JB ACC.7, CWE201 MOV DPTR #CRADD2 MOV A, COM MOVX @DPTR, A POP DPH POP DPL RET

DWE2()子函数,传递变量DAT到控制器E2,参数为#CRADD2,实现控制数据的

佳木斯大学教务处 第 21 页

毕 业 论 文(设 计)用 纸

传递

DWE2 PUSH DPL PUSH DPH

MOV DPTR, #CRADD2 CWE201 MOVX A, @DPTR JB ACC.7, CWE201 MOV DPTR #CRADD2 MOV A DAT MOVX @DPTR, A POP DPH POP DPL RET END

·液晶驱动inclr.a51的内容: ;说明使用到的外部函数和外部变量

EXTRN CODE(CWE1,DWE1,CWE2,DWE2) EXTRN DATA(COM, DAT) ;定义全局函数INITAL(),CLEAR() PUBLIC INITAL,CLEAR ;清屏,即所有数据单元清0

CIEAR: MOV R4, #00H CLEAR1: MOV A, R4 ORL A, #0B8H MOV COM, A LCALL CWEI LCALL CWE2

MOV R3 #3CH LCALL CWE1 LCALL CWE2

佳木斯大学教务处

第 22 页

毕 业 论 文(设 计)用 纸

MOV DAT #00CH CLEAR2: MOV DAT #00H LCALL DWEI LCALL DWE2

DJNZ R3, CLEAR2 INC R4

CJNE R4, #04H, CLEAR1 RET END

·液晶字符显示程序disp.c的内容: //定义全局变量LINE,CLMN //LINE当前显示页,CLMN当前显示列 uchar LINE,CLMN;

bitAREA;/*控制区域,AREA =0,E1控制区:AREA=1,E2控制区*/ //说明使用到的外部变量

extern ucharCOM,DAT,NDIG; extern char xdata BUFFER[]; //…- //写一个字符 void onechar(charc) {

uchar i;

for(i=0;i<6;i++) {

DAT=CTAB[c-0x20][i]; if(AREA)DWE2(); else DWE1();

locate(LINE,CLMN+1);

佳木斯大学教务处 第 23

毕 业 论 文(设 计)用 纸

}

}

//写一个字符 void showr(void) {

uchar i;

for(i=0;i

{

onechar(BUFFER[i]);

}

}

此处的C51程序使用到了汇编函数。

3.3 行列键盘的输入

1.作用

计算机控制系统中,数据和控制信号的输入主要使用键盘。键盘接口,尤其是键入信号的软件处理方法是影响系统使用和操作性能的重要因素。键盘接口及其软件的任务主要包括

以下儿个方面:

·检测并判断是否有键按下。 ·按键开关的延时消抖功能。 ·计算并确定按键的键值。

·程序根据计算出的键值进行一系列的动作处理和执行。 2.技术方案

根据第二节中对不同键盘的比较结果,在本设计中选择非编码式行列键盘作为便携式仪表的输入装置。

(1)行列式键盘的基本结构

行列式键盘中的键实际上就是一个机械开关,位于行线和列线的交点处,图3-10

佳木斯大学教务处 第 24 页

毕 业 论 文(设 计)用 纸

所示为本设计中使用的4行×4列的16键行列式键盘,当键被按下其交点的行线和列线接通,使相应行线或列线上的电平发生变化,根据电平变化情况确定被按下的键。

图3-10 4×4行列式键盘示意图

(2)键盘接口方式选择

常用的键识别方法有:行扫描法、线翻转法和利用8279键盘接口的中断法。前两种方法相当于查询法,需要反复查询按键的状态,会占用大量的CPU时间:后一种方法在有键按下时向CPU申请中断,平时并不需要占用CPU时间。

在本设计中,完全可以不使用中断法完成键盘接口,这是由系统的特殊性决定的。

首先,对于本系统而言,要实现便携式的设计,硬件电路使用的器件越少越好。 其次,被测信号由外中断引脚输入,未占用单片机4个并行I/O口中的任何一个,系统有足够的资源利用自身I/O口完成接口。

最后,只有当传感器输出信号频率为空载频率,系统处于空闲待测的状态下,才允许键盘输入,因此键盘识别占用的CPU时间不会对系统正常工作造成影响。因此直接利用单片机并行接口完成键盘的接口,采用线翻转法进行键盘识别。

佳木斯大学教务处 第 25 页

毕 业 论 文(设 计)用 纸

图3-11 4×4行列式键盘与单片机的连接

通常的线翻转法是将行线和列线分别接到两个不同的并行口,通过设置各并行口的状态改变行线和列线的输入输出工作方式,但这样过多地占用了系统的硬件资源,必须进行相应调整。选用如图3-10所示的4×4行列式键盘,将总共8根行线与列线直接与单片机的通用输入输出口P1口相连,连接方式见图3-11,高4位用于列控制,低4位用于行控制,通过软件中的逻辑运算控制使同一个并行口的不同管脚工作在不同的输入输出方式下,来实现线翻转法的键盘识别工作。

(3)键盘处理子程序流程

键盘上有很多键,每一个键对应一个键码,以便根据键码转到相应的键处理子程序,进一步实现数据输入和命令处理的功能。键盘识别的流程如图3-12所示采用线翻转法实现的具体方法如下。

·判断是否有键按下。设置列线输出方式,行线输入方式;向所有列线输出低电平;读取P1口状态,并从P1口状态中分离出行线状态;若行线状态皆为高电平,则无键按下,若有低电平状态,则有键按下;当有键按下时,保留此时的行线状态。

·去抖动。按键本身是机械开关,在触点闭合或断开的瞬间会出现电压抖动的现象,必须去除抖动的影响,才能正确识别被按下的键。为简单起见,使用软件方法消

佳木斯大学教务处 第 26 页

毕 业 论 文(设 计)用 纸

抖。延时10ms,读取所有列线输出低电平情况下的行线状态,若两次的行线状态相同,说明信号稳定,可以继续确定按键的物理位置。

·确定物理位置得到键码。将改变行线和列线的工作方式,由行线输出,列线输入。行线输出前次读取的行线状态,由列线读取相应的列线状态。闭合键对应的行线和列线的状态均为低电平,其他健均为高电平状态。将此行线和列线状态组合即可得到该闭合健对应的键码。

·等待键释放。得到闭合健对应的键码以后,继续延时并判断按健状态,直到闭合的按键被释放,再根据键码转到响应的健处理子程序中。

系统中使用的4×4行列式键盘上16个按键的功能定义与相应键码见表3-4所列。

表3-4 16个按键的功能定义与相应键码的定义

键号 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

功能 1 2 3 M1 4 5 6 M2 7 8 9 M3 * 0 # M4

键码 7EH 0BEH 0DEH 0EEH 7DH 0BDH 0DDH 0EDH 7BH 0BBH 0DBH 0EBH 77H 0B7H 0D7H 0E7H

佳木斯大学教务处 第 27 页

毕 业 论 文(设 计)用 纸

图3-12 键识别流程框图

3.具体实现

本设计中单片机系统使用简单的键盘和液晶显示器件来完成输入/输出操作的人机界面。行列式键盘与89C52单片机的接口电路

键盘输入信息的主要过程是: ·CPU判断是否有键按下。 ·确定按下的是哪一个键。

·把此键代表的信息翻译成计算机所能识别的代码,如ASCII或其他特征码。 图3-13是89C52与行列式键盘的接口电路。P1口作键盘接口,P1.0~P1.3作键盘的行扫描输出线,P1.4~P1.7作列检测输入线。

键的识别功能,就是判断键盘中是否有键按下,若有键按下则确定其所在的行列位置。程序扫描法是一种常用的键识别方法。在这种方法中,只要CPU空闲,就调用键盘扫描程序,查询键盘并给予处理。采用查询方法实现的键盘扫描程序的过程如下。

佳木斯大学教务处 第 28 页

毕 业 论 文(设 计)用 纸

·查询是否有键按下

首先单片机向行扫描口P1.0~P1.3输出全为“0”扫描码F0H然后从列检测P1.4~P1.7输入列检测信号,只要有一列信号不为“1”;即P1口不为F0H,则表示有键按下。接着要查出按下键所在的行、列位置。

·查询按下健所在的行列位置

单片机将得到的信号取反P1.4~P1.7中的为1的位便是键所在的列。

接下来要确定键所在的行,需进行逐行扫描。单片机首先使P1.0接地,P1.1 w-PI.7为“I;即向门口发送扫描码FEH接着输入列检测信号,若为全“1”,表示不在第一行。接着使P1.1接地,其余为“1”,再读入列信号…。这样逐行发“0”扫描码,直到找到按下键所在的行,将该行扫描码取反保留。当各行都扫描以后仍没有找到,则放弃扫描,认为是键的误动作。

·对得到的行号和列号译码,得到健值。

扫描函数的返回值为行列键盘的键特征码,若无键按下,返回值为0。行列键盘扫描的源程序段keyscan.c的流程图和代码如下。

佳木斯大学教务处 第 29 页

毕 业 论 文(设 计)用 纸

图3-17 行列式键盘扫描流程图

佳木斯大学教务处 第 30 页

毕 业 论 文(设 计)用 纸

#inctude #define uchar unsigned char #define uint unsigned int void delays(void); uchar kbscan(void); void main(void) {

uchar key; white(1) {

key=kbscan(); /*键扫描函数*/ delays(); /*键消抖的延时函数*/ } }

//键消抖的延时函数 void delays(void) { uchar

for(i =300;1>0;i--); }

//kbscan(void) 键扫描函数 ucher kbscan(void) {

ucharsccode,recade:

P1=0xf0; /*发全“0”行扫描码,列线输入*/ if((P1&0xf0)!= 0xf0 /*若有键按下*/ delays(); /*延时抖动*/ if((P1&0xf0)!= 0xf0 /*逐行扫描初值*/ {

佳木斯大学教务处 第 31

毕 业 论 文(设 计)用 纸

sccode=0xfe;

while{{sccode&0x10}!=0} {

P1=sccode;

if{(P1 &0xf0)! =0xf0} /*输出行扫描码*I {

ecode=(P1&0xf0)!=0x0f; /*本行有键按下*/ return((~sccode)+(~recode)); /*返回特征字节码*/ }

ecse sccode=({sccodee<<1)10x01 /*行扫描码左移一位*/ return(0); /*无键按下,返回值为0*/ }

此程序对于行列式键盘而言是一种通用的键盘扫描要稍作改动,即可适用于不同的使用场合。

3.4 键盘的软件去抖

1. 作用

当按下一个键时,往往会出现所按键在闭合位置和断开位置之间跳-几下才稳定到闭合状态的情况。在释放一个键时,也会出现类似的情况,这就是键抖动,抖动得持续时间不一.通常不会大于10ms若抖动问题不解决,就会引起对闭合键的多次读入,从而引起系统对输入状态的判断失误,所以很有必要进行按键的消抖。

2.技术方案

在单片机控制系统中,按键处理儿乎存在于每个实际设计中。目前,有两种方法可以对按键进行消抖,一种是通过使用RS触发器构成的硬件电路消除按键的抖动,而另一种则是本设计中需要说明的软件消抖方法。

软件消抖的方法也有所不同,一种是通过延时的方法消抖,这是一种常用的消抖方法。判断有键后延时10~20ms再次读键判断,以便达到每次按键操作只产生一次有效信号供单片机处理。由于键被按下的时间持续上百ms,延时后再扫描也不迟。

佳木斯大学教务处 第 32 页

毕 业 论 文(设 计)用 纸

另一种方法则是以软件方式实现类似于可重复触发单稳态脉冲的硬件消抖电路。实现原理是将读入的按键字节与软件产生的控制字节进行逻辑操作后再处理,而控制字节在每次按键的第一个抖动沿就置为FFH,并保持0.5s在此后的多次抖动因为逻辑或操作而被屏蔽掉,当屏蔽时间到达后,控制字节清为00H,从而可以接受下一次按键响应,0.5s的屏蔽时间适合多数操作者的反应速度,实际情况可以短至0.3s,再短会增加操作者在控制键盘输入上的难度。

3.具体实现

在本设计中,采用的键盘消抖方法是常用的软件延时方法,在键盘输入的扫描过程中嵌入如下的程序段,则能方便的实现键盘输出的消抖功能。

void main(void) {

uchar key; while(1) {

key=kbscan() //键盘扫描程序

delays(); //键的消抖延时函数 void delays(void) { uchar

for(i=300;i>0;i--);

上述程序中的delays()就是单片机的延时子函数,由于采用的晶振频率不同,采用的延时函数的循环次数也不相同,需要用户根据实际情况自己定义。

3.5 C51和汇编的混合编程

1.作用

C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并可以调用汇编语言的子程序或子函数。

FranklinC51是一种专门针对51系列微处理器的C开发工具,它提供了丰富的库

佳木斯大学教务处 第 33 页

毕 业 论 文(设 计)用 纸

函数,具有很强的数据处理能力,编程中对8051寄存器和存储器的分配均由编译器自动管理,因而,通常用C51来编写主程序。然而,有时也需要在C程序中调用一些用汇编A51编写的子程序。例如,以前用汇编语言编写的子程序、要求较高的处理速度而必须用更简练的汇编语言编写的特殊函数或因时序要求严格而不得不使用灵活性更强的汇编语言编写的某些接口程序等等。另一方面,在以汇编语言为主体的程序开发过程中,如果涉及到复杂的数学运算,往往需要借助C语言工具所提供的运算库函数和强大的数据处理能力,这就要求在汇编中调用C函数。

2.技术方案

(1)函数名的转换和命名

本章前面的模块为同一种语言的模块化编程。下面是模块以不同语言编写的模块化编程,即混合编程。混合编程必须指定参数的传递规则。函数名的转换如表3-5。

表3-5函数名的转换

说明 void func(void)

符号名 FUNC

解释

无参数传递或不含寄存器参数的函数名不作改变转入目标文件中,名

字只是简单地转为大写形式

void func(char) _FUNC

带寄存器参数的函数名加入“_”字符以示区别,它表明这类函数包含

寄存器内的参数传递

voidfunc(void) _?FUNC reentrant

对于重入函数加上“_?”字符串前以示区别,它表明该函数包含栈内

的参数传递

当组合在一起的程序部分以不同语言编写时,大多数是用汇编语言编写硬件有关的程序。编译器由于历史原因不能有效使用内部寄存器。编译器也可把中间结果放到片外RAM中。通常情况下以高级语言C编写主程序,这样程序易编写。几个字节的外部代码仅用一次,时间消耗很少,但循环重复使用这些字节消耗很大。好的方法是以高级语言编写而在经常用到的函数处调用相关的子函数,不论该函数用何种语言编写。

佳木斯大学教务处 第 34 页

毕 业 论 文(设 计)用 纸

所有程序运行通过后,返回来优化有缺陷的程序。一些C编译器可以很容易的生成汇编语言源程序,必须汇编后才得到最后程序;一些编译器允许单行的汇编程序,也可把汇编程序集中在同一文件中。参数通常是通过固定的CPU寄存器传给汇编程序的。当使用#progmaNORFG PARMS”时,则通过固定的存贮器位置传递参数,在这就给Franklin C51之间提供了一个非常简洁的接口,且返回值在CPU寄存器中。

(2)C51函数的参数传递规则

C和汇编接口的关键在于要弄清C函数的参数传递规则,Franklin C51具有特定的参数传递规则,这就为二者的接口提供了条件。FranklinC51函数最多可通过CPU寄存器传递3个参数,这种传递技术的优点是可产生与汇编语言相比的高效代码。表3-6是利用寄存器传递参数的规则。如果参数较多而使寄存器不够用时,部分参数将在固定的存储区内传送,这种混合的情况有时会在弄清每一个参数的传递方式时发生困难。如果在源程序程序中选择了编译控制命令“#pragma NOREG PARMS”,则所有参数传递都发生在固定存储区域,所使用的地址空间依赖于所选择的存储器模式。这种参数传递技术的优点是传递途径非常清晰,缺点是代码效率不高,速度较慢。当函数具有返回值时,也需传递参数,这种返回值参数的传递均是通过CPU内部寄存器完成。

FranklinC编译器可使用寄存器传递参数,也可用固定存贮器位置或使用堆栈,这些只是选项。通过堆栈传递参数,总的来说对C更协调并支持重入。若一函数调用自己,堆栈加深而不是改写变量。尽管这种方法更通用,但对8051无效,这是因为要保证有大的堆栈才能存取外部RAM。所有操作必须用一对指令,每次要设置和保存数据指针。编译器可使用通常的内部堆栈,但对数学库函数不实用,它可能要耗用现有128或256字节中的100个字节,而其他软件也需要内部RAM。

CPU寄存器中最多传递3个函数。这种参数传递技术产生高效代码,可与汇编程序相媲美。参数传递的寄存器选择如表3-6所示。

参数类型 第1个参数 第2个参数

char R7 R5

int R4~R7 R4~R7

long,float R4~R7 R4~R7

一般指针 R1,R2,R3 R1,R2,R3

佳木斯大学教务处 第 35 页

毕 业 论 文(设 计)用 纸

第3个参数

R3

R1,R2,R3

下面提供了几个说明参数传递规则的例子。 //“a”是第一个参数,在R6, R7中传递。 funcl(int a)

//\”在R6,R7中传递、“n”在R4,R5中传递,“P”在R1, R2 ,R3中传递 func2 (int i, int n, int*p)

//“m”在R4~R7中传递,“f”不能在寄存器中使用,只能在参数传递段中传递 func3(long m, long f )

//“1”在RA~R7中传递,“j”,不能在寄存器中传递,必须在参数传递段中传递 func4(float 1,chat j)

参数传递段给出汇编在程序中使用的置定存储区,就像参数传递给C函数一样,参数传递段的首址通过名为“?函数名?BYTE”的PUBLIC符号确定。当传递位值时,使用名为“?函数名?BYTE”的PUBLIC符号。所有传递的参数放在以首地址开始递增的存储区内,函数返回值放入CPU寄存器,如表3-7所示。这样,C51程序与汇编语言的接口相当直观。

表3-7 参数传递的定义

返回值 bit (unsigned) char (unsigned) int (unsigned) long

float 指针

寄存器 C R7 R6,R7 R4~R7 R4~R7

进位标志

高位在R6,低位在R7 高位在R4,低位在R7

32位IEEE格式,指数和符号在R7

说明

R1,R2,R3 R3放存贮器类型,高位在R2,低位在

R1

在汇编子程序中,当前选择的寄存器组及寄存器ACC,B,DPTR和PSW都可能改变。当被C函数调用时,必须无条件地假定这些寄存器的内容已被破坏。如果在连接/定位程序时选择了覆盖,那么每个汇编子程序包含一个单独的程序段是必要的,因为在覆盖过程中,函数间参量通过于程序各自的段参量计算。

佳木斯大学教务处 第 36 页

本文来源:https://www.bwwdw.com/article/joz3.html

Top