📄 lcd.c
字号:
#include "lcd.h"
void LCD_Initial()
{
LcdEn = 0 ;
Delay10ms(1) ;
LCD_Write(LCD_COMMAND,0x30); //8位数据端口,1行显示,5*7点阵
Delay10ms(1) ;
LCD_Write(LCD_COMMAND,0x30);
Delay10ms(1) ;
LCD_Write(LCD_COMMAND,0x30); //8位数据端口,1行显示,5*7点阵
LCD_Wait() ;
LCD_Write(LCD_COMMAND,0x30);
LCD_SetDisplay(LCD_HIDE) ; //关闭显示
LCD_Wait() ;
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR) ;
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不动
}
/*void LCD_Initial()
{
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,5*7点阵
LCD_Write(LCD_COMMAND,0x38);
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);
}*/
void LCD_Write(bit style, unsigned char input)
{
LcdEn = 0 ;
LcdRs = style ;
LcdRw = 0 ; _nop_();
DBPort = input ; _nop_();//注意顺序
LcdEn = 1 ; _nop_();//注意顺序
LcdEn = 0 ; _nop_();
}
void LCD_SetDisplay(unsigned char DisplayMode)
{
LCD_Wait() ;
LCD_Write(LCD_COMMAND, 0x08|DisplayMode) ;
}
void LCD_SetInput(unsigned char InputMode)
{
LCD_Wait() ;
LCD_Write(LCD_COMMAND, 0x04|InputMode) ;
}
void LCD_Display(unsigned char NumDisplay)
{
unsigned char ASC_Num = 0 ;
ASC_Num = NumDisplay + 0x30 ;
_cror_(ASC_Num,7) ;
LCD_Wait() ;
LCD_Write(LCD_DATA, ASC_Num) ;
}
void LCD_Wait(void)
{
LcdRs = 0;
LcdRw = 1; _nop_() ;
LcdEn = 1; _nop_() ;
while(DBPort&0x80);//在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环,
//可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80==0x80
//实际硬件时打开此语句
LcdEn = 0 ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -