📄 lcd1602.c
字号:
#include<reg51.h>
//#include <absacc.h>
//#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS = P1^5; // 数据(H)\指令(L) 选择
sbit RW = P1^6; // 读(H)\写(L) 选择
sbit EN = P1^7; // 读(H)\写(L)使能
sbit BF = P2^7; //忙信号
char code chara[6][16]={{"By yagerya "},{"QQ:455143773 ^-^"},{"wave:square() "},{"wave: sin() "},{"wave: tran() "},{"wave: saw() "}};
//uchar code chara1[]={"By zhaizhifen "};
//uchar code chara2[]={"QQ:455143773 ^-^"};
//uchar code chara3[]={"wave: square() "};
//uchar code chara4[]={"wave: sin() "};
//uchar code chara5[]={"wave: tran() "};
//uchar code chara6[]={"wave: saw() "};
void delay(uchar k) //延时子程序
{
uint i,j;
for(i=0;i<k;i++)
for(j=0;j<255;j++);
}
void check_busy(void) //测忙子函数
{
EN=1;
RS=0;
RW=1;
P2=0xff;
while(!BF);
}
void write_cmd(uchar cmd) //写指令码子函数
{
check_busy();
EN=1;
RS=0;//命令
RW=0;//写
P2=cmd;
delay(1);
EN=1;
delay(1);
EN=0;
}
void write_data(uchar dat) //写数据子函数
{
check_busy();
EN=1;
RS=1;
RW=0;
P2=dat;
delay(1);
EN=1;
delay(1);
EN=0;
}
void init(void) //LCD初始化设置子函数
{
EN=1;
write_cmd(0x38); //显示模式设置:8位2行5x7点阵
write_cmd(0x01); //清屏
write_cmd(0x0f); //显示器开、光标开、闪烁开
write_cmd(0x06); //当写一个字符,整屏显示不移动
write_cmd(0x0C); //文字不动,光标自动右移
write_cmd(0x80); //第一行显示地址指针设置
}
void disp_onechar(uchar a,uchar b)
{
uchar i=0;
for(i=0;i<16;i++)
{
write_data(chara[a][i]);
delay(10);
}
//write_cmd(0x01); //显示第一行后清除
write_cmd(0x80+0x40);//第二行显示地址指针设置
for(i=0;i<16;i++)
{
write_data(chara[b][i]);
delay(10);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -