此数字电压表,利用A/D转换原理将被测模拟量转换成数字量,并通过控制系统用数字方式显示测量结果。本设计采用AT89C51单片机,ADC0809进行模/数转换,能够测量8路0~5V的输入电压值,可用四位LED数码管轮流或单路显示测量结果。其最小分辨率约为0.019V,测量误差小于0.02V。

一、系统简介

本系统分为主控电路、显示电路、A/D转换电路、键盘控制电路、电源电路及复位电路等,系统框图如右图所示。

二、硬件电路设计

本系统采用AT89C51单片机作为控制核心,对8路模拟电压信号经8位A/D转换芯片ADC0809转换成数字信号后,送单片机进行处理,然后通过数码管显示其电压值。电路原理见上图。

ADC0809有8路模拟输入口IN0~IN7,通过地址线(23)~(25)脚选择其中一路进行A/D转换。

(22)脚为地址锁存控制,高电平有效。⑥脚为测试控制,当输入一个2μs正脉冲时,启动A/D转换。⑦脚为A/D转换结束标志,当A/D转换结束时,⑦脚输出高电平。⑨脚为A/D转换数据输出允许控制端,当⑨脚为高电平时,A/D转换数据从MSB2-1~MSB2-8输出。⑩脚为时钟输入端,利用单片机ALE脚的六分频再通过74LS74构成的四分频得到500kHz时钟。

AT89C51的P2、P0.4~P0.7口作为数码管显示控制,采用动态显示方式显示测量的数字电压值和通道号。P0.0口用作单路显示/循环显示转换按钮,P0.1口用作单路显示时通道选择按钮。

P1口作A/D转换数据输入,P3.0-P3.6口用作ADC0809的控制。

三、系统软件设计

本系统软件由显示控制子程序、显示数据处理子程序、8路电压采集子程序、键盘处理子程序等组成,采用汇编语言编程。

1.主程序流程如左图所示。

2.显示控制子程序

测量的A/D转换数据放在RAM70H~77H中,测量数据转换成的BCD码放在7AH~7DH中。

20H.0为显示方式标志位,21H存放通道标志数。R4用作8路循环控制,R0用作显示通道原始数据地址指针,R1为处理后的四位显示数据地址指针。程序通过测试20H.0来确定采用8路循环显示还是单通道显示。循环显示时每通道显示约2s。数字电压值是通过查表方式采用动态扫描法实现的。其程序流程如中图所示。

3.键盘处理子程序

本设计采用2个功能键和1个硬复位键。2个功能键接在P0.0与P0.1口上。对功能键的处理采用测试端口并设置标志的方法,使用了延时去抖处理。键盘按下时,还可以显示通道号码,松开后才显示测量电压值。循环显示时,通道号显示为“0”;单通道显示号码为0~8。

4.八路电压采集子程序

单片机为ADC0809提供所需的控制时序,采集到的八路电压数据分别存放在单片机RAM70H~77H中。程序流程如下图。

5.显示数据处理子程序

放在AT89C5170H~77H中的对应电压值数据必须转换成相应的BCD码后才能送数码管显示。由于本系统中ADC0809的参考电压VREF=VCC,所以最大测量电压5V所对应的二进制数就是FFH,而每伏电压对应的二进制数为33H。其处理方法是,用转换后的数据除以33H,得到的商即为电压值的个位数。余数×5后再除以33H得到的商×2即为电压值的十分位数。所余之数×2后再进行一次×5÷33H得到的商×2即为电压值的百分位数。同理可得到千分位数。最后进行四舍五入处理,若千分位处理后的余数大于19H即千分位加1。四舍五入处理后需要对各位进行进位调整。调整后的个位、十分位、百分位、千分位分别存入7AH~7DH中。

单路电压表c语言编程,用AT89C51单片机制作的数字电压表相关推荐

  1. 单路电压表c语言编程,单片机数字电压表的设计

    第1章 绪论1.1系统的开发背景 在电量的测量中,电压.电流和频率是最基本的三个被测量,其中电压量的测量最为经常.而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少 ...

  2. 单路电压表c语言编程,单片机课程设计(直流数字电压表).pdf

    南京信息工程大学 单片机原理课程设计报告 设计题目: 直流数字电压表设计 专业班级: 测控技术与仪器 学生姓名: 倪阳 肖照飞 学生学号: 20112341905 20112341910 指导老师: ...

  3. c51的八位智力抢答器C语言编程,基于AT89C51单片机的八位智力抢答器设计.doc

    基于AT89C51单片机的八位智力抢答器设计 江 西 理 工 大 学 南 昌 校 区 毕 业 设 计(论文) 题 目:八位智力抢答器 系 :信息工程系 专 业:应用电子技术 班 级: 学 生: 学 号 ...

  4. 基于51单片机的数字电压表c语言程序,基于AT89C51单片机的直流数字电压表设计毕业论文+任务书+Proteus代码+电路图+源码...

    摘 要 数字电压表是一种结构简单.应用广泛的测量仪表,近年来越来越多地应用在电压测量场合,因此对其测量精度.可靠性和可维护性的要求也越来越高.数字电压表是也诸多数字化仪表的核心与基础,其数字化是将连续 ...

  5. AT89C51单片机制作密码锁,真的很详细了

    AT89C51单片机制作一个密码锁) 前言 所需基础 工具准备 代码截图 模块使用介绍 必学几部分 键值判断 头文件意义 typedef 和 sbit方法 键值判断case 0xeb modifyke ...

  6. 书单 | 嵌入式、C语言编程书籍

    微信搜索逆锋起笔关注后回复编程pdf 领取编程大佬们所推荐的 23 种编程资料! 来源 | 小麦大叔 偶尔有读者让我推荐关于嵌入式编程的书籍,今天就为大家推荐一些经典的"零基础入门和进阶提高 ...

  7. 信号发生器c语言编程,基于AT89C51的信号发生器的设计

    摘要:为了设计一款结构简单.性能优良的信号发生器.采用了AT89C51单片机为控制核心.在Proteus下仿真可以产生正弦波.方波.三角波.锯齿波,而且可以方便地设定输出信号的频率及幅度,得到的输出波 ...

  8. c51单片机音乐盒c语言,毕业论文-基于AT89C51单片机的音乐盒设计(C程序).doc

    精品论文 基于单片机的音乐盒设计 [摘要]本设计是一个基于AT89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒.该音乐盒主要由按键电路. ...

  9. 单片机万年历c语言程序设计,基于AT89C51单片机的多功能

    基于AT89C51单片机的多功能电子万年历的设计(附程序)(12000字) AT89C51 SCM-BASED ELCTRONIC DESIGN CALENDAR 摘要 本文介绍了基于AT89C51单 ...

最新文章

  1. 在 OpenGL ES 2.0 上实现视差贴图(Parallax Mapping)
  2. Py之skflow:skflow的简介、安装、使用方法、代码实现之详细攻略
  3. 如何使用Soft-NMS实现目标检测并提升准确率
  4. VS2005与Device通过ActiveSync连接异常的常见原因
  5. 二层交换网络_网络中的第2层交换
  6. selenium, firefox, python环境搭建指南
  7. python 多figure subplot 水平线 legend
  8. java压缩图片maven_java – 在maven构建中集成yahoo smush.it以进行图像压缩
  9. 网络工程制图论文计算机,工程制图论文.doc
  10. 声反馈(啸叫)如何避免产生和解决
  11. 利用PPPOE认证获取路由器中宽带账号密码
  12. 如何通过带坐标信息的照片生成轨迹
  13. Spotfire 使用IronPython脚本
  14. 字节跳动A/B实验背后的秘密:样本量计算
  15. Uniapp实现实时音视频的基础美颜滤镜功能
  16. 基于stm32c8t6和mpu6050的三轴云台控制
  17. STM32F103的DAC实现播放WAV音乐
  18. 深度神经网络如何训练,深度神经网络怎么用
  19. 《咏怀古迹五首·其三》.唐.杜甫
  20. 小程序开发如何租用服务器

热门文章

  1. js判断移动端,pc端,安卓,苹果浏览器的方法
  2. 伪命题:我们来谈谈校招生起薪的问题,它对你来说重要吗?
  3. Android检测是否有悬浮窗,Android 获取判断是否有悬浮窗权限的方法
  4. 【APICloud系列|7】开发一个APP完整流程及注意事项
  5. mysql组件化_MySql笔记
  6. HTML5 audio 如何实现播放多个MP3音频
  7. Html5中Canvas(画布)的使用
  8. 动态规划--图像压缩
  9. centos7.3 安装 mysql-5.7.13
  10. 题解 P5259【欧稳欧再次学车】