📄 液晶显示.c
字号:
#include <at89x51.h>
#include <intrins.h>
#define LCD_RS P2_0 //定义引脚
#define LCD_RW P2_1
#define LCD_E P2_2
#define LCD_DATA P0
unsigned char a ;
unsigned char b ;
unsigned char c ;
unsigned char d ;
extern void delayus(unsigned int num);
extern void delayus(unsigned int num) //us级延时函数
{
while( --num ) ;
}
bit LCD_Busy(void) //LCD忙碌状态检测
{
bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_E =1;
_nop_();
_nop_();
_nop_();
_nop_();
result = (bit)(P0 & 0x80);
LCD_E =0;
return result;
}
extern void LCD_WriteCommand(unsigned char cmd) //写指令数据到LCD
{
while(LCD_Busy());
LCD_RS = 0;
LCD_RW = 0;
LCD_E =0;
_nop_();
_nop_();
LCD_DATA = cmd;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_E =1;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_E =0;
}
void LCD_WriteDate(unsigned char dat) //写字符显示数据到LCD
{
while(LCD_Busy());
LCD_RS=1;
LCD_RW=0;
LCD_E=0;
LCD_DATA = dat;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_E =1;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_E =0;
}
extern void LCD_DisplayOneChar(unsigned char X,unsigned char Y,unsigned char Z) //显示指定坐标的一个字符子函数
// X为列0--15,Y为行0--1 ,Z为数据,输入字母加单引号
{ Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
if(Y == 0)
{
LCD_WriteCommand(X|0X80);
LCD_WriteDate(Z);
} //1602地址为第一行00H~0FH,第二行为40H~4FH,
if(Y==1) //而且写入地址命令格式为1xxx xxxx,
{
LCD_WriteCommand((X|0x40)|0X80);
LCD_WriteDate(Z);
} //所以这里的0x80|(x-0x40)就是如此得出
}
extern void LCD_Init(void) //LCD初始化
{
LCD_WriteCommand(0x38); //两行显示,5×7字型
delayus(5);
LCD_WriteCommand(0x0c); //显示开,不显示光标,光标不闪
delayus(5);
LCD_WriteCommand(0x06); //输入模式,地址增量,显示不移动
delayus(5);
// LCD_WriteCommand(0x01); //清显示,如果加上此语句,显示地址返回0x00
// Delay(5);
}
extern void LCD_DisplayOneString(unsigned char X,unsigned char Y,unsigned char a[])
{ unsigned char m ;//LCD_Init(); //初始化LCD
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
m = 0 ;
while(a[m] != '\0')
{ //显示第一行字符
LCD_DisplayOneChar(X,Y,a[m]);
m++ ;
X++;
}
}
extern void LCD_DisplayNum(unsigned char X,unsigned char Y,unsigned char num) //显示一个数字
{
a = num%10;
b = num/10%10;
LCD_DisplayOneChar((X+1),Y,a+0x30);
LCD_DisplayOneChar(X,Y,b+0x30);
delayus(100);
}
extern void LCD_DisplayoneNum(unsigned char X,unsigned char num)
{
LCD_DisplayOneChar(X,0,num+0x30);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -