微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PC2004 LCM驱动

PC2004 LCM驱动

时间:11-11 来源:互联网 点击:
#include

/***********************************************************
文件名称:POWERTIP的PC2004系列字符型LCM模块的驱动程序
作 者: Free
版 本: v01
说 明: 地址0x80~0xa7,0xc0~0xe7;
第一行:0x80~0x96;第二行:0xc0~0xd6;
第三行:0x97~0xa7;第四行:0xd7~0xe7;
修改记录:无
***********************************************************/
typedef unsigned char Uchar;
typedef unsigned int Uint;

#define LCDCmdPort P0
#define LCDDataPort P0
sbit LCD_RS = P2^7;
sbit LCD_E = P2^6;

/* LCD忙检测函数 */
void LCDBusy(void)
{
Uchar i;
for(i=0;i<80;i++)
{}
}
/* LCD控制命令函数 */
void LCDCmd(char c)
{
LCDBusy();
LCDCmdPort=c;
LCD_RS=0;
LCD_E=1;
LCD_E=0;
}
/* LCD数据输入函数 */
void LCDData(char d)
{
LCDBusy();
LCDDataPort=d;
LCD_RS=1;
LCD_E=1;
LCD_E=0;
}
/* LCD初始化函数 */
void LCDInit(void)
{
LCD_E=1;
LCD_RS=1;
LCDCmd(0x38); //function set
LCDCmd(0x0c); //display on/off
LCDCmd(0x06); //set entry mode
LCDCmd(0x02); //return home
LCDCmd(0x01); //clear display
}
/* 显示字符串函数,addr显示字符串起始地址 */
void LCDStr(Uchar addr,Uchar *s)
{
idata int d=0;
LCDCmd(addr); //显示地址//
while (s[d]!=0x00)
LCDData(s[d++]); // char of LCM //
}
/*p为字符串或数组首地址,len为字符串个数,该数组应是≤4*20的二维数组或≤80的一维数组*/
void LCDSz(Uchar *p,Uchar len)
{
Uchar i;
LCDCmd(0x80); //显示地址//
while(*p!=0x00)
{for(i=0;i{LCDData(*p++);}
break;
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top