电压转换器值在114mV~200mV左右,如何输入MSP430进行模电转换(ADC)?

后使用快捷导航没有帐号?
查看: 2515|回复: 7
ad单通道多次转换在1602上的显示
在线时间24 小时
芯币426 枚
TA的帖子TA的资源
一粒金砂, 积分 80, 距离下一级还需 120 积分
#include "msp430f149.h"#include"1602.h"#include"ADC12.h"#define num_of_results 8static unsigned int results[num_of_results];/*适用于单通道多次采集*/uchar adc_flag=1;uint AD_Tuchar ADBuffer[]={0}; //AD采集显示缓冲区void ADC12_int()//单通道单次初始化{& P6SEL|=BIT1;//选择采样通道1& ADC12CTL0&=~ENC;//关断ADC& ADC12CTL0|=ADC12ON+REF2_5V+REFON+SHT0_8+MSC; //打开AD模块,参考电压2.5V。& ADC12CTL1=CONSEQ_2+SHS_0+ADC12SSEL_0+CSTARTADD0+SHP;//单通道多次模式& ADC12MCTL0=INCH_1+SREF_1;//A1通道& ADC12IE|=0X02;//使能中断& ADC12CTL0|=ENC;//使能ADC}void Disp_ADResult(void);void &main( void ){&&& // Stop watchdog timer to prevent time out reset& WDTCTL = WDTPW + WDTHOLD;& P2DIR=0XFF;&&& //Sysclk_int();& ADC12_int(); & & & & &//单通道单次初始化& LcdReset();&& Delay5ms();&&& _EINT();&& DispStr(0,0,"Voltage:");& ADC12CTL0|=ADC12SC; & & //启动采样& P2OUT^=BIT0;& while(1)& {& & ADC12CTL0|=ADC12SC; & //启动采样& }& //{Disp_ADResult();}& &}/**************采集LCD显示函数***************/void Disp_ADResult(void){& float analog=0.00;& analog=AD_Temp*2.5/4095;& //analog=2.50;//test& ADBuffer[0]=(int)analog*10/10+'0';& ADBuffer[1]='.';& ADBuffer[2]=(int)(analog*10)%10+'0';//Note:此处模运算优先级高于乘,需加括号,if not 会error& ADBuffer[3]=(int)(analog*100)%10+'0';& ADBuffer[4]='V';& ADBuffer[5]='\0';& DispStr(9,0,ADBuffer);& //Disp1Char(9,0,ADBuffer[2]);}#pragma vector=ADC_VECTOR__interrupt void ADC12_ISR(void){&& static unsigned int index=0;& unsigned long sum = 0;& adc_flag=0;& results[index]=ADC12MEM0;& index=(index+1)%num_of_& && if(index==0)& {& & P2OUT^=BIT2;& & for(i=0;i&8;i++)& & {& & & sum+=results;& & }& & & AD_Temp=sum/8;& &&& & &Disp_ADResult();& &&& & // ADC12CTL0&=~ENC;//关断ADC& }}1602模块这里没有给出!我的这个程序一下载下去显示1.84V.另一块板子显示1.64V,(此时我的P6.1引脚没有给输入值,用万用表测得电压大概0.9v),这里面很少不解,引脚不应该0v嘛,,测出来还这么大差距。另外不能实时的显示电压值,,,望大家给指点指点,新手!
在线时间24 小时
芯币426 枚
TA的帖子TA的资源
另外这个单通道多次转换模式中,当第一次进入AD中断读取寄存器的值后,程序是停留在中断处,等待下一次转换完成再读取寄存器的数值(打开msc),还是先回到原程序中,等待中断发生。这个对于我想在主程序中设置让ad具有实时功能有影响,麻烦各位给个建议!
在线时间57 小时
芯币452 枚
TA的帖子TA的资源
我前几天写了一个 序列通道多次转换,结果掉进中断出不来了
每天早上叫醒我的不是闹钟 ,而是梦想
在线时间57 小时
芯币452 枚
TA的帖子TA的资源
/*********************************************************
程序功能:MCU的片内ADC对P6.0端口的电压进行转换
& && && & 将模拟电压值显示在1602液晶上。
----------------------------------------------------------
测试说明:调节电位器R7的旋钮观察液晶显示数字变化。
*********************************************************/
#include&&&msp430x14x.h&
#include&&&BoardConfig.h&
#include&&&cry1602.h&
#define& &Num_of_Results& &32
uchar shuzi[] = {&.&};
uchar tishi[] = {&The volt is:&};
static uint results[Num_of_Results];& & //保存ADC转换结果的数组& && && && && && && && && && && && && && && && && &&&// is not used for anything.
void Trans_val(uint Hex_Val);& && && &&&
/************************主函数****************************/
void main(void)
&&WDTCTL = WDTPW+WDTHOLD;& && && && && && & //关闭看门狗
&&BoardConfig(0xb8);& && && && && && && && &//关闭数码管、流水灯、4245
&&LcdReset();& && && && && && && && && && & //复位1602液晶
&&DispNChar(2,0,12,tishi);& && && && && && &//显示提示信息
&&Disp1Char(11,1,'V');& && && && && && && & //显示电压单位
&&P6SEL |= 0x01;& && && && && && && && && & // 使能ADC通道
&&ADC12CTL0 = ADC12ON+SHT0_8+MSC;& && && &&&// 打开ADC,设置采样时间
&&ADC12CTL1 = SHP+CONSEQ_2;& && && && && &&&// 使用采样定时器
&&ADC12IE = 0x01;& && && && && && && && && &// 使能ADC中断
&&ADC12CTL0 |= ENC;& && && && && && && && & // 使能转换
&&ADC12CTL0 |= ADC12SC;& && && && && && && &// 开始转换
&&_EINT();
/*******************************************
函数名称:ADC12ISR
功& & 能:ADC中断服务函数,在这里用多次平均的
& && && & 计算P6.0口的模拟电压数值
参& & 数:无& && &
返回值&&:无
********************************************/
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR (void)
&&static uint index = 0;
&&results[index++] = ADC12MEM0;& && && && && &// Move results
&&if(index == Num_of_Results)
& && &&&unsigned long sum = 0;
& && &&&index = 0;
& && &&&for(i = 0; i & Num_of_R i++)
& && && && &sum += results;
& && &&&sum &&= 5;& && && && && && && && && & //除以32
& && &&&Trans_val(sum);
/*******************************************
函数名称:Trans_val
功& & 能:将16进制ADC转换数据变换成三位10进制
& && && & 真实的模拟电压数据,并在液晶上显示
参& & 数:Hex_Val--16进制数据
& && && & n--变换时的分母等于2的n次方& && &
返回值&&:无
********************************************/
void Trans_val(uint Hex_Val)
& & uint Curr_V
& & uchar t1,i;
& & uchar ptr[4];
& & caltmp = Hex_V
& & caltmp = (caltmp && 5) + Hex_V& && && &&&//caltmp = Hex_Val * 33
& & caltmp = (caltmp && 3) + (caltmp && 1);& &&&//caltmp = caltmp * 10
& & Curr_Volt = caltmp && 12;& && && && && && & //Curr_Volt = caltmp / 2^n
& & ptr[0] = Curr_Volt / 100;& && && && && && & //Hex-&Dec变换
& & t1 = Curr_Volt - (ptr[0] * 100);
& & ptr[2] = t1 / 10;
& & ptr[3] = t1 - (ptr[2] * 10);
& & ptr[1] = 10;& && && && && && && && && && &&&//shuzi表中第10位对应符号&.&
& & //在液晶上显示变换后的结果
& & for(i = 0;i & 4;i++)
& && &Disp1Char((6 + i),1,shuzi[ptr]);
这个希望对你有用!!!
搞出来了,,,皆大欢喜!:victory:&
void Trans_val(uint Hex_Val)
这其中sun相当于其实参,sum >>= 5;之后
sum怎么是16进制的数?:Sad:&
每天早上叫醒我的不是闹钟 ,而是梦想
在线时间24 小时
芯币426 枚
TA的帖子TA的资源
回复 4楼 海盗郭兆广 的帖子
void Trans_val(uint Hex_Val)
这其中sun相当于其实参,sum &&= 5;之后&&sum怎么是16进制的数?
在线时间24 小时
芯币426 枚
TA的帖子TA的资源
回复 4楼 海盗郭兆广 的帖子
搞出来了,,,皆大欢喜!
你好,我也陷在单通道多次转换里了,你是怎么解决的能告诉我一下吗,谢谢了!&
在线时间11 小时
TA的帖子TA的资源
回复 6楼 麻滴滴 的帖子
你好,我也陷在单通道多次转换里了,你是怎么解决的能告诉我一下吗,谢谢了!
不好意思时间稍稍有些长了,不太记得了,初上手时有很多小点没搞好,总不容易出现象,你再耐心调调看!&
在线时间24 小时
芯币426 枚
TA的帖子TA的资源
回复 7楼 junyingxiu 的帖子
不好意思时间稍稍有些长了,不太记得了,初上手时有很多小点没搞好,总不容易出现象,你再耐心调调看!
Powered by
逛了这许久,何不进去瞧瞧?MSP430 ADC10_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
67页免费113页免费20页免费10页免费19页免费 64页1下载券17页2下载券2页1下载券3页免费77页1下载券
喜欢此文档的还喜欢21页免费24页免费67页免费
MSP430 ADC10|
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢第9章MSP430模数转换ADC_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者贡献于
评价文档:
167页免费4页1下载券6页1下载券31页免费5页免费 28页免费28页免费6页免费4页免费23页1下载券
喜欢此文档的还喜欢76页免费65页免费66页免费141页免费82页免费
第9章MSP430模数转换ADC|M​S​P3课​件
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:4.29MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢}

我要回帖

更多关于 电压转换器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信