⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 +

📁 基于msp430和1286的红外控制的万年历
💻
字号:
#include  <msp430x14x.h>
#include "menue.h"
#include  "Flash.h"
#include  "main.h"
#include "ds1302.h"


extern unsigned char key_value;
unsigned char menue_state=0;
unsigned char dis_num=3;

unsigned char menue_a1_which=0;
unsigned char menue_a1_where=0;
unsigned char  menue_a1_num=5;
unsigned char menue_a1_state=0;

unsigned char menue_b1_which=0;
unsigned char menue_b1_where=0;
unsigned char  menue_b1_num=4;
unsigned char menue_b1_state=0;

unsigned char menue_b2_which=0;
unsigned char menue_b2_where=0;
unsigned char  menue_b2_num=4;
unsigned char menue_b2_state=0;

unsigned char menue_b3_which=0;
unsigned char menue_b3_where=0;
unsigned char  menue_b3_num=5;
unsigned char menue_b3_state=0;

unsigned char menue_b4_which=0;
unsigned char menue_b4_where=0;
unsigned char menue_b4_num=8;
unsigned char menue_b4_state=0;

unsigned char kaiguan[4]={"开关"};
unsigned char week[16]={"  一二三四五六天"};
unsigned char  menue_a1[5][8]=
{
   {"时间设定"},
   {"日期设定"},
   {"闹钟设定"},
   {"按键控制"},
   {"退出    "},
   
};

unsigned char   menue_b3[5][14]=
{
   {"1 闹钟  :00  "},
   {"2 闹钟  :00  "},
   {"3 闹钟  :00  "},
   {"4 闹钟  :00  "},
   {"退出          "},
};

unsigned char menue_b4[8][14]=
{
   {"1 号控制      "},
   {"2 号控制      "},
   {"3 号控制      "},
   {"4 号控制      "},
   {"↑            "},
   {"↓            "},
   {"●            "},
   {"退出          "},
};
 

unsigned char menue_down(unsigned char menue_which,unsigned char menue_where,unsigned char num)
{//1
  
     if(menue_where<dis_num-1)
   {//2
     menue_where++;
   
   }//2
     else if(menue_where==dis_num-1)
     {//3
      menue_which++;
      if (menue_which==num-dis_num+1)
         {//33
        menue_which=0;
        menue_where=0;
         }//33
  
     } //3 
     unsigned char menue_temp=(menue_which<<4)|menue_where;
     return menue_temp;

}//1

unsigned char menue_up(unsigned char menue_which,unsigned char menue_where,unsigned char num)
{
      if(menue_where>0)
     {//9
       menue_where--;
        
      
     }//9
      else if(menue_where==0)
      {//11
        menue_which--;
         
       }//11
     
        if(menue_which==0xff)//menu_which由0--后变为0xff
        {//12
          menue_where=dis_num-1;
          menue_which=num-dis_num;
        }//12
      
       unsigned char menue_temp=(menue_which<<4)|menue_where;
       return menue_temp;
}
void menue_work()
{
   if(key_value==3)
         {
           alarm_flag=0;
         }
  if(key_value==2)
        {
          menue_state=1;
        }
}
void menue_a1_work()
{//////////////////////////////////////////

   if(key_value==3)
        {//55
           unsigned char temp= menue_up( menue_a1_which,menue_a1_where, menue_a1_num);
           menue_a1_which=temp>>4;
           menue_a1_where=temp&0x0f;
        }//55
       else if(key_value==1)
        {//66
          unsigned char temp= menue_down( menue_a1_which,menue_a1_where, menue_a1_num);
           menue_a1_which=temp>>4;
           menue_a1_where=temp&0x0f;
        }//66
      else if(key_value==2)
      {
        menue_state=menue_a1_which+menue_a1_where+2;
         if(menue_state==menue_a1_num+1)
         {
           menue_state=0;//回到最初状态
           menue_a1_which=0;
           menue_a1_where=0;
         }
       }
}////////////////////////////////////////
void menue_b1_work()
{//5555
     if(key_value==2)
        {
          if(++menue_b1_state>5)
              {
              menue_b1_state=0;
              menue_state=1;
              }
         }
        else if( key_value==3)
        {///////////////////////////////////
         W_Data(0x8e,0x00);      //允许写入
        switch(menue_b1_state)
        {//5
        case 1: if(++dis_time_temp[0]>2) dis_time_temp[0]=0;
        
                W_Data(Hour,(dis_time_temp[0]<<4)|dis_time_temp[1]);
                break;
         case 2: if(dis_time_temp[0]<2)
                  {
                  if(++dis_time_temp[1]>9) dis_time_temp[1]=0;
                W_Data(Hour,(dis_time_temp[0]<<4)|dis_time_temp[1]);
                  }
                  else
                  {
                     if(++dis_time_temp[1]>4) dis_time_temp[1]=0;
                W_Data(Hour,(dis_time_temp[0]<<4)|dis_time_temp[1]);
                  }
                 break;
        case 3: if(++dis_time_temp[3]>5) dis_time_temp[3]=0;
                W_Data(Minutes,(dis_time_temp[3]<<4)|dis_time_temp[4]);
                break;
         case 4: if(++dis_time_temp[4]>9) dis_time_temp[4]=0;
                W_Data(Minutes,(dis_time_temp[3]<<4)|dis_time_temp[4]);
                break;
        case 5:  dis_time_temp[6]=0;
                 dis_time_temp[7]=0;
                 W_Data(Seconds,(dis_time_temp[6]<<4)|dis_time_temp[7]);
                 break;
       
        }//5
        W_Data(0x8e,0x80);      // 禁止写入
        }///////////////////////////////// 
       else if( key_value==1)
        {///////////////////////////////////
          W_Data(0x8e,0x00);      //允许写入  
        switch(menue_b1_state)
        {//5
        case 1: if(dis_time_temp[0]--==0) dis_time_temp[0]=2;
                W_Data(Hour,(dis_time_temp[0]<<4)|dis_time_temp[1]);
                break;
         case 2: if(dis_time_temp[0]<2)
                  {
                  if(dis_time_temp[1]--==0) dis_time_temp[1]=9;
                W_Data(Hour,(dis_time_temp[0]<<4)|dis_time_temp[1]);
                  }
                  else
                  {
                     if(dis_time_temp[1]--==0) dis_time_temp[1]=4;
                W_Data(Hour,(dis_time_temp[0]<<4)|dis_time_temp[1]);
                  }
                 break;
                 
        case 3: if(dis_time_temp[3]--==0) dis_time_temp[3]=5;
                W_Data(Minutes,(dis_time_temp[3]<<4)|dis_time_temp[4]);
                break;
         case 4: if(dis_time_temp[4]--==0) dis_time_temp[4]=9;
                W_Data(Minutes,(dis_time_temp[3]<<4)|dis_time_temp[4]);
                break;
        case 5:  dis_time_temp[6]=0;
                 dis_time_temp[7]=0;
                 W_Data(Seconds,(dis_time_temp[6]<<4)|dis_time_temp[7]);
                 break;
        
        }//5
        W_Data(0x8e,0x80);      // 禁止写入
        }/////////////////////////////////  
}//5555
void menue_b2_work()
{
   if(key_value==2)
        {
          if(++menue_b2_state>7)
              {
              menue_b2_state=0;
               menue_state=1;
              }
         }
        else if( key_value==3)
        {///////////////////////////////////
         W_Data(0x8e,0x00);      //允许写入
        switch(menue_b2_state)
        {//5
        case 1: if(++dis_date_temp[4]>9) dis_date_temp[4]=0;
        
                W_Data(Year,(dis_date_temp[4]<<4)|dis_date_temp[5]);
                break;
         case 2:  
                  if(++dis_date_temp[5]>9) dis_date_temp[5]=0;
                W_Data(Year,(dis_date_temp[4]<<4)|dis_date_temp[5]);
                   
                 break;
                 
        case 3: if(++dis_date_temp[7]>1) dis_date_temp[7]=0;
                W_Data(Month,(dis_date_temp[7]<<4)|dis_date_temp[8]);
                break;
                
         case 4: if(dis_date_temp[7]<1)
                 {
                if(++dis_date_temp[8]>9) dis_date_temp[8]=0;
                W_Data(Month,(dis_date_temp[7]<<4)|dis_date_temp[8]);
                 }
                 else
                 {
                    if(++dis_date_temp[8]>4) dis_date_temp[8]=0;
                W_Data(Month,(dis_date_temp[7]<<4)|dis_date_temp[8]);
                 }
                break;
                
        case 5: if(++dis_date_temp[10]>3) dis_date_temp[10]=0;
        
                W_Data(Year,(dis_date_temp[10]<<4)|dis_date_temp[11]);
                break;
         case 6:  
                  if(++dis_date_temp[11]>9) dis_date_temp[11]=0;
                W_Data(Year,(dis_date_temp[10]<<4)|dis_date_temp[11]);
                   
                 break;
          case 7:  
                  if(++rdata[5]>7) rdata[5]=1;
                W_Data(Day,rdata[5]);
                   
                 break;
       
        }//5
        W_Data(0x8e,0x80);      // 禁止写入
        }///////////////////////////////// 
       else if( key_value==1)
        {///////////////////////////////////
          W_Data(0x8e,0x00);      //允许写入  
        switch(menue_b2_state)
        {//5
         case 1: if(dis_date_temp[4]--==0) dis_date_temp[4]=9;
        
                W_Data(Year,(dis_date_temp[4]<<4)|dis_date_temp[5]);
                break;
         case 2:  
                  if(dis_date_temp[5]--==0) dis_date_temp[5]=9;
                W_Data(Year,(dis_date_temp[4]<<4)|dis_date_temp[5]);
                   
                 break;
                 
        case 3: if(dis_date_temp[7]--==0) dis_date_temp[7]=1;
                W_Data(Month,(dis_date_temp[7]<<4)|dis_date_temp[8]);
                break;
                
         case 4: if(dis_date_temp[7]<1)
                 {
                if(dis_date_temp[8]--==0) dis_date_temp[8]=9;
                W_Data(Month,(dis_date_temp[7]<<4)|dis_date_temp[8]);
                 }
                 else
                 {
                    if(dis_date_temp[8]--==0) dis_date_temp[8]=4;
                W_Data(Month,(dis_date_temp[7]<<4)|dis_date_temp[8]);
                 }
                break;
                
        case 5: if(dis_date_temp[10]--==0) dis_date_temp[10]=3;
        
                W_Data(Date,(dis_date_temp[10]<<4)|dis_date_temp[11]);
                break;
         case 6:  
                  if(dis_date_temp[11]--==0) dis_date_temp[11]=9;
                W_Data(Date,(dis_date_temp[10]<<4)|dis_date_temp[11]);
                   
                 break;
           case 7:  
                  if(rdata[5]--==0) rdata[5]=7;
                W_Data(Day,rdata[5]);
                   
                 break;        
        
        }//5
        W_Data(0x8e,0x80);      // 禁止写入
        }/////////////////////////////////  
}


void menue_b3_work()
{
   if(key_value==3)
       {//55 
            if(menue_b3_state==0)
            {
             unsigned char temp= menue_up( menue_b3_which,menue_b3_where, menue_b3_num);
             menue_b3_which=temp>>4;
             menue_b3_where=temp&0x0f;
            }
            else if(menue_b3_state==1)
            {//56
               unsigned char temp=Flash_read_char(menue_b3_which+menue_b3_where+1);
                if(++temp>24) temp=0;	
                 Flash_write_char (menue_b3_which+menue_b3_where+1,temp);
            }//56
            else if(menue_b3_state==2)
            {
               unsigned char temp=Flash_read_char(menue_b3_which+menue_b3_where+5);
               temp^=0x01;
               
               Flash_write_char (menue_b3_which+menue_b3_where+5,temp);
            }
       }//55
       else if(key_value==1)
       {//66
          if(menue_b3_state==0)
            {//78
          unsigned char temp= menue_down( menue_b3_which,menue_b3_where, menue_b3_num);
           menue_b3_which=temp>>4;
           menue_b3_where=temp&0x0f;
            }//78
          else if(menue_b3_state==1)
            {//79
                unsigned char temp=Flash_read_char(menue_b3_which+menue_b3_where+1);
                if(temp--==0) temp=24;	
                 Flash_write_char (menue_b3_which+menue_b3_where+1,temp);
            }//79
              else if(menue_b3_state==2)
              {
                 unsigned char temp=Flash_read_char(menue_b3_which+menue_b3_where+5);
                 temp^=0x01;
                  
                 Flash_write_char (menue_b3_which+menue_b3_where+5,temp);
              }
       }//66
      else if(key_value==2)
      {
       
          if(menue_b3_state==2)
          {
            menue_b3_state=0;
          }
          else
          {
          menue_b3_state++;
          }
          if((menue_b3_which+menue_b3_where+1)==menue_b3_num)
           {
             menue_b3_state=0;
             menue_state=1;
             menue_b3_which=0;
             menue_b3_where=0;
            }
           
            
      }
}





void menue_b4_work()
{
      if(key_value==3)
       {//55
         
            if(menue_b3_state==0)
            {
           unsigned char temp= menue_up( menue_b4_which,menue_b4_where, menue_b4_num);
           menue_b4_which=temp>>4;
           menue_b4_where=temp&0x0f;
            }
            
              
            
       }//55
       else if(key_value==1)
       {//66
          if(menue_b3_state==0)
            {
          unsigned char temp= menue_down( menue_b4_which,menue_b4_where, menue_b4_num);
           menue_b4_which=temp>>4;
           menue_b4_where=temp&0x0f;
            }
       }//66
      else if(key_value==2)
      {
        if(menue_b4_state==1) 
        {
          menue_b4_state=0;
         } 
         else if((menue_b4_which+menue_b4_where+1)==menue_b4_num)
           {
             menue_state=1;
             menue_b4_which=0;
             menue_b4_where=0;
             
           }
          else
               {
                menue_b4_state=1; 
               }
      }
     
}

void menue_state_change()
{
   switch(menue_state)
  {
  case 0:   
          
          menue_work();
          key_value=0; 
          break;
  case 1:  
         menue_a1_work();
         key_value=0; 
         break;      
  case 2: 
    
         menue_b1_work();
         key_value=0; 
          break;
  
  case 3: 
           menue_b2_work();
           key_value=0; 
            break;   
       
  case 4: 
          menue_b3_work();
          key_value=0; 
          break; 
  case 5: 
          menue_b4_work();
          key_value=0; 
           break;  
   
  }

}

⌨️ 快捷键说明

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