📄 main.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 + -