- 1 -
目 目
录
第一部分
设计任务与调研 „„„„„„„„„„„„„„„„„„„„„3
第二部分
设计说明 „„„„„„„„„„„„„„„„„„„„„„„„„4 第三部分
设计成果 „„„„„„„„„„„„„„„„„„„„„„„„„5 第四部分
结束语 „„„„„„„„„„„„„„„„„„„„„„„„„„16 第五部分
致谢 „„„„„„„„„„„„„„„„„„„„„„„„„„„„17 第六部分
参考文献 …………………………………………………………………18
- 2 - 第一部分
设计任务与调研
随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成 CPU、存储器、定时器/计数电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。
数字电压表(DigitalVoltmeter)简称 DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。与此同时,由 DVM 扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。本章重点介绍单片 A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原目前,由各种单片 A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力理。
本设计 AT89C51 单片机的一种电压测量电路,该电路采用 ADC0808 本文介绍一种基于 A/D 转换电路,测量范围直流 0~5V 的 4 路输入电压值,并在四位 LED数码管上显示或单路选择显示。测量最小分辨率为 0.019V,测量误差约为正负0.02V。
- 3 - 第二部分
设计说明
本设计是利用单片机 AT89C51 与 ADC0808 设计一个数字电压表,测量 0-5V之间的直流电压值,四位数码显示,但要求使用的元器件数目最少。
1 2.1 数字电压表的实现原理
ADC0808 是 8 位的 A/D 转换器。当输入电压为 5.00V 时,输出的数据值为255(0FFH),因此最大分辨率为 0.0196(5/255)。ADC0808 具有 8 路模拟量输入端口,通过 3 位地址输入端能从 8 路中选择一路进行转换。如每隔一段时间依次轮流改变 3 位地址输入端的地址,就能依次对 8 路输入电压进行测量。LED 数码管显示采用软件译码动态显示。通过按键选择可对 8 路循环显示,也可单路显示,单路显示可通过按键选择显示的通道数。
2 2.2 数字电压表的设计要求
可以测量 0~5V 范围内的 3 路直流电压值。在 4 位 LED 数码管上轮流显示各路电压值或单路选择显示,其中 3 位 LED 数码管显示电压值,显示范围为 0.00V~5.00V,1 位 LED 数码管显示路数,3 路分别为 0-2。要求测量的最小分辨率为0.02V。
- 4 - 第三部分
设计成果
1 3.1 设计思路
多路数字电压表应用系统硬件电路由单片机、A/D 转换器、数码管显示电路和按键处理电路组成,由于 ADC0808 在进行 A/D 转换时需要有 CLK 信号,本试验中 ADC0808 的 CLK 直接由外部电源提供为 500kHz 的方波。由于 ADC0808 的参考电压 VREF=VCC,所以转换之后的数据要经过数据处理,在数码管上显示出电压值。实际显示的电压值(D/256*VREF) ADC0808 采用逐次逼近法转换,把模拟电压转换成 16 进制的 D,由于是对直流电压 0~5V 进行采集,所以 D 对应的电压为 V0 ,我们的目的就是要把 V0 显示在 LED 显示器上,因为单片机不好进行小数点计算,所以有:V0=2*D 扩大了 100 倍,扩大 100 倍后的结果高八位放寄存器 B,低八位放寄存器 A,分寄存器 B 为 0 或不为 0 的情况进行存取数据,得到的结果个位放入 R0,十位放入 R1,通过查表使之显示在 LED 显示器。
3.2 仿真电路图 用 Protues 软件仿真设计的电路如图 3-1 所示。
IN3IN2IN1IN0P0P1P2p3WRRDRDP3P2P1P0IN0IN1IN2IN3AD1AD2AD3ALEAD1AD2AD3ALEWRXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52NET=p5D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE11U274LS373OUT121ADD B24ADD A25ADD C23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START6OUT58EOC7OE9CLOCK10OUT220OUT714OUT615OUT817OUT418OUT319IN228IN127IN026ALE22U3ADC0808231U4:A74LS02564U4:B74LS02+5+88.8Volts+88.8Volts+88.8Volts+88.8Volts+5循环单步X1C233PC310uR110KC422u67%RV11k23%RV21k28%RV31k87%RV41kU3(CLOCK)
- 5 - 3 3.3 设计过程
简易数字电压测量电路由 A/D 转换、数据处理及显示控制等组成。电路原理图见附录 2。A/D 转换由集成电路 0808 完成。0808 具有 8 路模拟输入端口,地址(23-25)脚可决定对哪路模拟输入作 A/D 转换,22 脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。6 脚为测试控制,当输入一个 2us 宽高电平脉冲时,就开始 A/D 转换。7 脚为 A/D 转换结束标志,当 A/D 转换结束时 7 脚输出高电平。9 脚为 A/D 转换数据输出允许控制,当 OE 脚为高电平时,A/D 转换数据从该端口输出。10 脚为 0808 的时钟输入端,由外部信号源提供。单片机的 P1、P3.0-P3.3 端口作为四位 LED 数码管现实控制。P3.5 端口用作单路显示/循环显示转换按钮,P3.6 端口用作单路显示时选择通道。P0 端口作 A/D 转换数据读入用,P2 端口用作 0808 的 A/D 转换控制。
3.4 AT89C51 的功能介绍 3.4.1 简单概述 AT89C51 是一种带 4K 字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能 CMOS 8 位微处理器,俗称单片机。AT89C51 是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 1000次。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器,AT89C2051 是它的一种精简版本。AT89C51 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图 3-2 所示。
图 3-2 AT89C51 芯片模型
XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51
- 6 -
2 3.4.2 主要功能特性
(1) 4K 字节可编程闪烁存储器。
(2) 32 个双向 I/O 口;128×8 位内部 RAM 。
(3) 2 个 16 位可编程定时/计数器中断,时钟频率 0-24MHz。
(4) 可编程串行通道。
(5) 5 个中断源。
(6) 2 个读写中断口线。
(7) 低功耗的闲置和掉电模式。
(8) 片内振荡器和时钟电路。
1 3.4.3 AT89C51 的引脚介绍
89C51 单片机多采用 40 只引脚的双列直插封装(DIP)方式,下面分别简单介绍。
(1)电源引脚 电源引脚接入单片机的工作电源。
Vcc(40 引脚):+5V 电源。
GND(20 引脚):接地。
(2)时钟引脚 XTAL1(19 引脚):片内振荡器反相放大器和时钟发生器电路的输入端。
XTAL2(20 引脚):片内振荡器反相放大器的输出端。
- 7 - (3)复位 RST(9 引脚) 在振荡器运行时,有两个机器周期(24 个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个脚保持高电平,51 芯片便循环复位。
(4) EA /Vpp(31 引脚) EA 为外部程序存储器访问允许控制端。当它为高电平时,单片机读片内程序存储器,在 PC 值超过 0FFFH 后将自动转向外部程序存储器。当它为低电平时,只限定在外部程序存储器,地址为 0000H~FFFFH。Vpp 为该引脚的第二功能,为编程电压输入端。
(5)ALE/ PROG (30 引脚) ALE 为低八位地址锁存允许信号。在系统扩展时,ALE 的负跳沿江 P0 口发出的第八位地址锁存在外接的地址锁存器,然后再作为数据端口。
PROG 为该引脚的第二功能,在对片外存储器编程时,此引脚为编程脉冲输入端。
(6) PSEN (29 引脚) 片外程序存储器的读选通信号。在单片机读片外程序存储器时,此引脚输出脉冲的负跳沿作为读片外程序存储器的选通信号。
(7) pin39-pin32 为 P0.0-P0.7 输入输出脚,称为 P0 口。
P0 是一个 8 位漏极开路型双向 I/O 口。内部不带上拉电阻,当外接上拉电阻时,P0 口能以吸收电流的方式驱动八个 LSTTL 负载电路。通常在使用时外接上拉电阻,用来驱动多个数码管。
在访问外部程序和外部数据存储器时,P0 口是分时转换的地址(低 8 位)/数据总线,不需要外接上拉电阻。
(8)Pin1-Pin8 为 P1.0-P1.7 输入输出脚,称为 P1 口,是一个带内部上拉电阻的8 位双向 I/0 口。P1 口能驱动 4 个 LSTTL 负载。
(9)Pin21-Pin28 为 P2.0-P2.7 输入输出脚,称为 P2 口。
P2 口是一个带内部上拉电阻的 8 位双向 I/O 口,P2 口能驱动 4 个 LSTTL 负载。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash程序存储器编程时,接收高 8 位地址和控制信息。在访问外部程序和 16 位外部数据存储器时,P2 口送出高 8 位地址。而在访问 8 位地址的外部数据存储器时其引脚上的内容在此期间不会改变。
(10)Pin10-Pin17 为 P3.0-P3.7 输入输出脚,称为 P3 口。
P3 口是一个带内部上拉电阻的 8 位双向 I/O 口,P2 口能驱动 4 个 LSTTL 负载,这 8 个引脚还用于专门的第二功能。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash 程序存储器编程时,接控制信息。
3.5 ADC0808 的引脚及功能介绍
- 8 - 1 3.5.1 芯片概述
ADC0808 是一种典型的 A/D 转换器。它是由 8 位 A/D 转换器,一个 8 路模拟量开关,8 位模拟量地址锁存译码器和一个三态数据输出锁存器组成; +5V 单电源供电,转化 时间在 100us 左右;内部没有时钟电路,故需外部提供时钟信号。芯片模型如图 3-4 所示。
图 3-4ADC0808 芯片模型 3.5.2 引脚简介
(1) IN0~IN7:8 路模拟量输入端。
(2) D0~D7:8 位数字量输出端口。
(3) START:A/D 转换启动信号输入端。
(4) ALE:地址锁存允许信号,高电平有效。
(5) EOC:输出允许控制信号,高电平有效。
(7) CLK:时钟信号输入端。
(8)A、B、C:转换通道地址,控制 8 路模拟通道的切换。A、B、C 分别与地址线或数据线相连,三位编码对应 8 个通道地址端口,A、B、C=000~111 分别对应IN0~IN7 通道的(6) OE:
输出允许控制信号,高电平有效。
地址端口。
- 9 -
8 3.5.3 ADC0808 的转换原理
ADC 0808 采用逐次比较的方法完成 A/D 转换,由单一的+5V 电源供电。片内带有锁存功能的 8 路选 1 的模拟开关,由 A、B、C 的编码来决定所选的通道。ADC0809 完成一次转换需 100μs 左右,它具有输出 TTL 三态锁存缓冲器,可直接连接到 AT89C51 的数据总线上。通过适当的外接电路,ADC0808 可对 0~5V 的模拟信号进行转换。
3.674LS373 芯片的引脚及功能 4 3.5.4 芯片概述
74LS373 是一种带有三态门的 8D 锁存器,其在本设计中是锁存 P0 口的低 8位地址,芯片模型如图 3-5 所示。
5 3.5.5 引脚介绍
(1) D0~D7:8 位数据输入线;
(2) Q0~Q7:8 位数据输出线 (3) G:数据输入锁存选通信号。当加到该引脚的信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。
(4) OE :数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中的数据输出到数据输出线上,当该信号为高电平时,输出线为高阻态。
3.7 LED 数码管的控制显示
图 3-5 74LS373 芯片模型
- 10 -
4 系统软件程序的设计 多路数字电压表系统软件程序主要有主程序、A/D 转换子程序和中断显示程序组成。
4.1 主程序
主程序包含初始化部分、调用 A/D 转换子程序和相应外部 0 中断显示电压数值程序,初始化部分包含存放通道的缓冲区初始化和显示缓冲区初始化。另外,对于单路显示和循环显示,系统设置了一个标志位 00H 控制,初始化时 00H 位设置为 0,默认为循环显示,当它为 1 时改变为单路显示控制,00H 位通过单路、循环按键控制。流程图如图.
开始
显示子程序
A/D 转换子程序
初始化 图 4-1 主程序流程图
- 11 - D 4.2 A/D 转换子程序
A/D 转换子程序用于对 ADC0808 的 4 路输入模拟电压进行 A/D 转换,并将转换的数值存入 4 个相应的存储单元中,A/D 转换子程序每隔一定时间调用一次,即隔一段时间对输入电压采样一次,如图。
判断是否为 0
进行十六进制调整
开始 A/D 转换 调用延时 存转换后的十六进制数 数据指针加一 入栈保护 4 路转换次数减一 显示电压值 N Y
- 12 - 4.3 中断显示程序
设计中采用中断的方式来读取转换完成的数据能节省 CPU 的资源 当系统设置好后,一旦数据转换完成,便会进入外部中断 0,然后在中断中读取转换的数值,处理数据并送数码管显示输出。
LED 数码管采用软件译码动态扫描的方式。在中断程序中包含多路循环显示程序和单路显示程序,多路循环显示程序把 4 个存储单元的数值依次取出送到 4 个数码管上显示,每一路显示一秒。单路显示程序只对当前选中的一路数据进行显示。每路数据显示时需经过转换变成十进制 BCD 码,放于 4 个数码管显示缓冲区中。单路或多路循环显示通过标志位 00H 控制。在显示控制程序中加入了对单路或多路循环按键的判断。
数字量送 P1 口 取段码地址 P3.1=1? 调用循环显示程序 调用单路显示程序 显示的是第 4 路 重新调用显示程序 N Y N Y
- 13 -
5 5 电压表的调试及性能分析
5.1 调试与测试
本设计应用 Proteus6 及 KEIL51 软件,首先根据自己设计的电路图用Proteus6 软件画出电路模型,关于这个软件的使用通过查一些资料和自己的摸索学习;然后我们用 KEIL51 软件对所编写的程序进行编译、链接,如果没有错误和警告便可生成程序的 hex 文件,将此文件加到电路图上使软硬件结合运行,最后进行端口电压的对比测试,测试的第一路对比见图 4-1 中标准电压值采用Proteus6 软件中的模拟电压表测得。
从图中可以看出,简易数字电压表与“标准”数字电压表测得的绝对误差均在 0.02V 以内,这与采用 8 位 A/D 转换器所能达到的理论误差精度相一致,在一般的应用场合可以完全满足要求。
5.2 性能分析
由于单片机为 8 位处理器,当输入电压为 5.00V 时,输出数据值为 255(FFH)因此单片机最大的数值分辨率为 0.0196V(5/255)。这就决定了该电压表的最大分辨率(精度)只能达到 0.0196V。测试时电压数值的变化一般以 0.02V 的电压幅度变化,如要获得更高的精度要求,应采用 12 位、13 位的 A/D 转换器。
简易数字电压表测得的值基本上均比标准值偏大 0.01-0.02V。这可以通过校正 0808 的基准电压来解决,因为该电压表设计时直接用 7805 的供电电源作为基准电压,电压可能有偏差。另外可以用软件编程来校正测量值。
ADC0808 的直流输入阻抗为 1M 欧姆,能满足一般的电压测试需要。另外,经测试 ADC0808 可直接在 2MHz 的频率下工作,这样可省去分频率 14024。
- 14 - 6 电路仿真图
为 4 路通道用模拟电压表测得的理论值。
为进行模拟仿真时的电路图
IN3IN2IN1IN0P0P1P2p3WRRDRDP3P2P1P0IN0IN1IN2IN3AD1AD2AD3ALEAD1AD2AD3ALEWRXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52NET=p5D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE11U274LS373OUT121ADD B24ADD A25ADD C23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START6OUT58EOC7OE9CLOCK10OUT220OUT714OUT615OUT817OUT418OUT319IN228IN127IN026ALE22U3ADC0808231U4:A74LS02564U4:B74LS02+5Volts+4.35Volts+1.40Volts+1.15Volts+3.35+5循环单步X1C233PC310uR110KC422u67%RV11k23%RV21k28%RV31k87%RV41kU3(CLOCK)
模拟电压表测量结果 仿真时的电路图
- 15 -
第四部分
结束语
经过一周的努力终于设计成功,LED 的显示结果和直接用数字电压表测试模拟量输入所得结果几乎一致,误差完全在合理的范围之内。由于仪器误差,LED显示最大值只能是 4.9V,离标准最大值 5.0V 已经不远,达到预期目的,设计成功。
本设计参考了教材上第十一章 89C51 与 ADC0809 转换的接口连线,设计出电路图的连线,从并中理解了许多基本的知识和接线方法,在程序的设计与电压表调试的过程中中遇到了很多的问题,刚开始时四个数码管根本不显示,后来发现用的是共阳极的数码管,而设计是共阴极的,更换后数码管终于显示,但问题又出现了,单路显示和循环显示的开关不能控制电路的单路显示和循环显示,经过仔细地检查电路和修改程序,采用中断的方法,产生一次外部中断 0,程序转移到单路显示,按一次单路显示开关,地址加一,转换的模拟通道相应的加一,如果按下循环按键就返回循环显示的程序,功夫不负有心人,最后终于调试成功。
在此再次向带领我们这次课程设计的老师说声:谢谢!
- 16 - 第五部分
致谢
本论文是在肖春艳和黄建科老师的悉心指导下完成的,肖春艳和黄老师的渊博学识和丰富经验给我留下了深刻的印象。从肖春艳和黄老师那里我学到的不仅是专业知识与实际问题科学解决的方法,更为重要的是勤奋和严谨治学的精神以及对学生的认真负责,老师的谆谆教诲使我受益匪浅,在此向两位老师表示衷心的感谢并致以崇高的敬意!感谢家人给予我学业上和生活上的支持与照顾。同时感谢给予我帮助的各位老师、同学以及朋友们!
- 17 -
第六部分
参考文献 [1] 蒋廷彪,刘电霆,高富强,方华.单片机原理及应用.出版社:重庆大学出版社.出版时间:2005 年 1 月第 2 次印刷 [2] 8051 实验指导书电子电气综合实训系统.出版社:北京精仪达盛科技有限公司 [3] 徐爱钧.智能化测量控制仪表原理与设计(第二版)[M].北京:北京航空航天大学出版 社,2004 [4] 吴金戌,沈庆阳,郭庭吉.8051 单片机实践与应用[M].北京:清华大学出版社,2002 [5] 张国勋.缩短 ICL7135A/D 采样程序时间的一种方法[J].电子技术应用.1993.第一期 [6] 高峰.单片微型计算机与接口技术[M].北京科学出版社,2003. [7] 刘伟,赵俊逸,黄勇.一种基予 C8051F 单片机的 SOC 型数据采录器的设计与实现 [8]《新型 AT89S52 系列单片机及其应用》
孙育才
北京:清华大学出版社
2005-5 [9]《MCS-51 系列单片机系统及其应用》
蔡美琴
高等教育出版 [10]《过程控制与仪表》
陈乐
中国计量学院出版社,2007-3
- 18 -
附录 1 源程序
ORG 0000H
SJMP MAIN
ORG 0003H
LJMP PINT0
MAIN:MOV 50H,#19H
MOV 54H,#78H
MOV DPTR,#7FF8H
MOV 51H,DPH
MOV 52H,DPL
MOV R0,#04H
MOV 53H,#00H
MOV R7,#00H
SETB EA
SETB IT0
SETB EX0
L4: MOV R1,#00H
;R1 存放十六进制转换成十进制后的低两位
MOV R2,#00H
;R2 存放十六进制转换成十进制后的高两位
MOV R3,#0FFH
;循环显示十进制数
MOV R4,#00H
;存放 A/D 转换后的十六进制数
MOV R5,#00H
;存放 0.5 相加后的数
MOVX @DPTR,A
;开始 A/D 转换
LCALL DELAY
;调用延时大于 A/D 转换的时间
MOVX A,@DPTR
;取 A/D 转换后的十六进制数
INC DPTR
;A/D 转换芯片的地址加一
PUSH DPL
;压入堆栈
PUSH DPH
DEC R0
;4 路转换的次数减一
JZ SB2
;判断是否是 0V
MOV R4,A
L1:MOV A,R1
;进行十六进制到十进制的调整
ADD A,50H
;每次加 19
DA A
- 19 -
MOV R1,A
JC L2
;如果溢出则跳转到 L2
MOV A,R5
;进行 0.5V 相加
ADD A,54H
DA A
MOV R5,A
JC
L3
;如果溢出则跳转到 L3
SB1:DJNZ R4,L1
;判断十六进制数是否转换完成,如果没有则循环
MOV A,R5
SWAP A
ANL A,#0FH
MOV B,R1
ADD A,B
DA A
MOV R1,A
SB2:LCALL DISP
LCALL DJW
DJNZ R3,SB2
POP DPH
POP DPL
MOV A,53H
INC A
MOV 53H,A
CJNE R0,#00H,L4
LJMP MAIN
L2: CLR C
MOV A,R2
ADD A,#01H
DA A
MOV R2,A
LJMP SB1
L3: CLR C
;0.5V 相加溢出后进位
MOV A,R1
- 20 -
ADD A,#01H
DA A
MOV R1,A
LJMP SB1
DISP:MOV A,R1
;显示电压子程序
SWAP A
ANL A,#0FH
MOV DPTR,#TAB1
MOVC A,@A+DPTR
CLR P3.0
MOV P1,A
LCALL DELAY
SETB P3.0
MOV A,R2
ANL A,#0FH
MOV DPTR,#TAB1
MOVC A,@A+DPTR
CLR
P3.1
MOV P1,A
LCALL DELAY
SETB P3.1
MOV A,R2
SWAP A
ANL A,#0FH
MOV DPTR,#TAB2
MOVC A,@A+DPTR
CLR P3.4
MOV P1,A
LCALL DELAY
SETB P3.4
RET
DJW:MOV A,53H
;显示第几路转换电压子程序
MOV DPTR,#TAB1
MOVC A,@A+DPTR
- 21 -
CLR P3.5
MOV P1,A
LCALL DELAY
SETB P3.5
RET INTV: PUSH ACC
;只显示其中一路中断
PUSH 53H
MOV 53H,#00H CX2: MOV R1,#00H
MOV R2,#00H
MOV R3,#0FFH
MOV R4,#00H
MOV DPH,51H
MOV DPL,52H
MOVX @DPTR,A
LCALL DELAY
MOVX A,@DPTR
MOV R4,A
JZ SB22
L11:
MOV A,R1
ADD A,50H
DA A
MOV R1,A
JC L22
MOV A,R5
;进行 0.5V 相加
ADD A,54H
DA A
MOV R5,A
JC
L33
SB11:DJNZ R4,L11
MOV A,R5
SWAP A
ANL A,#0FH
MOV B,R1
- 22 -
ADD A,B
DA A
MOV R1,A
SB22:LCALL DISP
LCALL DJW
JNB P3.3,EXIT
DJNZ R3,SB22
JNB P3.2,CX1
LJMP CX2
L22:CLR C
MOV A,R2
ADD A,#01H
DA A
MOV R2,A
LJMP SB11
L33:CLR C
MOV A,R1
ADD A,#01H
DA A
MOV R1,A
LJMP SB11
CX1:INC R7
MOV A,53H
INC A
MOV 53H,A
MOV DPH,51H
MOV DPL,52H
INC DPTR
MOV 51H,DPH
MOV 52H,DPL
CJNE R7,#04H,CX2
MOV R7,#00H
MOV 53H,#01H
MOV DPTR,#7FF8H
- 23 -
原理电路
IN3IN2IN1IN0P0P1P2p3WRRDRDP3P2P1P0IN0IN1IN2IN3AD1AD2AD3ALEAD1AD2AD3ALEWRXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52NET=p5D03Q02D14Q15D27Q26D38Q39D413Q412D514Q515D617Q616D718Q719OE1LE11U274LS373OUT121ADD B24ADD A25ADD C23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START6OUT58EOC7OE9CLOCK10OUT220OUT714OUT615OUT817OUT418OUT319IN228IN127IN026ALE22U3ADC0808231U4:A74LS02564U4:B74LS02+5+88.8Volts+88.8Volts+88.8Volts+88.8Volts+5循环单步X1C233PC310uR110KC422u67%RV11k23%RV21k28%RV31k87%RV41kU3(CLOCK)
相关热词搜索: 电压表 毕业设计 单片机