lcd16824驱动程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#define fuc_PERIPH SYSCTL_PERIPH_GPIOE
#define fuc_PORT GPIO_PORTE_BASE
#define rs_PIN GPIO_PIN_0
#define rw_PIN GPIO_PIN_1
#define en_PIN GPIO_PIN_2
#define lcd_PERIPH SYSCTL_PERIPH_GPIOD
#define lcd_PORT GPIO_PORTD_BASE
#define lcd_PINS 0xff
#define SysCtlPeriEnable SysCtlPeripheralEnable
#define SysCtlPeriDisable SysCtlPeripheralDisable
#define GPIOPinTypeIn GPIOPinTypeGPIOInput
#define GPIOPinTypeOut GPIOPinTypeGPIOOutput
#define GPIOPinTypeOD GPIOPinTypeGPIOOutputOD
#define FIRST_ADDR 0 //定义字符/汉字显示起始位置
unsigned char CGRAM[]={
0x08,0x20,0x1c,0x10,0x1c,0x1c,0xff,0x9e,0x7f,0x1e,0x1c,0x1f,0x3e,0x1f,0x3e, 0x1f,
0x77,0x1f,0x41,0x3f,0x00,0x7e,0x00,0xfe,0x83,0xfc,0x7f,0xf8,0x3f,0xf0,0x0f, 0xc0,
};
unsigned char BMP1[];
unsigned char BMP2[];
unsigned char BMP3[];
unsigned char BMP4[];
unsigned char BMP5[];
unsigned char BMP6[];
unsigned char BMP7[];
unsigned char BMP8[];
unsigned char Num[]={'0','1','2','3','4','5','6','7','8','9','.'};
void delay (int m)
{
i nt n;
f or(n=0;n<=m;n++);
}
void check(void) //判断是否忙碌
{
delay(500);
}
void write_com(unsigned char com) //写显示命令
{
GPIOPinWrite(lcd_PORT , lcd_PINS, com); //P0=com;
GPIOPinWrite(fuc_PORT , rs_PIN, 0X00); // rs=0;
GPIOPinWrite(fuc_PORT , rw_PIN, 0X00); //rw=0
GPIOPinWrite(fuc_PORT , en_PIN, 0Xff); // lcden=0;
check();
GPIOPinWrite(fuc_PORT , en_PIN, 0X00); //lcden=1;
GPIOPinWrite(lcd_PORT , lcd_PINS, 0xff); //P0=com;
}
void write_data(unsigned char date) //写显示数据
{
GPIOPinWrite(lcd_PORT , lcd_PINS, date); //P0=com;
GPIOPinWrite(fuc_PORT , rs_PIN, 0Xff); // rs=0;
GPIOPinWrite(fuc_PORT , rw_PIN, 0X00); //rw=0
GPIOPinWrite(fuc_PORT , en_PIN, 0xff); // lcden=0;
check();
GPIOPinWrite(fuc_PORT , en_PIN, 0X00); //lcden=1;
GPIOPinWrite(lcd_PORT , lcd_PINS, 0xff); //P0=com;
}
void LCD_INIT(void) //初始化LCD
{
S ysCtlPeriEnable(lcd_PERIPH); // 使能LcD所在的GPIO 端口
GPIOPinTypeOut(lcd_PORT,lcd_PINS);
S ysCtlPeriEnable(fuc_PERIPH); // 使能LcD功能端口所在的GPIO 端口 GPIOPinTypeOut(fuc_PORT,rs_PIN|en_PIN|rw_PIN );
G PIOPinWrite(fuc_PORT , en_PIN, 0Xff); //lcden=1;
w rite_com(0x01); //清除屏幕显示,将DDRAM的地址计数器清零
d elay(5);
write_com(0x30); //清除屏幕显示,将DDRAM的地址计数器清零
d elay(5);
w rite_com(0x30); //8BIT控制界面,基本指令集
d elay(5);
w rite_com(0X0C);
d elay(5);
w rite_com(0x01); // /清除屏幕显示,将DDRAM的地址计数器清零
d elay(5);
w rite_com(0x06); //DDRAM的地址计数器(AC)加1
d elay(5);
}
//********************************************************************
// 名称 : DisStr16()
// 功能 : 12864显示16*16字符串函数
// 输入 : hang显示的行数,lie显示的列数,*p显示的内容
// 输出 : 无
//*********************************************************************** void zhifuchuan16(unsigned char hang,unsigned char lie,char *p)
{
unsigned char a=0,i=0;
if(lie>8) lie=1;
switch(hang)
{
case 1: a=0x80;break;
c ase 2: a=0x90;break;
c ase 3: a=0x88;break;
c ase 4: a=0x98;break;
}
a=a+lie-1;
delay(5);
write_com(a);
delay(5);
while(1)
{