完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
MSP430F149AD转换时,先选的SREF0,可以测电压,想把范围调大一点,然后就选SREF_2,即参考电压是Veref+,公式转换那里也改了乘以5,其它没改,结果,数码管一直显示5V,什么线都没连,也是5V
|
|
相关推荐
3个回答
|
|
|
可能你对寄存器操作的有问题
|
|
|
|
|
|
include "msp430g2553.h"
#include "12864.h" uchar x,y,z,i=0; uint a[],num=0; float temp=0; void ADC_INIT() { ADC10CTL0|=REFON+REF2_5V+SREF_1; ADC10CTL0|=ADC10IE+ADC10ON+ADC10SHT_2+MSC;//采样保持时间16*ADC10CLK,多次采样控制位 ADC10CTL1|=INCH_1+CONSEQ_2+ADC10DIV_0;//输入通道选择A1,单通道多次转换 ADC10AE0=0x02; //A1模拟信号输入使能 ADC10DTC1|=0x0a; delay(40); } void ADC_Display() { temp=num*2.5/1023; temp=temp*100; x=(uint)temp/100; y=(uint)temp/10%10; z=(uint)temp%10; display(2,3); Dis_SZ(x); write_dat('.'); Dis_SZ(y); Dis_SZ(z); write_dat('v'); } void main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P1SEL|=BIT1; P1DIR&=~BIT1; ADC_INIT(); lcd_init(); delay(40); display(1,0); Dis_HZ("电压读数:",5); while(1) { ADC10CTL0&=~ENC; while(ADC10CTL1&ADC10BUSY); ADC10SA=(int)a; ADC10CTL0|=ENC+ADC10SC; _EINT();//关闭C PU,开启总中断 LPM0; for(i=0;i<5;i++) { num=num+a[2*i]; } num=num/5; ADC_Display(); } } #pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR (void) { LPM0_EXIT;// Clear CPUOFF bit from 0(SR) } 这是G2553的 |
|
|
|
|
|
谢谢你,不过你选的是内部参考电压吧,我选内部也正常,选外部参考电压就不正常了,Veref+
|
|
|
|
|
只有小组成员才能发言,加入小组>>
3327个成员聚集在这个小组
加入小组9571 浏览 1 评论
10369 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
10689 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2658 浏览 1 评论
5115 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
10689浏览 2评论
10370浏览 1评论
9571浏览 1评论
8229浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 16:02 , Processed in 0.548198 second(s), Total 49, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
5151