《1286 4带字库程序》由会员分享,可在线阅读,更多相关《1286 4带字库程序(5页珍藏版)》请在金锄头文库上搜索。
1、#include #include #define uchar unsigned char#define uint unsigned int/*TS12864A-3 端口定义*/#define LCD_data P0 /数据口sbit LCD_RS = P10; /寄存器选择输入 sbit LCD_RW = P11; /液晶读/写控制sbit LCD_EN = P25; /液晶使能控制sbit LCD_PSB = P12; /串/并方式控制sbit wela = P26;sbit dula = P27;uchar code dis1 = 欢迎指导工作;uchar code dis2 = 淮南师
2、范学院;uchar code dis3 = 罗雷雷;uchar code dis4 = 胡伟伟 ;#define delayNOP(); _nop_();_nop_();_nop_();_nop_();uchar IRDIS2;uchar IRCOM4;void delay0(uchar x); /x*0.14MSvoid beep();void dataconv();void lcd_pos(uchar X,uchar Y); /确定显示位置/*/* */* 延时函数 */* */*/void delay(int ms) while(ms-) uchar i; for(i=0;i250;i+
3、) _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_wcm
4、d(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(); L
5、CD_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
6、=0; lcd_init(); /初始化LCD lcd_pos(0,0); /设置显示位置为第一行的第1个字符 i = 0; while(dis1i != 0) /显示字符 lcd_wdat(dis1i); i+; lcd_pos(1,0); /设置显示位置为第二行的第1个字符 i = 0; while(dis2i != 0) lcd_wdat(dis2i); /显示字符 i+; lcd_pos(2,0); /设置显示位置为第三行的第1个字符 i = 0; while(dis3i != 0) lcd_wdat(dis3i); /显示字符 i+; lcd_pos(3,0); /设置显示位置为第四行的第1个字符 i = 0; while(dis4i != 0) lcd_wdat(dis4i); /显示字符 i+; while(1);/*/* */* 延时x*0.14ms子程序 */* */*