gmumain.c

来自「该程序实现六位LED的动态扫描显示,能设置波特率,」· C语言 代码 · 共 985 行 · 第 1/3 页

C
985
字号
                              case 1: temp[5] = temp[5]&0x7f;
                                      break;
                              case 2: temp[4] = temp[4]&0x7f;
                                      break;
                              case 3: temp[3] = temp[3]&0x7f;
                                      break;
                              case 4: temp[2] = temp[2]&0x7f;
                                      break;
                              case 5: temp[1] = temp[1]&0x7f;
                                      break;
                              default :break;
                              }

             if((temp[5] == 0xc0)&&(tht_temp==2)) temp[5] = 0xff;
             if((temp[5] == 0xc0)&&(tht_temp==3)&&(temp[4] == 0xc0)){
                                                                    temp[5] = 0xff;
                                                                    temp[4] = 0xff;
                                                                    }
             if((temp[5] == 0xc0)&&(tht_temp==4)&&(temp[4] == 0xc0)&&(temp[3] == 0xc0))
                                                                   {
                                                                    temp[5] = 0xff;
                                                                    temp[4] = 0xff;
                                                                    temp[3] = 0xff;
                                                                    }

             if((temp[5] == 0xc0)&&(tht_temp==5)&&(temp[4] == 0xc0)&&(temp[3] == 0xc0)&&(temp[2] == 0xc0))
                                                                   {
                                                                    temp[5] = 0xff;
                                                                    temp[4] = 0xff;
                                                                    temp[3] = 0xff;
                                                                    temp[2] = 0xff;
                                                                    temp[1] = temp[1] | 0x80;
                                                                    }
             tht_temp = start_add;

             for(i=5;i>0;i--)
		     {
                     j = i - tht_temp;
                     if(j<0) break;
                     dis_big_value[j] = temp[i];
                     }
	      }
unsigned char key_scan(void)
         {
          unsigned char temp;
          temp = P1;
          temp = temp | 0xe1;
          if(temp == 0xff) return (0);
          temp =0;
          delayms(15);
          temp = set_key;
          if(temp==0) return(2);
          temp =0;
          temp = left_key;
          if(temp==0) return(4);
          temp =0;
          temp = up_key;
          if(temp==0) return(8);
          temp =0;
          temp = ds_key;
          if(temp==0) return(16);
          return(0);
          }
void delay(int delaytime)
      {
       while(delaytime--){
                          _nop_();
                         }
       }
void delayms(int delaytime)
      {
       while(delaytime--){
                         delay(1000);
                         }
       }
void display_bit(unsigned char value_temp,unsigned char flash_bit,unsigned char dot_flag)
             {
             unsigned char temp;
//             unsigned char i;
             temp = value_temp;
             if(temp>9) temp = 10;
             temp = tab_value[temp];
             if(flash_bit > 5) flash_bit = 0;
             if(dot_flag==0){
                             dis_big_value[5 - flash_bit] = temp;
                             return;
                             }
             else{
                 dis_big_value[5 - flash_bit] = temp&0x7f;//点亮小数点
                 }
             }
void setmenu_hld(unsigned char hld_flag)
             {
             unsigned char temp;
             unsigned char tht_temp[6];
             unsigned char set_point;
             unsigned char dot_ffflag;
             unsigned char breakflag;
             unsigned int  i;
             long tht_temp_tht;
             long tht_temp_1111;

             flash_times = 10;
             menu_exit_flag = 0;

             if(hld_flag==0){
                            tht_temp_1111 = read_long(10); //h
                            dis_value(tht_temp_1111,4,1);
                            dis_big_value[5] = 0x89;       //h
                            }
             else if(hld_flag==1){
                            tht_temp_1111 = read_long(20); //L
                            dis_value(tht_temp_1111,4,1);
                            dis_big_value[5] = 0xc7; //L
                            }
             else  {
                    tht_temp_1111 = read_long(60); //d
                    dis_value(tht_temp_1111,4,1);
                    dis_big_value[5] = 0xa1; //d
                    }
             display_bit(0,4,1);
             tht_temp[5]   = tht_temp_1111%10;
             tht_temp_1111 = tht_temp_1111/10;
             tht_temp[4]   = tht_temp_1111%10;
             tht_temp_1111 = tht_temp_1111/10;
             tht_temp[3]   = tht_temp_1111%10;
             tht_temp_1111 = tht_temp_1111/10;
             tht_temp[2]   = tht_temp_1111%10;
             tht_temp_1111 = tht_temp_1111/10;
             tht_temp[1]   = tht_temp_1111%10;
             display_bit(tht_temp[4],4,1);
             set_point = 5;
             while(1){
                 breakflag = 0;
                 if(set_point==4) dot_ffflag = 1;//小数点位置
                 else dot_ffflag = 0;
                 while(1){
                         for(i = 0;i <2000; i++){
                                 display_bit(tht_temp[set_point],set_point,dot_ffflag);
                                 delay(3);
                                 temp = key_scan();
                                 if((temp==set_value)||(temp==left_value)||(temp ==up_value)||(temp == ds_value))
                                                 {
                                                  breakflag = 1;
                                                  break;
                                                  }
                                 }
                         if(breakflag == 1) break;
                         flash_times = flash_times - 1;
                         if(flash_times<0) {
                                           menu_exit_flag = 1;
                                           return;
                                           }
                         //**********************************************************
                         for(i = 0;i <2000; i++){
                                 display_bit(10,set_point,dot_ffflag);
                                 delay(3);
                                 temp = key_scan();
                                 if((temp==set_value)||(temp==left_value)||(temp ==up_value)||(temp == ds_value))
                                                 {
                                                  breakflag = 1;
                                                  break;
                                                  }
                                               }
                         if(breakflag == 1) break;
                         }
             flash_times = 10;
             menu_exit_flag = 0;
             if(temp==set_value) {//执行到下一步设置状态了,保存当前设置的上限,下限和起始值
                                  tht_temp_tht = 0;
                                  tht_temp_1111 = tht_temp[1];
                                  tht_temp_tht = tht_temp_1111*10000;
                                  tht_temp_1111 = tht_temp[2];
                                  tht_temp_tht = tht_temp_tht + tht_temp_1111*1000;
                                  tht_temp_1111 = tht_temp[3];
                                  tht_temp_tht = tht_temp_tht + tht_temp_1111*100;
                                  tht_temp_1111 = tht_temp[4];
                                  tht_temp_tht = tht_temp_tht + tht_temp_1111*10;
                                  tht_temp_1111 = tht_temp[5];
                                  tht_temp_tht = tht_temp_tht + tht_temp_1111;
                                       if(hld_flag==0) write_long(10,tht_temp_tht);       //h
                                  else if(hld_flag==1) write_long(20,tht_temp_tht);       //l
                                       else           write_long(60,tht_temp_tht);       //d
                                  //write_int(unsigned int address,unsigned int dd);
                                  //10  高
                                  //20  低
                                  //30  倍率
                                  //40  地址
                                  //50  拨特率
                                  //60  起始位
                                  return;
                                  }
             if(temp==up_value){
                                 tht_temp[set_point] = tht_temp[set_point] + 1;
                                 if(tht_temp[set_point]>9) tht_temp[set_point] = 0;
                                 }

             if(temp ==left_value){
                                 display_bit(tht_temp[set_point],set_point,dot_ffflag);
                                 set_point = set_point + 1;
                                 if(set_point>5) set_point = 1;
                                 }
             }
     }

void setmenu_b(void)
             {
             unsigned char temp;
             unsigned char tht_temp[6];
             unsigned char set_point;
             unsigned char dot_ffflag;
             unsigned char breakflag;
             unsigned int  i;
             long tht_temp_tht;
             long tht_temp_1111;
             unsigned char fangda;

             flash_times = 10;
             menu_exit_flag = 0;
             tht_temp_1111 = read_long(30); //b;
             dis_value(tht_temp_1111,3,3);
             dis_big_value[5] = 0x83;       //b
             tht_temp[5] = tht_temp_1111%10;
             display_bit(tht_temp[5],5,0);
             tht_temp_1111 = tht_temp_1111/10;
             tht_temp[4] = tht_temp_1111%10;
             display_bit(tht_temp[4],4,0);
             tht_temp_1111 = tht_temp_1111/10;
             tht_temp[3] = tht_temp_1111%10;
             display_bit(tht_temp[3],3,1);
             set_point = 5;
             while(1){
                 breakflag = 0;
                 //fangda = 0;
                 if(set_point==3) dot_ffflag = 1;
                 else if(set_point==4 && fangda==1){fangda=0;dot_ffflag=1;}
                 else dot_ffflag = 0;

                 while(1){
                         for(i = 0;i <2000; i++){
                                 display_bit(tht_temp[set_point],set_point,dot_ffflag);
                                 delay(3);
                                 temp = key_scan();
                                 if((temp==set_value)||(temp==left_value)||(temp ==up_value)||(temp == ds_value))
                                                 {
                                                  breakflag = 1;
                                                  break;
                                                  }
                                 }
                         if(breakflag == 1) break;
                         flash_times = flash_times - 1;
                         if(flash_times<0) {
                                           menu_exit_flag = 1;
                                           return;
                                           }
                         //**********************************************************
                         for(i = 0;i <2000; i++){
                                 display_bit(10,set_point,dot_ffflag);
                                 delay(3);
                                 temp = key_scan();
                                 if((temp==set_value)||(temp==left_value)||(temp ==up_value)||(temp == ds_value))
                                                 {
                                                  breakflag = 1;
                                                  break;
                                                  }
                                 }
                         if(breakflag == 1) break;
                         }
             flash_times = 10;
             menu_exit_flag = 0;
             if(temp==set_value) {//执行到下一步设置状态了,保存当前设置的倍率值

                                  tht_temp_tht = 0;
                                  tht_temp_1111 = tht_temp[3];
                                  tht_temp_tht = tht_temp_tht + tht_temp_1111*100;
                                  tht_temp_1111 = tht_temp[4];
                                  tht_temp_tht = tht_temp_tht + tht_temp_1111*10;
                                  tht_temp_1111 = tht_temp[5];
                                  tht_temp_tht = tht_temp_tht + tht_temp_1111;
                                  write_long(30,tht_temp_tht);       //b
                                  return;
                                  }
             if(temp==up_value){
                                 tht_temp[set_point] = tht_temp[set_point] + 1;
                                 if(tht_temp[set_point]>9) tht_temp[set_point] = 0;
                                 if(tht_temp[3]>9) tht_temp[3]=0;
                                 if((tht_temp[3]==0)&&(tht_temp[4]>9)) tht_temp[4]=0;
                                 if((tht_temp[3]==0)&&(tht_temp[4]<=1)&&(tht_temp[5]>0)) tht_temp[5]=0;
                                 if((tht_temp[3]==9)&&(tht_temp[4]==9)&&(tht_temp[5]>9)) tht_temp[5]=0;
                                 }

             if(temp ==left_value){
                                 display_bit(tht_temp[set_point],set_point,dot_ffflag);
                                 set_point = set_point + 1;
                                 if(set_point>5) set_point = 3;
                                 }
             }
     }


void setmenu_p(void)
             {
             unsigned char set_point;
             unsigned char breakflag;
             unsigned int i;
             unsigned char temp;
             flash_times = 10;
             menu_exit_flag = 0;
             set_point = read(50);
             if(set_point>5) set_point = 1;
             switch(set_point){
                               case 0:disvalue_big_asc("P  600");
                                      break;
                               case 1:disvalue_big_asc("P 1200");
                                      break;
                               case 2:disvalue_big_asc("P 2400");
                                      break;
                               case 3:disvalue_big_asc("P 4800");
                                      break;
                               case 4:disvalue_big_asc("P 9600");
                                      break;
                               case 5:disvalue_big_asc("P19200");
                                      break;
                               default:break;
                               }
             while(1){
                 breakflag = 0;
                 while(1){
                         for(i = 0;i <2000; i++){

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?