12864液晶显示程序
源代码在线查看: 12864.c
/****************************************************************************/
/*
文 件 名: 12864.c
说 明: 12864驱动程序
作 者: 郭天祥
日 期: 2008.9
*/
/*****************************************************************************/
#include "..\inc\12864.h"
#include "..\inc\sysUtils.h"
//总线地址声明
volatile U8 * LCD12864_MAdd = (volatile U8 *)(0x6000000);
#define LCD12864_WR_H() rPDATC|=0x01;
#define LCD12864_WR_L() rPDATC&=~0x01;
void lcd_wcmd(U8 cmd);
void lcd_wdat(U8 dat);
void lcd_init(void);
void lcd_pos(U8 X,U8 Y);
static U8 dis1[] = {"天祥电子"};
static U8 dis2[] = {"www.txmcu.com"};
static U8 dis3[] = {"TX-1C 学习板 "};
static U8 dis4[] = {"是您最好的选择! "};
U8 IRDIS[2];
U8 IRCOM[4];
/*******************************************************************/
/* */
/*写指令数据到LCD */
/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */
/* */
/*******************************************************************/
void lcd_wcmd(U8 cmd)
{
sysUtilsUSecDelay(150000);
LCD12864_WR_L();
* LCD12864_MAdd=cmd;
sysUtilsUSecDelay(15000);
}
/*******************************************************************/
/* */
/*写显示数据到LCD */
/*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */
/* */
/*******************************************************************/
void lcd_wdat(U8 dat)
{
sysUtilsUSecDelay(150000);
LCD12864_WR_H();
* LCD12864_MAdd=dat;
sysUtilsUSecDelay(15000);
}
/*******************************************************************/
/* */
/* LCD初始化设定 */
/* */
/*******************************************************************/
void lcd_init(void)
{
//LCD_PSB = 1; //并口方式
lcd_wcmd(0x34); //扩充指令操作
sysUtilsUSecDelay(5000);/*delay(5);*/
lcd_wcmd(0x30); //基本指令操作
sysUtilsUSecDelay(5000);/*delay(5);*/
lcd_wcmd(0x0C); //显示开,关光标
sysUtilsUSecDelay(5000);/*delay(5);*/
lcd_wcmd(0x01); //清除LCD的显示内容
sysUtilsUSecDelay(5000);/*delay(5);*/
}
/*********************************************************
函数:void LCD12864_Test(void)
功能:LCD12864测试程序
*********************************************************/
void LCD12864_Test(void)
{
U8 i;
sysUtilsUSecDelay(5000);/*delay(10);*/ //延时
lcd_init(); //初始化LCD
lcd_pos(0,0); //设置显示位置为第一行的第1个字符
i = 0;
while(dis1[i] != '\0')
{ //显示字符
lcd_wdat(dis1[i]);
i++;
}
lcd_pos(1,0); //设置显示位置为第二行的第1个字符
i = 0;
while(dis2[i] != '\0')
{
lcd_wdat(dis2[i]); //显示字符
i++;
}
lcd_pos(2,0); //设置显示位置为第三行的第1个字符
i = 0;
while(dis3[i] != '\0')
{
lcd_wdat(dis3[i]); //显示字符
i++;
}
lcd_pos(3,0); //设置显示位置为第四行的第1个字符
i = 0;
while(dis4[i] != '\0')
{
lcd_wdat(dis4[i]); //显示字符
i++;
}
}
/*********************************************************/
/* */
/* 设定显示位置 */
/* */
/*********************************************************/
void lcd_pos(U8 X,U8 Y)
{
U8 pos;
if (X==0)
{X=0x80;}
else if (X==1)
{X=0x90;}
else if (X==2)
{X=0x88;}
else if (X==3)
{X=0x98;}
pos = X+Y ;
lcd_wcmd(pos); //显示地址
}