智能DVM的设计

更新时间:2023-03-18 15:31:01 阅读量: 资格考试认证 文档下载

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

有关数字电压表的设计报告

目 录

1、 智能DVM简介……………………………………….1

2、 设计要求……………………………………………1

功能要求与技术指标

3、 总体方案论证与选择……………………………..2

4、 硬件选择…………………………………………..2-15

各主要元器件技术参数与功能介绍

单片机MCS89C51

A/D ICL7135

斩波稳零运放ICL7650

电子开关CD4053

LED显示部分

供电电源

硬件连接图见附录1

5、 软件设计……………………………………..15-27

I/O口的分配

软件分析

设计流程图

程序清单

6、 总结…………………………………………27

7、 参考文献…………………………………….27

8、 附录1………………………………………..28

有关数字电压表的设计报告

一、 智能DVM简介

智能仪器是一种典型的微机(大多数为单片机)应用系统,它是计算机技术、通信技术以及网络技术相结合的产物。无论在测速、精确度、灵敏度、自动化程度和性能价格比等方面,都是传统仪器所不能比拟的。它已成为仪器、仪表的发

展的方向。

智能型DVM是指以微处理器为核心的的数字电压表,其中,专用微机部分包括微处理器芯片、存放仪器监控程序的存储器ROM和存放测量及运算数据的存储器RAM等。用于测量的输入输设备有:输入电路、A/D转换器、键盘、显示器及标准仪器用借口等。仪器内部采用总线结构,外部设备与总线相连。

智能型DVM测量大致分为三个主要阶段:

首先,在微处理器的控制下,被测电压通过输入电路、A/D转换器,转变为

相应的数字量存入到数据存储器;

其次,微处理器对采集的测量数据进行必要的处理,例如计算平均值、减去

零点漂移等;

最后,显示最终处理结果。

二、 设计要求

1、功能设计要求:

(1)、可以测量1000V以下的的直流电压

(2)、具有开机自检、自动量程转换功能

(3)、具有克服随机误差的数字滤波功能

(4)、适用220V/50HZ交流电源,设置电源开关、电源指示灯和电源保

护功能。

2、主要技术指标:

(1)、支流电压量程:200MV、2V、20V、200V、1000V

(2)、测量误差:≤1%

(3)、输入电阻:10MW

(4)、显示方式:5位LED数码管显示被测电压值。

因此,从上面的设计要求来分析,可以确定硬件部分的器件为:

(1)主机: 单片机MCS-51(AT89C51)

(2)A/D:ICL7135

有关数字电压表的设计报告

(3)运放:ICL7650

(4)电压源:由7805和7905组成全桥式电压源

(5)5个LED显示数码管

(6)驱动芯片74LS07和74LS06

三、 总体方案论证与选择

由于本设计是一个DVM测量1000V以下的直流电压,有两种方案选择

供此设计选择。

方案一:高阻运放 – 自动调零 – ICL7135 – AT89C51

方案二:斩波稳零的运放 – ICL7135 – AT89C51。

方案的选择

在此设计中我选择方案二,因方案二与方案一相比,软件设计一样,但硬件方面,方案二比方案一简单,另外方案二中用的软波稳零的运放(ICL7135)对

于测量有很好的效果。

四、 硬件选择

单片机MCS89C51

MCS-51系列单片机的基本结构如图所示,它具有以下硬件资源:

1)、8位中央处理器单元CPU

2)、4K字节ROM,8031无ROM

3)、128字节的数据存储器RAM

4)、21个特殊寄存器SFR

5)、4个8位并行I/O口。其中P0和P2分别为地址线,P0同时野生数

据线,可外扩64KROM和64KRAM。

6)两个16位可编程的的定时/计数器T0、T1,同时对外部脉冲进行计数,也可设置成定时器,并根据计数器或定时器的的结果进行控制。

7)、5个中断源:其中3个内部中断源2个外部中断源,软件可编程为两

个中断优先级。

8)、一个全双工的的异步串口接口。

9)、内部时钟产生电路,石英晶体振荡器和微调电容需要外接。

有关数字电压表的设计报告

管脚说明:

VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在

FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内

容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘

故。

P3口也可作为AT89C51的一些特殊功能口,如下所示:

P3.0 RXD(串

P3.1 TXD(串行输出口)

P3.2 /INT0(外部中断0)

P3.3 /INT1(外部中断1)

P3.4 T0(记时器0外部输入)

P3.5 T1(记时器1外部输入)

P3.6 /WR(外部数据存储器写选通)

P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的

高电平时间。

有关数字电压表的设计报告

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚

被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN

信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器

(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH

编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

芯片擦除:

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”

且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结

振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

A/D ICL7135

7135是采用CMOS工艺制作的单片4位半A/D转换器,其所转换的数字值以多工扫描的方式输出,只要附加译码器,数码显示器,驱动器及电阻电容等

元件,就可组成一个满量程为2V的数字电压表。

ICL7135是双斜积分式4位半单片A/D转换器,28脚DIP封装。其引脚

功能如下:

有关数字电压表的设计报告

{1}脚(V-)-5V电源端;

{2}脚(VREF)基准电压输入端;

{3}脚(AGND)模拟地;

{4}脚(INT)积分器输入端,接积分电容;

{5}脚(AZ)积分器和比较器反相输入端,接自零电容;

{6}脚(BUF)缓冲器输出端,接积分电阻;

{7}脚(CREF+)基准电容正端;

{8}脚(CREF-)基准电容负端;

{9}脚(IN-)被测信号负输入端;

{10}脚(IN+)被测信号正输入端;

{11}脚(V+)+5V电源端;

{12}、{17}~{20}脚(D1~D5)位扫描输出端;

{13}~{16}脚(B1~B4)BCD码输出端;

{21}脚(BUSY)忙状态输出端;

{22}脚(CLK)时钟信号输入端;

{23}脚(POL)负极性信号输出端;

{24}脚(DGND)数字地端;

{25}脚(R/H)运行/读数控制端;

{26}脚(STR)数据选通输出端;

{27}脚(OR)超量程状态输出端;

{28}脚(UR)欠量程状态输出端。

(一)ICL7135的主要性能特点为:

1)输入阻抗达109Ω以上,对被测电路几乎没有影响;

2)自动校零;

3)有精确的差分输入电路;

4)自动判别信号极性;

5)有超、欠压输出信号;

6)采用位扫描与BCD码输出。

(二)7135主要特点如下:

有关数字电压表的设计报告

①双积型A/D转换器,转换速度慢。

②在每次A/D转换前,内部电路都自动进行调零操作,可保证零点在常温下的长期稳定。在20000字(2V满量程)范围内,保证转换精度1字相当于

14bitA/D转换器。

③具有自动极性转换功能。能在但极性参考电压下对双极性模拟输入电

压进行A/D转换,模拟电压的范围为0~±1.9999V。。

④模拟出入可以是差动信号,输入电阻极高,输入电流典型值1PA。

⑤所有输出端和TTL电路相容。

⑥有过量程(OR)和欠量程(UR)标志信号输出,可用作自动量程转

换的控制信号。

⑦输出为动态扫描BCD码。

⑧对外提供六个输入,输出控制信号(R/H,BUSH,ST,POL,OR,UR),因此除用于数字电压表外,还能与异步接收 /发送器,微处理器或其它控制电路连接使

用。

⑨采用28外引线双列直插式封装,外引线功能端排列如图所示。

㈡7135数字部分

数字部分主要由计数器、锁存器、多路开关及控制逻辑电路等组成。7135一次A/D转换周期分为四个阶段:1、自动调零(AZ);2、被测电压积分(INT);

3、基准电压反积分(DE);4、积分回零(ZI)。具体内部转换过程这里不做

祥细介绍,主要介绍引脚的使用。

① R/H(25脚)当R/H=“1”(该端悬空时为“1”)时,7135处于连续转换状态,每40002个时钟周期完成一次A/D转换。若R/H由“1”变“0”,则7135在完成本次A/D转换后进入保持状态,此时输出为最后一次转换结果,不受输入电压变化的影响。因此利用R/H端的功能可以使数据有保持功能。若把R/H端用作启动功能时,只要在该端输入一个正脉冲(宽度≥300ns),转换器就从AZ阶段开始进行A/D转换。注意:第一次转换周期中的AZ阶段时间为9001-10001个时钟脉冲,这是由于启动脉冲和内部计数器状态不同步造成的。

②/ST(26脚)每次A/D转换周期结束后,ST端都输出5个负脉冲,其输出时间对应在每个周期开始时的5个位选信号正脉冲的中间,ST负脉冲宽度等于1/2时钟周期。第一个ST负脉冲在上次转换周期结束后101个时钟周期产生。因为每个选信号(D5--D1)的正脉冲宽度为200个时钟周期(只有AZ和DE阶段开始时的第一个D5的脉冲宽度为201个CLK 周期),所以ST负脉冲之间相隔也是200个时钟周期。需要注意的是,若上一周期为保持状态(R/H=“0”)则ST无脉冲信号输出。ST信号主要用来控制将转换结果向外部锁存器、

UARTs 或微处理器进行传送。

③BUSY(21脚)在双积分阶段(INT+DE),BUSY为高电平,其余时为低电平。因此利用BUSY功能,可以实现A/D转换结果的远距离双线传送,

有关数字电压表的设计报告

其还原方法是将BUSY和CLK“与”后来计数器,再减去10001就可得到原来的

转换结果。

④OR(27脚)当输入电压超出量程范围(20000),OR将会变高。该信

号在BUSY信号结束时变高。在DE阶段开始时变低。

⑤UR(28脚)当输入电压等于或低于满量程的9%(读数为1800),则一当BUST信号结束,UR将会变高。该信号在INT阶段开始时变低。

⑥POL(23脚)该信号用来指示输入电压的极性。当输入电压为正,则POL等于“1”,反之则等于“0”。该信号DE阶段开始时变化,并维持一个A/D转换调

期。

⑦位驱动信号D5、D4、D3、D2、D1(12、17、18、19、20脚)每一位驱动信号分别输出一个正脉冲信号,脉冲宽度为200个时钟周期,其中D5对应万位选通,以下依次为千、百、十、个位。在正常输入情况下,D5--D1输出连续脉冲。当输入电压过量程时,D5--D1在AZ阶段开始时只分别输出一个脉冲,然后都处于低电平,直至DE阶段开始时才输出连续脉冲。利用这个特性,可使

得显示器件在过程时产生一亮一暗的直观现象。

⑧B8、B4、B2、B1(16、15、14、13脚)该四端为转换结果BCD码输出,采用动态扫描输出方式,即当位选信号D5=“1”时,该四端的信号为万位数的内容,D4=“1”时为千位数内容,其余依次类推。在个、十、百、千四位数的内容输出时,BCD码范围为0000--1001,对于万位数只有0和1两种状态,所以其输出的BCD码为“0000”和“0001”。当输入电压过量程时,各位数输出全部

为零,这一点在使用时应注意。

最后还要说明一点,由于数字部分以DGNG端作为接地端,所以所有输出端输出电平以DGNG作为相对参考点。基准电压,基准电压的输入必须对

于模拟公共端COM是正电压。

㈢与单片机系统的串行连接

在ICL7135与单片机系统进行连接时,使用并行采集方式,要连接BCD码数据输出线,可以将ICL7135的/STB信号接至AT89C52的P3.2(INT0)。

ICL7135需要外部的时钟信号,本设计采用CD4060来对4M信号进行32分频得到125KHz的时钟信号。CD4060计数为14级2进制计数器,在数字集成电路中可实现的分频次数最高,而且CD4060还包含振荡电路所需的非门,

使用更为方便。

图3.2.1.3 ICL7135与系统的连接图

斩波稳零运放ICL7650

ICL7650是Intersil公司利用动态校零技术和CMOS工艺制作的稳零式高精度运放,它具有输入偏置电流小、失调小、增益高、共模抑制能力强、

响应快、漂移低、性能稳定及价格低廉等优点。

1 芯片结构

有关数字电压表的设计报告

ICL7650采用14脚双列直插式和8脚金属壳两种封装形式,图1所示是最常用的14脚双列直插式封装的引脚排列图。各引脚的功能说明如下:

CEXTB:外接电容CEXTB;

CEXTA:外接电容CEXTA;

-IN:反相输入端;

+IN:同相输入端;

V-:负电源端;

CRETN:CEXTA和CEXTB的公共端;

OUTCLAMP:箝位端;

OUTPUT:输出端;

V+:正电源端;

INTCLKOUT:时钟输出端;

EXTCLKIN:时钟输入端;

时钟控制端,可通过该端选择使用内部时钟或外部时钟。当选择外部时钟时,该端接负电源端(V-),并在时钟输入端(EXTCLKIN)引入外部时钟信号。当该端开路或接V+时,电路将使用内部时钟去控制其它电路的工作。

2 工作原理

ICL7650利用动态校零技术消除了CMOS器件固有的失调和漂移,从而摆脱了传统斩波稳零电路的束缚,克服了传统斩波稳零放大器的这些缺点。

ICL7650的工作原理如图2所示。图中,MAIN是主放大器(CMOS运算放大器),NULL是调零放大器(CMOS高增益运算放大器)。电路通过电子开关的转换来进行两个阶段工作,第一是在内部时钟(OSC)的上半周期,电子开关A和B导通, 和C断开,电路处于误差检测和寄存阶段;第二是在内部 时钟的下半周期,电子开关 和C导通,A和B断开,电路处于动态校零和

放大阶段。

由于ICL7650中的NULL运算放大器的增益A0N一般设计在100dB左右,因此,即使主运放MAIN的失调电压VOSN达到100mV,整个电路的失调电压也仅为1μV。由于以上两个阶段不断交替进行,电容CN和CM将各自所寄存的上一阶段结果送入运放MAIN、NULL的调零端,这使得图2所示电路几

有关数字电压表的设计报告

乎不存在失调和漂移,可见,ICL7650是一种高增益、高共模抑制比和具有双端

输入功能的运算放大器。

应用电路

ICL7650除了具有普通运算放大器的特点和应用范围外,还具有高增益、高共模抑制比、失调小和漂移低等特点,所以常常被用热电偶、电阻应变电

桥、电荷传感器等测量微弱信号的前置放大器中。

图3所示电路是某地震前兆信号采集系统的前置放大电路。系统中碳电极与信号调理器浮空地之间感应的自然地空电位Vi1和Vi2被分别加到I-CL7650的两个输入端,微弱信号Vi1和Vi2经放大后将从ICL7650的第10引脚输出,放大后的信号经过一系列处理后可分别送入显示器和记录仪进行显示和

记录,以供地震研究和预测使用。

为了防止输入信号幅度过大而导致ICL7650损坏,图3电路在两路信号的输入端分别加入了起保护作用的四个二极管D1~D4。由于电路正常工作时的输入信号Vi1和Vi2幅度很小,所以二极管不导通,也就不会影响电路的正常工作。电路的增益较高,为防止产生高频振荡,设计时在电阻R4上并接了电容C3,因其容量较小,所以对信号放大倍数的影响也非常小。为了抬高运算放大

器输出信号的直流分量,可将箝位端接在运算放大器的反向输入端。 运用ICL7650生产的三十多套地震前兆信号采集系统已分别安装在全国四个省市近十个地震台站,并已采集到大量的地震前兆信号,因此可以证明:

整个系统性能稳定、抗干扰能力强。

电子开关CD4053

CD4053的引脚功能如上图。CD4053内部含有3组单刀双掷开关,3组开关具体接通哪一通道,由输入地址码ABC来决定。其真值表和引脚说明见下表。

有关数字电压表的设计报告

aY 0 0 0 0 1 1 1 1 1 0 0 1 1 0 1 0 1 cY、bX、 aX cY、bX、 aY cY、bY、 aX cY、bY、 aY 均不接通

序 号

4 Z-comm Z on 公共输 出 5 0Z INH 0 Z 输入 禁 止端 子,高 电位时 各开关 均切断 负 电源 8 VSS 地

3.1 2 3.1 3 0 4

1

0X

0 X 输入 1 X 输入 X 公共输 出

3.1

1 1 on

1X x-comm

2.8 3.1

2

6

3

7

VEE

0 5 0 6

1 on 1

y-comm

Y 公共输 出 电 源

3.1

VDD

5.0

LED 显示部分

LED 是 LIGHT EMITTING DIODE 的缩写,由于它的价格合理、技术成熟, 因此是单片机应用系统中显示部分的首选器件。LED 显示器的种类很多,但都 是有单个的 LED 发光二极管组成。从颜色上分红色应用最多,从工作原理上分

有关数字电压表的设计报告

可分为公阴极数码管和公阳极数码管,其显示方式分为动态显示和静态显示方式

两种。

要使LED亮,对于公阴极数码管,首先要选中该管,也就是使6或者1引脚接低电平,其余根据数据线的的输出使7段数码管亮或者灭,达到显示数据

的目的。

具体连接电路请参看电路图部分

LED数码显示方式在本设计中采用的是公阳极动态显示,原因CPU的口线比较少,反应的时间满足要求,连接比静态的容易。其阳极连接到单片机的数据口线,阴极分别连接到单片机的P2.0到P2.4。由于电路中电流小,要增加驱动

器。

关于段码显示器的显示原理,其实就是将8个LED集成在一起组成一个8字

型的器件,从而显示出我们想要的数字,现将编码表列出如下:

有关数字电压表的设计报告

78xx/79 系列简单易用、价格低廉,直到今天还在大多电路中采用。如7805,7806,7809,7812,7815,7824,(79××)。以及三瑞可调稳

(LM317,337,338......)

78xx/79xx系列在降压电路中应注意以下事项:

1)、输入输出压差不能太大,太大则转换效率急速降低,而且容易击穿损坏;

2)、输出电流不能太大,1.5A 是其极限值。大电流的输出,散热片的尺

寸要足够大,否则会导致高温保护或热击穿;

3)、输入输出压差也不能太小,大小效率很差。

由7805和7905设计的-5V和+5V电压源如图所示。

(2) 精密的基准电压源MC1403、MC1503

MC1403是美国摩托罗拉公司生产的高准确度、低温漂、采用激光修正的带隙基准电压源,国产型号为5G1403和CH1403。它采用DIP-8封装,引脚排列如图7-1-2所示。UI=+4.5V~+15V,UO=2.500V(典型值),αT可达10×10-6/℃。为了配8P插座,还专门设置了5个空脚。其输出电压UO=Ug0(R3+

R4)/R4=1.205×2.08=+2.5V。

因为输出是固定的,所以电路很简单。就是Vin接电源输入,GND接底,Vout加一个0.1uf~1uf的电容就可以了。 Vout一般用作8~12bit的D/A芯片

的基准电压。

MC1403的输入-输出特性

输入电压UI/V

10 9 8 7 6 5 4.5

输出电压UO/V

2.5028 2.5028 2.5028 2.5028 2.5028 2.5028 2.502

7

当UI从10V降至4.5V时,UO只变化0.0001V,变化率仅为-0.0018%。

输出电压: 2.5 V +/- 25 mV

输入电压范围: 4.5 V to 40 V

输出电流: 10 mA

表1:MC1403、MC1503精密低压基准电源的主要参数

有关数字电压表的设计报告

V 输出电压变化 (全温度范围内) /mV -55~ +125℃ Uo 或 0~ 70℃ Io=0 Uo /mV 15V 负载对输出电压 的变化 静态电流 工作环境温度 Uo /mV IQ/ mA TA/ ℃ 0mA≤Io≤1 0mA Io=0 10 4.5V≤U1≤ 0.6

25

7.0

4.4

输出电压对输入 电压的变化

1.2 -55~ +125

0~+70

五、

软件设计

I/O 口的分配 使用 5 位共阴极数码管,7 段码由 P0.0~P0.6,dp 由 P0.7 输出(经 74LS07 同向驱动),位选由 P2.4~P2.0 经反向驱动器(74LS06)输出. A/D:ICL7135 的 B8~B1 接 P1.0~P1.3,POL 接 P1.4,UR 接 P1.5,OR 接 P1.6,D5 接 P1.7,ST 接 P3.2 做中断请求,R/H 接 P2.5 量程开关:S4~S1 由 P3.7~P3.4 进行控制 mv/v 的指示灯接 P2.6 报警灯:P2.7 报警蜂鸣器:P3.3 软件分析 确定 fosc=6MHZ 7135 时钟,fcp=125KHZ,转换速率约 3 次/S 监控程序设计 ① RAM 地址分配:

工作寄存器:主程序使用第 0 组 显示子程序:0 组 R0,R3

有关数字电压表的设计报告

显示器自检:0组R4,R5,由于人视觉暂留最短时间约为0.1S,故可让显示器

全亮约0.5S,全灭0.5S

ROM,RAM自检:0组R1,R2

输入通道自检:0组R7

小数点应在位码:21H

A/D转换结果:26H~22H(万~个)

显示缓冲区:2CH~28H(万~个)

显示字段码暂存:27H

软件标志:20H.0=1 ROM故障

20H.1=1 RAM故障

20H.2=1输入通道故障

20H.3=1过载

② 量程状态转换表

量程 R4(2组) S4S3S2S1 P3 dp应在位码

200mv 00H 0 0 0 0 07H 04H

2v 01H 0 1 0 0 47H 10H

20v 02H 0 0 0 1 17H 08H

200v 03H 0 1 0 1 57H 04H

1000v 04H 0 1 1 1 77H 02H

自检 05H 1 0 1 1 0B7H 10H

程序流程图

相等

置地址指针

写入55H并读出

清除20H.0

写入AAH并读出

有关数字电压表的设计报告

指向下一个单元

RAM自检 相等

校验完

返回 置位20H.0

JB 20H.0,L2

程序清单 主程序和中断程序入口: ORG 0000H LJMP START ORG 0003H RETI ORG 000BH LJMP TEST ORG 0013H RETI 主程序 : START: LCALL TLED LCALL TRAM LCALL TCHANNEL LCALL CLEARMEMIO MAIN: LCALL DISP SETB IT0 ;ROM有故障则跳至报警处JB 20H.1,L2 ;RAM有故障则跳至报警处 JB 20H.2,L2 ;通道有故障则跳至报警处 LCALL TROM MOV IE,#81H

有关数字电压表的设计报告

JB 20H.3,L3 ;若过载则跳至报警处理

CLR P3.3 ;关蜂鸣器

CLR P2.6 ;关报警灯

AJMP MAIN ;返回继续扫描显示器

L2:SETB P3.3 ; 蜂鸣器响

SETB P2.6 ; 报警灯亮

AJMP MIAN

L3:SETB P3.3

SETB P2.6

LJMP START

NOP ;PC值出错处理

NOP

NOP

LJMP START ;重新启动复位

ROM自检 :

TROM: MOV DPTR ,#data2 ;data2 为程序结束地址

PUSH DPH

PUSH DPL

MOV DPTR,#0000H ;0000为程序起始地址

MOV B,#00H

LP1:CLR A

MOVC A,@A+DPTR ;读起始地址ROM内容

XRL B,A

POP ACC ;先出低8位

MOV R1,A

CJNE A,DPL,LP3 ;DPL为程序起始地址低8位

POP ACC

MOV R2,A

CJNE A,DPH,LP2

AJMP LP4

有关数字电压表的设计报告

LP2:PUSH R2

LP3:PUSH R1

INC DPTR

AJMP LP1

LP4:MOV DPTR,#data3 ;data3为校验字所在地址值

CLR A

MOVC A,@A+DPTR

XRL A,B ;B为程序代码异或值,A为校验字值

JNZ LP5

CLR 20H.0

AJMP LP6

LP5:SETB 20H.0

MOV 2CH,#0EH ;将E送入显缓区

MOV 2BH,#01H ;将"1"送入显缓区

LP6: RET

RAM自检:

TRAM:MOV 00H,#55H ;检R0(00H)

MOV A,00H

CJNE A,#55H,LOOP1

MOV 00H,#0AAH

MOV A,00H

CJNE A,#0AAH,LOOP1

MOV R0,#01H

LOOP2: MOV A,#55H

MOV @R0,A

MOV A,@R0

CJNE A, #55H, LOOP1

MOV A, #0AAH

MOV @R0,A

MOV A,@R0

有关数字电压表的设计报告

CJNE A, #0AAH, LOOP1

INC R0

MOV A,R0

CJNE A, #0FFH, LOOP2

CLR 20H.1

AJMP LOOP3

LOOP1:SETB 20H.1 ;置位20H.1

MOV 2AH,#0EH ;将"E"送显缓区

MOV 29H ,#02H ;将"2"送显缓区

LOOP3:RET

通道自检:

TCHANNEL:MOV A,#0B7H

MOV P3,A ;置自检状态

SETB P2.5 ;开A/D

MOV IE,#81H ;开中断

SETB IT0 ;设为边沿触发

L1: MOV R1,#0C8H ;(R1)=200

LCALL DISP ;调显示子程序

DJNZ R1,L1 ;扫描1S

MOV IE,#80H ;关中断

JNB 26H.0,A4;万位是"0"跳至A4

MOV A,25H ;千位送A

CJNE A,#00H,A2 ;千位为"0"?

MOV A,24H ;百位送A

CLR CY

SUBB A,#5

JNB CY,A2 ;百位<5?

A5:CLR 20H.2

SJMP A3

有关数字电压表的设计报告

A4:MOV A,25H ;千位送A

CJNE A,#09H,A2 ;千位=9?

MOV A,24H ;百位送A

CLR CY

SUBB A,#5 ;百位>=5?

JB CY,A2 ;百位>=5则顺序执行

SJMP A5

A2:SETB 20H.2 ;置输入通道故障

MOV 28H,#0EH ;将"E"送显缓冲区

A3:RET

显示器自检:

TLED:MOV R5,#3

MOV R2,#100

AA:MOV R3,#10H

BB:MOV 27H,#0FFH

MOV P0,27H

MOV A,R3

MOV P2,A

ACALL DL1

JB ACC.0,CC

MOV A,R3

RR A

MOV R3,A

SJMP BB

CC:DJNZ R2,AA

MOV R1,#100

DD:MOV R4,#10H

EE:MOV 27H,#00H

MOV P0,27H

MOV A,R4

有关数字电压表的设计报告

ACALL DL1

JB ACC.0,FF

MOV A,R4

RR A

MOV R4,A

SJMP EE

FF: DJNZ R1,DD

DJNZ R5,TLED

RET

DL1:MOV R7,#02H

DL2:MOV R6,#0FFH

DJNZ R6,$

DJNZ R7,DL2

RET

系统初始化:

CLEARMEMIO:MOV SP,#4FH

MOV A,#20H

MOV P2,A ;P2口初始化

MOV 14H,#00H ;置最低量程

MOV A,#07H

MOV P3,A ;P3口初始化

RET

显示程序 :

DISP: MOV R0,#2CH ;万位(BCD码)

MOV R3,#10H

D1S0: CLR A

MOV P0,A ;显示器灭

MOV A,@R0

ANL A,#0FH

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

Top