找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2011|回復(fù): 4
收起左側(cè)

C語言編程顯示負數(shù)問題

[復(fù)制鏈接]
ID:167760 發(fā)表于 2021-4-28 21:50 | 顯示全部樓層 |閱讀模式
求教各位,我能在屏上顯示正數(shù),為啥負數(shù)就亂碼呢。幫看看哪里錯了
        void Operation_display();//運行顯示
        void runing();//運行
        void main(void)
        {
         uchar devid;
        DisplayStart();//啟動畫面
         devid=Single_Read_ADXL345(0X00);
                  while(1)
                 {
                   Lcd12864_Displayfigure(0,1,-12345);
                        Lcd12864_Displayfigure(0,2,-1234);
                   Lcd12864_Displayfigure(0,3,-123);
                   Lcd12864_Displayfigure(0,4,-12);
                    Lcd12864_Displayfigure(4,1,12345);
                        Lcd12864_Displayfigure(4,2,1234);
                   Lcd12864_Displayfigure(4,3,123);
                   Lcd12864_Displayfigure(4,4,12);


        /*        if((run_menu==0)&&(menukey()==1))
                {
                  LCD12864_Clear();
                  Delay400Ms();
                  run_menu=1;
                  menuorede_word=1;
                  menu_y=0;
                  }
                if((run_menu>=1)&&(menukey()==6))
                {
                  LCD12864_Clear(); Delay400Ms();
                  run_menu=0;         
                 }
                switch(run_menu)
                {
                case(0):Multiple_read_ADXL345();Operation_display();break;



        /*******************************************************************************
        * 函 數(shù) 名         : Lcd12864_Displayfigure
        * 函數(shù)功能                   : //顯示數(shù)字
        * 輸    入         : x,y,*gigure
        * 輸    出         : 無
        *******************************************************************************/
        void Lcd12864_Displayfigure(unsigned char X, unsigned char Y,  int gigure)
        {
          unsigned char X2;
          X2=X;
          switch(Y)
           {
                case 1:X2|=0X80;break;        //根據(jù)行數(shù)來選擇相應(yīng)地址
                case 2:X2|=0X90;break;
                case 3:X2|=0X88;break;
                case 4:X2|=0X98;break;
           }
           if(gigure<0)
           {
                //gigure=~gigure+1;
                  LCD12864_WriteCmd(X2);
                LCD12864_WriteData('-');        
                LCD12864_WriteData('0' + (gigure/10000));//千位               
                LCD12864_WriteData('0' + (gigure%1000/100));//
                LCD12864_WriteData(0x6b);//                                                                                
            //LCD12864_WriteData('0' + (gigure%1000%100/10));//十位
                //LCD12864_WriteData('0' + (gigure%1000%100%10));//個位(0x87);
           }

           if(gigure>0)
           {
                  LCD12864_WriteCmd(X2);
                LCD12864_WriteData('0' + (gigure/1000));//千位               
                LCD12864_WriteData('0' + (gigure%1000/100));//                                                                        
            LCD12864_WriteData('0' + (gigure%1000%100/10));//十位
                LCD12864_WriteData('0' + (gigure%1000%100%10));//個位(0x87);
           }
        
}




回復(fù)

使用道具 舉報

ID:684049 發(fā)表于 2021-4-28 21:56 | 顯示全部樓層
有的是轉(zhuǎn)義字符,需要加\xfd
回復(fù)

使用道具 舉報

ID:889094 發(fā)表于 2021-4-28 23:37 | 顯示全部樓層
           if(gigure<0)
            {
                 //gigure=~gigure+1;
這么重要的地方為什么要注釋掉?
負數(shù)要顯示,先變正,取反再加1,然后顯示個—再顯示數(shù)
回復(fù)

使用道具 舉報

ID:889094 發(fā)表于 2021-4-28 23:41 | 顯示全部樓層
一個>0,一個<0
=0時不用顯示。。。。
回復(fù)

使用道具 舉報

ID:592807 發(fā)表于 2021-4-29 08:20 | 顯示全部樓層
加上這一句就可以了if(gigure<0){gigure = -gigure;}
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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