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);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
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)
一周热门 更多>