基于51单片机的电压采集(ADC0809)
1.ADC0809简介
IN0~IN7 : 8路模拟量输入端;
D0~D7:8位数字量输出端;
ADDA、ADDC、ADDC:3位地址输入线,用于选择8路模拟通道中的一路;
ALE:地址锁存允许信号,输入,高电平有效;
START:A/D转换启动信号,输入,高电平有效;
EOC:A/D转换结束信号,输出。当启动转换时,高引脚为低电平,当A/D结束转换时,高引脚输出高电平;
OE:数据输出允许信号,输入,高电平有效。当转换结束后,如果从该引脚输入高电平,则打开输出三态门,输出锁存器的数据从D0~D7送出;
CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ;
REF+、REF-:基准电压输入端;
VCC:电源,接+5V;
GND:地;
2.程序代码
#include<reg52.h>#define Duan_Port P0//定义数码管端口
#define ADC0809_Data P1//定义端口接收ADC0809数据转换结果/*引脚定义*/
sbit Bit1=P2^3;
sbit Bit2=P2^2;
sbit Bit3=P2^1;
sbit Bit4=P2^0;sbit OE=P3^1;
sbit Start=P3^2;
sbit EOC=P3^3;sbit Dp=P0^7;//小数点sbit CLK=P3^0;unsigned int dat=0;
unsigned char Buf[4];//存放数码管显示数字的数组unsigned char code smg_Duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,};//共阳极数码管编码/**************函数声明***************/
void delay_xms(unsigned int t);//延时xms函数
unsigned char ADC0809_Read();//ADC0809读取数据,输出为0-255
void ConvertVoltage();//将0-255转换为0.00-5.00V
void smg_Display();//数码管显示void main()//主函数
{unsigned int n=0,sum;while(1){for(n=0;n<3;n++){sum=sum+ADC0809_Read();smg_Display();}dat=sum/3;ConvertVoltage();sum=0;smg_Display();}
}void delay_xms(unsigned int t)
{unsigned int i,j;for(i=t;i>0;i--)for(j=123;j>0;j--);
}unsigned char ADC0809_Read()
{unsigned char Temp=0X00;OE=0;//输出设为高阻态Start=0;Start=1;//提供上升沿启动AD转换Start=0;//提供下降沿while(!EOC);//等待转换结束OE=1;//连接数据线输出Temp=ADC0809_Data;OE=0;//断开数据线return Temp;//返回结果
}void ConvertVoltage()
{unsigned int Vo;Vo=dat*19.608; // 5/255=0.01960784313Buf[0]=Vo/1000%10;Buf[1]=Vo/100%10;Buf[2]=Vo/10%10;Buf[3]=Vo/1%10;
}void smg_Display()
{Bit1=0;Duan_Port=smg_Duan[Buf[0]];//选通第一位数码管并赋段码Dp=0;delay_xms(1);Bit1=1;Duan_Port=0xff;//关闭消影Bit2=0;Duan_Port=smg_Duan[Buf[1]];delay_xms(1);Bit2=1;Duan_Port=0xff;Bit3=0;Duan_Port=smg_Duan[Buf[2]];delay_xms(1);Bit3=1;Duan_Port=0xff;Bit4=0;Duan_Port=smg_Duan[Buf[3]];delay_xms(1);Bit4=1;Duan_Port=0xff;
}
3.仿真电路
基于51单片机的电压采集(ADC0809)相关推荐
- 基于51单片机的电压采集(ADC0804)
1.ADC0804简介 工作电压:+5V,即VCC=+5V. 模拟转换电压范围:0-+5V,即0≤Vin≤+5V. 分辨率:8位,即分辨率为1/(2^8)=1/256,转换值介于0-255之间. 转换 ...
- 基于51单片机的温度采集与报警系统】
引言 单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将设计一种基于单片机控制的温度器,本温度计属于多功能温度计,可以利用温度传感器对环境温度进行监测和显示,可以通 ...
- 基于51单片机锂电池电压电量检测(原理图+PCB+程序)
资料编号:198 下面是该资料仿真演示视频: 198-基于51单片机锂电池电压电量检测(原理图+PCB+程序+全套资料) 功能介绍: 采用51系列自带AD的单片机stc12c5a60s2型号单片机( ...
- 基于51单片机的语音采集系统设计(录音笔选择方案)
功能: 基于51单片机的语音实时采集系统 系统由STC89C52单片机+ISD4004录音芯片+LM386功放模块+小喇叭+LCD1602+按键+指示灯+电源构成 具体实现功能: (1)可通过按键随时 ...
- 34、基于51单片机锂电池电压电流容量检测仪表LCD液晶显示 原理图PCB程序设计
方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度.非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通 ...
- 98、基于51单片机锂电池电压电流容量检测仪表LCD液晶显示
毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.部分程序源码 七.资料包括 摘要 锂离子电池是 1990年后逐渐发展起来 ...
- 基于51单片机的电压检测系统设计(#0412)
电压.电流.功率是表征电信号能量大小的三个基本参量.在电子电路中,只要测量出其中一个参量就可以根据电路的阻抗求出其它二个参量.考虑到测量的方便性.安全性.准确性等因素,几乎都用测量电压的方法来测定表征 ...
- 基于51单片机可控电压0-5V输出PWM方式PID稳压
视频地址链接:https://www.bilibili.com/video/BV17V411n72P/ 本设计为AT89C51为主控芯片,主要是实现了PWM方式输出可调电压0-5V输出.使用PID方式 ...
- 基于单片机超声波视力保护系统设计-基于51单片机8音键电子琴仿真设计-基于8086八路模拟信号采集均值显示系统设计-基于8086八路数据电压温度采集系统-基于8086波形发生器仿真设计【毕设课设分享】
539基于单片机超声波视力保护系统设计-设计资料 硬件构成:单片机+最小系统+LCD1602液晶显示模块+超声波模块+DS18B20温度采集模块+光线检测模块+ADC0832模块+蜂鸣器模块+LED指 ...
最新文章
- Windows7 libsvm库中grid.py的使用步骤
- 恕我直言,HttpClient 你不一定会用
- pyinstaller python3.7_解决python3.7安装好pyinstaller却不能使用的问题
- mysql修改表和列
- entity framework5 sqlserver2005 事务(TransactionScope)报未启用MSDTC错误解决办法
- spring配置日志
- c盘local文件太大_win7 c盘清理的方法教程
- 深度去除WinRAR广告
- 记一次有趣的诱导安装
- 内存卡 android 刷机教程,怎样用卡刷包刷机?安卓手机通用刷机包卡刷教程
- sqlh和mysql的区别_HSQL和MySQL的区别
- matlab rand函数解释,matlab rand()函数五种用法
- ios服务器停止响应怎么办,iPhone 应用停止响应或意外关闭怎么办
- TabLayout+ViewPager实现tab切换
- 《位置大数据隐私管理》—— 1.4 隐私泄露威胁
- mysql中where语句的不等于操作
- 大数据先导实践实验一
- Bosun中es表达语法
- HackerRank C++ || Conditional Statements
- 信息系统工程工程监理将迎来新的发展机遇
热门文章
- 答题卡识别C++版本(一)
- 百度云AI获取access token的方法
- 磁盘管理大师Paragon Hard Disk Manager for mac永久试用版
- 飞凌 修改ip地址 linux,[新手指导]imx6开发板 IP及MAC地址修改
- tp5.1对接阿里云短信实例
- vscode 安装matplotlib
- 前端常考react面试题(持续更新中)
- 阿诺德给物体加描边_Arnold(C4DToA)阿诺德渲染教程(116):Arnold 如何抠透明通道?透明物体后期合成方案!...
- Saber 2016 安装和破解(WIN10)
- 翻越山丘:中国科技公司面对GDPR的这两年