欢迎来到天天文库
浏览记录
ID:14264314
大小:43.50 KB
页数:10页
时间:2018-07-27
《51单片机lcd_12864驱动》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、51单片机LCD_12864驱动/*****************************************************函数组名:LCD_12864包含函数:voidLCD_Screen();//屏幕清除voidLCD_init();//屏幕初始化voidLCD_Location(unsignedcharX,unsignedcharY)//设置文字显示坐标voidPrintString(unsignedchar*str)//输出文字voidPrintNum(unsignedintnum)//输出数字版本:V1.1*****************
2、************************************/#include#include/*************12864LCD引脚定义*************/#defineLCD_dataP0//数据口sbitLCD_RS=P2^5;//寄存器选择输入sbitLCD_RW=P2^6;//液晶读/写控制sbitLCD_EN=P2^7;//液晶使能控制sbitLCD_PSB=P2^2;//串/并方式控制1并口0串口sbitLCD_RST=P2^4;//液晶复位端口/*******************
3、********************************/#definedelayNOP();_nop_();_nop_();_nop_();_nop_();voidlcd_delay(unsignedintms){unsignedchari;while(ms--){for(i=124;i>1;i--);}}voiddelay(unsignedintm)//延时程序{unsignedinti,j;for(i=0;i4、*********************//**//*检查LCD忙状态*//*LCD_busy为1时,忙,等待。LCD-busy为0时,闲,可写指令与数据。*//**//*******************************************************************/bitLCD_busy(){bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP();result=(bit)(LCD_data&0x80);LCD_EN=0;return(result);}/****************5、***************************************************//**//*写指令数据到LCD*//*RS=L,RW=L,E=高脉冲,D0-D7=指令码。*//**//*******************************************************************/voidLCD_wcmd(unsignedcharcmd){//while(LCD_busy());LCD_RS=0;LCD_RW=0;delay(1);LCD_data=cmd;LCD_EN=1;delayNOP();LCD_6、EN=0;}/*******************************************************************//**//*写显示数据到LCD*//*RS=H,RW=L,E=高脉冲,D0-D7=数据。*//**//*******************************************************************/voidLCD_wdat(unsignedchardat){//while(LCD_busy());LCD_RS=1;LCD_RW=0;delay(1);LCD_data=dat;LC7、D_EN=1;delayNOP();LCD_EN=0;}/************************************************************清屏函数************************************************************/voidLCD_ClearScreen(){LCD_wcmd(0x34);//扩充指令操作lcd_delay(5);LCD_wcmd(0x30);//基本指令操作lcd_delay(5);LCD_wcmd(0x01);//清屏lcd_delay(5);}/**
4、*********************//**//*检查LCD忙状态*//*LCD_busy为1时,忙,等待。LCD-busy为0时,闲,可写指令与数据。*//**//*******************************************************************/bitLCD_busy(){bitresult;LCD_RS=0;LCD_RW=1;LCD_EN=1;delayNOP();result=(bit)(LCD_data&0x80);LCD_EN=0;return(result);}/****************
5、***************************************************//**//*写指令数据到LCD*//*RS=L,RW=L,E=高脉冲,D0-D7=指令码。*//**//*******************************************************************/voidLCD_wcmd(unsignedcharcmd){//while(LCD_busy());LCD_RS=0;LCD_RW=0;delay(1);LCD_data=cmd;LCD_EN=1;delayNOP();LCD_
6、EN=0;}/*******************************************************************//**//*写显示数据到LCD*//*RS=H,RW=L,E=高脉冲,D0-D7=数据。*//**//*******************************************************************/voidLCD_wdat(unsignedchardat){//while(LCD_busy());LCD_RS=1;LCD_RW=0;delay(1);LCD_data=dat;LC
7、D_EN=1;delayNOP();LCD_EN=0;}/************************************************************清屏函数************************************************************/voidLCD_ClearScreen(){LCD_wcmd(0x34);//扩充指令操作lcd_delay(5);LCD_wcmd(0x30);//基本指令操作lcd_delay(5);LCD_wcmd(0x01);//清屏lcd_delay(5);}/**
此文档下载收益归作者所有