stc12c5a60s2单片机自带的ad转换怎么使用,没财富了。20财富奖励

看那手册理解不了啊,能给个编程的思路吗,比如说先初始化P1口,然后做什么。。然后又做什么。。。还有一个问题就是,比如说我要用P10口接线出来测电压,然后我想把测到的电压转... 看那手册理解不了啊,能给个编程的思路吗,比如说先初始化P1口,然后做什么。。然后又做什么。。。

还有一个问题就是,比如说我要用P10口接线出来测电压,然后我想把测到的电压转换之后通过P2口输出,接到LED,应该怎么编程。。。
哪个chs0 chs1 chs2 这三个通道的选择 跟P1ASF有什么关联。。。。混乱啊现在。急需大神帮助
展开
 我来答
lycdl
高粉答主

2014-10-31 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4933万
展开全部
chs0 chs1 chs2,是三位二进制数,0~7,对应P1口的引脚号P1.0~P1.7,如P1.1作模拟量输入,则 chs2 chs1 chs0 =001,这是在启动转换和读转换结果时要写到ADC_CONTR寄存器的值。

而P1ASF是用8个位对应每个引脚,则P1ASF=0000 0010,即P1.1作模拟量输入。

想把测到的电压转换之后通过P2口输出,接到LED,是想用8个LED显示吗,这显示的是8位二进制数,而A/D转换的结果是10位二进制数,即是00 0000 0000~11 1111 1111,对应的十进制数是0-1023。所以,最好还是用4位数码管直接显示这十进制数更直观。

做A/D转换时,先初始化P1ASF寄存器。

实现A/D转换要写一个子程序:
unsigned int adc_in(unsigned char n)//n为模拟量输入位通道值,即chs2 chs1 chs0
三位二进制数的值,0~7
{ ADC_CONTR = 0xe8 + n; //启动转换,设置转换速度
while((ADC_CONTR&0x10)==0) ; //等待转换结束
return(ADC_RES*4+ADC_RESL); //读转换结果
}
子程序返回无符号的整形数,即转换结果。
再定义转换结果的变量:
unsigned int ADCX;
在主程序中调用:
ADCX=adc_in(n); //这个n 就是chs2 chs1 chs0的值
调用子程序后得到的转换结果就在ADCX中。
更多追问追答
追问
能加个QQ吗457308895   热心的朋友
追答
都给你这么多的内容了,还不理解呀。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式