基于Proteus的数字电压表设计 下载本文

内容发布更新时间 : 2024/5/22 0:39:47星期一 下面是文章的全部内容请认真阅读。

2.3复位电路

复位电路如下图2-2所示,按键没有按下时,RST端接电容下极板是低电平,按键按下时,RST端接在电阻上端变为高电平,达到复位的目的。

图2-2复位电路图

2.4数据采集模块

通过ADC0809采集数据,输入到单片机内,如图2-3所示:

图2-3数据采集模块电路图

2.5显示电路

通过2-4位数码管来显示,如图5所示:

图2-4显示电路图

2

电路总原理框图设计

时钟电路显示电路单片机AT89C51数据采集复位电路模拟信号

4 总体方案设计与流程

4.1主程序流程图

主程序流程图如图3-1所示:

开始初始化调用A/D转化程序调用数据处理程序调用显示程序图4-1主程序流程图

4.2显示子程序流程图

显示子程序流程图如图3-2所示:

开始初始化,P0置高,P2置低P0到A输出显示P2=P2+1P0到A输出显示P2=P2+1P0到A输出显示置位P0.7点亮小数点P2=P2+1P0到A输出显示结束

图4-2显示子程序流程图

4.3 A/D转换子程序流程图

A/D转换子程序流程图,如图3-3所示:

开始初始化启动A/D转化N P3.1=1?YP3.0置位,允许输出。将转化的数据保存结束

图4-3A/D转换子程序流程图

4.4数据处理子程序流程图

数据处理子程序流程图,如图4-4所示:

开始从34H中取数据,乘以19.5mv,得到的数据BCD麻化,将数据存入A转化双字节十六进制整数NBCD码带进位自身相加,十进制调整Y R2=0?数据输入显示器结束

图4-4数据处理子程序流程图

4.5 源代码

LED1 EQU 30H ;初始化定义 LED2 EQU 31H

LED3 EQU 32H ;存放三个数码管的段码 ADC EQU 35H ;存放转换后的数据 ST BIT P3.2 OE BIT P3.0

EOC BIT P3.1 ;定义ADC0809的功能控制引脚 ORG 0000H

LJMP MAIN ;ORG 0030H

MAIN: MOV LED1,#00H MOV LED2,#00H

MOV LED3,#00H ; CLR P3.4 SETB P3.5

CLR P3.6 ;WAIT: CLR ST SETB ST

CLR ST ; JNB EOC,$ ; SETB OE ; MOV ADC,P1 ; CLR OE ; MOV A,ADC ; MOV B,#50 ; DIV AB

MOV LED1,A ; MOV A,B ; MOV B,#5 ; DIV AB

MOV LED2,A ; MOV LED3,B ; LCALL DISP ; AJMP WAIT

DISP:MOV R1,#LED1 ; CJNE @R1,#5,GO ;@R1=5V? MOV LED2,#0H ; MOV LED3,#0H ; GO:MOV R2,#3 ; MOV R3,#0FDH ;DISP1:MOV P2,#0FFH ; MOV A,@R1 ; MOV DPTR,#TAB ; MOVC A,@A+DPTR ;跳转到主程序执行 寄存器初始化 选择ADC0809的通道2 在脉冲下降沿启动转换 等待转换结束 允许输出信号 暂存A/D转换结果 关闭输出

将转换结果放入A中,准备个位数据转换 变换个位调整值50送B 将变换后的个位值送显示缓冲区LED1

将变换结果的余数放入A中,准备十分位变换变换十分位调整值5送B 将变换后的十分位值送LED2 最后的余数作百分位值送LED3 调用显示程序 显示子程序

是往下执行,否,则到GO 是5V,即最高值,将小数的十分位清零 将小数的百分位清零

显示位数赋初值,用到3位数码管 扫描初值送R3

关闭显示,目的防止乱码 显示值送A

送表首地址给DPTR 查表取段码