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

📄 main.c

📁 LCD显示通用程序
💻 C
字号:
/*
               
            MSP430F4XX系列LCD显示通用驱动演示范例程序


     说明:该程序演示LCD_Display所包含的常用的LCD显示功能
 
 
  (C)西安电子科技大学 测控技术与仪器教研中心 编写:谢楷 2008/01/30 
  
*/
//
//
//                  MSP430F4XX
//               +---------------+         Digital Number
//               |               |         左8+ 7654321右
//               |               |    +----------------------+
//               |A0+      S0-S15|--->|   SoftBaugh LCD_048  |
//               |A0-   COM0-COM3|--->|   7.1Digit,4-Mux LCD |
//               |P2.0           |    +----------------------+
//               |P2.1           |
//               |VRef    R03-R33|<---LCD Voltage Ladder Rs
//               |               |
//               |       XIN/XOUT|<---32.768KHz Watch Crystal
//               |               |
//               +---------------+


#include "msp430x42x.h"    /*单片机寄存器头文件*/
#include "LCD_Display.h"   /*显示驱动库头文件*/
unsigned int Count;
char     BT_Flag;

/****************************************************************************
* 名    称:Cpu_Delay()
* 功    能:靠CPU空操作延迟。
* 入口参数:Time: 延迟时间(单位ms)
* 出口参数:无
* 说    明: MCLK时钟频率1.048MHz。该函数一直开启CPU耗电很大,不推荐使用。
****************************************************************************/
void Cpu_Delay(int Time)
{ int i;
  for(;Time>0;Time--)
  {
   for(i=0;i<207;i++);
  }
}

/****************************************************************************
* 名    称:Cpu_SleepDelay()
* 功    能:靠CPU休眠实现延迟。
* 入口参数:Time: BasicTimer中断次数
* 出口参数:无
* 说    明: 需要设置BasicTimer定时器,并开启中断。该延迟函数极省电
****************************************************************************/
void Cpu_SleepDelay(int Time)
{ 
  for(;Time>0;Time--)
  {
   while(BT_Flag==0) LPM3;  //只有BT中断才能唤醒CPU
   BT_Flag=0;    
  }
}

/****************************************************************************
* 名    称:BT_ISR()
* 功    能:定时唤醒CPU。
* 入口参数:无
* 出口参数:无
****************************************************************************/
#pragma vector = BASICTIMER_VECTOR
__interrupt void BT_ISR(void)          //1/8秒一次中断(由BasicTimer所产生)
{
  BT_Flag=1;      
   __low_power_mode_off_on_exit();       //唤醒CPU
}
/****************************************************************************
* 名    称:main()
* 功    能:主程序。演示LCD显示的用法。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void main()
{   unsigned int i;
    WDTCTL=WDTPW+WDTHOLD;  //停止看门狗
    FLL_CTL0|=XCAP18PF;	  //配置晶振负载电容
    P1DIR|=BIT0+BIT1+BIT2+BIT3+BIT4;
    P2DIR|=BIT0+BIT1+BIT2+BIT3;        //悬空的IO口要置为输出
    P1OUT =0;P2OUT =0;                 //不确定电平会造成IO耗电
 
    BTCTL = BTDIV+BT_fCLK2_DIV16;     // BasicTimer 1/8秒中断一次  
    LCD_Init();                       // LCD初始化
    IE2 |= BTIE;                      // 允许BasicTimer中断 
    _EINT();                          //总中断
    while(1)
    {  
       for(i=0;i<50;i++)
       {
         Count++; 
         LCD_DisplayNumber(Count);     //  显示变量
         LCD_InsertChar(PP);           //  插入字符
         Cpu_SleepDelay(1); //延迟1/8秒
       }
       
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayLongNumber(1234567);     // 显示1234567
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayLongNumber(123456);      // 显示123456
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayNumber(12345);       // 显示12345
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayNumber(1234);        // 显示1234
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayNumber(123);         // 显示123
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayNumber(12);          // 显示12
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayNumber(1);           // 显示1  (演示无效0消隐)
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayNumber(0);           // 显示0  
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayNumber(-1);          // 显示-1 
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayNumber(-12);         // 显示-12
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayNumber(-123);        // 显示-123 
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayNumber(-1234);       // 显示-1234 
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayNumber(-12345);      // 显示-12345 
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayLongNumber(-123456);     // 显示-123456(演示负数显示)      

       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayLongDecimal(1234567,0);     // 显示1234567        
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayLongDecimal(1234567,1);     // 显示123456.7    
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayLongDecimal(1234567,2);     // 显示12345.67           
       Cpu_SleepDelay(8); //延迟1秒
       LCD_DisplayLongDecimal(1234567,3);     // 显示1234.567    
       Cpu_SleepDelay(8); //延迟1秒         (演示小数显示)

       LCD_DisplayDecimal(12,0);     // 显示12    
       Cpu_SleepDelay(8); //延迟1秒       
       LCD_DisplayDecimal(12,1);     // 显示1.2    
       Cpu_SleepDelay(8); //延迟1秒  
       LCD_DisplayDecimal(12,2);     // 显示0.12    
       Cpu_SleepDelay(8); //延迟1秒  
       LCD_DisplayDecimal(12,3);     // 显示0.012    
       Cpu_SleepDelay(8); //延迟1秒          (演示纯小数显示)

       
       
       LCD_DisplayDecimal(-12345,0);     // 显示-12345    
       Cpu_SleepDelay(8); //延迟1秒       
       LCD_DisplayDecimal(-12345,1);     // 显示-1234.5    
       Cpu_SleepDelay(8); //延迟1秒  
       LCD_DisplayDecimal(-12345,2);     // 显示-123.45    
       Cpu_SleepDelay(8); //延迟1秒  
       LCD_DisplayDecimal(-12345,3);     // 显示-12.345    
       Cpu_SleepDelay(8); //延迟1秒      (演示负小数显示)  

     

       LCD_DisplayChar(FF,0);  
       LCD_DisplayChar(EE,1); 
       LCD_DisplayChar(DD,2);  
       LCD_DisplayChar(CC,3); 
       LCD_DisplayChar(BB,4);  
       LCD_DisplayChar(AA,5);
       LCD_DisplayChar(PP,6);         //  显示PABCDEG
       Cpu_SleepDelay(24); //延迟3秒     (演示字母显示)
       
       LCD_DisplayDecimal(12,1);
       LCD_DisplayChar(HH,6);       
       LCD_DisplayChar(EE,5);
       LCD_DisplayChar(LL,4);
       LCD_DisplayChar(PP,3);          //  显示HELP 1.2  
       Cpu_SleepDelay(24); //延迟3秒      (演示字母+数据显示)       
       for(i=0;i<5;i++)                
       {
         LCD_OFF();                        //演示关闭/开启LCD
         Cpu_SleepDelay(4); //延迟0.5秒 
         LCD_ON();
         Cpu_SleepDelay(4); //延迟0.5秒 
       }  
    }
}

⌨️ 快捷键说明

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