ADC采集到的值通过串口发送出去,但发送数据时数据不太正常,我想把采集到的16位数拆分成两个8位通过串口发送出去,测3.3V时输出对应的值应该是4096,结果不对,大家帮忙看看,谢谢了,急急急!!!
int main(void)
{
u16 adcx;
u8 dataH,dataL;
My_USART1_Init(); //初始化串口1
delay_init(100); //初始化延时函数
Adc_Init(); //初始化ADC
while(1)
{
adcx=Get_Adc_Average(ADC_Channel_5,20);//获取通道5的转换值,20次取平均
adcx=adcx&0xfff; //清高四位
dataH = (adcx >> 8) & 0xff; //取
USART_SendData(USART1, dataH);//发送高8位
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
{} //等待发送数据寄存器为
//delay_ms(20);
dataL = adcx & 0xff ; //低8位
USART_SendData(USART1, dataL);//发送低8位
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
{} //等待发送数据寄存器为
delay_ms(20);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
采的3.3V,发的0F B4 0F A6等,算下来也差不多;采0V时基本也都是00 02 00 04都还行,但采1.65V时和采3.3V时,数据基本一样
float temp;
temp=(float)adcx*(3.3/4096);
adcx=temp;
USART_SendData(USART1, adcx);
这样发送
收到的是一下数据,感觉是好的
电压 串口显示
3.3v 34 (52)
1.65 1A (26)
0.85 0D (13)
把采集1.65V时的电路与具体数值发一下
一周热门 更多>