赞
踩
bit Seg_Disp_Mode;//0-数据界面 1-参数界面 float Temperature; unsigned char Temp_Disp[2]; unsigned char Temp_Disp_Ctrol[2] = {30,20}; //参数选择一般会用一个数组指针变量index来实现,这个变量需要在参数调整(自加或者自减)时被调用 bit Temperature_Params_Index;//0-max 1-min /* 键盘处理函数 */ void Key_Proc() { if(Key_Slow_Down) return; Key_Slow_Down = 1;//键盘减速程序 Key_Val = Key_Read();//实时读取键码值 Key_Down = Key_Val & (Key_Old ^ Key_Val);//捕捉按键下降沿 Key_Up = ~Key_Val & (Key_Old ^ Key_Val);//捕捉按键上降沿 Key_Old = Key_Val;//辅助扫描变量 switch(Key_Down) { case 4: Seg_Disp_Mode ^= 1; //Seg_Disp_Mode 是一个位(bit)型变量。在一些C编译器中,位型变量可能被视为右值,因此不能直接进行赋值操作。 if(Seg_Disp_Mode == 1) { //每次到参数界面都默认选择温度下限 //参数设置 Temperature_Params_Index = 1; Temp_Disp[0] = Temp_Disp_Ctrol[0]; Temp_Disp[1] = Temp_Disp_Ctrol[1]; } if(Seg_Disp_Mode == 0) { // if(Temp_Disp_Ctrol[0]>Temp_Disp_Ctrol[1]) //这里又写错啦!这里应该拿着刚刚还没保存的Temp_Disp数组中的数据来比较而不是ctrol(保存之后的数据)来比较 if(Temp_Disp[0]>=Temp_Disp[1]) { //切换到数据页面进行参数保存 Temp_Disp_Ctrol[0] = Temp_Disp[0]; Temp_Disp_Ctrol[1] = Temp_Disp[1]; } } break; case 5: if(Seg_Disp_Mode == 1) { Temperature_Params_Index ^= 1; } break; case 6: //注意只有处在参数界面才可以修改 //注意这里修改的是Temp_Disp数组而不是Temp_Disp_Ctrol数组,此时仅进行参数设置而没有保存,待切换到数据页面自动保存 if(Seg_Disp_Mode == 1) { if(++Temp_Disp[Temperature_Params_Index]==100) Temp_Disp[Temperature_Params_Index] = 99;//上线卡死在99 } break; case 7: if(Seg_Disp_Mode == 1) { if(--Temp_Disp[Temperature_Params_Index]==255) Temp_Disp[Temperature_Params_Index] = 0;//下线卡死在0 } break; } } /* 信息处理函数 */ void Seg_Proc() { if(Seg_Slow_Down) return; Seg_Slow_Down = 1;//数码管减速程序 Temperature = rd_temperature(); if(Seg_Disp_Mode == 0) { Seg_Buf[0] = 11; Seg_Buf[3] = 10; Seg_Buf[4] = 10; Seg_Buf[6] = (unsigned char)(Temperature)/10%10; Seg_Buf[7] = (unsigned char)(Temperature)%10; } else { Seg_Buf[0] = 12; Seg_Buf[3] = Temp_Disp[0]/10%10; Seg_Buf[4] = Temp_Disp[0]%10; Seg_Buf[6] = Temp_Disp[1]/10%10; Seg_Buf[7] = Temp_Disp[1]%10; } }
/* 其他显示函数 */ void Led_Proc() { /*DAC相关输出*/ // Temperature = rd_temperature(); if(Temperature>Temp_Disp_Ctrol[0]) { Da_Write(51*4); } else if(Temperature<Temp_Disp_Ctrol[1]) { Da_Write(51*2); } else { Da_Write(51*3); } /*数码管相关输出*/ ucLed[0] = (Temperature>Temp_Disp_Ctrol[0]); ucLed[1] = (Temperature<=Temp_Disp_Ctrol[0]&&Temperature>=Temp_Disp_Ctrol[1]); ucLed[2] = (Temperature<Temp_Disp_Ctrol[1]); ucLed[3] = Error_Flag; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。