简易数字电压表的设计
学校:郑州信息科技职业学院 系别:机械电子工程系 班级:07级通信二班 姓名: XXX 学号:********* 日期:2009年12月11日
目 录
摘要……………………………………………………………………………………3 引言……………………………………………………………………………………4 一、系统方案选择和论证…………………………………………………………..4 1.设计要求……………………………………………………………………………4
1.1 基本要求………..………………………………………………………………………………4 1.2 发挥部分……………….………………………………………………………………………4
2.系统基本方案……………………………………………………………………….4
2.1 数字电压表系统框图………………………………………………………………………….4 2.2 主控部分的选择……………………………………………………………………………….5 2.3 显示器的选择………………………………………………………………………………...5 2.4 A/D 转换器的选择…………………………………………………………………………….5
二、系统硬件设计与实现……………………………………………………………5 1. 系统硬件概述…………………………………………………………………...5 2.主要单元电路的设计……………………………………………………………….5
2. 1 主控模块的设计…………………………………………………………………………… ..5 2.2 显示模块的设计……………………………………………………………………………….6 2.3 A/D 转换模块的设计…………………………………………………………………………..7 2.4 声光报警模块模块的设计……………………………………………………….10 2.5 量程选择模块的设计………………………………………………………………………...10
三、系统的软件设计…………………………………………………………………11
1 系统软件概述………………………………………………………………………………...11 2 数字电压表总程序流程图……………………………………………………………………11 3 子程序的设计………………………………………………………………………………...12 3.1 上电自检子程序……………………………………………………………………………12 3.2 数据采集子程序……………………………………………………………………………13 3.3 通道选择量程选择子程序………………………………………………………………….14 3.4 数据处理子程序…………………………………………………………………………….14 3.5 超量程报警子程序…………………………………………………………………………..15
四、系统测试…………………………………………………………………………16 4.1 测试仪器与设备……………………………………………………………………………...16 4.2 指标测试与误差分析………………………………………………………………………...16 4.3 测试结果分析与结论………………………………………………………………………...16
五、总结 ………………………………………………………………………………16
5.1 作品总结………………………………………………………………………......................16
5.2 自我总结……………………………………………………………………17. 六、致谢词 …………………………………………………………………………17 七、参考文献…………………………………………………………………………17 附录一:系统电路图…………………………………………………………………18 附录二:系统程序清单………………………………………………………………19
简易数字电压表的设计
内容摘要:在电子信息科技高速的时代,由于数字式仪器具有读数准确方便、精度高、误差
小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。在现代检测技术中,常用高精度数字电压表进行检测,将检测到的数据送入微型计算机系统,完成计算、存储、控制等功能。本文中数字电压表的控制系统采用ATS52单片机,A/D转换器采用ADC0809为主要硬件,LED动态显示模块、电源模块、量程选择模块和报警系统,实现数字电压表的硬件电路与软件设计。该系统能完成电压量的采集、A/D转换、手动量程切换、实时显示采集到电压量和声光提示等功能。依据实际的情况还可以添加自动量程切换工能。
关键词:ATS52、A/D转换、数码产品、LED动态扫描、功能实现。
引言
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。而且随着电子技术的发展,更是经常需
要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。市场前景可观。
一、 系统方案选择和论证:
1、 设计要求
1.1基本要求:
(1)电压测量范围0-5V; (2)能用数码管显示电压值; (3)测量精度达0.1V; (4)要求系统具备复位功能; (5)系统具备自检功能。
1.2发挥部分:
(1)电压测量范围5—20V; (2)同时采集8路信号分时显示; (3)电压表具备20V超量程报警功能;
(4)测量精度:0-5V内可调可达0.02V,5-20V可达0.1V; (5)电压表具备抑制脉冲干扰的能力; (6)尽可能减少芯片的使用节能成本; (7)其他发挥。
2、系统基本方案
2.1建议数字电压表系统框图如图1
2.2主控部分的选择
方案一:用以ATS52为核心的单片机控制系统方案,ATS52具有较大程序存储空间和数据存储空间能满足用户的需要易于实现功能拓展,ATS52内部置有ISP在线编程技术可以应用下载线直接连到计算机的并口相连就可烧写程序,可代替市场上专用的程序烧写器,既经济又实用,从而提高了系统性价比。
方案二:用ATS52作为主控制系统易于实现对程序的编写,但是用户在编写较长程序时它的程序存储空间和数据存储空间不能满足需求,且其不支持ISP在线编程技术,需要专用的烧写器来烧写程序,故成本高,进而降低了系统性价比。
方案三:应用ICL7107集成芯片制作的方案。ICL7107是一块应用非常广泛的集成电路,它包含3 1/2位数字A/D转换器,可直接驱动LED数码管,内部设有参考电压、模拟开关、逻辑控制、显示驱动、自动调零功能等。ICL7107是一种制作数字电压表典型的应用电路。由于该集成芯片在使用上有一定的局限性,不可编程故不能实现功能拓展,无法满足作品的设计要求故不可取。
综合以上三种方案分析,采用ATS52作为主控制系统,可以大大提高系统功能的性能指标,还可以简化系统电路,成本低,故采用方案一。
2.3显示器的选择
方案一:运用液晶显示器主要能显示大量的文字、数字和图形,而且清晰化程度高,
成本高。而次作品主要是简单的显示数字,故不采纳。
方案二:运用点阵显示器主要能显示文字、数字,但其内部结构较为复杂,不易连接,故不使用它。
方案三:运用数码管显示数字比较直观,且其在使用方面连线比较简单、成本低。 综合各方面考虑系统的性价比故采用方案三。
2.4 A/D转换器的选择
方案一:采用双积分A/D转换器MC14433.它有多路调制的BCD码输出端和超量程输出端,采用动态扫描显示,便于实现自动控制。单芯片只能完成A/D转换功能,要实现显示功能还需配合其它驱动芯片等,使得整部分硬件电路板布线复杂,加重了电路设计和实际焊接的工作。
方案二:采用A/D转换芯片ADC0809。ADC0809是一块8路8位模数转换芯片,将模拟电路和数字电路集成在一个用28个功能端的电路内,包含了A/D转化、逻辑控制、姨妈驱动等电路,其转换时间为100μS左右,符合作品8路采集要求且电路设计简单,电路板布线不复杂,便于焊接、调试。
综上所述,故采用方案二。
二、 系统的硬件设计与实现
1、系统硬件概述
该作品由六大部分组成,分别是主控模块、A/D转换模块、显示模块、声光报警模块、量程选择模块、直流稳压电源模块。
2、主要单元电路的设计
2.1主控模块
数字电压表的控制模块采用ATS52单片机,ATS52是DIPloma-40集成电路芯片,该芯片有4个八位并行的双向I/O口,分别为P0、P1、P2、P3、口。如图2示。
20引脚为接地端;40引脚为电源端;31引脚需要接高电位使单片机选用内部程序存储器;18、19脚接上一个12MHZ的晶振为单片机提供时钟信号,第9脚为复位引脚,单片机只有满足这些条件才能正常工作。这次作品我们在P0口街上一个蜂鸣器和一个发光二极管,作为声光报警,在P1口接上七段译码器74LS47来提供给LED的显示,在P3口的P3.2、P3.4、P3.5分别接上两个按键开关和一个发光二极管起到手动切换通道的作用。
图 2
2.2 显示模块
2.2.1显示模块芯片介绍
(1) 74LS47是一种BCD输入,开路输出的4线—七段译码器,DCBA作为4线输入,a-g作为七段输出,输出低电平有效。例如,输入DCBA=0011时,a,b,c,d,g等段输出为低电平,输出显示十进制数3.345引脚为功能扩展端,3脚LT是测试灯输入端,作用是检查数码七段显示是否都能够正常发光。当LT=1,BI=1时,七段显示部件全部点亮,显示“日”字。译码器正常工作时LT=1。4脚RBI是动态灭灯输入端,作用是将数码管显示的、不用的零熄灭。5脚BI/RBO、BI是灭灯输入端,当BI=0时,不管输入如何,a-g均为1,数码管不显示。RBO是动态灭灯输出端,作用是控制低位灭零信号。若RBO=1,说明本位处于显示状态;若RBO=0且低位为零,则低位被熄灭,它于BI组成线与关系345引脚使用时应接上高电位。管脚信息与LED连接如图3所示
图 3
(2)LED管脚信息如图 4
图 4
2.2.2 显示模块的连接
从图5可以观察到单片机P1口低4位连接一块七段译码器74LS47,由于74LS47是共阳极的七段译码器所以要选用共阳极的数码管。单片机P1.0—P1.3的输出信号经过74LS47译码后就可以驱动数码管显示相应的数字,另外在74LS47的输出与数码管之间还要接上7个470欧姆的限流电阻,以防止有过大的电流流过时烧坏数码管。P1.4—P1.7口接于四个PNP三极管的基极,四个三极管分别接于六个数码管的公共端,通过由P1.4—P1.6口的输出量来控制数码管的点亮。采用PNP型的三极管就可以实现数码管的动态显示。
图 5 显示模块
2.3 A/D转换模块
A/D转换器用于实现模拟量向数字量的转换,由于模数转换电路的种类很多,选择A/D的转换器件主要从速度、精度和价格方面考虑。目前最常用的是双积分式和逐次逼近式A/D转换器。双积分式A/D转化器的优点是转换精度高,抗干扰性能好,价格便宜;但转换速度较慢。因此这种转换器主要用于速度要求不高的场合。逐次逼近式A/D转换器是一种速度较快、精度较高的转换器,其转换时间大约在几微秒到几十微秒之间。该系统采用的模数转换器芯片
为adc809,该芯片为8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道抵制锁存用译码电路,其转换时间为100μS左右。 2.3.1
ADC0809的内部逻辑结构
ADC0809的内部逻辑结构图如图 6所示
图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是种经济的多路采集方法。地址锁存与译码电路完成对A、B、C 3个地址进行锁存译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线。表6.1为通道选择表 C B A 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 2.3.2 ADC0809引脚功能
(1)ADC0809引脚图6.2
被选择的通道 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 表 6.1 通道选择表
图 6.2
ADC0809芯片为DIP-28,其主要信号引脚的功能说明如下: IN7~IN0——模拟量输入通道。
A、B、C——地址线。通道端口选择线,A为低地址,C为高地址,引脚图中ADDC、ADDB和 ADDC。其地址状态与通道对应关系见表6.1
ALE——地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。 START——转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始 进行A/D转换;在A/D转换期间,START应保持低电平。写为ST。
D4~D0——数据输出线。为三态缓冲输出形式。可以和单片机的数据线直接相连。D0为最低位,D7为最高。
OE——输出允许信号。用于控制三态门输出锁存器向单片机输出转换得到的数据。OE=0,输 出数据线呈高阻;OE=1,输出转换所得到的数据。
CLK——时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟 信号引脚。通常使用频率为500KHZ的时钟信号。
EOC——转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可 作为查询的状态标志,又可以作为中断请求信号使用。 VCC——+5V电源。
Vref——参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。起典型 值为+5V{Vref(+)=5V,Vref(-)=-5V。 2.3.3 ATS52与ADC0809接口电路 ATS52与ADC0809接口电路如图6.3
图 6.3
接口电路的连接要涉及两个问题。一是8路模拟信号通道的选择,二是A/D转换完成后转换数据的传送还处理。图(6.3)所示模拟通道选择信号A、B、C分别接到74LS373三态锁 存器的A0、A1、A2即接到P0口最低三位地址(P0.0、P0.1、P0.2)而地址锁存端由P2.0 控制,8路模拟选通地址为0FEF8H—0FEFFH。通道地址选择以WR ̄作写选通信号,把ALE 信号与
STAET信号接在一起这样使得在信号的前沿写入(锁存)通道地址,紧接着其后沿就 启动转换。这就是A/D转换模块电路连接,之后的数据采集、通道选择、量程选择、数据处 理都由后续的程序编写来完成。
2. 4声光报警模块
为了判断采集的电压量是否超出量程,增加了声光报警模块。该模块工作原理如下当系统采集到的电压值大于20V时,发光二极管点亮蜂鸣器响且数码管不显示数据,此时实现声光报警功能。声光报警电路模块如图7
图7 声光报警电路
2.5量程选择模块
量程模块根据电阻分压原理而设计,该系统的量程模块由一个15K的电阻和10K的滑动电阻串上8个1K的电阻构成分压模式,根据作品设计要求采集电压值的量程可在0V~5V, 5V~20V之内的电压量进行选择,图(8)中SW开关就起到选择量程的作用,ATS52的P3.3~ P3.5所对应接的按键开关和发光二极管起到这里则起来到选择量程通道的作用。量程模块 电路图如图8
图 8 量程模块电路
三、系统的软件设计
1、系统软件概述
简易数字电压表是一种实时测试电压变化量的数码智能产品。该系统由ATS52单片机系统、A/D转换模块、LED动态显示模块、电源模块、量程选择模块和报警系统组成。 该系统能完成电压量的采集、A/D转换、手动量程切换、实时显示采集到电压量和声光提 示等功能。依据实际的情况还可以添加自动量程切换功能。本系统成本低廉,功能实用它 以可靠的性能、便捷的使用和极低的功耗特性而获得广阔的市场前景。
2、数字电压表总程序流程图
数字电压表主程序流程图
3、子程序的设计
子程序组成下面对各子程序简单介绍如下:
该系统程序由上电自检、数据采集、通道选择、量程选择、超量程报警子程序还有数据处理等
3.1上电自检子程序
自检子程序是检测显示模块的好坏看是否能正常工作同时可以检测出硬件是否焊接正确,当运行自检时数码管上显示四个“8”红灯绿灯亮且蜂鸣器发出报警,说明显示模块可 以正常工作自检子程序如下: START:
MOV R2,#250 ;自检子程序 L1:
MOV R3,#250 ;自检循环设定
ZOO:
MOV P1,#11101000B;设置数码管自检显示全部为8 MOV P1,#11011000B MOV P1,#10111000B MOV P1,#01111000B SETB P3.0 CLR P3.1 CLR P3.3
DJNZ R3,ZOO ;延时等待一段时间 DJNZ R2,L1
SETB P3.1 ;灭数码管,灯和蜂鸣器 CLR P3.0 SETB P3.2 SETB P3.3 SETB P3.4 SETB P3.5
MOV P1,#11111111B
MOV 60H,#00H ;给寄存器清零 MOV 61H,#00H MOV 62H,#00H MOV 63H,#00H MOV H,#00H MOV 65H,#00H MOV 66H,#00H MOV 67H,#00H MOV 21H,#00H MOV 22H,#00H MOV 23H,#00H MOV 24H,#00H
3.2数据采集子程序
数据采集程序就是把模拟电压值送到ADC0809中,由0809进行模数转换最后得出8位 数字量的位码,在由单片机进行位码与BCD码的转换并由数码管显示出来,即为当前的测量电压值,具体程序如下:
LIANGCHENG1: ;0到5伏量程子程序 MOV R1,#60H MOV R6,#5
DD11: ;检测第一路
JNB P3.5,LIANGCHENG11 ;判断是否要进行8路采集 CLRE A
MOV DPTR,#0FEF8H ;选择通道1 MOVX @DPTR,A
JB P3.2,$ ;判断AD转换是否完成 MOVX A,@DPTR ;单片机进行读超做 MOV @R1,A
INC R1 ;采集5次 DJNZ R6,DD11
JNB P3.5,LIANGCHENG11
LCALL PAIXU1 ;排序 JNB P3.5,LIANGCHENG11
LCALL DEL3 ;显量程 JNB P3.5,LIANGCHENG11
LCALL PIS ;对采集的数据进行处理 JNB P3.5,LIANGCHENG11
LCALL PANDUAN1 ;判断是否超量程 NOP
LJMP LIANGCHENG1 ;返回
3.3通道选择及量程选择子程序
通道选择程序是由按键开关控制来完成的,通过软件对按键的反复扫描来判断是否有按键按下,当有按键会跳到相应的量程子程序,并进行八路采集,程序流程图如下:
道路选择与量程选择程序流程图
3.4数据处理子程序
数据处理子程序包含有对采集到的数据进行排序,求和,求平均值,从而减小测量误差,程序流程图如下:
3.5超量程报警子程序
每个系统都有它的最高耐压值,当超出它的额定电压时会对系统带来损坏,所以设置 了超量程报警,判断寄存器中的数据是否超出设定值,如果超出则发出声光报警,否则继续 采集。
四、系统测试
1、测试仪器与设备
测试仪器及设备如表4.1所示
表4.1 测试仪器及设备
2、测试指标和误差分析
(1)基本要求
0~5V预置电压与实测电压的偏差测试如表4-2所示 表4-2 预置电压与实测电压的偏差 输入档位/V 0 1.5 2.5 3.5 5 (2)发挥部分
5V~20V预置电压与实测电压的偏差测试如表4-3所示
表4-2 预置电压与实测电压的偏差
预置电压/V 00.00 01.50 02.50 03.50 05.00 实测电压/V 00.02 01.48 02.47 03.47 05.10 误差/V 00.02 00.02 00.03 00.03 00.10
3、测试结果分析
根据检测结果,分析该数字电压表的技术性能指标:
误差比较小,达到了电路的设计要求,从测试数据可以看出技术指标达到设计要求,在 电压值小时相对误差较大,主要是采样电压值较小,导致采样电压时,测量分辨率不够高,使相对误差大,解决这一问题的一种办法是在小电压时使用软件编程解决,提高采样电压的 次数求平均值,从而提高分辨率,减小相对误差。影响电压表精度的另一个器件是所采样电 压,一般需要选择压值稳定性好,精度高的电源。由于条件所限测试采样的电压源提供的电 压很不稳定,导致采集到的电压值存在一定的误差。
五、总结 1、作品总结
由于使用的是高效单片机作为核心的测量系统,以及灵敏度和精度较高的A/D转换器,使本直流电压表具有精度高、灵敏度强、性能可靠、电路简单、成本低的特点,加上经过优化的程序,使其有很高的智能化水平。本系统以ATS52单片机为核心部件,结合模数电路的设计原理,利用电阻分压的原理选择测试点电压的技术,并配合一套独特的程序完成了题目所有的功能。在设计中力求发 挥软件灵活方便的特点,来满足系统的设计要求。
2、自我总结
经过三周的努力和合作我们小组终于如期完成了积分式数字直流电压表作品设计与制作,在刚开始设计时觉得在设计方案和编程方面不知道如何入手,觉得困难比较多,经过组员的讨论与老师的指点及以往的经验积累,最后终于完成了作品设计要求实现的功能,通过这次实训作品的设计使我们认识到自己的水平还很有限,还有很多不足的地方还有待于提高 。作品实训设计不仅是对我们前面所学知识的一种检验,也是对自己能力的一种提高,通过这次实训使自己明白了原来的那点知识是非常欠缺的,要学习的东西还很多,学习是一个长期积累的过程,在以后的工作和生活中都应该不断的学习,努力提高自己的知识和综合素质。在整个实训设计的过程中使我们懂得了许多东西,也培养了思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力,使自己充分体会到了在设计过程中的成功喜悦。虽然这个设计不是个人知识设计出来的是由小组成员团结协作完成,但是在设计过程中所学到的东西是最大收获和财富,使我们终身受益。
六、致谢词
感谢领导和老师给予我们这个锻炼的机会,为我们提供了一个展示自己才能,开拓创新 思维,激发创新灵感,交流学习互动的平台。通过这次实训作品的设计与制作,极大地提高 了我们的动手能力和兴趣,磨练了我们的意志,同时也培养了我们思考的能力。感谢指 导老师和本组组长还有其他同学的帮助与指导,在我们小组成员的合作下,才能顺顺利利的 才能按时按量的完成这次实训作品的设计与制作。
七、参考文献
[1]王法能.单片机原理及应用.科学出版社.2004 [2]刘 勇.数字电路.电子工业出版社.2004
[3]赵伟军.PROTEL99SE教程.人民邮电出版社.2004 [4]黄强.模拟电子技术.科学出版社.2003 [5]21IC资料搜索
附录一:系统总原理图
附录二:系统总程序清单
ORG 0030H START:
MOV R2,#250 ;自检子程序 L1:
MOV R3,#250 ;自检循环设定 ZOO: ;设置数码管自检显示全部为 8 MOV P1,#11101000B MOV P1,#11011000B MOV P1,#10111000B MOV P1,#01111000B SETB P3.0 CLR P3.1 CLR P3.3
DJNZ R3,ZOO DJNZ R2,L1 SETB P3.1 ;灭数码管,灯和蜂鸣器 CLR P3.0 SETB P3.2 SETB P3.3 SETB P3.4 SETB P3.5
MOV P1,#11111111B MOV 60H,#00H ;给寄存器清零 MOV 61H,#00H MOV 62H,#00H MOV 63H,#00H MOV H,#00H MOV 65H,#00H MOV 66H,#00H MOV 67H,#00H MOV 21H,#00H MOV 22H,#00H MOV 23H,#00H MOV 24H,#00H START2:
JNB P3.4,LIANGCHENG1 ;量程选择 JNB P3.5,LIANGCHENG2 LJMP START2 LIANGCHENG2:
LJMP LIANGCHENG3 LIANGCHENG1: ;0 到 5 伏量程子程序 MOV R1,#60H MOV R6,#8
DD11: ;检测第一路
JNB P3.5,LIANGCHENG11 ;判断是否要进行 8 路采集 CLR EA
MOV DPTR,#0FEF8H ;选择通道 1
MOVX @DPTR,A JB P3.2,$ ;判断 AD 转换是否完成 MOVX A,@DPTR MOV @R1,A INC R1 DJNZ R6,DD11
JNB P3.5,LIANGCHENG11 LCALL PAIXU1 JNB P3.5,LIANGCHENG11 LCALL DEL3
JNB P3.5,LIANGCHENG11 LCALL PIS
JNB P3.5,LIANGCHENG11 LCALL PANDUAN1 NOP
LJMP LIANGCHENG1 LIANGCHENG11: MOV 11H,#70H MOV R1,#60H MOV R6,#8 DD1:
CLR EA
MOV DPTR,#0FEF8H MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R6,DD1 LCALL DEL2 LCALL PAIXU1 LCALL PIS
LCALL PANDUAN1 MOV R1,#60H MOV R6,#8 DD2:
CLR EA
MOV DPTR,#0FEF9H MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R6,DD2 LCALL DEL2 LCALL PAIXU1 LCALL PIS
LCALL PANDUAN1
;单片机进行读超做 ;采集 5 次 ;排序 ;显量程
;对采集的数据进行处理 ;判断是否超量程
;0 到 5 伏量程 8 通道采集子程序
MOV R1,#60H MOV R6,#8 DD3:
CLR EA
MOV DPTR,#0FEFAH MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R6,DD3 LCALL DEL2 LCALL PAIXU1 LCALL PIS
LCALL PANDUAN1 MOV R1,#60H MOV R6,#8 DD4:
CLR EA
MOV DPTR,#0FEFBH MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R6,DD4 LCALL DEL2 LCALL PAIXU1 LCALL PIS
LCALL PANDUAN1 MOV R1,#60H MOV R6,#8 DD5:
CLR EA
MOV DPTR,#0FEFCH MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R6,DD5 LCALL DEL2 LCALL PAIXU1 LCALL PIS
LCALL PANDUAN1 MOV R1,#60H MOV R6,#8
DD6:
CLR EA
MOV DPTR,#0FEFDH MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R6,DD6 LCALL DEL2 LCALL PAIXU1 LCALL PIS
LCALL PANDUAN1 MOV R1,#60H MOV R6,#8 DD7:
CLR EA
MOV DPTR,#0FEFEH MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R6,DD7 LCALL DEL2 LCALL PAIXU1 LCALL PIS
LCALL PANDUAN1 MOV R1,#60H MOV R6,#8 DD8:
CLR EA
MOV DPTR,#0FEFFH MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R6,DD8 LCALL DEL2 LCALL PAIXU1 MOV 62H,#00H LCALL PIS
LCALL PANDUAN1 NOP
LJMP LIANGCHENG11 DEL2:
INC 11H ;显量程子程序 MOV 17H,#250 WW11:
MOV 16H,#2 WW22:
MOV P1,11H LCALL DEL
MOV P1,#11100101B LCALL DEL
DJNZ 16H,WW22 DJNZ 17H,WW11 RET TIAO:
MOV A,H CLR C SUBB A,#4 LJMP TIAO1 PIS: ;对采集数据进行处理 MOV A,H CLR C SUBB A,#128 JNC TIAO MOV A,H TIAO1:
MOV B,#2 MUL AB
LCALL CHULI MOV A,R3 MOV B,#100 DIV AB MOV A,B MOV B,#10 DIV AB SWAP A MOV 22H,A MOV A,B MOV B,#10 MUL AB MOV B,#10 DIV AB MOV B,22H ORL A,B MOV 22H,A MOV A,R4 MOV B,#100 DIV AB MOV A,B MOV B,#10
;每次 显示就只需要把 H 里面的数转换成 BCD 码就可以了
;转换完成 详参课本 69 页 是如何转换的
;十位转换
;个位转换
;小数百位转换
DIV AB SWAP A MOV 21H,A MOV A,B MOV B,#10 MUL AB MOV B,#10 DIV AB MOV B,21H ORL A,B MOV 21H,A MOV 51H,#250 DIS:
MOV 52H,#8 DI:
MOV A,22H ANL A,#11110000B SWAP A ADD A,#01110000B MOV P1,A
LCALL DEL MOV A,22H ANL
A,#00001111B ADD A,#10110000B MOV P1,A LCALL DEL MOV A,21H ANL A,#11110000B SWAP A ADD A,#11010000B MOV P1,A LCALL DEL MOV A,21H ANL
A,#00001111B ADD A,#11100000B MOV P1,A LCALL DEL DJNZ 52H,DI DJNZ 51H,DIS RET
;显示电压值子程序
;十位的显示
;个位的显示
;十位的显示
;个位的显示
LIANGCHENG3: ;0 到 20 伏量程 CLR P3.3
MOV R1,#60H MOV R5,#8 DDD11: ;检测第一路 JNB P3.4,LIANGCHENG22 CLR EA
MOV DPTR,#0FEF8H MOVX @DPTR,A
JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
JNB P3.4,LIANGCHENG22 DJNZ R5,DDD11 LCALL PAIXU1
JNB P3.4,LIANGCHENG22 LCALL DEL4
JNB P3.4,LIANGCHENG22 LCALL PIS1
JNB P3.5,LIANGCHENG22 LCALL PANDUAN NOP
LJMP LIANGCHENG3 LIANGCHENG22: MOV 10H,#70H CLR P3.3
MOV R1,#60H MOV R5,#8 DDD1: CLR EA
MOV DPTR,#0FEF8H MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R5,DDD1 LCALL PAIXU1 LCALL DEL1 LCALL PIS1
LCALL PANDUAN MOV R1,#60H MOV R5,#8 DDD2: CLR EA
MOV DPTR,#0FEF9H MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R5,DDD2 LCALL PAIXU1 LCALL DEL1 LCALL PIS1
LCALL PANDUAN
;检测第 2 路
MOV R1,#60H MOV R5,#8 DDD3: CLR EA
MOV DPTR,#0FEFAH MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R5,DDD3 LCALL PAIXU1 LCALL DEL1 LCALL PIS1
LCALL PANDUAN MOV R1,#60H MOV R5,#8 DDD4: CLR EA
MOV DPTR,#0FEFBH MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R5,DDD4 LCALL PAIXU1 LCALL DEL1 LCALL PIS1
LCALL PANDUAN MOV R1,#60H MOV R5,#8 DDD5: CLR EA
MOV DPTR,#0FEFCH MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R5,DDD5 LCALL PAIXU1 LCALL DEL1 LCALL PIS1
LCALL PANDUAN MOV R1,#60H MOV R5,#8 DDD6: CLR EA
;检测第 3 路
;检测第 4 路;检测第 5 路
;检测第 6 路
MOV DPTR,#0FEFDH MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R5,DDD6 LCALL PAIXU1 LCALL DEL1 LCALL PIS1
LCALL PANDUAN MOV R1,#60H MOV R5,#8 DDD7: CLR EA SETB P2.0
MOV DPTR,#0FEFEH MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R5,DDD7 LCALL PAIXU1 LCALL DEL1
;检测第 7 路
LCALL PIS1
LCALL PANDUAN MOV R1,#60H MOV R5,#8 DDD8: CLR EA ;检测第 8 路 MOV DPTR,#0FEFFH MOVX @DPTR,A JB P3.2,$
MOVX A,@DPTR MOV @R1,A INC R1
DJNZ R5,DDD8 LCALL PAIXU1 LCALL DEL1 MOV H,#00H LCALL PIS1
LCALL PANDUAN NOP
LJMP LIANGCHENG22 DEL1: INC 10H
MOV 15H,#250 WW1:
MOV 14H,#3 WW2:
MOV P1,10H LCALL DEL
MOV P1,#11010010B LCALL DEL
MOV P1,#11100000B LCALL DEL DJNZ 14H,WW2 DJNZ 15H,WW1 RET DEL3:
MOV 15H,#250 TT1:
MOV 14H,#3 TT2:
MOV P1,#11100101B LCALL DEL DJNZ 14H,TT2 DJNZ 15H,TT1 RET
DEL4:
MOV 17H,#250
TT11:
MOV 16H,#3 TT22:
MOV P1,#11010010B LCALL DEL
MOV P1,#11100000B LCALL DEL DJNZ 16H,TT22 DJNZ 17H,TT11 RET TIAO2:
MOV A,H CLR C SUBB A,#4 LJMP TIAO3
PIS1:
MOV A,H
可以了 CLR C
SUBB A,#128 JNC TIAO2 MOV A,H TIAO3:
MOV B,#8
;显示量程 1
;显示量程 2
;由于每次采集得到的数据都传输到了 H
;每次 显示就只需要把 H 里面的数转换成 BCD 码就
MUL AB
LCALL CHULI MOV A,R3 MOV B,#100 DIV AB MOV A,B MOV B,#10 DIV AB SWAP A MOV 24H,A MOV A,B MOV B,#10 MUL AB MOV B,#10 DIV AB MOV B,24H ORL A,B MOV 24H,A MOV A,R4 MOV B,#100 DIV AB MOV A,B MOV B,#10 DIV AB SWAP A MOV 23H,A MOV A,B MOV B,#10 MUL AB MOV B,#10 DIV AB MOV B,23H ORL A,B MOV 23H,A MOV 53H,#250
DIS1:
MOV 54H,#8 DI1:
MOV A,24H
ANL A,#11110000B SWAP A ADD A,#01110000B MOV P1,A LCALL DEL MOV A,24H ANL
A,#00001111B ADD A,#10110000B
;转换完成
;显示程序 把 FFH 的数显示成 255 ;百位的显示
;十位的显示
个段
MOV P1,A LCALL DEL MOV A,23H ANL A,#11110000B SWAP A ADD A,#11010000B MOV P1,A LCALL DEL MOV A,23H ANL
A,#00001111B ADD A,#11100000B MOV P1,A LCALL DEL DJNZ 54H,DI1 DJNZ 53H,DIS1 RET
;个位的显示
;十位的显示
;个位的显示
CHULI:
MOV R4,B MOV R5,A MOV R7,#H CLR C MOV A,R4 SUBB A,R7 JC DVD SETB OV
LJMP ZUIHOU DVD:
MOV R6,#8 DVD1:
MOV A,R5 RLC A MOV R5,A MOV A,R4 RLC A MOV R4,A MOV F0,C CLR C SUBB A,R7 ANL C,/F0 JC DVD2 MOV R4,A DVD2: CPL C MOV A,R3 RLC A MOV R3,A DJNZ R6,DVD1
;对双字节的数据进行处理
CLR OV ZUIHOU: NOP RET
PANDUAN1:
MOV A,22H
CJNE A,#05H,LOP1 SETB P3.0 CLR P3.1 RET LOP1: RET
PANDUAN:
MOV A,24H
CJNE A,#20H,LOP SETB P3.0 CLR P3.1 RET LOP: RET DEL:
MOV 50H,#250 DJNZ
50H,$ RET
PAIXU1:
MOV R6,#7 TOUTOU:
MOV R0,#60H MOV R7,#7 ;CLR 00h LOOP4:
MOV A,@R0 MOV 2BH,A INC R0
MOV 2AH,@R0 CLR C
SUBB A,@R0 JC NEXT
MOV @R0,2BH DEC R0
MOV @R0,2AH INC R0 ;SETB 00h NEXT:
;判断超量程报警
;判断超量程报警
;对采集的数据进行排序(冒泡法);以 60H 地址为起始冒泡
DJNZ R7,LOOP4 ;JB 00h,TOUTOU DJNZ R6,TOUTOU RET
;冒泡完毕
因篇幅问题不能全部显示,请点此查看更多更全内容