430驱动的12864图形点阵LCD
时间:11-13
来源:互联网
点击:
#include "msp430x16x.h"
#include "INCLUDES.H"
#include "CONSTANTS.H"
#include "FUNCTIONS.H"
#include "GLOBALS.H"
/************************************************
函 数 名: CheckLcdBusy()
功 能:检查是否LCD忙碌
说 明:
调 用:
全局变量:
入口参数:无
出口参数:无
返 回 值:无
************************************************/
void CheckLcdBusy(void){
LCD_DATA_DIR = 0x00;
LCD_DATA_OUT = 0xFF;
LCD_CON_OUT &= ~LCD_E; //E=0
LCD_CON_OUT |= LCD_RW; //RW=1
LCD_CON_OUT &= ~LCD_RS; //RS=0
while(LCD_DATA_IN & LCD_BF)
{
LCD_CON_OUT |= LCD_E; //E=1
Delay_ms( 1 );
LCD_CON_OUT &= ~LCD_E; //E=0
}
LCD_DATA_DIR = 0xFF;
}
/************************************************
函 数 名: LcdWriteCommand()
功 能:写入控制命令到LCD
说 明:
调 用:
全局变量:
入口参数:command: LCD控制指令
出口参数:无
返 回 值:无
************************************************/
void LcdWriteCommand(uchar command){
CheckLcdBusy();
LCD_CON_OUT &= ~LCD_E; //E=0
LCD_CON_OUT &= ~LCD_RW; //RW=0
LCD_CON_OUT &= ~LCD_RS; //RS=0
LCD_CON_OUT |= LCD_E; //E=1
LCD_DATA_OUT = command;
LCD_CON_OUT &= ~LCD_E; //E=0
}
/************************************************
函 数 名: LcdWriteData()
功 能:写入显示数据到LCD
说 明:
调 用:
全局变量:
入口参数:data: 显示数据
出口参数:无
返 回 值:无
************************************************/
void LcdWriteData(uchar data){
CheckLcdBusy();
LCD_CON_OUT &= ~LCD_E; //E=0
LCD_CON_OUT &= ~LCD_RW; //RW=0
LCD_CON_OUT |= LCD_RS; //RS=1
LCD_CON_OUT |= LCD_E; //E=1
LCD_DATA_OUT = data;
LCD_CON_OUT &= ~LCD_E; //E=0
}
/************************************************
函 数 名: ClearLCD()
功 能:清除LCD文本屏幕
说 明:
调 用:
全局变量:
入口参数:无
出口参数:无
返 回 值:无
************************************************/
void ClearLcd( void ){
LcdWriteCommand( 0x01 );
}
/************************************************
函 数 名: LcdInit()
功 能:初始化LCD
说 明:
调 用:
全局变量:
入口参数:无
出口参数:无
返 回 值:无
************************************************/
void LcdInit(void){
LCD_RST0; //RST=0
Delay_ms( 5 );
LCD_PSB; //PSB=1
LCD_RST1; //RST=1
LcdWriteCommand( 0x30 ); //基本指令操作
Delay_ms( 5 );
LcdWriteCommand( 0x06 );
Delay_ms( 5 );
ClearLcd();
Delay_ms( 5 );
LcdWriteCommand( 0x0C ); //开显示,关光标,不闪烁
Delay_ms( 5 );
LcdWriteCommand( 0x02 );
}
/************************************************
函 数 名: DispString()
功 能:显示字符串
说 明:
调 用:
全局变量:
入口参数:X: 行(0-3)
Y: 列(0-7)
speed: 显示速度(毫秒)
*msg: 字符数据
出口参数:无
返 回 值:无
************************************************/
void DispString(uchar X,uchar Y,uchar speed,uchar *msg) {
if(X == 0)
{
X = 0x80;
}
else if(X == 1)
{
X = 0x90;
}
else if(X == 2)
{
X = 0x88;
}
else if(X == 3)
{
X = 0x98;
}
Y += X;
LcdWriteCommand( Y );
Delay_ms( 5 );
while(*msg)
{
LcdWriteData( *msg++ );
Delay_ms( speed );
}
}
#include "INCLUDES.H"
#include "CONSTANTS.H"
#include "FUNCTIONS.H"
#include "GLOBALS.H"
/************************************************
函 数 名: CheckLcdBusy()
功 能:检查是否LCD忙碌
说 明:
调 用:
全局变量:
入口参数:无
出口参数:无
返 回 值:无
************************************************/
void CheckLcdBusy(void){
LCD_DATA_DIR = 0x00;
LCD_DATA_OUT = 0xFF;
LCD_CON_OUT &= ~LCD_E; //E=0
LCD_CON_OUT |= LCD_RW; //RW=1
LCD_CON_OUT &= ~LCD_RS; //RS=0
while(LCD_DATA_IN & LCD_BF)
{
LCD_CON_OUT |= LCD_E; //E=1
Delay_ms( 1 );
LCD_CON_OUT &= ~LCD_E; //E=0
}
LCD_DATA_DIR = 0xFF;
}
/************************************************
函 数 名: LcdWriteCommand()
功 能:写入控制命令到LCD
说 明:
调 用:
全局变量:
入口参数:command: LCD控制指令
出口参数:无
返 回 值:无
************************************************/
void LcdWriteCommand(uchar command){
CheckLcdBusy();
LCD_CON_OUT &= ~LCD_E; //E=0
LCD_CON_OUT &= ~LCD_RW; //RW=0
LCD_CON_OUT &= ~LCD_RS; //RS=0
LCD_CON_OUT |= LCD_E; //E=1
LCD_DATA_OUT = command;
LCD_CON_OUT &= ~LCD_E; //E=0
}
/************************************************
函 数 名: LcdWriteData()
功 能:写入显示数据到LCD
说 明:
调 用:
全局变量:
入口参数:data: 显示数据
出口参数:无
返 回 值:无
************************************************/
void LcdWriteData(uchar data){
CheckLcdBusy();
LCD_CON_OUT &= ~LCD_E; //E=0
LCD_CON_OUT &= ~LCD_RW; //RW=0
LCD_CON_OUT |= LCD_RS; //RS=1
LCD_CON_OUT |= LCD_E; //E=1
LCD_DATA_OUT = data;
LCD_CON_OUT &= ~LCD_E; //E=0
}
/************************************************
函 数 名: ClearLCD()
功 能:清除LCD文本屏幕
说 明:
调 用:
全局变量:
入口参数:无
出口参数:无
返 回 值:无
************************************************/
void ClearLcd( void ){
LcdWriteCommand( 0x01 );
}
/************************************************
函 数 名: LcdInit()
功 能:初始化LCD
说 明:
调 用:
全局变量:
入口参数:无
出口参数:无
返 回 值:无
************************************************/
void LcdInit(void){
LCD_RST0; //RST=0
Delay_ms( 5 );
LCD_PSB; //PSB=1
LCD_RST1; //RST=1
LcdWriteCommand( 0x30 ); //基本指令操作
Delay_ms( 5 );
LcdWriteCommand( 0x06 );
Delay_ms( 5 );
ClearLcd();
Delay_ms( 5 );
LcdWriteCommand( 0x0C ); //开显示,关光标,不闪烁
Delay_ms( 5 );
LcdWriteCommand( 0x02 );
}
/************************************************
函 数 名: DispString()
功 能:显示字符串
说 明:
调 用:
全局变量:
入口参数:X: 行(0-3)
Y: 列(0-7)
speed: 显示速度(毫秒)
*msg: 字符数据
出口参数:无
返 回 值:无
************************************************/
void DispString(uchar X,uchar Y,uchar speed,uchar *msg) {
if(X == 0)
{
X = 0x80;
}
else if(X == 1)
{
X = 0x90;
}
else if(X == 2)
{
X = 0x88;
}
else if(X == 3)
{
X = 0x98;
}
Y += X;
LcdWriteCommand( Y );
Delay_ms( 5 );
while(*msg)
{
LcdWriteData( *msg++ );
Delay_ms( speed );
}
}
430驱动12864图形点阵LC 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)