版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(此文档为word格式,下载后您可任意编辑修改!)毕业论文基于单片机的数字电压表的设计摘要本设计主要研究的是以AT89C51单片机为核心的电压测量系统,该系统能够在单片机的控制下完成对电压信号采集,能够根据采样值进行量程自动转换,并且测量结果可通过四个数码管显示出来。整个系统的设计完成了硬件电路的设计及软件程序的编写,通过最终硬件电路的调试及软件程序的仿真,使该系统能够在要求的条件下到达正常的测量及显示功能。在整个系统的设计过程中,主要采用了模块化的设计方法。关键词:AT89C51单片机;数字电压表;模块化DesignofthedigitalvoltmeterbasedontheMCUAbstractThispaperintroducesanachievementofavoltagemeasuresystembasedontheAT89C51MCU.Thissystemcanaccomplishthesignalsamplingofvoltage,andchangerangeautomaticallyaccordingtothesignalsampled.Theresultcanbedisplayedthroughnumeralrubeoffourplaces.Inthisdesign,theofsoftwareprogram.Thissystemcanfulfillthefunctionofmeasureanddisplayingunderthedemandedconditions.Overthedesigningofthewholesystem,themethodofmodularityisused.Keywords:AT89C51MCU;DigitalVoltmeter;Modularity目录TOC\o"1-4"\h\z绪论 1第一篇硬件局部的设计 11.数据采集局部的设计 21.1交流信号和直流信号的采样 22.量程自动转换电路的设计 43.模数转换单元的设计 54.控制电路的设计 74.1总体概况 7一.主要功能 7二.内部结构框图 8三.外部引脚说明 94.2单片机在系统中的应用 115.显示局部的设计 125.1键盘显示8279芯片 125.28279的组成和根本工作原理 135.38279引脚及功能 155.48279的工作方式及命令字格式 17第二篇软件系统的设计 231.MCS-51单片机汇编语言 232.主程序的设计 233.子程序的设计 253.1采样程序的设计 253.2量程处理程序的设计 263.21采样及其处理程序 263.22计算局部的设计 283.23显示局部的软件设计 293.3超量程处理 294.系统程序清单 29设计总结 41参考文献 41绪论在电气测量中,电压是一个很重要的参数。如何准确地测量模拟信号的电压值,一直是电测仪器研究的内容之一。数字电压表是通用仪器中使用较广泛的一种测试仪器,很多电量或非电量经变化后都用可数字电压表完成测试。因此,数字电压表被广泛地应用于科研和生产测试中。本文将介绍一种以单片机为核心的电压测量仪表,它能够测量电压量,能够自动进行量程选择,并且测量结果能够通过数码管显示,从而具有一定的智能性。本文将就这一系统的硬件电路局部和软件程序局部分别作以介绍。在硬件局部,本文就系统的各个组成模块的原理作了详细的介绍。另外,在每一模块电路中都对元器件的选择作了简单的介绍,其中包括有关数值的计算和分析。在软件局部,详细阐述了各个模块电路的软件设计方法和设计中的细节。第一篇硬件局部的设计分析本设计,可以看出其主要任务就是对电压信号能够自动选择适宜的量程进行测量并显示。本设计要求采用单片机进行控制,由于单片机的有效输入输出信号均为数字信号,而对于整个系统的前向通道有效信号均应为模拟信号,所以在设计过程中必然包括模拟量转换为数字量单元的设计。根据要求本设计中采用的是VF转换电路。对于VF转换电路,要使其转换具有良好的线性度和精度必须使其输入电压变化范围较小。而本系统中要求测量的电压范围是0~500V,无法满足VF转换的要求。所以,前向模拟通道的设计要包括量程转换局部,即对大信号进行分压变小,对小信号进行放大,显然,这样不仅能满足VF转换电路的要求,而且也能有效的防止超量程测量。另外,前向通道的设计还应包括对模拟信号的采集局部。本设计框图如图1-1所示:图1-1设计总框图在以后的各节中,将分别介绍各个局部的设计。1.数据采集局部的设计根据本系统的要求所采集的信号应为电压信号,同时电压信号还应有交流和直流之分。所以在设计中应该具有相应的处理电路,使最终的信号得以统一。对于交流信号可以采用交直流变换的方法变为直流,这样最终进入模数转换单元〔即VF转换单元〕的模拟信号就应该为直流电压信号。对于信号变换局部应该注意的是所采样的信号种类应能够通知控制局部〔单片机〕,以使控制局部做出相应的计算处理,只有这样才能保证最终的显示结果的正确性。1.1交流信号和直流信号的采样本设计中所采用的交直流转换电路如图1-2所示:分析此电路,可以看出此电路集精密全波整流、量程切换、信号过零比拟于一体。CD4053是三组单刀双掷集成模拟开关,开关X承当了全波整流的任务,其控制端A受控于比拟器的输出电平。图中U10工作于同相放大状态,运放U11工作于反相放大状态,比拟器的输入引自U10的放大输出信号,这有利于提高比拟器对信号的灵敏度。电路输入交流信号的正半波时,同相连接的比拟器U9输出高电平,模拟开关X接通运放U10输出信号送后续的模拟信号与数字信号的转换单元;电路输入交流信号的负半波时,比拟器U9输出低电平,模拟开关X接通反相器U11的输出信号送后续的模拟信号与数字信号的转换单元。由此完成了由U9过零跃变的准数字量控制的全波整流过程。这个准数字信号就可以用来通知控制局部所进行测量的是交流信号还是直流信号,以使控制局部进行相应的计算和显示。CD4053的另两组模拟开关Y和Z承当了三个量程的切换任务,它们的控制端B和C通过来自单片机的量程切换命令。图1-2交直流转换电路另外,图1-2电路能同样有效地用于直流信号的前置处理。电路的输入端无论接入的是直流正信号还是直流负信号,输出的幅值都是0伏以上的直流正信号,这对于后续电路的设计尤其适用,而此时可以从比拟器输出的电平上下获知是正输入还是负输入。特别重要的示,直流信号和交流信号具有同样的传输增益,给交直流参数的测量软件同一处理提供了极大的方便。显然,此电路满足本设计的要求,而且它集量程转换于一体,为量程转换局部的设计提供了方便,节省了硬件资源。2.量程自动转换电路的设计在仪表的设计过程中,量程转换的设计是相当重要的。所设计的系统应该具有自动转换量程的功能,并且能够自动判断是否超量程测量。这样才能够为后续的模数转换单元提供适当的输入电压,使其转换具有良好的精度和线性度。在本设计中模数转换单元选择的是电压频率转换电路,对于VF转换电路,其输入电压选择0~5V。这样,经过量程转换后的电压范围就应该为0~5V。因为本系统的输入电压范围是0~500V,故我们可以选择1100作为其最大电压的量程档,500V经过1100分压后降为5V,恰好可以满足VF转换的要求。在本设计中,对于电压信号设置了五个量程,即1100档,110档,×1档,×10档,×100档。1100档和110档由分压电路来完成,它们是用来测量较大电压的。而×1档,×10档,×100档那么是应用放大电路来完成的,它们那么是用来测量较小的电压的。在本设计中,×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选通情况00Y Y0——01Y Y1Z Z010Y Y0——11Y Y1Z Z1本设计中1100和110分压比的选择也由单片机引脚控制多路选择开关来实现。由于本系统要求的电压测量范围是0~500V,所以多路开关的选择应特别注意其耐压值。在本设计中采用的是MAX4602,因为它的耐压值可到达两千伏左右,故可以应用在本系统中。分压比的选择由单片机的P1.0和P1.1来控制。电路图见图1-3。图1-3量程转换局部的分压电路由上述分析可知量程的转换由两局部〔即分压和放大〕共同完成,所以在量程的选择时需注意两局部的关系,即选用分压时放大电路的放大倍数要选为1,选用放大时信号要直接进来而不经过分压。3.模数转换单元的设计单片机对模拟信号的读取通常是采用AD转换方式,这一方法对输出阻抗低,惰性强,变化缓慢,传输距离长的信号,采用AD转换的抗干扰性能就比拟差。对于不需要较快检测速度的信号,如果采用VF变换器代替原有的AD转换器,把电压信号转换成与之对应的频率信号〔f=kv〕,由单片机CPU计数器在采样周期内对频率脉冲进行计数,采样时,CPU发出计数指令,定时时间一到,计数停止,从读到的计数值乘以一定的系数,就可以得到相应电压值。本设计中,采用的是LM331转换芯片〔VF〕将模拟信号转变为相应的频率信号,具体电路如图1-4所示:图1-4VF转换电路LM331是单片集成芯片,在VF转换器中,它是LMΧ31系列中的一种,它作为一种简单廉价的电路很适用于模数转换。它使用了新的温度补偿能隙基准电路,在整个工作温度范围内和低到4.0V电源电压下都有较高的精度,最大线性度达0.01%,6个数量级的动态范围,即满量程的频率范围为1HZ~100KHZ。其数字脉冲重复率正比于模拟输入电压的幅值。这类器件的高精度,高线性度,低温移及单调性的组合所提供的性能是其它技术难以实现的。逐次近似AD转换器定期进行“抽样〞,因此易受噪声尖峰的影响,而电压——频率转换器的输出端一直在进行积分,因此能对噪声或变化的输入信号进行平滑,特别适合于噪声工作环境。对VF变换,整个电路都是线性放大。对LM331,根据VF变换的原理,其输出频率与输入电压的关系满足下面的公式:f=(V2.09)×(RR)×(1R)×(1C)(1-3)由公式1-3可以看出输出频率f与输入电压V成正比。对VF转换,满度频率f大,闸门周期短,转换快,分辨率高,但同时线性度下降。因此在选择参数R、R、R、C时格外要注意。本设计中的输入电压Vi在0~5V(即量程转换后的电压均为0~5V)内变化,输出f选择在0—10KHZ内变化,既可满足转换率又可满足分辨率的要求。在本设计中,为了消除干扰,在输入信号端加一个低通滤波器,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脚输入偏置电流,5脚最大保持电压为7Vs,2脚的参考电压为1.9V。流入C6的Iaver=i(1.1RC)f。f输出期间〔t=1.1RC〕,C14充电到V,此后,i=0,f无输出,C14从V放电到V,而后比拟器工作,开始另一个循环,整个过程始终保持电荷平衡。LM331的输出接光电耦合器6N137,6N137采用射极输出,不改变输出相位,集电极开路,内部有脉冲整形电路,其输出可直接接单片机的引脚,而不会改变信号的频率输出。使用光电耦合器,一方面可以抑制较大的随机干扰信号进入单片机,〔6N137最大可抑制3000V的噪声干扰〕,减少进入单片机的干扰信号修改单片机内部存放器的数值或发生死机的现象;另一方面可以防止数字电路,模拟电路的共地,因而能有效的抑制由于数字电路,模拟电路的共地带来的地电位脉冲引起的数据抖动现象。4.控制电路的设计4.1总体概况一.主要功能MCS-51系列单片机是美国Intel公司在1980年推出的高性能8位单片微型计算机,比原来的MCS-48系列结构更为先进,功能增强,它包括51和52两个子系列。在51子系列中,主要有8031、8051、8751三种机型,他们的指令系统与芯片引脚完全兼容,仅片内ROM有所不同。51子系列的主要功能为:⑴8位CPU。⑵片内带振荡器,振荡频率fosc范围为1.2~12MHZ;可有时钟输出。⑶128个字节的片内数据存储器。⑷4K字节的片内程序存储器〔8031无〕。⑸程序存储器的寻址范围为64K字节。⑹片外数据存储器的寻址范围为64K字节。⑺21个字节专用存放器。⑻4个8位并行IO接口:P0、P1、P2、P3。⑼1个全双工串行IO接口,可多机通信。⑽2个16位定时器计数器。⑾中断系统有5个中断源,可编程为两个优先级。⑿111条指令,含乘法指令和除法指令。⒀有强的位寻址、位处理能力。⒁片内采用单总线结构。⒂用单一+5V电源。二.内部结构框图MCS-51系列单片机的内部结构框图如以下图1-5所示:通道0驱动器通道通道0驱动器通道2驱动器RAM地址锁存器RAM通道0锁存器通道2锁存器ROMB存放器程序地址存放器缓冲器PC递增器程序计数器DPTR指针VCCGNDP1.0~P1.7堆栈指针SPACCTMP2PSW通道3锁存器通道1锁存器通道1驱动器通道3驱动器TMP1SCONTMODPCONTCONTL0TH1TH0TL1IESBUF(TX/RX)IP中断、串行口和定时器逻辑振荡器P3.0~P3.7RSTEAALEPSENXTAL2XTAL1ALU(+5V)指令存放定时逻辑指令译码由图可大致看到:它含运算器、控制器、片内存储器、4个IO 接口、串行接口、定时器计数器、中断系统、振荡器等功能部件。图中SP是堆栈指针存放器,栈区占用了片内RAM的局部单元;未见通用存放器〔工作存放器〕,因单片机片内有存储器,与访问工作存放器一样方便,所以就把一定数量的片内RAM字节划作工作存放器区;PSW是程序状态字存放器,简称程序状态字,相当于其他计算机的标志存放器;DPTR是数据指针存放器,在访问片外RAM、片外ROM、甚至扩展IO接口时特别有用;B存放器又称乘法存放器,它与累加器A协同工作,可进行乘法操作和除法操作。三.外部引脚说明MCS-51系列单片机芯片有40个引脚。用HMOS工艺制造的芯片采用双列直插式封装,见以下图1-6。低功耗的、采用CHMOS工艺制造的机型〔在型号中间加一“C〞字作为识别,如80C31、80C51、87C51〕也有用方封装结构的。图1-6MCS-51系列单片机芯片引脚图现将各引脚分别说明如下:1.主电源引脚VCC:接+5V电源正端。VSS:接+5V电源地端。2.外接晶体引脚XTAL1:片内反相放大器输入端。XTAL2:片内反相放大器输出端。外接晶体时,XTAL1与XTAL2各接晶体的一端,借外接晶体与片内反相放大器构成振荡器。3.输入输出引脚P0.0~P0.7:P0口的8个引脚。在不接片外存储器与不扩展IO接口时,可作为准双向输入输出接口。在接有片外存储器或扩展IO接口时,P0口分时复用为低8位地址总线和双向数据总线。P1.0~P1.7:P1口的8个引脚。可作为准双向IO接口使用。P2.0~P2.7:P2口的8个引脚。一般可作为准双向IO接口;在接有片外存储器或扩展IO接口且寻址范围超过256个字节时,P2口用为高8位地址总线。P3.0~P3.7:P3口的8个引脚。除作为准双向IO接口使用外,还具有第二功能,见表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:地址锁存有效信号输出端。在访问片外程序存储器期间,每机器周期该信号出现两次,其下降沿用于控制锁存P0口输出的低8位地址。:片外程序存储器读选通信号输出端,或称片外取指信号输出端。在向片外程序存储器读取指令或常数期间,每个机器周期该信号两次有效〔低电平〕,以通过数据总线P0口读回指令或常数。在访问片外数据存储器期间,信号将不出现。RSTVPD:RET写全是RESET,是复位端。单片机的振荡器工作时,该引脚上出现持续两个机器周期的高电平就可实现复位操作,使单片机回复到初始状态。上电时,考虑到振荡器有一定的起振时间,该引脚上高电平必须持续10ms以上才能保证有效复位。VCC掉电期间,该引脚如接备用电源VPD〔+5V±0.5V〕,可用于保存片内RAM中的数据。当VCC下降到某规定值以下,VPD便向片内RAM供电。VDD:片外程序存储器选用端。该引脚有效〔低电平〕时只选用片外程序存储器,否那么计算机上电或复位后先选用片内程序存储器。综上所述,对MCS-51系列单片机的引脚可归纳出以下两点:=1\*GB3①单片机功能多,引脚少,许多引脚都具有第二功能。=2\*GB3②单片机对外呈三总线形式。由P2、P0组成16位地址总线;由P0分时复用为数据总线;由ALE、、RST、、与P3口中的、、T0、T1、、共10个引脚组成控制总线。因是16位地址线,使片外存储器的寻址范围到达64K字节。4.2单片机在系统中的应用在整个系统中,单片机的控制功能为:采用T0口对VF转换之后的频率进行计数,采用T1口进行定时,采用P1.0、P1.1、P1.3和P1.4进行量程选择,采用P1.2口判断所测信号是交流信号还是直流信号,采用P0.0口作为显示电路的清零端,采用串行输入端RXD作为移位存放器的输入端,采用串行输出端TXD作为移位脉冲,电路如图1-7所示:图1-7控制局部电路图图1-7控制局部电路图系统的控制过程为:T1口定时,T0口采样,定时时间到,采样结束,通过单片机进行计算并选择适当的量程,然后再进行采样、计算、显示。5.显示局部的设计5.1键盘显示8279芯片图1-8显示电路8279是一种可编程的键盘显示器接口芯片。它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。8279内部有键盘FIFO〔先进先出堆栈〕传感器,双重功能的8×8=64BRAM,键盘控制局部可控制8×8=64个按键或控制8×8阵列方式的传感器。该芯片能自动消除键抖动并具有双键锁定保护功能。显示RAM容量为16×8,即显示器最大配置可达16位LED数码显示。5.28279的组成和根本工作原理图1-9为8279内部结构框图。CNTL/STBSHIFT数据缓冲器I/O控制FIFO/CNTL/STBSHIFT数据缓冲器I/O控制FIFO/传感器RAM的状态存放器键盘去抖动与控制8×8FIFO/传感器RAM控制与定时存放器显示地址存放器16×8显示RAM显示存放器定时与控制扫描计数器回复OUTA0~3OUTB0~3SL0~3RL0~7时钟复位D0~D7A0IRQ图1-98279内部结构框图1〕数据缓冲器和IO控制数据缓存器为双向缓冲器,连接内、外总线,用于传送CPU和8279之间的命令或数据。IO控制线用于CPU对8279内部各种存放器、缓冲器读写数据和读写状态命令的控制。是片选信号,=0时8279被选通,CPU才能对其进行读、写操作;、是来自CPU的读、写控制信号;A0用于区别信息的特性,A0=1,表示数据线输入的是指令,输出的是状态字;A0=0,表示输入输出的是数据。2〕控制与定时存放器及定时控制控制与定时存放器用来存放键盘和显示器的工作方式,以及由CPU编程的其他操作方式。这些存放器一旦接收并锁存CPU送来的命令,就通过译码产生相应的信号,从而完成相应的控制功能。定时控制包含根本的计数链,首级计数器是一个可编程的N分频计数器。N可以在2~31之间由软件编程,以便从外部时钟CLK分频得到内部所需要的100KHz时钟。然后再经过分频,为键盘扫描提供适当的逐行扫描频率和显示时间。3〕扫描计数器扫描计数器由两种工作方式:编码方式和译码方式。编码工作方式时,计数器作二进制计数,4位计数状态从扫描线SL0~SL3输出。外接416译码器,能提供16位LED的字位控制;外接38译码器,能为行列式键盘提供8列扫描信号,与RL0~RL7构成8×8键盘的行列扫描。译码方式工作时,扫描计数器的最低二位被译码后,从SL0~SL3输出一位低电平,可接4位LED或4×8键盘。4〕回复缓冲器、键盘去抖动及控制、回复缓冲器用来接收并锁存来自回复线RL0~RL7的8个回复信号。〔1〕在键盘工作方式中,回复线为行列式键盘的行〔列〕输入线。在逐行逐列扫描时,回复线用来搜寻每一行〔列〕中闭合的键。当某一键闭合时,去抖电路被置位,延时10ms后,再检验该键是否继续闭合,并将该键的地址和附加的移位、控制状态一起形成键盘数据,送入8279内部FIFORAM〔先入先出存储器〕。键盘数据格式如表3-3所示:表3-3键盘数据格式D7D6D5D4D3D2D1D0控制移位扫描回复控制〔D7〕和移位〔D6〕的状态由CNTL、SHIFT端外接的两个附加按键决定;扫描〔D5、D4、D3〕来自扫描计数器,是闭合键所在列的编号,由SL0~SL3确定;回复〔D2、D1、D0〕是闭合键所在行的编号,由RL0~RL7确定。〔2〕在传感器开关状态矩阵方式中,回复线的内容直接被送往相应的传感器RAM〔即FIFO存储器〕。〔3〕在选通输入方式工作时,回复线的内容在CNTLSTB信号的脉冲上升沿被送入FIFORAM。5〕FIFO传感器RAM及其状态存放器FIFO传感器RAM是一个双重功能的8×8位RAM。在键盘或选通方式工作时,它是FIFORAM,其写入或读出遵循先入先出的原那么。FIFO状态存放器用来存放FIFORAM的状态,如RAM是满还是空,其中存有多少数据,是否操作出错等。假设FIFORAM不空,例如已存有闭合键的键值,状态逻辑将产生IRQ=1信号,向CPU申请中断。在传感器矩阵方式工作时,这个存储器又是传感器存储器,它存放着传感器矩阵中的每一个传感器状态。在此方式中,假设检索出传感器的变化,IRQ信号变为高电平,向CPU申请中断。6〕显示RAM和显示地址存放器显示RAM用来存储显示数据,容量为16×8位。在显示过程中,存储的显示数据轮流从显示存放器输出。显示存放器分为A、B两组,OUTA3~0和OUTB3~0可以单独送数,也可以组成一个8位的字。显示存放器的输出与显示扫描配合,不断从显示RAM中读出显示数据,同时轮流驱动被选中的显示器件,以到达多路复用的目的,使显示器件呈现稳定的显示状态。显示地址存放器用来存放CPU读写显示RAM的地址,它可以由命令设定,也可以设置成在每次读出或写入之后自动递增。5.38279引脚及功能8279是具有40个引脚的双列直插式封装的芯片,其引脚及功能如图1-10所示。下面介绍各引脚功能。1〕数据线D0~D7是双向三态数据总线,在接口电路中与系统数据总线相连,用以传送CPU与8279之间的数据和命令。2〕地址线=0选中8279,当A0=1为命令字及状态字地址。A0=0为片内数据地址,故8279芯片占用两个端口地址。3〕控制线
VCCVCCRL1RL0CNTL/STBSHIFTSL3SL2SL1SL0OUTB0OUTB1OUTB2OUTB3OUTA0OUTA1OUTA2OUTA3A0RL2RL3CLKIRQRL4RL5RL6RL7RESETD0D1D2D3D4D5D6D7GND8279IRQD0~D7A0RESETCLKRL7~RL0SHIFTCNTL/STBSL3~SL10OUTA3~0OUTB3~088444140239338437536635734833932311082793011292812271326142515241617231822192021CPU接口键盘数据数据显示图1-108279引脚及功能(a)管脚配置;(b)引脚功能〔a〕(b)8279有较多的控制线。〔1〕CLK:时钟输入线8279所需时钟频率为100kHz,该频率通常由8051单片机ALE端分频得来。ALE的频率为单片机系统主频的16,再由指令送入分频系数,从而得到100kHz的8279时钟频率。〔2〕IRQ:中断请求输出线,高电平有效。〔3〕、:读、写输入控制线。〔4〕SL0~SL3:扫描输出线,用来作为扫描键盘和显示的代码输出或直接输出线。〔5〕RL0~RL7:回复输入线,它们是键盘或传感器矩阵的信号输入线。〔6〕SHIFT:来自外部键盘或传感器矩阵的输入信号,它是8279键盘数据的次高位即D6位的状态,该位状态控制键盘上下档功能。在传感器方式和选通方式中,该引脚无用。〔7〕CNTLSTB:控制选通输入线,高电平有效。键盘方式时,键盘数据最高位〔D7〕的信号输入到该引脚,以扩充键功能;选通方式时,当该引脚信号上升沿到时,把RL0~RL7的数据存入FIFORAM中。〔8〕OUTA0~OUTA3:通常作为显示信号的高4位输出线。〔9〕OUTB0~OUTB3:通常作为显示信号的低4位输出线。〔10〕:显示熄灭输出线,低电平有效。当=0时将显示全熄灭。5.48279的工作方式及命令字格式一、8279的工作方式8279有三种工作方式:键盘方式、显示方式和传感器方式。1〕键盘工作方式8279在键盘方式工作时可设置为双键互锁方式和N键巡回方式。双键互锁方式:假设有两个或多个键同时按下时,不管按键先后顺序如何,只能识别最后一个被释放的键,并把该键值送入FIFORAM中。N键巡回方式:一次按下任意个键均可被识别,以按键被扫描顺序把键值存入FIFORAM中。2〕显示方式8279的显示方式又可分为左端入口和右端入口方式。显示数据只要写入显示RAM那么可由显示器显示出来,因此显示数据写入RAM的顺序,决定了显示的次序。左端入口方式即显示位置从显示器最左端1位〔最高位〕开始,以后显示的字符逐个向右顺序排列。右端入口方式即显示位置从显示器最右端1位〔最低位〕开始,以后显示的字符逐个向左顺序排列。3〕传感器方式传感器方式是把传感器的开关状态送入传感器RAM中。当CPU对传感器矩阵扫描时,一旦发现传感器状态发生变化就发出中断请求〔IRQ置“1〞〕,中断响应后转入中断处理程序。二、8279的命令字及其格式8279的各种工作方式都要通过对命令存放器的设置来实现。8279共有8种命令,通过这些命令设置工作存放器,来选择各种工作方式。命令存放器共8位,其格式如下:D7D6D5D4D3D2D1D0命令特征位〔3位〕有关命令内容〔5位〕8279的一条命令由两大局部组成,一局部为命令特征,代表某一类命令,由命令存放器高3位D7~D5决定。D7~D5三位的状态可组合出8种形式,分别对应8种命令,故称为命令特征位。另一局部为命令的具体内容,由D4~D0决定。每一种特征所代表的命令如表1-4所示。表1-4:8279命令特征表D7D6D5代表的命令种类000键盘显示命令001时钟编程命令010读FIFO传感器RAM命令011读显示器RAM命令100写显示命令101显示禁止熄灭命令110消除命令111结束中断出错方式设置命令下面详细说明各种命令中,D4~D0各位的设置方法,以便确定各种命令字。1〕键盘显示命令特征位D7~D5=000D4,D3两位用来设定4种显示方式,D2~D0三位用以设定8种键盘显示扫描方式,分别如表1-5和表1-6所示。由于显示是硬件扫描显示,因此显示方式种规定了扫描显示的位数〔8位、16位〕和第1个显示的字符位置〔最左端或最右端〕。表1-5:显示方式D4D3显示方式008个字符显示,左端入口方式0116个字符显示,左端入口方式108个字符显示,右端入口方式1116个字符显示,右端入口方式表1-6:键盘显示扫描方式D2D1D0键盘显示扫描方式000编码扫描键盘,双键锁定001译码扫描键盘,双键锁定010编码扫描键盘,N键轮回011译码扫描键盘,N键轮回100编码扫描传感器矩阵101译码扫描传感器矩阵110选通输入,编码显示扫描111选通输入,译码显示扫描表1-6中所谓编码扫描指扫描代码直接由扫描线SL0~SL3输出,每次只有1位是低电平〔4选1〕。所谓译码扫描,扫描代码经SL0~SL3外接译码器输出。由于键盘最大8×8=64个键,由SL0~SL2接3~8译码器,译码器的8位输出作为键盘扫描输出线〔列线〕,RL0~RL7为输入线〔行线〕。8279最多驱动16位显示器,故可由SL0~SL3接一个4~16译码器,译码器16位输出为显示扫描输出线〔16选1〕,决定第几位显示。显示字段码由OUTA0~OUTA3和OUTB0~OUTB3输出。以上表1-4、表1-5、表1-6三个表相互组合可得到各种键盘显示命令。2〕时钟编程命令一般单片机的ALE端接8279的CLK端,但ALE端输出的脉冲是主机频率的16,而8279工作只需100kHz的时钟脉冲,利用分频系数可把CLK端输入脉冲再分频以到达产生100kHz脉冲之目的。分频系数是由时钟编程命令输入。由表1-4可见时钟编程命令特征位D7~D5=001。D4~D0用来设定分频系数。3〕读FIFO传感器RAM命令特征位D7~D5=010。D2~D0为8279中FIFO及传感器RAM的首地址。D3无用。D4控制RAM地址自动加1位:D4=1时CPU读完一个数据,RAM地址自动加1,准备读下一个单元数据;D4=0时CPU读完一个数据后,地址不变。4〕读显示RAM命令此命令用来读显示器RAM,其格式如下:特征位D7~D5=011。D4=1RAM地址自动加1,D4=0不加1。D3~D0为显示RAM中的地址。5〕写显示RAM命令特征位D7~D5=100。D4是地址自动加1控制,D4=1地址自动加1,D4=0地址不加1。D3~D0是欲写入的RAM地址,假设连续写入那么表示RAM首地址。命令格式同读显示RAM。6〕显示器禁止写入熄灭命令特征位D7~D5=101。D4为无用位,可设为“1〞或“0〞。D3为禁止A组显示RAM写入,D3=1禁止。D2为禁止B组显示RAM写入,D2=1禁止。D1为A组显示熄灭控制,D1=1时熄灭,D1=0恢复显示。D0为B组显示熄灭控制,D0=1时熄灭,D0=0恢复显示。利用该命令可以控制A、B两组显示器,哪组继续显示,哪组被熄灭。7〕去除命令此命令用以去除显示RAM和FIFO中的内容。特征位D7~D5=110。D0为总去除特征位,D0=1把显示RAM和FIFO全可去除。D1=1去除FIFO状态,使中断输出线复位,传感器RAM的读出地址清0。D4~D2设定去除显示RAM的方式,如表1-7所示。表1-7:去除显示RAM方式D4D3D2消除方式10×将全部显示RAM清为010将显示RAM置为20H〔A组=0010B组=0000〕11将显示RAM置为FFH0D0=0不去除D1=1仍按上述方式去除8〕结束中断出错方式设置命令特征位D7~D5=111。D4=1时〔其D3~D0位任意〕有两种不同作用。〔1〕在传感器方式,用此命令结束传感器RAM的中断请求。因为在传感器工作方式时,每当传感器状态发生变化,扫描电路自动将传感器状态写入传感器RAM,同时发出中断申请即将IRQ置高电平,并禁止再写入传感器RAM。中断响应后,从传感器RAM读走数据进行中断处理,但中断标志IRQ的撤除分两种情况。假设读RAM地址自动加1标志位为“0〞,中断响应后IRQ自动变低,撤销中断申请;假设读RAM地址自动加1标志位为“1〞,中断响应后IRQ不能自动变低,必须通过结束中断命令来撤销中断请求。〔2〕在设定为键盘扫描N键轮回方式时作为特定错误方式设置命令。在键盘扫描N键轮回工作方式,又给8279写入结束中断错误方式命令,那么8279将以一种特定的错误方式工作,即在8279消颤周期内,如果发现多个按键同时按下,那么将FIFO状态字中错误特征位置“1〞,并发出中断请求阻止写入FIFORAM。根据上述8种命令可以确定8279的工作方式。在8279初始化时把各种命令送入命令地址口,根据其特征位可以把命令存入相应的命令存放器,执行程序时8279能自动寻址相应的命令存放器。三、8279的状态字及其格式状态字显示出8279的工作状态。状态字和8种命令字共用1个地址口。当A0=1时,从8279命令状态口地址读出的是状态字。状态字格式如表1-8所示:表1-8状态字格式D7D7=1表示显示无效,此时不能对显示RAM写入D6D6=1表示至少有1个键闭合;在特殊错误方式时有多键同时按下错误D5D5=1表示FIFORAM已满,再输入1个字那么溢出D4D4=1表示FIFO中已空,无数据可读D3D3=1表示FIFORAM中数据已满D2~D0FIFORAM中数据个数状态字主要用于键盘和选通工作方式,以指示FIFORAM中的字符数及有无错误发生。四、8279数据输入输出格式对8279输入输出数据不仅要先确定数据地址口,而且数据存放也要按一定格式,其格式在键盘和传感器方式有所不同。1〕 键盘扫描方式数据输入格式键盘的行号、列号及控制键位置如表1-9所示:表1-9:键盘的行号、列号及控制键位置D7控制键CNTL状态D6控制键SHIFT状态D5~D3被按键所在列号〔由SL0~SL2状态确定〕D2~D0被按键所在行号〔由RL0~RL7状态确定〕2〕 传感器方式及选通方式数据输入格式此种方式8位输入数据为RL0~RL7的状态。格式如表1-10所示:表1-10:传感器方式及选通方式数据输入格式D7D6D5D4D3D2D1D0RL7RL6RL5RL4RL3RL2RL1RL0五、8279内部译码和外部译码方式8279的内、外译码由键盘显示命令字的最低位D0选择决定。D0=1选择内部译码,也称为编码方式,该方式SL0~SL3每时刻只能有一位为低电平。8279只能接4位显示器和4×8矩阵式键盘。D0=0选择外部译码方式,SL0~SL3为计数分频式波形输出,显示方式可外接4~16译码器驱动16位显示器。键盘方式按3~8译码器,构成8×8矩阵式键盘。第二篇软件系统的设计硬件电路和软件程序是组成一个系统不可缺少的两局部,二者的正确与否将直接影响整个程序的可实现性。在上一章中已经将整个系统的硬件局部作了介绍,在这一章中将就系统的软件局部加以分析说明1.MCS-51单片机汇编语言由于本系统所需要完成的软件程序不是很大,并且数据的计算也不是很繁琐,因此本系统软件将采用汇编语言进行设计。2.主程序的设计分析本设计,可知其软件所要完成的功能是:对VF转换后的频率信号进行采样,并通过计算比拟选择适当的量程,然后再次进行采样,通过FV转换使其转换为最初模拟信号的值,最后显示,以后将再次进行采样比拟重复上述操作。图2-1主程序流程图:由上述分析可知,主程序的功能应为选择量程并进行量程的处理。本设计的主程序流程图如图2-1所示。本设计中通过10ms的采样值进行量程比拟,由于本设计中采用的VF转换为0~10KHZ,所以10ms对应的最大采样值应为100HZ。设计中单片机引脚与量程选择以及电压范围的关系见表2-1。从表2-1中可以看出,每一量程下限对应的频率均应为10HZ,在系统的设计中,为了使量程转换的临界值得以测量准确,可选择下限频率为9HZ。表2-1:量程与控制引脚的电平关系量程输入电压范围P1.0P1.1P1.3P1.4110050~500V11111105~50V1011×10.5~5V0011×100.05~0.5V0010×1000.005~0.05V0000另外,在主程序的设计中还应注意在进行量程选择时,必须将系统置于最大量程,因为这样可以防止所测信号在系统要求范围内的超量程测量。从表2-1中可以看出本设计中所测量的电压范围是:0.005V~500V。对于超出500V,系统将做超量程处理。对于小于0.005V的信号系统显示结果将为0。3.子程序的设计由系统的主程序流程图可以看出,系统子程序的设计即为对采样程序的设计和量程处理程序的设计以及超量程处理程序的设计。3.1采样程序的设计系统采样的实现为:T1口进行定时,T0口进行计数,在T1定时器开始工作的同时计数器T0开始计数,T1定时时间到,那么T0停止计数,最终的采样值就应为T0的计数值。系统采样的流程图见图2-2。在采样程序的设计中要注意系统的采样时间。由于采样值仅作为量程比拟的数据,故采样时间可以选择小一些,这样既可以节省整个程序的执行时间,也可以使后续的量程比拟计算局部简单些。但是采样时间也不能选择太小,如果选择太小显然采样误差就会很大。在本系统中选择采样时间为10ms。10ms采样最大采样值应为100HZ,显然在量程比拟局部计算就比拟简单。图2-210ms采样流程图图2-3量程处理程序3.2量程处理程序的设计在量程处理程序中需要完成的功能应为在所选量程下进行信号的采样,计算和显示。系统量程处理局部的流程图见图2-2所示.。从图2-3中可以看出,在量程处理局部又将系统采样处理程序以及计算、显示程序分别作为了子程序来调用。下面将就其各个子程序作以介绍。3.21采样及其处理程序在量程处理程序局部,采样程序的功能为:采样值经过计算后显示,所以这局部的程序对整个系统来说将非常重要,采样值的准确与否将直接影响显示结果的准确与否,所以设计中要尽量使这局部的精度高些。对于采样局部的设计与前一局部介绍的采样实现方法相同,只是采样时间的设置有所不同。前一局部的采样精度要求不是很高,而这一局部的采样值要求很高,所以采样时间不能选为10ms。这一局部采样时间相对要长一些才能保证采样精度,在本设计中选择采样时间为100ms,因为100ms采样,采样精度能够满足要求,而且,最终的计算局部只需要通过移动小数点位即可实现,另外,程序执行的时间也不是很长。为了使采样值更为精确,本设计中采用了滑动滤波的方法对采样值进行处理。即先在RAM中建立一个数据缓冲区,一次存放10次采样数据,然后每采进一个新数据,就将最早采集的数据去掉。这样,每采样一个数值,就可计算一个新的和值进行显示。即测量数据取一丢一,测量一次便计算一次和值,大大加速了数据处理的能力。图2-4滑动滤波流程图取采样时间为100ms,那么采用滑动滤波后,其显示的刷新时间就应为100ms左右,对于其显示的结果分别对应为100ms采样值,200ms采样值,一直到1s的采样值,在1s以后,每次显示的均应为1s的采样值,只是每采样一次,替换一个1s以前采样的值,求一个新的和值,显然这样会比采用算术平均滤波运算获得有效数值速度快得多。滑动滤波程序的流程图见图2-4。3.22计算局部的设计在量程处理局部需要计算的是采样频率值转换为相应的电压值,同时为了最终的正确显示还要将转换之后的电压值转换为十进制的BCD码,另外,所测信号假设为交流信号,还应使其转换为有效值进行显示。分析表2-1,那么有当量程为50V~500V时,有500V对应于10KHZ,即20HZV。当量程为5V~50V时,由50V对应于10KHZ,即200HZV。当量程为0.5V~5V时,那么有2KHZV。可以看出频率转换为电压值可以通过频率值右移一位〔即除以2〕和小数点位的控制来实现。由于本设计中所用的为4位显示,而采样100ms对应的最大频率为1KHZ,如果被测量为电压值,那么经过右移最大为500HZ,转换后的BCD码应该为3位,所以在所测频率值右移时,要保存移出的小数局部,可将其暂存至存放器R4中,作为电压显示时的最低位,这样就可使测量更为精确了。对于电压值转换的3位BCD码,可将其存至R5~R7单元中,〔其中R5存放转换后的最低位,R7存放最高位〕,这样在显示局部的设计就比拟容易了。对于交流信号,本设计中的测量结果应为其平均值,而将平均值转换为有效值还要将其再乘以1.11的系数。对于乘法显然运算起来会比拟麻烦,所以在本设计中采用了十进制加法的方法,将转换后的十进制BCD码乘以1.11。另外,在计算之后还要注意小数点的位置,如果在量程为0.05V~0.5V时,当所测频率转换为四位BCD码〔其中最高位R7非0〕时,显然,在送入R4~R7显示时,无论小数点在哪一位,最终的显示都将是错误的,所以在送显示之前还要对于不同的量程有不同的处理程序,为了显示数据精度高一些,系统软件中还采用了四舍五入的方法对最终数据进行处理。计算局部的软件流程图见图2-5所示:图2-5计算局部的流程图3.23显示局部的软件设计显示局部的软件相比照拟简单,只是把要显示的数据送至单片机串口即可,在这一局部需要注意的是送显示数据的顺序,要先从最低位单元R4送,然后再送R5,R6和R7。3.3超量程处理当所测量的信号超过系统所要求的测量范围时,必须要以一定的方式通知测量者,否那么被测信号过大可能将系统的某些元器件烧坏,从而影响系统的正常工作。对于智能仪器这局部的设计是很必要的。在本设计中可以通过显示的方法来判断是否超量程测量,通过软件使被测信号超出系统要求的最大测量值时,显示结果为E000。4.系统程序清单ORG0000HLLJMP0030HORG0030HSTART: LCALLP8279 ;8279初始化子程序 SETBP1.0;设置最大量程SETBP1.1SETBP1.3SETBP1.4ACALLCAI;调用10ms采样子程序MOVA,#100;设置采样比拟值100msCLRCSUBBA,R1;采样值>100msJCERR;转到超量程处理MOVA,#9;否那么,设置采样比拟值9msCLRCSUBBA,R1;采样值>9msJCA1;转到1100量程处理ST1:SETBP1.0;否那么,设置110量程CLRP1.1SETBP1.3SETBP1.4ACALLCAI;调用10ms采样子程序MOVA,#100;设置采样比拟值100msCLRCSUBBA,R1;采样值>100msJCSTART;转到设置最大量程MOVA,#9;否那么,设置采样比拟值9msCLRCSUBBA,R1;采样值>9msJCD1;转到110量程处理ST2:CLRP1.0;否那么,设置乘1量程CLRP1.1SETBP1.3SETBP1.4ACALLCAI;调用10ms采样子程序MOVA,#100;设置采样比拟值100msCLRCSUBBA,R1;采样值>100msJCSTART;转到设置最大量程MOVA,#9;否那么,设置采样比拟值9msCLRCSUBBA,R1;采样值>9msJCD2;转到乘1量程处理ST3:CLRP1.0;否那么,设置乘10量程CLRP1.1SETBP1.3CLRP1.4ACALLCAI;调用10ms采样子程序MOVA,#100;设置采样比拟值100msCLRCSUBBA,R1;采样值>100msJCSTART;转到设置最大量程MOVA,#9;否那么,设置采样比拟值9msCLRCSUBBA,R1;采样值>9msJCD3;转到乘10量程处理ST4:CLRP1.0;否那么,设置乘100量程CLRP1.1CLRP1.3CLRP1.4ACALLCAI;调用10ms采样子程序MOVA,#100;设置采样比拟值100msCLRCSUBBA,R1;采样值>100msJCSTART;转到设置最大量程MOVA,#9;否那么,设置采样比拟值9msCLRCSUBBA,R1;采样值>9msJCB2;转到乘100量程处理SETBP0.0;否那么,清零LJMPSTARTB2:LJMPA5D1:LJMPA2D2:LJMPA3D3:LJMPA4ERR:MOVR4,#00H;设置E000MOVR5,#00HMOVR6,#00HMOVR7,#0EHCLRP0.0CLRP0.1CLRP0.2ACALLXIAN;调用显示子程序LJMPSTARTA1:MOV40H,#40HMOV50H,#50HC1:ACALLF_V;调用F_V程序ACALLXIAN;调用显示子程序CLRP0.0;以下在不同量程下的处理程序CLRP0.1SETBP0.2ACALLCAIMOVA,#100CLRCSUBBA,R1JCERRMOVA,#9CLRCSUBBA,R1JCC1LJMPST1A2:MOV40H,#40HMOV50H,#50HC2:ACALLF_VACALLXIANCLRP0.0SETBP0.1CLRP0.2ACALLCAIMOVA,#100CLRCSUBBA,R1JNCB3LJMPSTARTB3:MOVA,#09CLRCSUBBA,R1JCC2LJMPST2A3:MOV40H,#40HMOV50H,#50HC3:ACALLF_VACALLXIANSETBP0.0CLRP0.1CLRP0.2LJMPA30A30:ACALLCAIMOVA,#100CLRCSUBBA,R1JCB4MOVA,#09CLRCSUBBA,R1JCC3LJMPST3B4:LJMPSTARTA4:MOV40H,#40HMOV50H,#50HC4:ACALLF_VMOVA,R5MOVR4,AMOVA,R6MOVR5,AMOVA,R7MOVR6,AMOVR7,#00HSETBP0.0CLRP0.1CLRP0.2ACALLCAIMOVA,#100CLRCSUBBA,R1JCB5MOVA,#09CLRCSUBBA,R1JCC4LJMPST4B5:LJMPSTARTA5:MOV40H,#40HMOV50H,#50HC5:ACALLF_VMOVA,R5CLRCSUBBA,#05HJCNJWMOVA,R6ADDA,#01HCJNEA,#0AH,SMOVR6,#00HMOVA,R7ADDA,#01HMOVR7,ALJMPNJWS:MOVR6,ANJW:MOVA,R6MOVR4,AMOVA,R7MOVR5,AMOVR6,#00HMOVR7,#00HA50:ACALLXIANSETBP0.0CLRP0.1CLRP0.2ACALLCAIMOVA,#100CLRCSUBBA,R1JCB6MOVA,#09CLRCSUBBA,R1JCC5SETBP0.3B6:LJMPSTARTCAI:MOVTMOD,#15H;T0工作于计数器方式1,T1工作于定时器方式1MOVTH1,#0D8H;定时时间设置为10msMOVTL1,#0F0HMOVTH0,#00H;T0计数器清零MOVTL0,#00HSETBTR1;开计数器SETBTR0;开定时器LOOP:JBCTF1,LOOP1;定时到退出循环ALJMPLOOPLOOP1:CLRTR1;关计数器CLRTR0;关定时器MOVR1,TL0;计数值送R1RETCAI1:MOVTMOD,#15H;100ms采样MOVTH1,#0AHMOVTL1,#0DCHMOVTH0,#00HMOVTL0,#00HSETBTR1SETBTR0LOOP0:JBCTF1,LOOP2ALJMPLOOP0LOOP2:CLRTR1CLRTR0MOVR2,TL0;保存采样值MOVR3,TH0MOVA,40HMOVR0,A;#40H送R0MOVA,50HMOVR1,A;50H送R1MOVA,R2MOV@R,A;R2值送40H单元MOVA,40HINCAMOV40H,AMOVA,R3MOV@R,A;R3值送50H单元MOVA,50HINCAMOV50H,AMOVA,40HSUBBA,#4AHJNZF1MOV40H,#40HMOV50H,#50HF1:MOVR0,#40HMOVR1,#50HMOVR3,#00HCLRAF2:ADDA,@R;两次采样值相加MOVR2,AMOVA,@RADDCA,R3MOVR3,AMOVA,R2INCR0INCR1CJNER0,#4AH,F2;判断十次采样是否完成RETF_V:ACALLCAI1CLRCMOVA,R3;高位先右移一位RRCAMOVR3,A;低位再右移一位MOVA,R2RRCAMOVR2,A;完成采样值除二JCB1;判断数据位移出的值MOVR4,#00H;移出值为1时置R4为00HLJMPBCD;跳转到电压BCD码转换子程序B1:MOVR4,#05H;移出值为0时置R4为05HBCD:ACALLBCD0;转到电压BCD0MOVA,R0MOVR5,A;R0给R5MOVA,R2MOVR6,A;R2给R6MOVA,R2MOVR7,A;R2给R7AD:MOVC,P1.2MOV20H.0,CMOVTMOD,#10HMOVTH1,#0D8HMOVTL1,#0F0HMOVIE,#00HSETBTR1LOOP3:JBCTF1,LOOP4ALJMPLOOP3LOOP4:CLRTR1MOVC,20H.0;以下是交流信号乘1.11程序ANLC,P1.2MOV20H.1,CMOVC,P1.2ANLC,20H.0ORLC,20H.1JNCFANMOVA,R4ADDA,R5MOVR0,ASUBBA,#0AHJCN1INCR5MOVR4,ALJMPN2N1:MOVA,R0MOVR4,AN2:MOVA,R4ADDA,R6MOVR0,ASUBBA,#0AHJCN3MOVR4,AINCR5LJMPN4N3:MOVA,R0MOVR4,AN4:MOVA,R5ADDA,R6MOVR0,ASUBBA,#0AHJCN5MOVR5,AINCR6LJMPN6N5:MOVA,R0MOVR5,AN6:MOVA,R5ADDA,R7MOVR0,ASUBBA,#0AHJCN7MOVR5,AINCR6LJMPN8N7:MOVA,R0MOVR5,AN8:MOVA,R6ADDA,R7MOVR0,ASUBBA,#0AHJCN9MOVR6,AINCR7LJMPFANN9:MOVA,R0MOVR6,AFAN:RETBCD0:MOVR1,#00H;R1,R5~R7单元初始化MOVR5,#00HMOVR6,#00HMOVR7,#10H;设置循环次数为10BCD1:CLRCMOVA,R2;低位先左移一位RLCAMOVR2,A;高位再左移一位MOVA,R3RLCAMOVR3,A;完成采样值复原MOVA,R1ADDCA,R1DAAMOVR1,AMOVA,R5ADDCA,R5DAAMOVR5,AMOVA,R6ADDCA,R6DAAMOVR6,ADJNZR7,BCD1;循环十次MOVA,R1ANLA,#0FH;截取R1低位四位MOVR0,A;存入R0MOVA,R1ANLA,#0F0H;截取R1高位四位SWAPA;上下四位互换MOVR2,A;存入R2MOVA,R5ANLA,#0FH;截取R5低位四位MOVR3,A;存入R3MOVA,R5ANLA,#0F0H;截取R5高位四位SWAPA;上下四位互换MOVR7,A;存入R7RETP8279:PUSH DPH ;保护现场 PUSH DPL PUSH ACC MOV DPTR,#0FF82H MOV A,#00H ;置8279工作方式〔8个字符显示,左入口; ;编码扫描键盘,双键锁定〕 MOVX @DTR,A MOV A,#2FH ;置键盘扫描速率 MOVX @DTR,A MOV A,#0C1H ;去除LED显示 MOVX @DTR,A POP ACC ;恢复现场 POP DPL POP DPH RETXIAN: ;4个数码管显示子程序 MOV50H,R7MOV51H,R6MOV52H,R5MOV53H,R4MOV R0,#50H MOV R4,#03H LOOP2: MOV A,@R MOV R5,A LCALL DISLED INC R0 MOV A,@R MOV R5,A DEC R4 LCALL DISLED INC R0 DEC R4 CJNE R4,#0FFH,LOOP2 RET DISLED: ;显示字符子程序 PUSH DPH ;保护现场 PUSH DPL PUSH ACC MOV A,#80H ;置显示起始地址 ADD A,R4 ;加位置偏移量 MOV DPTR,#0FF82H MOVX @DTR,A ;设置显示位置 MOV DPTR,#LEDSEG ;置显示常数表起始位置 MOV A,R5 MOVC A,@ADPTR ;查表 MOV DPTR,#0FF80H MOV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 42968.2-2024集成电路电磁抗扰度测量第2部分:辐射抗扰度测量TEM小室和宽带TEM小室法
- 设备设施维修简单的合同
- 的美好的早安心语语录49条
- 儿童体育游戏教案
- 简短教师辞职信范文
- 河南省驻马店市遂平县2024-2025学年九年级上学期期中语文试题(含答案)
- 《南方地区》课件
- 【初中数学课件】北师大版分解因式法课件
- 自然风景区沉浸式夜游休闲旅游度假景区总体规划案【旅游】【文旅】【景区规划】
- 机械设计课件
- 2024年国网公司企业文化与职业道德试考试题库(含答案)
- 2024年度亚马逊FBA货物海运合同
- 建筑装饰的室内装修工艺与施工技术考核试卷
- 网络攻击应急预案演练总结报告
- 交通运输行业火灾安全预案
- 厂中厂承租方对出租方日常安全检查记录表
- 消防培训课件
- 构美-空间形态设计学习通超星期末考试答案章节答案2024年
- 第六章 数列综合测试卷(新高考专用)(学生版) 2025年高考数学一轮复习专练(新高考专用)
- 大学生社会责任教育(安徽专用)学习通超星期末考试答案章节答案2024年
- 小米公司介绍课件
评论
0/150
提交评论