📄 lcd.c
字号:
#define uint unsigned int
#define uchar unsigned char
#define ulint unsigned long int
#include<1602.h>
#include<reg51.h>
sbit E=P2^5;//使能 //P0数据口
sbit RW=P2^6;//1:read ,0:write
sbit RS=P2^7;//1:数据 ,0:指令
void init_1602(void);
void clear_1602();
void send_cmd(uchar b);
void dis_1602num(ulint b);
void dis_1602hex(uchar b);
void dis_1602str(uchar str[]);
void nopp(uint n){while(n--);}
void send_data(uchar b);
//////////////// 基本操作 /////////////////////////
void send_cmd(uchar b) //发送命令
{
P0=b;
RS=0;/*指令*/ RW=0;/*写*/ E=0; nopp(200); E=1;//用等待代替查询
}
////////////////////////////////
void send_data(uchar b) //发送数据
{
P0=b;
RS=1;/*数据*/ RW=0;/*写*/ E=0; nopp(200); E=1;//用等待代替查询
}
///////////// 显示部分子程序 ////////////
//清频-------------------------------------------
void clear_1602()
{ send_cmd(clear);nopp(100);}
//-------------------------
void dis_1602num(ulint b)//显示b的数值
{
uint led[]={'0','1','2','3','4','5','6','7','8','9'};
if(b>=1000000000)send_data(led[b/1000000000%10]);
if(b>=100000000)send_data(led[b/100000000%10]);
if(b>=10000000)send_data(led[b/10000000%10]);
if(b>=1000000)send_data(led[b/1000000%10]);
if(b>=100000)send_data(led[b/100000%10]);
if(b>=10000)send_data(led[b/10000%10]);
if(b>=1000)send_data(led[b/1000%10]);
if(b>=100)send_data(led[b/100%10]);
if(b>=10)send_data(led[b/10%10]);
send_data(led[b%10]);
}
///////////////////////
void dis_hex(uchar b)//显示b的十六进制数
{
uint led[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
send_data(led[b/16]);
send_data(led[b%16]);
}
//?????????????????????
void dis_1602str(uchar str[])//
{
uchar i=0;
while(str[i]!='\0') send_data(str[i++]);
}
//初始化/////////
void init_1602()
{
send_cmd(home);//清屏并光标复位//先回到首位然后清屏
send_cmd(clear);nopp(100);//清屏并光标复位
send_cmd(bit8|pair);//设置显示模式:8位2行5x7点阵
send_cmd(dis|notf);//显示器开、光标开、光标允许闪烁
send_cmd(iright|wnotm);//光标自动右移,文字不动
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -