资源描述:
《液晶显示参程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/*============================================================1602液晶显示驱动程序==============================================================参数定义示例:程序调用说明:1)使用前需先调用LCD_Init()对LCD进行初始化2)输出字符使用LCD_PutStr(字符串,输出位置)输出数字使用LCD_PutNum(数字,输出位置)[注:]1)输出位置为0~31间的整数,为-1时
2、表示先清屏2)函数返回值为一整形数,表示当前光标所在位置3)此两个函数支持以下转义字符:换行b退格\输出\'输出'"输出"调用示例:voidmain(void){intp;Ldelay(400);LCD_Init();p=LCD_PutStr("=Hi!It'sme=",-1);p=LCD_PutStr("Robotver",p);p=LCD_PutNum(1,p);while(1);}===================================================
3、==========*/#defineLCD_DataP2sbitLCD_RS=P0^7;sbitLCD_RW=P0^6;sbitLCD_E=P0^5;voidWriteDataLCD(unsignedcharWDLCD);voidWriteCommandLCD(unsignedcharWCLCD,BuysC);//BuysC为0时忽略忙检测unsignedcharReadStatusLCD(void);voidDisplayOneChar(unsignedcharX,unsignedcharY,unsi
4、gnedcharDData);voidLCD_Init(void);intLCD_PutStr(unsignedchar*DData,intpos);//写数据voidWriteDataLCD(unsignedcharWDLCD){ReadStatusLCD();//检测忙LCD_Data=WDLCD;LCD_RS=1;LCD_RW=0;LCD_E=0;//若晶振速度太高可以在这后加小的延时LCD_E=0;//延时LCD_E=1;}//写指令voidWriteCommandLCD(unsignedchar
5、WCLCD,BuysC)//BuysC为0时忽略忙检测{if(BuysC)ReadStatusLCD();//根据需要检测忙LCD_Data=WCLCD;LCD_RS=0;LCD_RW=0;LCD_E=0;LCD_E=0;LCD_E=1;}//读状态unsignedcharReadStatusLCD(void){LCD_Data=0xFF;LCD_RS=0;LCD_RW=1;LCD_E=0;LCD_E=0;LCD_E=1;while(LCD_Data&0x80);//检测忙信号return(LCD_Dat
6、a);}//按指定位置显示一个字符voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData){if(Y<2){Y&=0x1;X&=0xF;//限制X不能大于15,Y不能大于1if(Y)X
7、=0x40;//当要显示第二行时地址码+0x40;X
8、=0x80;//算出指令码WriteCommandLCD(X,0);//这里不检测忙信号,发送地址码WriteDataLCD(DData);}}//LCD初始化voidLCD_Init(void)
9、{unsignedcharpos;LCD_Data=0;WriteCommandLCD(0x38,0);//三次显示模式设置,不检测忙信号Ldelay(150);WriteCommandLCD(0x38,0);Ldelay(150);WriteCommandLCD(0x38,0);Ldelay(150);WriteCommandLCD(0x38,1);//显示模式设置,开始要求每次检测忙信号WriteCommandLCD(0x08,1);//关闭显示WriteCommandLCD(0x01,1);//显示
10、清屏WriteCommandLCD(0x06,1);//显示光标移动设置WriteCommandLCD(0x0C,1);//显示开及光标设置pos=LCD_PutStr("+SunWiseRobot",-1);LCD_PutStr("verson1.1",pos);Ldelay(2000);}intLCD_PutStr(unsignedchar*DData,intpos){unsignedchari;if(pos==-1)