ADC0832的应用
ADC0832是美国国家半导体公司生产的一种8位逐次比较型CMOS双通道A-D转换器,采用5V电源电压供电,模拟电压输入范围为0~5V,内部时钟250KHz时转换速度为32微秒。
仿真图为:
程序为:
/********预处理***********/
#include <reg51.h>
#include "ADC0832.c" //调用ADC0832驱动程序
code uchar seven_seg[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //声明包含0123456789的一个十六进制的数组
uchar cp1,cp2; //声明变量cp1,cp2;
uint dat_ad; //声明变量dat_dat
//sbit P3_0 = P3^0;
void timer0_isr(void); //声明中断服务函数
void timer0_init(void); //声明中断初始化函数
/***********主函数******************/
void main(void)
{
timer0_init();
adc0832_init();
while(1);
}
/*********************T0中断服务函数**************************/
void timer0_isr(void)interrupt 1
{
TH0 = 0xf8;
TL0 = 0x2f;
cp1++;
if(cp1 >= 250) //0.5s
{
cp1 = 0;
dat_ad = adc0832_ch0(); //0.5秒让ADC0832转换一次
dat_ad = dat_ad * 1.96; //数据254对应模拟电压5V
}
P0 = 0xff; //仿真需要消隐
switch(cp2) //模拟电压显示0~5V
{
case 0: P0 = seven_seg[dat_ad % 10]; P2 = ~0x01; break; //小数点后第二位显示
case 1: P0 = seven_seg[dat_ad % 100 / 10]; P2 = ~0x02;break; //小数点后第一位显示
case 2: P0 = seven_seg[dat_ad / 100] & 0x7f; P2 = ~0x04; break; //个位显示和小数点显示
}
cp2++;
if(cp2 >= 3)cp2 = 0;
}
/*T0初始化函数*/
void timer0_init(void)
{
TMOD = 0x01; //中断方式1
TH0 = 0xf8;
TL0 = 0x2f; //对机器脉冲计数,2000个计满溢出引发中断
EA = 1; //开总中断
ET0 = 1; //开T0中断
TR0 = 1; //启动定时器To
}
AD0832程序:/*ADC0832驱动程序*/
/*ADC0832模数转换将连续变化的模拟信号转换为离散的数字信号V = 5 / 256 = 0.01953v = 19.53mv*/
#include <intrins.h> //调用intrins.h库
#define nop _nop_() //将 _nop_()宏定义为 nop /** _nop_()是空指令,延时一个指令周期,在51单片机中,外部晶振是12M,那么延时时间为1、12M*12=1us;*/
#define uchar unsigned char //将unsigned char宏定义为ucahr
#define uint unsigned int //将unsigned int 宏定义为uint
sbit CS = P3^0; //片选使能,低电平使能
sbit CLK = P3^1; //时钟输入
sbit DIDO = P3^2; //数据信号输入
/********对ACD0832初始化*************/
void adc0832_init(void)
{
CS = 1;nop;
CLK = 1;
CS = 0;
}
/**********对转换CH0通道的模拟信号**************/
uchar adc0832_ch0(void) //包含11个clk下降沿
{
uchar i,dat; //声明一个i,dat;
adc0832_init(); //调用adc0832_init();
DIDO = 1;CLK = 0;nop;CLK = 1;nop; //sck第1个下降沿到来时,di启动DAC0832
DIDO = 1;CLK = 0;nop;CLK = 1;nop; //sck第2个下降沿
DIDO = 0;CLK = 0;nop;CLK = 1;nop; //sck第3个下降沿,发送1、0选择通道ch0
DIDO = 1; //释放总线
for(i = 0;i < 8;i++) //sck第4个下降沿到第11个下降沿
{
CLK = 0;nop;
if(DIDO)dat |= 0x01;
CLK = 1;nop;
dat = dat <<= 1; //dat=(dat按位右移1位)
}
return(dat); //返回dat
CS = 1;
}
谢谢浏览,第一次接触到博客,有点小激动,哈哈!
ADC0832的应用的更多相关文章
- ADC0832
#include <reg51.h> #include "ADC0832.c" code uchar seven_seg[]={0xc0, 0xf9, 0xa4, 0x ...
- 树莓派通过模数转换芯片ADC0832读取LM35温度传感器数据
树莓派通过模数转换芯片ADC0832读取LM35温度传感器数据 今天和小朋友一起玩树莓派,打算来做一个测量室温的小实验.经过几个小时的研究和测试,终于能够成功读取LM35传感器的温度数据了.本文主要记 ...
- 学习AD、DA的体会
AD转换器的转换是指模拟信号输入转化为数字信号输出,而DA转换器是把数字信号转换为模拟信号,在ADC0832.TLC549和TLC5615程序设计中,通过使用中断服务函数每0.5s对ADC0832进行 ...
- PM2.5环境检测系统的设计与分析
PM2.5环境检测系统的设计与分析 摘要: 大气颗粒物污染对人类健康和生态环境造成了很大的影响,这让人们逐渐重视起对细颗粒物PM2.5检测技术的研究.本文阐述了PM2.5浓度检测的五种方法,在对上 ...
- tlc549
#include <reg51.h> #include "TLC549.c" code uchar seven_seg[] = {0xc0, 0xf9, 0xa4, 0 ...
随机推荐
- OC中的类别Category-协议Protocol-…
类别(category)--通过使用类别,我们可以动态地为现有的类添加新方法,而且可以将类定义模块化地分不到多个相关文件中.通常只在类别中定义方法. 类别,接口部分的定义,通常该文件命名为已有&quo ...
- (五十六)iOS多线程之NSOperation
NSOpertation是一套OC的API,是对GCD进行的Cocoa抽象. NSOperation有两种不同类型的队列,主队列和自定义队列. 主队列运行于主线程上,自定义队列在后台运行. [NSBl ...
- 迭代器模式之看芒果台还是央视nie?
"大风车吱呀吱悠悠的转,这里的风景啊真好看,天好看,地好看,还有一群快乐的小伙伴,大风车转呀转悠悠,快乐的伙伴手牵着手,牵着你的手,牵着我的手......"童年的美好时光因为有了& ...
- Oracle Forms Services Architecture
Oracle Forms Services Architecture Author: PTIAN(tianpan@gmail.com) Creation ...
- 菜鸟玩云计算之廿二: saltstack 配置
菜鸟玩云计算之廿二: saltstack 配置 要求环境: RHEL6.4+ >=Python2.6.6, < Python 3.0 关闭salt-master/minion服务: # ...
- Media Player Classic - HC 源代码分析 6:MediaInfo选项卡 (CPPageFileMediaInfo)
===================================================== Media Player Classic - HC 源代码分析系列文章列表: Media P ...
- java时间操作
这篇讲的也很专业:http://soft.zdnet.com.cn/software_zone/2007/1129/660028.shtml java中的时间操作不外乎这四种情况: 1.获取当前时间 ...
- EventQueue.invokeLater(new Runnable())
public class EventQueueextends ObjectEventQueue 是一个与平台无关的类,它将来自于底层同位体类和受信任的应用程序类的事件列入队列. 它封装了异步事件指派机 ...
- Spring Boot缓存应用实践
缓存是最直接有效提升系统性能的手段之一.个人认为用好用对缓存是优秀程序员的必备基本素质. 本文结合实际开发经验,从简单概念原理和代码入手,一步一步搭建一个简单的二级缓存系统. 一.通用缓存接口 1.缓 ...
- Spring Boot 2.0.1 入门教程
简介 Spring Boot是Spring提供的一套基础配置环境,可以用来快速开发生产环境级别的产品.尤其适合开发微服务架构,省去了不少配置麻烦.比如用到Spring MVC时,只需把spring-b ...