完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
//----------------------------------------------------------------
//对通道CH进行模/数转换 //---------------------------------------------------------------- void ADC_Convert(INT8U CH) { int Result; SFIOR = 0x00; ADCSRA=0XE6; //11100110,ADC转换置位置,启动转换,64分频 ADMUX=CH; //ADC通道选择 //读取转换结果,并转换为电压值 Result=(int)((ADCL+(ADCH<<8))*500.0/1023.0); //将10位的模/数转换结果0X0000-0X03FF(即0-1023)转换为000-500之间的 //待显示的数(电压0.00-5.00V) //或使用语句:Result=(int)(ADC*500.0/1023.0); //ADC0的结果放入数组0,1,2单元,ADC1的结果放入数组4,5,6单元 Display_Buffer[CH*4]=Result/100; Display_Buffer[CH*4+1]=Result/10%10; Display_Buffer[CH*4+2]=Result%10; } |
|
相关推荐
5个回答
|
|
这应该是你界面或者结果的显示吧。。百位十位个位
|
|
|
|
|
|
|
|
云汉达人
个人对 Display_Buffer[CH*4]中*号的理解是,用来确定数组中元素的位置,实际上也就是起数学中“乘法”的作用,当然如果你的数组够长的话你也可以*5,*6,*7,这个是自定义的,你也可以*3,这样的话ADC0的数据就放到Display_Buffer[0],Display_Buffer[1],Display_Buffer[2],中了,而ADC1的数据就放到Display_Buffer[3],Display_Buffer[4],Display_Buffer[5],中了,所以简单的来说,其实就是一个“乘法”。 |
|
|
|
|
|
|
|
Display_Buffer[CH*4]=Result/100; //提取百位
Display_Buffer[CH*4+1]=Result/10%10; //提取十位 Display_Buffer[CH*4+2]=Result%10; //提取个位 这三句话实际上是提取Result的个十百位的数分别存入显示缓存数组里 |
|
|
|
只有小组成员才能发言,加入小组>>
818 浏览 0 评论
1162 浏览 1 评论
2536 浏览 5 评论
2871 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2720 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1114浏览 3评论
198浏览 2评论
465浏览 2评论
382浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
463浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 09:12 , Processed in 1.230094 second(s), Total 86, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号