lcd16824驱动程序

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

{

相关文档
最新文档