我是靠谱客的博主 甜蜜芹菜,最近开发中收集的这篇文章主要介绍基于51单片机的adc0832程序编写的学习前言一、ADC0832是什么?二、执行代码总结,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
adc0832程序编写
文章目录
- 前言
- 一、ADC0832是什么?
- 二、执行代码
- 总结
前言
基于C51单片机项目的传感器数据采集,由于传感器是模拟输出,单片机接收传感器需要将模拟信号转换为数字信号才能读取数据,所以需要adc0832模数转换器的程序编写!
提示:以下是本篇文章正文内容,下面案例可供参考
一、ADC0832是什么?
ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求
二、执行代码
代码如下:
unsigned char Adc0832(unsigned char channel) //ADת»»£¬·µ»Ø½á¹û
{
uchar i=0;
uchar j;
uint dat=0;
uchar ndat=0;
if(channel==0)channel=2;
if(channel==1)channel=3;
ADDI=1;
_nop_();
_nop_();
ADCS=0;//ÀµÍCS¶Ë
_nop_();
_nop_();
ADCLK=1;//À¸ßCLK¶Ë
_nop_();
_nop_();
ADCLK=0;//ÀµÍCLK¶Ë,ÐγÉϽµÑØ1
_nop_();
_nop_();
ADCLK=1;//À¸ßCLK¶Ë
ADDI=channel&0x1;
_nop_();
_nop_();
ADCLK=0;//ÀµÍCLK¶Ë,ÐγÉϽµÑØ2
_nop_();
_nop_();
ADCLK=1;//À¸ßCLK¶Ë
ADDI=(channel>>1)&0x1;
_nop_();
_nop_();
ADCLK=0;//ÀµÍCLK¶Ë,ÐγÉϽµÑØ3
ADDI=1;//¿ØÖÆÃüÁî½áÊø
_nop_();
_nop_();
dat=0;
for(i=0;i<8;i++)
{
dat|=ADDO;//ÊÕÊý¾Ý
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//ÐγÉÒ»´ÎʱÖÓÂö³å
_nop_();
_nop_();
dat<<=1;
// if(i==7)dat|=ADDO;
}
for(i=0;i<8;i++)
{
j=0;
j=j|ADDO;//ÊÕÊý¾Ý
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//ÐγÉÒ»´ÎʱÖÓÂö³å
_nop_();
_nop_();
j=j<<7;
ndat=ndat|j;
if(i<7)ndat>>=1;
}
ADCS=1;//ÀµÍCS¶Ë
ADCLK=0;//ÀµÍCLK¶Ë
ADDO=1;//À¸ßÊý¾Ý¶Ë,»Øµ½³õʼ״̬
dat<<=8;
dat|=ndat;
return(dat); //return ad k
}
总结
adc0832有两个转换通道,可以同时使用,在读取数据之前需要软件拉高拉低两三次时钟线,然后一位一位读取数据,并保存到变量dat中。
最后
以上就是甜蜜芹菜为你收集整理的基于51单片机的adc0832程序编写的学习前言一、ADC0832是什么?二、执行代码总结的全部内容,希望文章能够帮你解决基于51单片机的adc0832程序编写的学习前言一、ADC0832是什么?二、执行代码总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复