标题: 菜单内参数显示负数为乱码? [打印本页]

作者: samxon    时间: 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;//返回
                                                }        
                                }
        
                        }  //参数设置结束        


作者: WL0123    时间: 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]);
作者: samxon    时间: 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]);
                                                }
                                }




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1