完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
|
|
相关推荐
4 个讨论
|
|
|
这款单片机我个人搞了1个多月,还比较熟悉,给你上贴,但不是全部程序
unsigned char adval unsigned int Vin0; float Vin; void delay(unsigned int n) { unsigned int x; while (n--) { x = 1000; while (x--); } } /*---------------------------- ADC初始化设置 ----------------------------*/ void InitADC() { P1ASF = 0x03; //将P1口设为模拟ADC输入口 ADC_RES = 0; //清空转换后数据储存器ADC_RES ADC_RESL = 0; //清空转换后数据储存器ADC_RESlL ADC_CONTR = ADC_POWER | ADC_SPEEDLL; //打开AD转换开启电源和设置AD转换的速度 AUXR1 =0x00; //ADC_RES存数据高八位,ADC_RESL存数据低2位 delay(20); //ADC power-on and delay } /*---------------------------- 获取ADC的结果 ----------------------------*/ unsigned int GetADCResult(unsigned char ch) { unsigned int Vale; ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;//设置ADC控制寄存器,开AD电源,设置ADC速度,设置通道,启动ADC _nop_(); //Must wait before inquiry _nop_(); _nop_(); _nop_(); _nop_(); // while (!(ADC_CONTR & ADC_FLAG));//等待转换标志位FLAG为1 delay(12); ADC_CONTR &= ~ADC_FLAG; //软件flag清0 Vale = ADC_RES*4 + ADC_RESL; return Vale; //返回ADC的结果 } /*---------------------------- 获取ADC_RES 显示通道ch ----------------------------*/ void show_ADC() { unsigned int Vin; InitADC(); adval = GetADCResult(0); //0路AD(P1.0) ; Vin = (adval*5.0)/1023.0; //转换为模拟电压量 Vin0=(unsigned int)(Vin*1000); //强制类型转换,而后取出各位的值。 } 显示的自己做,我已经仁至义尽了哦。。。。 |
|
|
|
|
|
1 条评论
|
|
只有小组成员才能发言,加入小组>>
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 02:20 , Processed in 0.657286 second(s), Total 52, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
6562
