1、毕 业 论 文基于单片机的数字电压表的设计摘 要本设计主要研究的是以AT89C51单片机为核心的电压测量系统,该系统能够在单片机的控制下完成对电压信号采集,能够根据采样值进行量程自动转换,并且测量结果可通过四个数码管显示出来。整个系统的设计完成了硬件电路的设计及软件程序的编写,通过最终硬件电路的调试及软件程序的仿真,使该系统能够在要求的条件下达到正常的测量及显示功能。在整个系统的设计过程中,主要采用了模块化的设计方法。关键词: AT89C51单片机;数字电压表;模块化Design of the digital voltmeter based on the MCUAbstract This pa
2、per introduces an achievement of a voltage measure system based on the AT89C51 MCU. This system can accomplish the signal sampling of voltage, and change range automatically according to the signal sampled. The result can be displayed through numeral rube of four places.In this design, the hardware
3、circuit and software programming are both realized at the judge of hardware circuit and imitation of software program. This system can fulfill the function of measure and displaying under the demanded conditions. Over the designing of the whole system, the method of modularity is used.Key words: AT8
4、9C51 MCU; Digital Voltmeter; Modularity 目 录绪论1第一篇 硬件部分的设计11. 数据采集部分的设计21.1 交流信号和直流信号的采样22. 量程自动转换电路的设计43. 模数转换单元的设计54. 控制电路的设计74.1总体概况7一.主要功能7二.内部结构框图8三.外部引脚说明94.2 单片机在系统中的应用115. 显示部分的设计125.1键盘显示8279芯片125.2 8279的组成和基本工作原理135.3 8279引脚及功能155.4 8279的工作方式及命令字格式17第二篇 软件系统的设计231. MCS-51单片机汇编语言232. 主程序的设计2
5、33. 子程序的设计253.1采样程序的设计253.2 量程处理程序的设计263.21 采样及其处理程序263.22 计算部分的设计283.23 显示部分的软件设计293.3 超量程处理294. 系统程序清单29设计总结41参考文献41绪论在电气测量中,电压是一个很重要的参数。如何准确地测量模拟信号的电压值,一直是电测仪器研究的内容之一。数字电压表是通用仪器中使用较广泛的一种测试仪器,很多电量或非电量经变化后都用可数字电压表完成测试。因此,数字电压表被广泛地应用于科研和生产测试中。本文将介绍一种以单片机为核心的电压测量仪表,它能够测量电压量,能够自动进行量程选择,并且测量结果能够通过数码管显示
6、,从而具有一定的智能性。本文将就这一系统的硬件电路部分和软件程序部分分别作以介绍。在硬件部分,本文就系统的各个组成模块的原理作了详细的介绍。另外,在每一模块电路中都对元器件的选择作了简单的介绍,其中包括有关数值的计算和分析。在软件部分,详细阐述了各个模块电路的软件设计方法和设计中的细节。第一篇 硬件部分的设计分析本设计,可以看出其主要任务就是对电压信号能够自动选择合适的量程进行测量并显示。本设计要求采用单片机进行控制,由于单片机的有效输入输出信号均为数字信号,而对于整个系统的前向通道有效信号均应为模拟信号,所以在设计过程中必然包括模拟量转换为数字量单元的设计。根据要求本设计中采用的是V/F转换
7、电路。对于V/F转换电路,要使其转换具有良好的线性度和精度必须使其输入电压变化范围较小。而本系统中要求测量的电压范围是0500V,无法满足V/F转换的要求。所以,前向模拟通道的设计要包括量程转换部分,即对大信号进行分压变小,对小信号进行放大,显然,这样不仅能满足V/F转换电路的要求,而且也能有效的防止超量程测量。另外,前向通道的设计还应包括对模拟信号的采集部分。本设计框图如图1-1所示:图1-1 设计总框图在以后的各节中,将分别介绍各个部分的设计。1. 数据采集部分的设计根据本系统的要求所采集的信号应为电压信号,同时电压信号还应有交流和直流之分。所以在设计中应该具有相应的处理电路,使最终的信号
8、得以统一。对于交流信号可以采用交/直流变换的方法变为直流,这样最终进入模/数转换单元(即V/F转换单元)的模拟信号就应该为直流电压信号。对于信号变换部分应该注意的是所采样的信号种类应能够通知控制部分(单片机),以使控制部分做出相应的计算处理,只有这样才能保证最终的显示结果的正确性。1.1 交流信号和直流信号的采样本设计中所采用的交直流转换电路如图1-2所示:分析此电路,可以看出此电路集精密全波整流、量程切换、信号过零比较于一体。CD4053是三组单刀双掷集成模拟开关,开关X承担了全波整流的任务,其控制端A受控于比较器的输出电平。图中U10工作于同相放大状态,运放U11工作于反相放大状态,比较器
9、的输入引自U10的放大输出信号,这有利于提高比较器对信号的灵敏度。电路输入交流信号的正半波时,同相连接的比较器U9输出高电平,模拟开关X接通运放U10输出信号送后续的模拟信号与数字信号的转换单元;电路输入交流信号的负半波时,比较器U9输出低电平,模拟开关X接通反相器U11的输出信号送后续的模拟信号与数字信号的转换单元。由此完成了由U9过零跃变的准数字量控制的全波整流过程。这个准数字信号就可以用来通知控制部分所进行测量的是交流信号还是直流信号,以使控制部分进行相应的计算和显示。CD4053的另两组模拟开关Y 和Z承担了三个量程的切换任务,它们的控制端B 和C通过来自单片机的量程切换命令。图1-2
10、 交直流转换电路另外,图1-2电路能同样有效地用于直流信号的前置处理。电路的输入端无论接入的是直流正信号还是直流负信号,输出的幅值都是0伏以上的直流正信号,这对于后续电路的设计尤其适用,而此时可以从比较器输出的电平高低获知是正输入还是负输入。特别重要的示,直流信号和交流信号具有同样的传输增益,给交直流参数的测量软件同一处理提供了极大的方便。显然,此电路满足本设计的要求,而且它集量程转换于一体,为量程转换部分的设计提供了方便,节省了硬件资源。2. 量程自动转换电路的设计在仪表的设计过程中,量程转换的设计是相当重要的。所设计的系统应该具有自动转换量程的功能,并且能够自动判断是否超量程测量。这样才能
11、够为后续的模数转换单元提供适当的输入电压,使其转换具有良好的精度和线性度。在本设计中模数转换单元选择的是电压/频率转换电路,对于V/F转换电路,其输入电压选择05V。这样,经过量程转换后的电压范围就应该为05V。因为本系统的输入电压范围是0500V,故我们可以选择1/100作为其最大电压的量程档,500V经过1/100分压后降为5V,恰好可以满足V/F转换的要求。在本设计中,对于电压信号设置了五个量程,即1/100档,1/10档,1档,10档,100档。1/100档和1/10档由分压电路来完成,它们是用来测量较大电压的。而1档,10档,100档则是应用放大电路来完成的,它们则是用来测量较小的电
12、压的。在本设计中,1档,10档,100档可由交直流转换部分的电路来实现,见图1-4。此电路中的多路选择开关CD4053可以用来选择放大倍数,在该电路中分别设置了1,10和100的放大倍数。具体选择多大的放大倍数可以通过单片机的引脚P1.3和P1.4电平来控制。本设计中CD4053各个开关的导通与单片机引脚的关系见表1-1所示。表1-1:CD4053与单片机引脚的关系 C(P1.4) B(P1.3)Y选通情况 Z选通情况 0 0 YY0 0 1 YY1 ZZ0 1 0 YY0 1 1 YY1 ZZ1本设计中1/100和1/10分压比的选择也由单片机引脚控制多路选择开关来实现。由于本系统要求的电压
13、测量范围是0500V,所以多路开关的选择应特别注意其耐压值。在本设计中采用的是MAX4602,因为它的耐压值可达到两千伏左右,故可以应用在本系统中。分压比的选择由单片机的P1.0和P1.1来控制。电路图见图1-3。图1-3 量程转换部分的分压电路由上述分析可知量程的转换由两部分(即分压和放大)共同完成,所以在量程的选择时需注意两部分的关系,即选用分压时放大电路的放大倍数要选为1,选用放大时信号要直接进来而不经过分压。3. 模数转换单元的设计单片机对模拟信号的读取通常是采用A/D转换方式,这一方法对输出阻抗低,惰性强,变化缓慢,传输距离长的信号,采用A/D转换的抗干扰性能就比较差。对于不需要较快
14、检测速度的信号,如果采用V/F变换器代替原有的A/D转换器,把电压信号转换成与之对应的频率信号(f=kv),由单片机CPU计数器在采样周期内对频率脉冲进行计数,采样时,CPU发出计数指令,定时时间一到,计数停止,从读到的计数值乘以一定的系数,就可以得到相应电压值。本设计中,采用的是LM331转换芯片(V/F)将模拟信号转变为相应的频率信号,具体电路如图1-4所示:图1-4 V/F转换电路LM331是单片集成芯片,在V/F转换器中,它是LM31系列中的一种,它作为一种简单廉价的电路很适用于模/数转换。它使用了新的温度补偿能隙基准电路,在整个工作温度范围内和低到4.0V电源电压下都有较高的精度,最
15、大线性度达0.01%,6个数量级的动态范围,即满量程的频率范围为1HZ 100KHZ。其数字脉冲重复率正比于模拟输入电压的幅值。这类器件的高精度,高线性度,低温移及单调性的组合所提供的性能是其它技术难以实现的。逐次近似A/D转换器定期进行“抽样”,因此易受噪声尖峰的影响,而电压频率转换器的输出端一直在进行积分,因此能对噪声或变化的输入信号进行平滑,特别适合于噪声工作环境。对V/F变换,整个电路都是线性放大。对LM331,根据V/F变换的原理,其输出频率与输入电压的关系满足下面的公式:f=(V/2.09)(R/R)(1/R)(1/C) (1-3)由公式1-3可以看出输出频率f与输入电压V成正比。
16、对V/F转换,满度频率f大,闸门周期短,转换快,分辨率高,但同时线性度下降。因此在选择参数R、R、R、C时格外要注意。本设计中的输入电压Vi在05V(即量程转换后的电压均为05V)内变化,输出f选择在010KHZ内变化,既可满足转换率又可满足分辨率的要求。在本设计中,为了消除干扰,在输入信号端加一个低通滤波器,C=1uF,R=100K,低通滤波的截止频率为:f=1/(2RC)1.59HZ图1-4中,选择R (R26)为62K,R (R22)为5.1K,C(C5)为0.01uF,R为 R24+R30,仔细调节R30即可满足输入为5V时,输出f为10KHZ。LM331由7脚输入电压,由5脚输入偏置
17、电流,5脚最大保持电压为7Vs,2脚的参考电压为1.9V。流入C6的Iaver=i(1.1 R C)f。f输出期间(t=1.1 R C),C14充电到V,此后,i=0,f无输出,C14从V放电到V,而后比较器工作,开始另一个循环,整个过程始终保持电荷平衡。LM331的输出接光电耦合器6N137,6N137采用射极输出,不改变输出相位,集电极开路,内部有脉冲整形电路,其输出可直接接单片机的引脚,而不会改变信号的频率输出。使用光电耦合器,一方面可以抑制较大的随机干扰信号进入单片机,(6N137最大可抑制3000V的噪声干扰),减少进入单片机的干扰信号修改单片机内部寄存器的数值或发生死机的现象;另一
18、方面可以避免数字电路,模拟电路的共地,因而能有效的抑制由于数字电路,模拟电路的共地带来的地电位脉冲引起的数据抖动现象。4. 控制电路的设计4.1总体概况一.主要功能MCS-51系列单片机是美国Intel公司在1980年推出的高性能8位单片微型计算机,比原来的MCS-48系列结构更为先进,功能增强,它包括51和52两个子系列。在51子系列中,主要有8031、8051、8751三种机型,他们的指令系统与芯片引脚完全兼容,仅片内ROM有所不同。51子系列的主要功能为: 8位CPU。 片内带振荡器,振荡频率fosc范围为1.212MHZ;可有时钟输出。 128个字节的片内数据存储器。 4K字节的片内程
19、序存储器(8031无)。 程序存储器的寻址范围为64K字节。 片外数据存储器的寻址范围为64K字节。 21个字节专用寄存器。 4个8位并行I/O接口:P0、P1、P2、P3。 1个全双工串行I/O接口,可多机通信。 2个16位定时器/计数器。 中断系统有5个中断源,可编程为两个优先级。 111条指令,含乘法指令和除法指令。 有强的位寻址、位处理能力。 片内采用单总线结构。 用单一+5V电源。二.内部结构框图MCS-51系列单片机的内部结构框图如下图1-5所示:通道0驱动器通道2驱动器RAM地址锁存器RAM通道0锁存器通道2锁存器ROMB寄存器程序地址寄存器缓冲器PC递增器程序计数器DPTR指针
20、VCCGNDP1.0P1.7堆栈指针SPACCTMP2PSW通道3锁存器通道1锁存器通道1驱动器通道3驱动器TMP1SCONTMODPCONTCONTL0TH1TH0TL1IESBUF(TX/RX)IP中断、串行口和定时器逻辑振荡器P3.0P3.7RSTEAALEPSENXTAL2XTAL1ALU(+5V)指令寄存定时逻辑指令译码图1-5 MCS-51系列单片机的内部结构框图 由图可大致看到:它含运算器、控制器、片内存储器、4个I/O接口、串行接口、定时器/计数器、中断系统、振荡器等功能部件。图中SP是堆栈指针寄存器,栈区占用了片内RAM的部分单元;未见通用寄存器(工作寄存器),因单片机片内有
21、存储器,与访问工作寄存器一样方便,所以就把一定数量的片内RAM字节划作工作寄存器区;PSW是程序状态字寄存器,简称程序状态字,相当于其他计算机的标志寄存器;DPTR是数据指针寄存器,在访问片外RAM、片外ROM、甚至扩展I/O接口时特别有用;B寄存器又称乘法寄存器,它与累加器A协同工作,可进行乘法操作和除法操作。三.外部引脚说明MCS-51系列单片机芯片有40个引脚。用HMOS工艺制造的芯片采用双列直插式封装,见下图1-6。低功耗的、采用CHMOS工艺制造的机型(在型号中间加一“C”字作为识别,如80C31、80C51、87C51)也有用方封装结构的。图1-6 MCS-51系列单片机芯片引脚图
22、现将各引脚分别说明如下:1.主电源引脚VCC:接+5V电源正端。VSS:接+5V电源地端。2.外接晶体引脚XTAL1:片内反相放大器输入端。XTAL2:片内反相放大器输出端。外接晶体时,XTAL1与XTAL2各接晶体的一端,借外接晶体与片内反相放大器构成振荡器。3.输入/输出引脚P0.0P0.7:P0口的8个引脚。在不接片外存储器与不扩展I/O接口时,可作为准双向输入/输出接口。在接有片外存储器或扩展I/O接口时,P0口分时复用为低8位地址总线和双向数据总线。P1.0P1.7:P1口的8个引脚。可作为准双向I/O接口使用。P2.0P2.7:P2口的8个引脚。一般可作为准双向I/O接口;在接有片
23、外存储器或扩展I/O接口且寻址范围超过256个字节时,P2口用为高8位地址总线。P3.0P3.7:P3口的8个引脚。除作为准双向I/O接口使用外,还具有第二功能,见表2-2。表2-2: 输入/输出引脚引脚第二功能P3.0RXD (串行输入口)P3.1TXD (串行输出口)P3.2 (外部中断0请求输入端)P3.3 (外部中断1请求输入端)P3.4T0 (定时器/计数器0计数脉冲输入端)P3.5T1 (定时器/计数器1计数脉冲输入端)P3.6 (片外数据存储器写选通信号输入端)P3.7 (片外数据存储器读选通信号输入端)4.控制端ALE/:地址锁存有效信号输出端。在访问片外程序存储器期间,每机器
24、周期该信号出现两次,其下降沿用于控制锁存P0口输出的低8位地址。:片外程序存储器读选通信号输出端,或称片外取指信号输出端。在向片外程序存储器读取指令或常数期间,每个机器周期该信号两次有效(低电平),以通过数据总线P0口读回指令或常数。在访问片外数据存储器期间,信号将不出现。RST/VPD:RET写全是RESET,是复位端。单片机的振荡器工作时,该引脚上出现持续两个机器周期的高电平就可实现复位操作,使单片机回复到初始状态。上电时,考虑到振荡器有一定的起振时间,该引脚上高电平必须持续10ms以上才能保证有效复位。VCC掉电期间,该引脚如接备用电源VPD(+5V0.5V),可用于保存片内RAM中的数
25、据。当VCC下降到某规定值以下,VPD便向片内RAM供电。/VDD:片外程序存储器选用端。该引脚有效(低电平)时只选用片外程序存储器,否则计算机上电或复位后先选用片内程序存储器。综上所述,对MCS-51系列单片机的引脚可归纳出下列两点:单片机功能多,引脚少,许多引脚都具有第二功能。单片机对外呈三总线形式。由P2、P0组成16位地址总线;由P0分时复用为数据总线;由ALE、RST、与P3口中的、T0、T1、共10个引脚组成控制总线。因是16位地址线,使片外存储器的寻址范围达到64K字节。4.2 单片机在系统中的应用在整个系统中,单片机的控制功能为:采用T0口对V/F转换之后的频率进行计数,采用T
26、1口进行定时,采用P1.0、P1.1、P1.3和P1.4进行量程选择,采用P1.2口判断所测信号是交流信号还是直流信号,采用P0.0口作为显示电路的清零端,采用串行输入端RXD作为移位寄存器的输入端,采用串行输出端TXD作为移位脉冲,电路如图1-7所示:图1-7控制部分电路图系统的控制过程为:T1口定时,T0口采样,定时时间到,采样结束,通过单片机进行计算并选择适当的量程,然后再进行采样、计算、显示。5. 显示部分的设计5.1键盘显示8279芯片图1-8 显示电路8279是一种可编程的键盘/显示器接口芯片。它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。8279内部有键盘F
27、IFO(先进先出堆栈)/传感器,双重功能的8864BRAM,键盘控制部分可控制8864个按键或控制88阵列方式的传感器。该芯片能自动消除键抖动并具有双键锁定保护功能。显示RAM容量为168,即显示器最大配置可达16位LED数码显示。5.2 8279的组成和基本工作原理图1-9为8279内部结构框图。CNTL/STBSHIFT数据缓冲器I/O控制FIFO/传感器RAM的状态寄存器键盘去抖动与控制88FIFO/传感器RAM控制与定时寄存器显示地址寄存器168显示RAM显示寄存器定时与控制扫描计数器回复OUTA03 OUTB03 SL03RL07时钟复位D0D7A0IRQ图1-9 8279内部结构框
28、图由图可知,8279由下列电路组成:1)数据缓冲器和I/O控制 数据缓存器为双向缓冲器,连接内、外总线,用于传送CPU和8279之间的命令或数据。I/O控制线用于CPU对8279内部各种寄存器、缓冲器读写数据和读写状态命令的控制。是片选信号,=0时8279被选通,CPU才能对其进行读、写操作;、是来自CPU的读、写控制信号;A0用于区别信息的特性,A01,表示数据线输入的是指令,输出的是状态字;A00,表示输入输出的是数据。2)控制与定时寄存器及定时控制 控制与定时寄存器用来寄存键盘和显示器的工作方式,以及由CPU编程的其他操作方式。这些寄存器一旦接收并锁存CPU送来的命令,就通过译码产生相应
29、的信号,从而完成相应的控制功能。定时控制包含基本的计数链,首级计数器是一个可编程的N分频计数器。N可以在231之间由软件编程,以便从外部时钟CLK分频得到内部所需要的100KHz时钟。然后再经过分频,为键盘扫描提供适当的逐行扫描频率和显示时间。3)扫描计数器 扫描计数器由两种工作方式:编码方式和译码方式。编码工作方式时,计数器作二进制计数,4位计数状态从扫描线SL0SL3输出。外接4/16译码器,能提供16位LED的字位控制;外接3/8译码器,能为行列式键盘提供8列扫描信号,与RL0RL7构成88键盘的行列扫描。译码方式工作时,扫描计数器的最低二位被译码后,从SL0SL3输出一位低电平,可接4
30、位LED或48键盘。4)回复缓冲器、键盘去抖动及控制、回复缓冲器用来接收并锁存来自回复线RL0RL7的8个回复信号。(1)在键盘工作方式中,回复线为行列式键盘的行(列)输入线。在逐行逐列扫描时,回复线用来搜寻每一行(列)中闭合的键。当某一键闭合时,去抖电路被置位,延时10ms后,再检验该键是否继续闭合,并将该键的地址和附加的移位、控制状态一起形成键盘数据,送入8279内部FIFO RAM(先入先出存储器)。键盘数据格式如表3-3所示:表3-3 键盘数据格式D7D6D5D4D3D2D1D0控制移位扫描回复控制(D7)和移位(D6)的状态由CNTL、SHIFT端外接的两个附加按键决定;扫描(D5、
31、D4、D3)来自扫描计数器,是闭合键所在列的编号,由SL0SL3确定;回复(D2、D1、D0)是闭合键所在行的编号,由RL0RL7确定。(2)在传感器开关状态矩阵方式中,回复线的内容直接被送往相应的传感器RAM(即FIFO存储器)。(3)在选通输入方式工作时,回复线的内容在CNTL/STB信号的脉冲上升沿被送入FIFO RAM。5)FIFO/传感器RAM及其状态寄存器 FIFO/传感器RAM是一个双重功能的 88位RAM。在键盘或选通方式工作时,它是FIFO RAM,其写入或读出遵循先入先出的原则。FIFO状态寄存器用来存放FIFO RAM的状态,如RAM是满还是空,其中存有多少数据,是否操作
32、出错等。若FIFO RAM不空,例如已存有闭合键的键值,状态逻辑将产生IRQ=1信号,向CPU申请中断。在传感器矩阵方式工作时,这个存储器又是传感器存储器,它存放着传感器矩阵中的每一个传感器状态。在此方式中,若检索出传感器的变化,IRQ信号变为高电平,向CPU申请中断。6)显示RAM和显示地址寄存器 显示RAM用来存储显示数据,容量为168位。在显示过程中,存储的显示数据轮流从显示寄存器输出。显示寄存器分为A、B两组,OUTA30和OUTB30可以单独送数,也可以组成一个8位的字。显示寄存器的输出与显示扫描配合,不断从显示RAM中读出显示数据,同时轮流驱动被选中的显示器件,以达到多路复用的目的
33、,使显示器件呈现稳定的显示状态。显示地址寄存器用来寄存CPU读/写显示RAM的地址,它可以由命令设定,也可以设置成在每次读出或写入之后自动递增。5.3 8279引脚及功能8279是具有40个引脚的双列直插式封装的芯片,其引脚及功能如图1-10所示。下面介绍各引脚功能。1)数据线D0D7是双向三态数据总线,在接口电路中与系统数据总线相连,用以传送CPU与8279之间的数据和命令。2)地址线0选中8279,当A01为命令字及状态字地址。A00为片内数据地址,故8279芯片占用两个端口地址。3)控制线VCCRL1RL0CNTL/STBSHIFTSL3SL2SL1SL0OUTB0OUTB1OUTB2O
34、UTB3OUTA0OUTA1OUTA2OUTA3A0RL2RL3CLKIRQRL4RL5RL6RL7RESETD0D1D2D3D4D5D6D7GND8279IRQD0D7 A0RESETCLKRL7RL0SHIFTCNTL/STBSL3SL10OUTA30OUTB30884441 402 393 384 375 366 357 348 339 32 3110 8279 3011 29 2812 2713 2614 2515 2416 17 2318 2219 20 21CPU接口键盘数据数据显示图1-10 8279引脚及功能 (a)管脚配置; (b)引脚功能(a)(b) 8279有较多的控制线
35、。(1)CLK:时钟输入线8279所需时钟频率为100kHz,该频率通常由8051单片机ALE端分频得来。ALE的频率为单片机系统主频的1/6,再由指令送入分频系数,从而得到100kHz的8279时钟频率。(2)IRQ:中断请求输出线,高电平有效。 (3)、:读、写输入控制线。(4)SL0SL3:扫描输出线,用来作为扫描键盘和显示的代码输出或直接输出线。(5)RL0RL7:回复输入线,它们是键盘或传感器矩阵的信号输入线。(6)SHIFT:来自外部键盘或传感器矩阵的输入信号,它是8279键盘数据的次高位即D6位的状态,该位状态控制键盘上/下档功能。在传感器方式和选通方式中,该引脚无用。(7)CN
36、TL/STB:控制/选通输入线,高电平有效。键盘方式时,键盘数据最高位(D7)的信号输入到该引脚,以扩充键功能;选通方式时,当该引脚信号上升沿到时,把RL0RL7的数据存入FIFO RAM中。(8)OUTA0OUTA3:通常作为显示信号的高4位输出线。(9)OUTB0OUTB3:通常作为显示信号的低4位输出线。(10):显示熄灭输出线,低电平有效。当0时将显示全熄灭。5.4 8279的工作方式及命令字格式一、8279的工作方式8279有三种工作方式:键盘方式、显示方式和传感器方式。1)键盘工作方式8279在键盘方式工作时可设置为双键互锁方式和N键巡回方式。双键互锁方式:若有两个或多个键同时按下
37、时,不管按键先后顺序如何,只能识别最后一个被释放的键,并把该键值送入FIFO RAM中。N键巡回方式:一次按下任意个键均可被识别,以按键被扫描顺序把键值存入FIFO RAM中。2)显示方式8279的显示方式又可分为左端入口和右端入口方式。显示数据只要写入显示RAM则可由显示器显示出来,因此显示数据写入RAM的顺序,决定了显示的次序。左端入口方式即显示位置从显示器最左端1位(最高位)开始,以后显示的字符逐个向右顺序排列。右端入口方式即显示位置从显示器最右端1位(最低位)开始,以后显示的字符逐个向左顺序排列。3)传感器方式传感器方式是把传感器的开关状态送入传感器RAM中。当CPU对传感器矩阵扫描时
38、,一旦发现传感器状态发生变化就发出中断请求(IRQ置“1”),中断响应后转入中断处理程序。二、8279的命令字及其格式8279的各种工作方式都要通过对命令寄存器的设置来实现。8279共有8种命令,通过这些命令设置工作寄存器,来选择各种工作方式。命令寄存器共8位,其格式如下:D7 D6 D5D4 D3 D2 D1 D0 命令特征位(3位) 有关命令内容(5位)8279的一条命令由两大部分组成,一部分为命令特征,代表某一类命令,由命令寄存器高3位D7D5决定。D7D5三位的状态可组合出8种形式,分别对应8种命令,故称为命令特征位。另一部分为命令的具体内容,由D4D0决定。每一种特征所代表的命令如表
39、1-4所示。表1-4: 8279命令特征表D7 D6 D5代表的命令种类0 0 0键盘/显示命令0 0 1时钟编程命令0 1 0读FIFO/传感器RAM命令0 1 1读显示器RAM命令1 0 0写显示命令1 0 1显示禁止/熄灭命令1 1 0消除命令1 1 1结束中断/出错方式设置命令下面详细说明各种命令中,D4D0各位的设置方法,以便确定各种命令字。1)键盘/显示命令特征位D7D5000D4,D3两位用来设定4种显示方式,D2D0三位用以设定8种键盘/显示扫描方式,分别如表1-5和表1-6所示。由于显示是硬件扫描显示,因此显示方式种规定了扫描显示的位数(8位、16位)和第1个显示的字符位置(
40、最左端或最右端)。表1-5: 显示方式D4 D3显示方式0 08个字符显示,左端入口方式0 116个字符显示,左端入口方式1 08个字符显示,右端入口方式1 116个字符显示,右端入口方式表1-6: 键盘/显示扫描方式D2 D1 D0键盘/显示扫描方式0 0 0编码扫描键盘,双键锁定0 0 1译码扫描键盘,双键锁定0 1 0编码扫描键盘,N键轮回0 1 1译码扫描键盘,N键轮回1 0 0编码扫描传感器矩阵1 0 1译码扫描传感器矩阵1 1 0选通输入,编码显示扫描1 1 1选通输入,译码显示扫描表1-6中所谓编码扫描指扫描代码直接由扫描线SL0SL3输出,每次只有1位是低电平(4选1)。所谓译
41、码扫描,扫描代码经SL0SL3外接译码器输出。由于键盘最大8864个键,由SL0SL2接38译码器,译码器的8位输出作为键盘扫描输出线(列线),RL0RL7为输入线(行线)。8279最多驱动16位显示器,故可由SL0SL3接一个416译码器,译码器16位输出为显示扫描输出线(16选1),决定第几位显示。显示字段码由OUTA0OUTA3和OUTB0OUTB3输出。以上表1-4、表1-5、表1-6三个表相互组合可得到各种键盘/显示命令。2)时钟编程命令一般单片机的ALE端接8279的CLK端,但ALE端输出的脉冲是主机频率的1/6,而8279工作只需100kHz的时钟脉冲,利用分频系数可把CLK端
42、输入脉冲再分频以达到产生100kHz脉冲之目的。分频系数是由时钟编程命令输入。由表1-4可见时钟编程命令特征位D7D5001。D4D0用来设定分频系数。3)读FIFO/传感器RAM命令特征位D7D5010。D2D0为8279中FIFO及传感器RAM的首地址。D3无用。D4控制RAM地址自动加1位:D41时CPU读完一个数据,RAM地址自动加1,准备读下一个单元数据;D40时CPU读完一个数据后,地址不变。4)读显示RAM命令此命令用来读显示器RAM,其格式如下:特征位D7D5011。D41RAM地址自动加1,D40不加1。D3D0为显示RAM中的地址。5)写显示RAM命令特征位D7D5100。
43、D4是地址自动加1控制,D41地址自动加1,D40地址不加1。D3D0是欲写入的RAM地址,若连续写入则表示RAM首地址。命令格式同读显示RAM。6)显示器禁止写入/熄灭命令特征位D7D5101。D4为无用位,可设为“1”或“0”。D3为禁止A组显示RAM写入,D31禁止。D2为禁止B组显示RAM写入,D21禁止。D1为A组显示熄灭控制,D11时熄灭,D10恢复显示。D0为B组显示熄灭控制,D01时熄灭,D00恢复显示。利用该命令可以控制A、B两组显示器,哪组继续显示,哪组被熄灭。7)清除命令此命令用以清除显示RAM和FIFO中的内容。特征位D7D5110。D0为总清除特征位,D01把显示RAM和FIFO全可清除。D1=1清除FIFO状态,使中断输出线复位,传感器RAM的读出地址清0。D4D2设定清除显示RAM的方式,如表1-7所示。表1-7: 清除显示RAM方式D4D3 D2消除方式10 将全部显示RAM清为01 0将显示RAM置为20H(A组0010 B组0000)1 1将显示RAM置为FFH0D00 不清除D11 仍按上述方式清除8)结束中断/出错方式设置命令特征位D7D5111。D41时(其D3D0位任意)有两种不同作用。(1)在传感器方式,用此命令结束传感器RAM的中断请求。因