找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1742|回复: 4
打印 上一主题 下一主题
收起左侧

C语言编程显示负数问题

[复制链接]
跳转到指定楼层
楼主
ID:167760 发表于 2021-4-28 21:50 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求教各位,我能在屏上显示正数,为啥负数就乱码呢。帮看看哪里错了
        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;



        /*******************************************************************************
        * 函 数 名         : Lcd12864_Displayfigure
        * 函数功能                   : //显示数字
        * 输    入         : 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;        //根据行数来选择相应地址
                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);
           }
        
}




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

5#
ID:592807 发表于 2021-4-29 08:20 | 只看该作者
加上这一句就可以了if(gigure<0){gigure = -gigure;}
回复

使用道具 举报

地板
ID:889094 发表于 2021-4-28 23:41 | 只看该作者
一个>0,一个<0
=0时不用显示。。。。
回复

使用道具 举报

板凳
ID:889094 发表于 2021-4-28 23:37 | 只看该作者
           if(gigure<0)
            {
                 //gigure=~gigure+1;
这么重要的地方为什么要注释掉?
负数要显示,先变正,取反再加1,然后显示个—再显示数
回复

使用道具 举报

沙发
ID:684049 发表于 2021-4-28 21:56 | 只看该作者
有的是转义字符,需要加\xfd
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表