前 言
随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数电路,这就很容易将
数字电压表(DigitalVoltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。本章重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力理。
本设计AT89C51单片机的一种电压测量电路,该电路采用ADC0808本文介绍一种基于A/D转换电路,测量范围直流 0~5V 的4路输入电压值,并在四位LED数码管上显示或单路选择显示。测量最小分辨率为0.019V,测量误差约为正负0.02V。
但由于本人的水平有限,在实习报告中难免会有疏漏和不足之处,恳请老师们批评指正。
计算机技术与测量控制技术结合,组成智能化测量控制系统。
1
辽宁石油化工大学实习设计用纸
1仿真软件介绍
1.1 MATLAB软件
1.1.1 MATLAB软件概述
应用MATLAB的Simulink仿真实验方法可以建立仿真的实验环境。直接应用MATLAB工具箱中的测量仪器或构建满足工作需要的测量仪器,既能提高仿真实验工作的效率,又使仿真实验丰富多彩。本章介绍应用Simulink构建和使用测量仪器的方法。
1.1.2 电压测量-正弦波示波器
用计算机仿真的示波器应用的是数字技术,可以观测单次现象,正确设置参数后,可以保持结束时的波形,如图1-1所示,为正玄波仿真图。
图1-1 正弦波仿真框图
2
辽宁石油化工大学实习设计用纸
正弦波的示波显示如图1-2所示
图1-2 正弦波示波显示
1.1.3 数字式电压表
数字式电压表取自LED(自发光)二极管模块 如图1-3所示
图1-3数字式电压表仿真框图
1.1.4 指针式电压表
指针式仪表将输入的量值用图形化的指针与相应的刻度表示出来,并通过参数设置对话框来设置仪表的外观、量程、刻度、颜色及字型等。如图1-4所示
3
辽宁石油化工大学实习设计用纸
图1-4指针式电压表
1.1.5多踪示波器(Scope)的仿真
示波器显示七踪信号的仿真,如图1-5所示,为多踪示波器仿真框图。
图1-5多踪示波器仿真框图
4
辽宁石油化工大学实习设计用纸
图1-6为多踪示波器仿真显示图
图1-6多踪示波器仿真显示图
1.2 Keil软件
1.2.1 Keil软件概述
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 1.2.2 Keil C51软件系统
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,
5
辽宁石油化工大学实习设计用纸
容易理解。在开发大型软件时更能体现高级语言的优势。
1.2.3 Keil C51单片机软件开发的整体结构
C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。 1.2.4 Keil C51软件的优点
(1)Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。
(2)与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。 1.2.5使用独立的Keil仿真器的注意事项
(1)仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。
(2)仿真器上的复位按钮只复位仿真芯片,不复位目标系统。
(3)仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。
6
辽宁石油化工大学实习设计用纸
1.3 PROTUES软件
1.3.1 Proteus软件概述
Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。 1.3.2 功能特点
Proteus软件具有其它EDA工具软件(例:multisim)的功能。 (1)原理布图
(2)PCB自动或人工布线 (3)SPICE电路仿真 革命性的特点 1.互动的电路仿真
用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。 2.仿真处理器及其外围电路
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于
7
辽宁石油化工大学实习设计用纸
原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,它建立了完备的电子设计开发环境。 1.3.3 Proteus 的工作过程
运行proteus 的ISIS 程序后,进入该仿真软件的主界面,如图1-1所示。在工作前,要设置view 菜单下的捕捉对齐和system下的颜色、图形界面大小等项目。通过工具栏中的p(从库中选择元件命令)命令,在pick devices 窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序;在source 菜单的Definecode generation tools 菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source 菜单的Add/removesource files 命令下,加入单片机硬件电路的对应程序;通过debug 菜单的相应命令仿真程序和电路的运行情况。
图1-7仿真软件的主界面
8
辽宁石油化工大学实习设计用纸
1.3.4 Protues电路仿真
在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。
PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。
它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。并且由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台 。
随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中PROTEUS也能茯得愈来愈广泛的应用。
9
辽宁石油化工大学实习设计用纸
2设计原理及要求
本设计是利用单片机AT89C51与ADC0808设计一个数字电压表,测量0-5V之间的直流电压值,四位数码显示,但要求使用的元器件数目最少。
2.1数字电压表的实现原理
ADC0808是8位的A/D转换器。当输入电压为5.00V时,输出的数据值为255(0FFH),因此最大分辨率为0.0196(5/255)。ADC0808具有8路模拟量输入端口,通过3位地址输入端能从8路中选择一路进行转换。如每隔一段时间依次轮流改变3位地址输入端的地址,就能依次对8 路输入电压进行测量。LED数码管显示采用软件译码动态显示。通过按键选择可对8路循环显示,也可单路显示,单路显示可通过按键选择显示的通道数。
2.2数字电压表的设计要求
可以测量0~5V范围内的3路直流电压值。在4位LED数码管上轮流显示各路电压值或单路选择显示,其中3位LED数码管显示电压值,显示范围为0.00V~5.00V,1位LED数码管显示路数,3路分别为0-2。
10
辽宁石油化工大学实习设计用纸
3软件仿真电路设计
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所示,其为仿真设计原理图。
C2U1X119CRYSTAL18XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617D0D1D2D3D4D5D6D7+88.8Volts
GNDXTAL230uFR110kRV1U226272812345252423221216IN0IN1IN2IN3IN4IN5IN6IN7ADD AADD BADD CALEVREF(+)VREF(-)ADC0808CLOCKSTARTEOCOUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT81067212019188151417EOCD7D6D5D4D3D2D1D09RSTC3VCC10uF293031PSENALEEAS0S1S2S3STOEEOC1kC0C1C2C3C4C5C6C712345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51OE9OEDCLKS24U3:AQ5
C0C1C2C3C4C5C6C7S0S1S2S33
1RQ674LS74NET=S0图3-1 仿真设计原理图
11
辽宁石油化工大学实习设计用纸
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 图3-2 AT89C51芯片模型 的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图3-2所示。
12
辽宁石油化工大学实习设计用纸
3.4.2主要功能特性
(1) 4K字节可编程闪烁存储器。
(2) 32个双向I/O口;128×8位内部RAM 。
(3) 2个16位可编程定时/计数器中断,时钟频率0-24MHz。 (4) 可编程串行通道。 (5) 5个中断源。 (6) 2个读写中断口线。 (7) 低功耗的闲置和掉电模式。 (8) 片内振荡器和时钟电路。 3.4.3 AT89C51的引脚介绍
89C51单片机多采用40只引脚的双列直插封装(DIP)方式,下面分别简单介绍。 (1)电源引脚
电源引脚接入单片机的工作电源。 Vcc(40引脚):+5V电源。 GND(20引脚):接地。 (2)时钟引脚
XTAL1(19引脚):片内振荡器反相放大器和时钟发生器电路的输入端。 XTAL2(20引脚):片内振荡器反相放大器的输出端。
图3-3 电源接入方式
13
辽宁石油化工大学实习设计用纸
(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位地址的外部数据存储器时其引脚上的内容在此期间不会改变。
14
辽宁石油化工大学实习设计用纸
(10)Pin10-Pin17为P3.0-P3.7输入输出脚,称为P3口。
P3口是一个带内部上拉电阻的8位双向I/O口,P2口能驱动4个LSTTL负载,这8个引脚还用于专门的第二功能。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接控制信息。
3.5 ADC0808的引脚及功能介绍
3.5.1芯片概述
ADC0808是一种典型的A/D转换器。它是由8位A/D转换器,一个8路模拟量开关,8位模拟量地址锁存译码器和一个三态数据输出锁存器组成; +5V单电源供电,转化 时间在100us左右;内部没有时钟电路,故需外部提供时钟信号。芯片模型如图3-4所示。
图3-4 ADC0808芯片模型
3.5.2 引脚简介
(1) IN0~IN7:8路模拟量输入端。 (2) D0~D7:8位数字量输出端口。 (3) START:A/D转换启动信号输入端。 (4) ALE:地址锁存允许信号,高电平有效。 (5) EOC:输出允许控制信号,高电平有效。 (6) OE: 输出允许控制信号,高电平有效。 (7) CLK:时钟信号输入端。
(8)A、B、C:转换通道地址,控制8路模拟通道的切换。A、B、C分别与地址线或数据线相连,三位编码对应8个通道地址端口,A、B、C=000~111分别对应
15
辽宁石油化工大学实习设计用纸
IN0~IN7通道的地址端口。 3.5.3 ADC0808的转换原理
ADC 0808 采用逐次比较的方法完成A/D转换,由单一的+5V电源供电。片内带有锁存功能的8路选1的模拟开关,由A、B、C的编码来决定所选的通道。ADC0809完成一次转换需100μs左右,它具有输出TTL三态锁存缓冲器,可直接连接到AT89C51的数据总线上。通过适当的外接电路,ADC0808可对0~5V的模拟信号进行转换。 3.6 LED数码管的控制显示 3.6.1 LED数码管的模型 LED数码管模型如图3-6所示。
图3-5 LED数码管模型
C0C1C2C3C4C5C6C7S0S1S2S3P1.7AT89C51P3.7/RD
16
辽宁石油化工大学实习设计用纸
4系统软件程序的设计
多路数字电压表系统软件程序主要有主程序、A/D转换子程序和中断显示程序组成。
4.1 主程序
主程序包含初始化部分、调用A/D转换子程序和相应外部0中断显示电压数值程序,初始化部分包含存放通道的缓冲区初始化和显示缓冲区初始化。另外,对于单路显示和循环显示,系统设置了一个标志位00H控制,初始化时00H位设置为0,默认为循环显示,当它为1时改变为单路显示控制,00H位通过单路、循环按键控制。流程图如图4-1所示。
图4-1主程序流程图
显示子程序 初始化 开始 A/D转换子程序 4.2 A/D转换子程序
A/D转换子程序用于对ADC0808的4路输入模拟电压进行A/D转换,并将转换的数值存入4个相应的存储单元中,A/D转换子程序每隔一定时间调用一次,即隔一段时间对输入电压采样一次,如图4-2所示。
4.2 A/D转换子程序
17
辽宁石油化工大学实习设计用纸
A/D转换子程序用于对ADC0808的4路输入模拟电压进行A/D转换,并将转换的数值存入4个相应的存储单元中,A/D转换子程序每隔一定时间调用一次,即隔一段时间对输入电压采样一次,如图4-2所示。
Y 判断是否为0 4路转换次数减一 入栈保护 数据指针加一 存转换后的十六进制数 调用延时 开始A/D转换
N 进行十六进制调整
显示电压值 图4-2转换子程序流程图
18
辽宁石油化工大学实习设计用纸
4.3 中断显示程序
设计中采用中断的方式来读取转换完成的数据能节省CPU的资源
当系统设置好后,一旦数据转换完成,便会进入外部中断0,然后在中断中读取转换的数值,处理数据并送数码管显示输出。
LED 数码管采用软件译码动态扫描的方式。在中断程序中包含多路循环显示程序和单路显示程序,多路循环显示程序把4个存储单元的数值依次取出送到4个数码管上显示,每一路显示一秒。单路显示程序只对当前选中的一路数据进行显示。每路数据显示时需经过转换变成十进制BCD码,放于4个数码管显示缓冲区中。单路或多路循环显示通过标志位00H控制。在显示控制程序中加入了对单路或多路循环按键的判断。
图4-3中断显示程序流程图
19
数字量送P1口 取段码地址 Y P3.1=1? N 调用循环显示程序 Y 显示的是第4路 N 重新调用显示程序 调用单路显示程序 辽宁石油化工大学实习设计用纸
5数字电压表仿真
5.1 调试与测试
本设计应用Proteus6及KEIL51软件,首先根据自己设计的电路图用Proteus6软件画出电路模型,关于这个软件的使用通过查一些资料和自己的摸索学习;然后我们用KEIL51软件对所编写的程序进行编译、链接,如果没有错误和警告便可生成程序的hex文件,将此文件加到电路图上使软硬件结合运行,最后进行端口电压的对比测试,测试的第一路对比见图4-1中标准电压值采用Proteus6软件中的模拟电压表测得。 +4.99VoltsS0S1S2S3C0C1C2C3C4C5C6C7
图5-1数字电压表与标准电压表的比较
从图中可以看出,简易数字电压表与“标准”数字电压表测得的绝对误差均在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。这可以通过
20
辽宁石油化工大学实习设计用纸
校正0808的基准电压来解决,因为该电压表设计时直接用7805的供电电源作为基准电压,电压可能有偏差。另外可以用软件编程来校正测量值。
ADC0808的直流输入阻抗为1M欧姆,能满足一般的电压测试需要。另外,经测试ADC0808可直接在2MHz的频率下工作,这样可省去分频率14024。
5.3数字电压表仿真图
U1X1C230uF19CRYSTAL18XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617D0D1D2D3D4D5D6D7+4.99VoltsXTAL2R110kRV1U226272812345252423221216IN0IN1IN2IN3IN4IN5IN6IN7ADD AADD BADD CALEVREF(+)VREF(-)ADC0808CLOCKSTARTEOCOUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT81067212019188151417EOCD7D6D5D4D3D2D1D09RSTC3GNDVCC10uF293031PSENALEEAS0S1S2S3STOEEOC1kC0C1C2C3C4C5C6C712345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51OE9OEDCLKS234U3:AQ51RQ6C0C1C2C3C4C5C6C774LS74NET=S0S0S1S2S3 图5-2数字电压表仿真图
5.4仿真源程序
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
21
辽宁石油化工大学实习设计用纸
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 ; MOVX A,@DPTR ; INC DPTR ;A/D PUSH DPL ; PUSH DPH
DEC R0 ;4 JZ SB2 ; MOV R4,A
L1:MOV A,R1 ; ADD A,50H ; DA A
MOV R1,A
JC L2 ; MOV A,R5 ; ADD A,54H DA A
MOV R5,A
JC 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
调用延时大于A/D转换的时间 取A/D转换后的十六进制数 转换芯片的地址加一 压入堆栈 路转换的次数减一 判断是否是0V 进行十六进制到十进制的调整 每次加19 如果溢出则跳转到L2 进行0.5V相加 如果溢出则跳转到L3
判断十六进制数是否转换完成,如果没有则循环 22
辽宁石油化工大学实习设计用纸
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 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
显示电压子程序 显示第几路转换电压子程序 23
辽宁石油化工大学实习设计用纸
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 ; 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 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
进行0.5V相加 24
辽宁石油化工大学实习设计用纸
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 MOV 51H,DPH MOV 52H,DPL LJMP CX2 EXIT:POP 53H POP ACC RETI
DELAY:MOV R6,#1H ; D1:MOV R5,#50H D2:NOP NOP
DJNZ R5,D2
DJNZ R6,D1
RET
TAB1:DB 3FH,06H,5BH,4FH,66H ; DB 6DH,7DH,07H,7FH,6FH
TAB2:DB 0BFH,86H,0DBH,0CFH,0E6H ; DB 0EDH,0FDH,87H,0FFH,0EFH END
25
延时子程序
码表 小数点的段码表 辽宁石油化工大学实习设计用纸
6总 结
经过几周的努力终于设计成功,LED的显示结果和直接用数字电压表测试模拟量输入所得结果几乎一致,误差完全在合理的范围之内。由于仪器误差,LED显示最大值只能是4.9V,离标准最大值5.0V已经不远,达到预期目的,设计成功。
本设计参考了89C51与ADC0809转换的接口连线,设计出电路图的连线,从并中理解了许多基本的知识和接线方法,在程序的设计与电压表调试的过程中中遇到了很多的问题,刚开始时四个数码管根本不显示,后来发现用的是共阳极的数码管,而设计是共阴极的,更换后数码管终于显示,但问题又出现了,单路显示和循环显示的开关不能控制电路的单路显示和循环显示,经过仔细地检查电路和修改程序,采用中断的方法,产生一次外部中断0,程序转移到单路显示,按一次单路显示开关,地址加一,转换的模拟通道相应的加一,如果按下循环按键就返回循环显示的程序,功夫不负有心人,最后终于调试成功。
在此再次向带领我们这次课程设计的阚老师说声:谢谢!
26
辽宁石油化工大学实习设计用纸
参考文献
【1】周航慈等编著,智能仪器原理与设计.-北京:北京航空航天大学出版社,2005.3 【2】8051实验指导书电子电气综合实训系统.出版社:北京精仪达盛科技有限公司 【3】李昌禧.智能化仪器仪表设计.武汉:华中理工大学出版社,1999
【4】吴金戌,沈庆阳,郭庭吉.8051单片机实践与应用[M].北京:清华大学出版社,2002 【5】张国勋.缩短ICL7135A/D采样程序时间的一种方法[J].电子技术应用.1993.第一期 【6】 高峰.单片微型计算机与接口技术[M].北京科学出版社,2003
【7】张靖武,周灵彬.单片机原理、应用与PROTEUS仿真。-北京:北京电子工业出版社,2008.8
27
因篇幅问题不能全部显示,请点此查看更多更全内容