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

📄 msp430f149的4乘4键盘中断+液晶显示程序.txt

📁 MSP430F2274的4乘4键盘中断+液晶显示程序 采用中断程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
          nRes = 11;
        }       
        nP13 = P1IN & BIT3;
     if (nP13 == 0) 
        {
         nRes = 12;
         //P5OUT=0x00;
        }       
        //P1.5输出低电平
     P1OUT = ~(BIT5);
        Delay(50);
     nP10 = P1IN & BIT0;
     if (nP10 == 0) 
        {
          nRes = 5;
        }      
        nP11 = P1IN & BIT1;
     if (nP11 == 0) 
        {
          nRes = 6;
        }     
        nP12 = P1IN & BIT2;
        if (nP12 == 0) 
        {
         nRes = 7;
        }    
        nP13 = P1IN & BIT3;
     if (nP13 == 0) 
        {
          nRes = 8;
          //P5OUT=0x00;
        }
     //P1.4输出低电平
        P1OUT = ~(BIT4);     
        nP10 = P1IN & BIT0;
     if (nP10 == 0) 
        {
         nRes = 1;
        }       
        nP11 = P1IN & BIT1;
     if (nP11 == 0) 
        {
          nRes = 2;
        }       
        nP12 = P1IN & BIT2;
     if (nP12 == 0)
        {
          nRes = 3;
        }
       
        nP13 = P1IN & BIT3;
     if (nP13 == 0)
        {
          nRes = 4;  
        }
     P1OUT = 0x00;//恢复以前值。
     

     //读取各个管脚的状态

     for(;;)
     {
          if((P1IN&0x0F)==0x0F )
           {
                 
                 break;//等待松开按键
           }
     }
   
     return nRes;
}
*/
/**************************************************************************/
// 处理来自端口 1 的中断
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR(void) 
{
  int key_value;
  Delay(30000);
  key_value=KeyProcess();
   
  switch(key_value)
  {
  case 1:
       // Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Clear_Second_Line();
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0xC0); //设置DDRAM的初始地址  
        Write_Data('8');        
        break;          
  case 2:
        //Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Clear_Second_Line();
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0xC0); //设置DDRAM的初始地址  
        Write_Data('4');        
        break;      
  
  case 3: 
       // Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Clear_Second_Line();
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0xC0); //设置DDRAM的初始地址  
        Write_Data('0');        
        break; 
  case 4:
        Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0x80);//设置DDRAM的初始地址
       for(unsigned int i=0;b!='\0';i++)  //在液晶第二行输出
       {
          Write_Data('b');        
       }
       break;
  
  case 5:
        //Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Clear_Second_Line();
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0xC0); //设置DDRAM的初始地址  
        Write_Data('9');        
        break; 
  case 6:
        //Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Clear_Second_Line();
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0xC0); //设置DDRAM的初始地址  
        Write_Data('5');        
        break; 
  case 7:
        //Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Clear_Second_Line();
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0xC0); //设置DDRAM的初始地址  
        Write_Data('1');        
        break; 
  case 8:     
        Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0x80);//设置DDRAM的初始地址
       for(unsigned int i=0;c!='\0';i++)  //在液晶第二行输出
       {
          Write_Data('c');        
       }
       break;
  case 9:
        //Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Clear_Second_Line();
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0xC0); //设置DDRAM的初始地址  
        Write_Data('.');        
        break; 
  case 10:
        //Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Clear_Second_Line();
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0xC0); //设置DDRAM的初始地址  
        Write_Data('6');        
        break; 
  case 11:
        //Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Clear_Second_Line();
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0xC0); //设置DDRAM的初始地址  
        Write_Data('2');        
        break; 
  case 12:
        Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0x80);//设置DDRAM的初始地址
       for(unsigned int i=0;d!='\0';i++)  //在液晶第二行输出
       {
          Write_Data('d');        
       }
      break;
  case 13:
        //Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Clear_Second_Line();
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0xC0); //设置DDRAM的初始地址  
        Write_Data('a');        
        break; 
  case 14:
        //Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Clear_Second_Line();
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0xC0); //设置DDRAM的初始地址  
        Write_Data('7');        
        break; 
  case 15:
        //Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Clear_Second_Line();
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0xC0); //设置DDRAM的初始地址  
        Write_Data('3');        
        break; 
  case 16:
        Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元
        Delay(5000);
        Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移
        Delay(500);
        Write_Command(0x80); //设置DDRAM的初始地址  
       for(unsigned int i=0;e!='\0';i++)  //在液晶第二行输出
       {
          Write_Data('e');        
       }       
        break;  
  }
 /*******************************************************switch语句结束******/    
   if(P1IFG & BIT0)
    {          
         P1IFG &= ~(BIT0);// 清除中断标志位
    }
    if(P1IFG & BIT1)
    {
         P1IFG &= ~(BIT1);// 清除中断标志位
    }
    if(P1IFG & BIT2)
    {
         P1IFG &= ~(BIT2);// 清除中断标志位
    }
     if(P1IFG & BIT3)
    {
         P1IFG &= ~(BIT3);// 清除中断标志位
    }       
}
/**************************************************************************/
void main()
{
  WDTCTL=WDTPW+WDTHOLD;  //禁止看门狗
  Delay(50000);          //延时,等待液晶电压上升,大约需要30ms
  
  _DINT();               //禁止中断,一般在设置硬件时都要禁止中断
  Init_CLK();
  Init_Port();
  Init_LCD();
  _EINT();               //打开中断
  
/*  for(unsigned int i=0;a!='\0';i++)
    {
         Write_Data('a');     
    }
*/
  
 /* Write_Command(0xC0);   //写入液晶第二行的手地址
  for(unsigned int i=0;b!='\0';i++)  //在液晶第二行输出
    {
         Write_Data(b);        
    }*/
  while(1)
  {};
}
/**************************************************************************/

⌨️ 快捷键说明

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