📄 lcd.h
字号:
****************************************************************************/void WriteCmd12864(uchar lcd_cmd){ int i; LCD12864_RS=LOW; LCD12864_RW=LOW; i = 1; //TAS while (i>0) i--; LCD12864_EN=HIGH; i = 1; //TPW while (i>0) i--; LCD12864_DATA=lcd_cmd; i = 1; while (i>0) i--; //TDSW LCD12864_EN=LOW;}/****************************LCD12864Init************************************LCD初始化子程,包括清屏、设定功能等入口参数:无出口参数:无****************************************************************************/void LCD12864Init(){ delay_ms(50); WriteCmd12864(FUN_MODE); delay_ms(1); WriteCmd12864(FUN_MODE); delay_ms(1); WriteCmd12864(DISPLAY_ON); delay_ms(1); WriteCmd12864(CLEAR_SCREEN); delay_ms(20);}/***************************LCD12864Clear************************************LCD清屏子程入口参数:无出口参数:无****************************************************************************/void LCD12864Clear(void){ ReadBusy(); WriteCmd12864(CLEAR_SCREEN); delay_ms(5);}/************************** DisplayCgrom ************************************显示字符串子程入口参数:uchar addr,uchar *hz,addr代表要显示字符串位置的首地址,*hz代表指向字符串数据的指针出口参数:无****************************************************************************/void DisplayCgrom(uchar addr,uchar *hz){ ReadBusy(); WriteCmd12864(addr); //写入初始地址,此后地址指针由LCD自动加1 ReadBusy(); while(*hz!='\0') //连续写入数据,直到'\0'时止 { WriteData12864(*hz); hz++; ReadBusy(); }} /************************* DisplayOneChar ***********************************显示单个字符子程入口参数:uchar addr,uchar hz,addr代表要显示的字符位置地址,hz代表字符数据出口参数:无****************************************************************************/void DisplayOneChar(uchar addr,uchar hz){ ReadBusy(); WriteCmd12864(addr); //写入地址 ReadBusy(); WriteData12864(hz); //写入数据}/*****************************GdramOn***************************************开启图形显示子程入口参数:无出口参数:无****************************************************************************/void GdramOn(void){ ReadBusy(); WriteCmd12864(0x36);}/*****************************GdramOff***************************************关闭图形显示子程入口参数:无出口参数:无****************************************************************************/void GdramOff(void){ ReadBusy(); WriteCmd12864(0x34);}/*****************************ClearGdram*************************************对图形显示清屏子程入口参数:无出口参数:无****************************************************************************/void ClearGdram(void){ uchar x,y,i; for(i=0;i<9;i=i+8) for(y=0;y<=31;y++) { for(x=0;x<=7;x++) //按地址顺序,对每一个RAM存储空间都写入0x0000 { GdramOff(); WriteCmd12864(0x80+y); ReadBusy(); WriteCmd12864(0x80+x+i); ReadBusy(); WriteData12864(0x00); ReadBusy(); WriteData12864(0x00); GdramOn(); } } WriteCmd12864(0x30);}/****************************DisplayGdram***********************************显示图形子程入口参数:uchar addr_x(首地址x坐标),uchar addr_y(首地址y坐标),uchar *hz(指向数据的指针)出口参数:无****************************************************************************/void DisplayGdram(uchar addr_x,uchar addr_y,uchar *hz){ uchar x,y,i; for(i=0;i<9;i=i+8) for(y=0;y<=31;y++) { for(x=0;x<=7;x++) { GdramOff(); WriteCmd12864(addr_y+y); ReadBusy(); WriteCmd12864(addr_x+x+i); ReadBusy(); WriteData12864(*hz); hz++; ReadBusy(); WriteData12864(*hz); hz++; GdramOn(); } } WriteCmd12864(0x30);}/****************************Cal_length***********************************计算十进制数长度入口参数:uchar data_dec(数据)出口参数:数据长度****************************************************************************/uchar Cal_length(uint data_dec){ uchar lengthofdata=1; while(data_dec/10>0) { lengthofdata++; data_dec=data_dec/10; } return lengthofdata;}/****************************Displayarry***********************************/void Displayarry(uchar addr,uint data_dec,uchar length){ uchar i,arry[10]; for(i=0;i<length;i++) { arry[i] = data_dec/pow(10,length-i-1) + 0x30; data_dec = data_dec - (arry[i]-0x30)*pow(10,length-i-1); } arry[length]='\0'; DisplayCgrom(addr,&arry);}/****************************DisplayDec***********************************显示十进制数入口参数:uchar addr(首地址),uchar data_dec(要显示的数据)出口参数:无****************************************************************************/void DisplayDec(uchar addr,uint data_dec){ Displayarry(addr,data_dec,Cal_length(data_dec));}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -