找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 341|回复: 2
收起左侧

菜单内参数显示负数为乱码?

[复制链接]
ID:705846 发表于 2025-5-11 20:09 | 显示全部楼层 |阅读模式
请教大家:

下面是一个参数菜单设置代码,set5这个参数需要显示负数,现在正数显示正常,负数显示乱码,应该怎么调整一下,请哪位指点一下。谢谢大家。

                        char set5;
                        while(state==6)//设置状态
                        {        
                                if(setplace==0)
                                {
                                        writeData(0xc3,SEGData1[1]);        
                                        writeData(0xc4,SEGData1[10]);
                                        writeData(0xc5,SEGData1[10]);
                                        writeData(0xc6,SEGData1[10]);
                                        writeData(0xc7,SEGData1[set1/10%10]);
                                        writeData(0xc8,SEGData1[set1%10]);
                                }
                                if(setplace==1)
                                {
                                        writeData(0xc3,SEGData1[2]);
                                        writeData(0xc4,SEGData1[10]);
                                        writeData(0xc5,SEGData1[10]);
                                        writeData(0xc6,SEGData1[set2/100]);
                                        writeData(0xc7,SEGDataDp[set2%100/10]);
                                        writeData(0xc8,SEGData1[set2%10]);
                                }
                                if(setplace==2)
                                {
                                        writeData(0xc3,SEGData1[3]);
                                        writeData(0xc4,SEGData1[10]);
                                        writeData(0xc5,SEGData1[10]);
                                        writeData(0xc6,SEGData1[10]);
                                        writeData(0xc7,SEGDataDp[set3/10]);
                                        writeData(0xc8,SEGData1[set3%10]);
                                }
                                if(setplace==3)
                                {
                                        writeData(0xc3,SEGData1[4]);
                                        writeData(0xc4,SEGData1[10]);
                                        writeData(0xc5,SEGData1[10]);
                                        writeData(0xc6,SEGData1[10]);
                                        writeData(0xc7,SEGData1[10]);
                                        writeData(0xc8,SEGData1[set4]);
                                }
                                if(setplace==4)
                                {
                                        writeData(0xc3,SEGData1[5]);
                                        writeData(0xc4,SEGData1[10]);
                                        writeData(0xc5,SEGData1[10]);
                                        if(fuflag==1){set5 = -set5;
                                                writeData(0xc6,0x40);//显示负号-}
                                                else {writeData(0xc6,SEGData1[10]);}                                        
                                        writeData(0xc7,SEGDataDp[set5/10]);
                                        writeData(0xc8,SEGData1[set5%10]);
                                }
                                if(setplace==5)
                                {
                                        writeData(0xc3,SEGData1[6]);
                                        writeData(0xc4,SEGData1[10]);
                                        writeData(0xc5,SEGData1[10]);
                                        writeData(0xc6,SEGData1[10]);
                                        writeData(0xc7,SEGData1[10]);
                                        writeData(0xc8,SEGData1[set6]);
                                }
                                if(setplace==6)
                                {
                                        writeData(0xc3,SEGData1[7]);
                                        writeData(0xc4,SEGData1[10]);
                                        writeData(0xc5,SEGData1[10]);
                                        writeData(0xc6,SEGData1[10]);
                                        writeData(0xc7,SEGData1[10]);
                                        writeData(0xc8,SEGData1[set7]);
                                }
        
                                if(up == 0)        //K1+按键设置        
                                {
                                        while(up == 0);
                                                if(setplace==0)
                                                {
                                                        set1++;
                                                        if(set1>20)        
                                                        set1=1;
                                                }
                                                if(setplace==1)
                                                {
                                                        set2++;
                                                        if(set2>180)
                                                        set2=1;
                                                }
                                                if(setplace==2)
                                                {
                                                        set3++;
                                                        if(set3>10)        
                                                        set3=1;
                                                }
                                                if(setplace==3)
                                                {                                                        
                                                        set4=1;                                                        
                                                }        
                                                if(setplace==4)
                                                {
                                                        set5++;
                                                        if(set5>99)
                                                        set5=0;                                                
                                                        if(set5>=0)fuflag=0;
                                                }        
                                                if(setplace==5)
                                                {
                                                        set6=1;                                                
                                                }        
                                                if(setplace==6)
                                                {
                                                        set7++;                 
                                                        if(set7>2) set7=0;
                                                }                                                
                                        save();
                                }        
        
                                if(down == 0)                //K2-按键设置
                                {
                                        while(down == 0);
                                                if(setplace==0)
                                                {
                                                        set1--;
                                                        if(set1<1)
                                                        set1=20;
                                                }
                                                if(setplace==1)
                                                {
                                                        set2--;
                                                        if(set2<1)
                                                        set2=180;
                                                }
                                                if(setplace==2)
                                                {
                                                        set3--;
                                                        if(set3<1)
                                                        set3=1;
                                                }
                                                if(setplace==3)
                                                {
                                                        set4=0;
                                                }        
                                                if(setplace==4)
                                                {
                                                        set5--;
                                                        if(set5<-99)
                                                        set5=0;                                                
                                                        if(set5<0) fuflag=1;
                                                }        
                                                if(setplace==5)
                                                {
                                                        set6=0;
                                                }        
                                                if(setplace==6)
                                                {
                                                        set7--;                 
                                                        if(set7<0) set7=2;
                                                }
                                        save();
                                }        
        
                                if(set == 0)               
                                {                                
                                        while(set == 0);
                                                setplace++;
                                                if(setplace>=7)
                                                {
                                                        setplace=0;
                                                        state=0;//返回
                                                }        
                                }
        
                        }  //参数设置结束        

回复

使用道具 举报

ID:1133081 发表于 2025-5-12 09:28 | 显示全部楼层
        char set5;//有符号字符型

        if(set5 & 0x80)//判断符号位
        {
                set5 = ~set5+1;
                writeData(0xc6,0x40);//显示负号-
        }  
        else {writeData(0xc6,SEGData1[10]);
        writeData(0xc7,SEGDataDp[set5/10]);
        writeData(0xc8,SEGData1[set5%10]);
回复

使用道具 举报

ID:705846 发表于 2025-5-13 10:26 | 显示全部楼层
发表于 2025-5-12 09:28
char set5;//有符号字符型

        if(set5 & 0x80)//判断符号位

谢谢大家热情指引,完美解决。
if(setplace==4)
                                {
                                        writeData(0xc3,SEGData1[5]);
                                        writeData(0xc4,SEGData1[10]);
                                        writeData(0xc5,SEGData1[10]);
                                        if(set5&0x80){//set5 = ~set5+1;
                                                                                                writeData(0xc6,0x40);
                                                                                                writeData(0xc7,SEGDataDp[(~set5+1)/10]);
                                                                                                writeData(0xc8,SEGData1[(~set5+1)%10]);
                                        }        else {
                                                writeData(0xc6,SEGData1[10]);                                       
                                                writeData(0xc7,SEGDataDp[set5/10]);
                                                writeData(0xc8,SEGData1[set5%10]);
                                                }
                                }
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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