ADC采集到的值通过串口发送出去,但发送数据时数据不太正常,大家帮忙看看,谢谢了,急急急!!!

2019-07-20 18:57发布

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);       
        }
}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
库库03
1楼-- · 2019-07-20 20:07
 精彩回答 2  元偷偷看……
库库03
2楼-- · 2019-07-20 21:54
 精彩回答 2  元偷偷看……
xuyaqi
3楼-- · 2019-07-20 22:54
具体说说发的什么,收的什么
库库03
4楼-- · 2019-07-21 01:24
xuyaqi 发表于 2016-11-1 11:28
具体说说发的什么,收的什么

采的3.3V,发的0F B4 0F A6等,算下来也差不多;采0V时基本也都是00 02 00 04都还行,但采1.65V时和采3.3V时,数据基本一样
库库03
5楼-- · 2019-07-21 05:47
用原子哥的程序
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)



xuyaqi
6楼-- · 2019-07-21 10:58
库库03 发表于 2016-11-1 11:51
采的3.3V,发的0F B4 0F A6等,算下来也差不多;采0V时基本也都是00 02 00 04都还行,但采1.65V时和采3.3 ...

把采集1.65V时的电路与具体数值发一下

一周热门 更多>