找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2401|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:475371 發(fā)表于 2020-6-10 15:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
10黑幣
本帖最后由 flytohign 于 2020-6-12 15:17 編輯

主要是 單片機主函數(shù)紅色標(biāo)記處;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); //直接送字符顯示函數(shù)     
超聲波測距顯示不正常,顯示不正確并且數(shù)值變換太快
extern u8  TIM5CH1_CAPTURE_STA;                //輸入捕獲狀態(tài)                                                   
extern u16        TIM5CH1_CAPTURE_VAL;        //輸入捕獲值        
int main(void)
{               
         
        float Distance;
  char DistanceChar[16];
         u32 temp=0;
        delay_init();                     //延時函數(shù)初始化         
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
        uart_init(115200);         //串口初始化為115200
         LED_Init();                             //LED端口初始化
  LCD_Init();        
        Ultra_config();      //超聲波的TRIG端口,GPIOA_1  初始化
         TIM5_Cap_Init(0XFFFF,720-1);        //以1Mhz的頻率計數(shù) ,100us
        
        POINT_COLOR=RED;                //設(shè)置字體為紅色
        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;//距離計算公式:距離=高電平持續(xù)時間*聲速/2  ,單位:厘米
                                                                                                                  //即 距離= 高電平持續(xù)時間*340*100/(2*1000 000) = 高電平持續(xù)時間*170/10000
                        LCD_ShowNum(30+6*8,130,temp,3,16);        //顯示高電平時間
                        sprintf(DistanceChar,"%5.2f",Distance);  //浮點數(shù)轉(zhuǎn)換為指定格式的字符串
                        //printf("HIGH:%d us\r\n",temp);//打印總的高電平時間
                        
            LCD_ShowString(30+10*8,150,200,16,16,DistanceChar);        //直接送字符顯示函數(shù)     
                        TIM5CH1_CAPTURE_STA=0;//開啟下一次捕獲
                }
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:73435 發(fā)表于 2020-6-12 15:58 | 只看該作者
意思是類型不一致,用一個強制類型轉(zhuǎn)換可以解決 LCD_ShowString(30+10*8,150,200,16,16,(u8 *)DistanceChar);
回復(fù)

使用道具 舉報

板凳
ID:764088 發(fā)表于 2020-6-16 10:43 | 只看該作者
用debug模式,看 程序 跑到這句,前后,得 DistanceChar數(shù)是否浮點數(shù)字符串;
sprintf(DistanceChar,"%5.2f",Distance);  //浮點數(shù)轉(zhuǎn)換為指定格式的字符串

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

使用道具 舉報

地板
ID:475371 發(fā)表于 2020-6-16 12:44 | 只看該作者
294479435 發(fā)表于 2020-6-12 15:58
意思是類型不一致,用一個強制類型轉(zhuǎn)換可以解決 LCD_ShowString(30+10*8,150,200,16,16,(u8 *)DistanceChar ...

可以,明白了
回復(fù)

使用道具 舉報

5#
ID:475371 發(fā)表于 2020-6-16 12:46 | 只看該作者
MikeCai 發(fā)表于 2020-6-16 10:43
用debug模式,看 程序 跑到這句,前后,得 DistanceChar數(shù)是否浮點數(shù)字符串;
sprintf(DistanceChar,"%5. ...

嗯嗯,試了,DistanceChar是浮點數(shù)轉(zhuǎn)成的字符串型,那具體怎么弄呢,你提供調(diào)試的思路不錯
回復(fù)

使用道具 舉報

6#
ID:475371 發(fā)表于 2020-6-17 08:33 | 只看該作者
問題基本解決,管理員請問下怎么給金幣幫我解決問題的人呢?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表