硬件设计、

之前讲过的几种数字电压表均是一路输入,今天讲一下多路输入的电压表,显示是采用数码管显示,ADC采用的是TI的ADC0809。
以AT89C51单片机为核心,起着控制作用。系统包括数码管显示电路、复位电路、时钟电路、模数转换电路电路。设计思路分为五个模块:复位电路、晶振电路模块、AT89C51、数码管显示电路、模数转换器电路这五个模块。

仿真图如下:



三路输出分别采用数码管轮流显示,测量精度大概在0.0.1V左右。

程序设计

#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code led[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管显示0-9的电平码
uint volt,vtime; //电压值测定值
uchar addr;//测量地址位
sbit LW1=P2^3; //对应第4个数码管
sbit LW2=P2^2; //对应第3个数码管
sbit LW3=P2^1; //对应第2个数码管
sbit LW4=P2^0; //对应第1个数码管
sbit LW5=P1^4;//指示当前显示的是第几个转换值
sbit CLK=P2^4; //时钟信号
sbit START=P2^5; //转换启动开关
sbit EOC=P2^6; //转换结束标志
sbit OE=P2^7;//定义ADC0809各脚
/**********************************************************/
//函数名:delay(uint x)
//功能:延时程序 改变测量地址
//调用函数:
//输入参数:x
//输出参数:
//说明:程序的延时时间为x乘以0.5ms 每5s改变测量地址位
/**********************************************************/
void delay(uint x)
{uchar y,z;for(y=x;y>0;y--)for(z=250;z>0;z--);//该步运行时间约为0.5msvtime++;if(vtime==1000){vtime=0;addr++;if(addr==3)     //本例子一共有3个测量输入值,轮流读取这3个值并转换显示addr=0;//以上语句实现测量地址位的改变       }
}
/**********************************************************/
//函数名:ADC()
//功能:数模转换程序
//调用函数:
//输入参数:
//输出参数:
//说明:将转换好的测定值保存在变量volt中
/**********************************************************/
void ADC()
{EA=1;//开中断//确保进入正常AD转换状态?START=0;START=1;START=0;//ad开始转换      while(EOC==0); //等待转换结束OE=1; //输出数据标志为真EA=0;//关中断volt=P3;//获取转换值保存到volt中,(P3为转换后数据)volt=volt*196;//转换值处理 (例子的满量程为5V,转换分辩率为8位即最大值是255,5/255=196mV,即1代表196mV)OE=0;//输出转换结束 (要在获取转换值之后)
}
/**********************************************************/
//函数名:display()
//功能:4位数码管显示
//调用函数:delay(uint x)
//输入参数:
//输出参数:
//说明:将处理后的电压值显示在4位数码管上
/**********************************************************/
void display()
{P0=0xff;//消隐 (相当于全部灭灯,清除上次显示效果)LW1=0;P0=~led[volt/10000]&0x7f;//带小数点1伏显示位delay(2);P0=0xff;LW1=1;LW2=0;P0=~led[(volt/1000)%10];//100毫伏显示位delay(2);P0=0xff;LW2=1; LW3=0;P0=~led[(volt/100)%10];//10毫伏显示位delay(2);P0=0xff;LW3=1;LW4=0;P0=~led[(volt/10)%10];//1毫伏显示位delay(2);P0=0xff;LW4=1;LW5=0;P0=~led[addr+1];//显示电压测量位delay(2);LW5=1;//指示当前显示的是第几个转换值
}

附:http://www.jh-tec.cn/archives/7307

基于51单片机的三路自动数字电压表仿真ADC0809 数码管显示程序设计相关推荐

  1. 【038】基于51单片机的土壤湿度自动浇花系统Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的土壤湿度自动浇花系统proteus仿真设计一份: (2).基于51单片机的土壤湿度自动浇花系统proteus仿真设计keli源代码一份: (3).基于51单 ...

  2. 【003】基于51单片机的宠物自动定时、喂食系统的proteus仿真设计

    一.压缩包资料(私信获取) (1). 包含基于51单片机的宠物自动定时.喂食系统的proteus仿真设计一份: (2).包含基于51单片机的宠物自动定时.喂食系统keil源代码工程文件一份: (3). ...

  3. 基于单片机超声波视力保护系统设计-基于51单片机8音键电子琴仿真设计-基于8086八路模拟信号采集均值显示系统设计-基于8086八路数据电压温度采集系统-基于8086波形发生器仿真设计【毕设课设分享】

    539基于单片机超声波视力保护系统设计-设计资料 硬件构成:单片机+最小系统+LCD1602液晶显示模块+超声波模块+DS18B20温度采集模块+光线检测模块+ADC0832模块+蜂鸣器模块+LED指 ...

  4. c语言51单片机湿度浇花器,基于51单片机的室内自动浇花系统的制作方法

    本实用新型涉及单片机应用领域,具体涉及一种基于51单片机的室内自动浇花系统. 背景技术: 随着科学技术不断进步,人民的消费水平和生活质量逐渐,物质水平已经满足不了人民的需求,精神上的需求越来越受人们的 ...

  5. 基于51单片机的废气检测I2Cproteus仿真

    目录 文章目录 前言 二.设计步骤 1.proteus设计 2.keil5代码编程设计 总结 前言 前段时间高中同学让我帮忙给她做一个数电课设,反正也没事做就随便做了做,现在总结一下,话不多说直接上效 ...

  6. 蓄水池问题c语言编程,基于51单片机的蓄水池自动控制系统(35页)-原创力文档...

    广西民族大学 第二次综合课程设计报告 论文题目 : 基于 51 单片机的蓄水池自动控制系统 学 院: 物理与电子工程学院 专 业 : 自动化 年 级 : 2007 级 学 号 : 1072630101 ...

  7. 单片机c语言中p1asf,基于51单片机的蓄水池自动控制系统 毕业设计.doc

    基于51单片机的蓄水池自动控制系统 毕业设计 广西民族大学 第二次综合课程设计报告 论文题目: 基于51单片机的蓄水池自动控制系统 学 院: 物理与电子工程学院 专 业: 自动化 年 级: 2007级 ...

  8. 【019】基于51单片机的交通灯Proteus仿真设计

    一.资料内容 (1).基于51单片机的交通灯proteus仿真设计一份: (2).基于51单片机的交通灯proteus仿真设计keli源代码一份: (3).基于51单片机的交通灯proteus仿真设计 ...

  9. 【034】基于51单片机的HX711电子秤Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的HX711电子秤proteus仿真设计一份: (2).基于51单片机的HX711电子秤proteus仿真设计keli源代码一份: (3).基于51单片机的H ...

最新文章

  1. Elasticsearch 5.3.x 使用 Head 插件
  2. BigData:绘制2018年福布斯中国富豪榜人名坐标地图(解决多个人名显示在同一个家乡地点)
  3. Python报表自动化
  4. [leedcode 215] Kth Largest Element in an Array
  5. java linkedlist源码分析_LinkedList源码分析(基于Java8)
  6. oracle数据库实践,RubyonRails连接Oracle数据库实践
  7. docker源码编译 linux_oracle linux 6 docker 安装(包括编译git源码)
  8. Linux系统中源码包tomcat的管理
  9. 前端命名规范_值得收藏的前端命名规范
  10. Web前端框架(JavaScript,CSS)、html组件、CSS规范与第三方库
  11. Codeforces Round #155 (Div. 2) C YY题目
  12. Java函数、参数及传参方式详解
  13. 解决error: invalid operands of types ‘const char [6]‘ and ‘const char [6]‘ to binary ‘operator+‘
  14. 区块链技术DIY--xmz
  15. 简单版的约瑟夫环问题编程:清除隔壁编号的
  16. 计算机把C盘无法扩展,如何解决可分配空间却无法扩展C盘的问题?
  17. 从CSDN转战博客园
  18. 环境在线监测监控系统
  19. html页面打印成a4的尺寸,我如何将我的html div调整为A4打印页面中的整页?
  20. torch中的expand和repeat

热门文章

  1. 苹果桌面主题_安卓上总有一些烦心事想让我转投苹果
  2. 鼠标悬浮变手指或者左右箭头
  3. QT 复制excel工作表
  4. NE40E全业务路由器
  5. 论文笔记-VulDeeLocator: A Deep Learning-based Fine-grained Vulnerability Detector
  6. 在Windows上安装Gradle
  7. 工作,攒钱,休息,健身,生活
  8. 初中八年级认识计算机说课稿,《认识计算机》教案说课稿
  9. 约瑟夫环问题,n个人围成一圈,依次按1、2.....m来报数,报数值为m的人出圈,求最后出圈的人和出圈的序列
  10. 《远程开关机工具 1.0》软件使用手册