12864带字库程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#define uchar unsigned char

#define uint unsigned int

/*TS12864A-3 端口定义*/

#define LCD_data P0 //数据口

sbit LCD_RS = P1^0; //寄存器选择输入

sbit LCD_RW = P1^1; //液晶读/写控制

sbit LCD_EN = P2^5; //液晶使能控制

sbit LCD_PSB = P1^2; //串/并方式控制

sbit wela = P2^6;

sbit dula = P2^7;

uchar code dis1[] = {"欢迎指导工作"};

uchar code dis2[] = {"淮南师范学院"};

uchar code dis3[] = {"罗雷雷"};

uchar code dis4[] = {"胡伟伟"};

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

uchar IRDIS[2];

uchar IRCOM[4];

void delay0(uchar x); //x*0.14MS

void beep();

void dataconv();

void lcd_pos(uchar X,uchar Y); //确定显示位置

/*******************************************************************/ /* */ /* 延时函数*/ /* */ /*******************************************************************/ void delay(int ms)

{

while(ms--)

{

uchar i;

for(i=0;i<250;i++)

{

_nop_();

_nop_();

_nop_();

_nop_();

}

}

}

/*******************************************************************/

/* */

/*检查LCD忙状态*/ /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。*/

/* */

/*******************************************************************/

bit lcd_busy()

{

bit result;

LCD_RS = 0;

LCD_RW = 1;

LCD_EN = 1;

delayNOP();

result = (bit)(P0&0x80);

LCD_EN = 0;

return(result);

}

/*******************************************************************/

/* */

/*写指令数据到LCD */ /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。*/ /* */

/*******************************************************************/ void lcd_wcmd(uchar cmd)

{

while(lcd_busy());

LCD_RS = 0;

LCD_RW = 0;

LCD_EN = 0;

_nop_();

_nop_();

P0 = cmd;

delayNOP();

LCD_EN = 1;

delayNOP();

LCD_EN = 0;

}

/*******************************************************************/

/* */

/*写显示数据到LCD */ /*RS=H,RW=L,E=高脉冲,D0-D7=数据。*/ /* */

/*******************************************************************/

void lcd_wdat(uchar dat)

{

while(lcd_busy());

LCD_RS = 1;

LCD_RW = 0;

LCD_EN = 0;

P0 = dat;

delayNOP();

LCD_EN = 1;

delayNOP();

LCD_EN = 0;

}

/*******************************************************************/ /* */ /* LCD初始化设定*/ /* */ /*******************************************************************/ void lcd_init()

{

LCD_PSB = 1; //并口方式

lcd_wcmd(0x34); //扩充指令操作

delay(5);

lcd_wcmd(0x30); //基本指令操作

delay(5);

lcd_wcmd(0x0C); //显示开,关光标

delay(5);

lcd_wcmd(0x01); //清除LCD的显示内容

delay(5);

}

/*********************************************************/

/* */

/* 主程序*/

/* */

/*********************************************************/

main()

{

uchar i;

delay(10); //延时

wela=0;

dula=0;

lcd_init(); //初始化LCD

相关文档
最新文档