1.引言

本设计待测的输入电压为8路,电压范围为0~5V,使用目前广泛使用的AT89S52来做控制系统,用ADC0809来进行模拟电压的采集及模数转换,实现采集8路数据,并将结果在四位一体数码管上进行滚动显示或单独显示的功能,测量的最小分辨率为0.019V.

2 硬件设计

2 . 1 系统构成

该系统主要包括几大模块:数据采集模块、A/D转换模块、控制模块、显示模块、按键模块等。采用AT89S52作为控制模块,A/DC0 8 0 9作为A/D转换模块的核心,ADC0809本身具有8路模拟量输入端口,通过C、B、A,3位地址输入端,能从8路中选择一路进行转换。如每隔一段时间依次轮流改变3位地址输入端的地址,就能依次对8路输入电压进行测量。LED数码管的显示采用软件译码动态显示,通过按键模块的操作可以选择8路循环显示,也可以选择某条单路显示。

2 . 2 数据采集电路

数据采集电路是系统的主要组成部分,ADC0 8 09具有8路模拟量输入通道IN0~IN7,通过3位地址输入端C、B、A(引脚23~25)进行选择。引脚22为地址锁存控制端ALE,当输入为高电平时,C、B、A引脚输入的地址锁存于ADC0809内部锁存器中,经内部译码电路译码选中相应的模拟通道。引脚6为启动转换控制端START,当输入一个2 μ s宽的高电平脉冲时,就启动ADC0809开始对输入通道的模拟量进行转换。引脚7为A/D转换器,当开始转换时,EOC信号为低电平,经过一段时间,转换结束,转换结束信号EOC输出高电平,转换结果存放于ADC0809内部的输出数据寄存器中。引脚9脚为A/D转换数据输出允许控制端OE,当OE为高电平时,存放于输出数据锁存器中的数据通过ADC0809的数据线D0~D7输出。引脚10为ADC0809的时钟信号输入端CLOCK.在连接时,ADC0809的数据线D0~ D7与AT89S52的P1口相连接,ADC0809的地址引脚、地址锁存端ALE、启动信号START、数据输出允许控制端OE分别与AT89S51的P3口相连接,转换结束信号EOC与AT89S52的P3.2相连接。时钟信号输入端CLOCK信号,由单片机的地址锁存信号ALE得到,采集电路如图1所示。

图1 数据采集电路

3 软件设计

3 . 1 主程序

主程序包含初始化部分,调用A/D转换子程序和调用显示子程序,如图2所示。

图2 主程序流程图

初始化部分包含存通道数据缓冲区初始化和显示缓冲区初始化。另外,对于单路显示和循环显示,系统设置了一个初始标志位。

初始化时标志位设置为0,默认为循环显示,当它为1时,则单路显示,标志位通过外部按键控制。

3 . 2 数据处理子程序

ADC0809转换之后输出的结果是8位二进制数。由公式(1)可知,当ADC0809输出为(111111111)时,输入电压值VI=5.00V;当ADC0809输出为(00000000)时,输入电压值为VI=0.00V;当ADC0809输出为(10000000)时,输入电压值VI=2.50V.由于单片机进行数学运算时结果只取整数部分,因此当输出为(10000000)时计算出的电压值VI=2.00V,很不准确。为了提高精确度,必须把小数部分保留,具体方法是:如果小数点后保留两位,在运算的时候分子乘以100,保留三位就乘以1000.本设计是在小数点后保留两位,运算方式如公式(2)。

VI=Dout /255×5 (1)

VI=Dout/255×5×100=Dout×100/51 (2)

由式(2)可知当ADC0809输出为(10000000)时,单片机运算结果为250.然后由单片机将250除以10得到商为25,余数为0,再将25除以10得到商为2,余数为5.由此得到较为精确的数值。

4 结语

本设计是基于ADC0809设计的电压检测装置。采用AT89S52单片机进行数据控制、处理,结构简单,元件较少,成本较低,软件采用C语言实现,程序简单可读写性强,效率高。能够实现八路待测电压测量,还能够自由选择要测量的通道,与传统的电路相比,具有方便操作、处理速度快、稳定性高、性价比高的优点,具有一定的使用价值。

单路电压表c语言编程,基于ADC0809和AT89S52单片机的数字电压表的设计相关推荐

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

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

  2. 单路电压表c语言编程,用AT89C51单片机制作的数字电压表

    此数字电压表,利用A/D转换原理将被测模拟量转换成数字量,并通过控制系统用数字方式显示测量结果.本设计采用AT89C51单片机,ADC0809进行模/数转换,能够测量8路0-5V的输入电压值,可用四位 ...

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

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

  4. r语言 悲观剪枝_《R语言编程—基于tidyverse》新书信息汇总

    我之前预告过的 R 语言新书,起名为<R语言编程-基于tidyverse>,本书的目的是为了在国内推广 R 语言和 R 语言最新技术,电子版将始终跟踪最新并免费分享.本书非常适合新手 R ...

  5. 8051单片机c语言编程模板,完美的8051单片机C语言编程模板.doc

    完美的8051单片机C语言编程模板.doc <8051单片机C语言编程模板> [程序开始处的程序说明] /***************************************** ...

  6. 四路抢答器c语言编程,基于单片机的四路抢答器设计

    基于单片机的四路抢答器设计 课程设计(论文) 题 目 名 称 多路数字抢答器设计 课 程 名 称 单片机原理及其应用 学 生 姓 名 学 号 系 .专 业 指 导 教 师 2013年 6月 24日 摘 ...

  7. 基于DSP的数字振荡器C语言编程,基于DSP的数字振荡器的设计与实现.pdf

    1 基于 DSP 的数字振荡器的设计与实现 基于 DSP 的数字振荡器的设计与实现 黄福莹 陈华 徐金隆 广西大学计算机与电子信息学院 南宁 530004 摘要 摘要 本文阐述了一种基于 DSP 芯片 ...

  8. GSM/GPRS模块 AT指令集C语言编程——基于有方M660+和MSP430单片机

    GSM/GPRS芯片是手机中负责收发短信.拨打电话以及访问GPRS网络的核心器件.有方M660+为深圳有方公司生产的一款超小封装的GSM/GPRS工业无线模块,可以提供高品质的语音.短信.数据业务等功 ...

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

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

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

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

最新文章

  1. 排序算法7---快速排序算法
  2. 程序员千万不要选全栈开发
  3. R3抹掉加载的DLL
  4. 工作日志——k8s pvpvc
  5. 华科硕士,一个优秀的数据分析师
  6. Unity 白猫操作小实例
  7. SAP Commerce Cloud Product Review 的添加逻辑
  8. java处理url中的特殊字符%等
  9. 递归;杨辉三角;正则表达式
  10. IPLAT62--新增
  11. Web API-基本认知
  12. ITU-T G.1081 IPTV性能监测点 (Performance monitoring points for IPTV)
  13. AlphaGo算法框架解读
  14. php cpu飙高,PHP-FPM进程CPU 飙高的原因及解决方案
  15. python stdin.write_python – 将大量数据写入stdin
  16. ssm毕设项目焦虑自测与交流平台k43cf(java+VUE+Mybatis+Maven+Mysql+sprnig)
  17. 学习编程是否真的有用?
  18. 图像之超简单方式实现微信头像功能
  19. PHP 代码规范风格
  20. (模电3)整流二极管和开关二极管

热门文章

  1. Acer E1-471G DMI信息修改案例(硬刷)
  2. 【Echarts】堆积柱状图
  3. USB TYPE A B C 引脚定义
  4. 经典枚举——百钱百鸡问题
  5. SEO兵书:搜索引擎优化手册
  6. Au 音频效果参考:调制
  7. STM32F103C8T6之SG90舵机控制
  8. 阵处理与波束形成学习心得(二)
  9. SPSS神经网络心得(一)
  10. 大数据技术在银行业中的应用场景,主要有哪些?