久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2391|回復: 5
收起左側

單片機超聲波液晶顯示顯示浮點數有問題,求指教

[復制鏈接]
ID:475371 發表于 2020-6-10 15:09 | 顯示全部樓層 |閱讀模式
10黑幣
本帖最后由 flytohign 于 2020-6-12 15:17 編輯

主要是 單片機主函數紅色標記處;keil運行會彈出錯誤:main.c(61): warning:  #167-D: argument of type "char *" is incompatible with parameter of type "u8 *"
                                                                LCD_ShowString(30+10*8,150,200,16,16,DistanceChar); //直接送字符顯示函數     
超聲波測距顯示不正常,顯示不正確并且數值變換太快
extern u8  TIM5CH1_CAPTURE_STA;                //輸入捕獲狀態                                                   
extern u16        TIM5CH1_CAPTURE_VAL;        //輸入捕獲值        
int main(void)
{               
         
        float Distance;
  char DistanceChar[16];
         u32 temp=0;
        delay_init();                     //延時函數初始化         
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
        uart_init(115200);         //串口初始化為115200
         LED_Init();                             //LED端口初始化
  LCD_Init();        
        Ultra_config();      //超聲波的TRIG端口,GPIOA_1  初始化
         TIM5_Cap_Init(0XFFFF,720-1);        //以1Mhz的頻率計數 ,100us
        
        POINT_COLOR=RED;                //設置字體為紅色
        LCD_ShowString(30,50,200,16,16,"ELITE STM32");
        LCD_ShowString(30,70,200,16,16,"REMOTE TEST");        
        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(30,110,200,16,16,"2015/1/15");

           LCD_ShowString(30,130,200,16,16,"TIME:");        
           LCD_ShowString(30,150,200,16,16,"DISTANCE:        cm");        

           while(1)
        {
                  Ultra_start();
                 if(TIM5CH1_CAPTURE_STA&0X80)//成功捕獲到了一次上升沿
                {
                        temp=TIM5CH1_CAPTURE_STA&0X3F;
                        temp*=65536;//溢出時間總和
                        temp+=TIM5CH1_CAPTURE_VAL;//得到總的高電平時間
                        Distance=(float)temp*170/10000;//距離計算公式:距離=高電平持續時間*聲速/2  ,單位:厘米
                                                                                                                  //即 距離= 高電平持續時間*340*100/(2*1000 000) = 高電平持續時間*170/10000
                        LCD_ShowNum(30+6*8,130,temp,3,16);        //顯示高電平時間
                        sprintf(DistanceChar,"%5.2f",Distance);  //浮點數轉換為指定格式的字符串
                        //printf("HIGH:%d us\r\n",temp);//打印總的高電平時間
                        
            LCD_ShowString(30+10*8,150,200,16,16,DistanceChar);        //直接送字符顯示函數     
                        TIM5CH1_CAPTURE_STA=0;//開啟下一次捕獲
                }
        }
}


回復

使用道具 舉報

ID:475371 發表于 2020-6-17 08:33 | 顯示全部樓層
問題基本解決,管理員請問下怎么給金幣幫我解決問題的人呢?
回復

使用道具 舉報

ID:475371 發表于 2020-6-16 12:46 | 顯示全部樓層
MikeCai 發表于 2020-6-16 10:43
用debug模式,看 程序 跑到這句,前后,得 DistanceChar數是否浮點數字符串;
sprintf(DistanceChar,"%5. ...

嗯嗯,試了,DistanceChar是浮點數轉成的字符串型,那具體怎么弄呢,你提供調試的思路不錯
回復

使用道具 舉報

ID:475371 發表于 2020-6-16 12:44 | 顯示全部樓層
294479435 發表于 2020-6-12 15:58
意思是類型不一致,用一個強制類型轉換可以解決 LCD_ShowString(30+10*8,150,200,16,16,(u8 *)DistanceChar ...

可以,明白了
回復

使用道具 舉報

ID:764088 發表于 2020-6-16 10:43 | 顯示全部樓層
用debug模式,看 程序 跑到這句,前后,得 DistanceChar數是否浮點數字符串;
sprintf(DistanceChar,"%5.2f",Distance);  //浮點數轉換為指定格式的字符串

執行這句后 1)如 DistanceChar 不是相應 浮點字符串,那 查 sprintf執行條件;
如 DistanceChar 是相應 浮點字符串,那 查 后一句 執行程序是否 OK;
回復

使用道具 舉報

ID:73435 發表于 2020-6-12 15:58 | 顯示全部樓層
意思是類型不一致,用一個強制類型轉換可以解決 LCD_ShowString(30+10*8,150,200,16,16,(u8 *)DistanceChar);
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91社区视频 | www.4567 | 91精品国产综合久久久亚洲 | 中文精品久久 | 欧美爱爱视频网站 | 久久99网站 | 中文字幕av第一页 | 亚洲精品久久久9婷婷中文字幕 | 在线不卡视频 | 久久亚洲春色中文字幕久久久 | 亚洲成年人免费网站 | 亚洲精品在线观 | 国产精品久久久久一区二区 | 在线成人| 日本不卡免费新一二三区 | 亚洲视频免费在线播放 | 91在线一区二区三区 | 一区欧美 | 日韩免费视频一区二区 | 久久久精品日本 | 少妇午夜一级艳片欧美精品 | 综合在线视频 | 久久久久久亚洲欧洲 | 91免费版在线观看 | 欧美精品一区二区在线观看 | 日韩区| 色在线视频网站 | 午夜tv免费观看 | 日韩av一区在线观看 | 在线国产视频 | 国产成人综合网 | 国产美女精品 | 国产成人在线视频播放 | 欧美日韩在线免费观看 | 亚洲人人 | 日韩欧美一区在线 | 国产精品久久久久久婷婷天堂 | 久久青草av| 日韩在线不卡视频 | 国产精品成人一区二区 | av日韩高清 |