基于stc12c5a60s2的平衡摆设计中加速度传感器经过AD转换后在1602上显示不正确。
我用的是MMA7361三轴加速度传感器,只采集X轴值,在1602上确是一直不停的显示不同的数值知道显示为0,这个问题困扰我好多天了,刚开始学这个芯片不知道哪里出了错误,请...
我用的是MMA7361三轴加速度传感器,只采集X轴值,在1602上确是一直不停的显示不同的数值知道显示为0,这个问题困扰我好多天了,刚开始学这个芯片不知道哪里出了错误,请求高人指点!!!!!!
下面是我的ad初始化及采集程序,请帮我检查一下(单独检查1602显示是正确的),为便于您的查看注释我也一一注释在了每行后面。
void InitADC()
{
P1ASF=0x01; //选择P1.0通道作为AD转换模拟通道
ADC_RES=0; //清除前次结果
ADC_RESL=0;
AUXR1=0X00; //选择转换后的高八位存储在RES里低两位存储在RESL里
ADC_CONTR =0xE0; //开启电源并设置转化速度为90个周期
_nop_(); //延时
}
uint get_ad0()
{
ADC_CONTR=0xe8; // 开始转换并选择0通道作为转换通道
_nop_(); _nop_(); _nop_(); _nop_();//4个时钟周期的延时
while((ADC_CONTR&0x10)==0); //等待转换完毕
ADC_CONTR&=0xe7; //清标志位并关闭转换
ad_result=(ADC_RES<<=2|(ADC_RESL&0x03));
val=(uint)(ad_result*5.0/1024);
return (val);
}
void T1_() interrupt 3 //5ms中断
{
TH1=(65536-4608)/256;
TH1=(65536-4608)%256;
get_d0();
lcdplay();
delay(2);//2ms延时
} 展开
下面是我的ad初始化及采集程序,请帮我检查一下(单独检查1602显示是正确的),为便于您的查看注释我也一一注释在了每行后面。
void InitADC()
{
P1ASF=0x01; //选择P1.0通道作为AD转换模拟通道
ADC_RES=0; //清除前次结果
ADC_RESL=0;
AUXR1=0X00; //选择转换后的高八位存储在RES里低两位存储在RESL里
ADC_CONTR =0xE0; //开启电源并设置转化速度为90个周期
_nop_(); //延时
}
uint get_ad0()
{
ADC_CONTR=0xe8; // 开始转换并选择0通道作为转换通道
_nop_(); _nop_(); _nop_(); _nop_();//4个时钟周期的延时
while((ADC_CONTR&0x10)==0); //等待转换完毕
ADC_CONTR&=0xe7; //清标志位并关闭转换
ad_result=(ADC_RES<<=2|(ADC_RESL&0x03));
val=(uint)(ad_result*5.0/1024);
return (val);
}
void T1_() interrupt 3 //5ms中断
{
TH1=(65536-4608)/256;
TH1=(65536-4608)%256;
get_d0();
lcdplay();
delay(2);//2ms延时
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询