📄 lm016.c
字号:
#include <reg51.h>
#include <stdio.h>
#include <math.h>
#define unchar unsigned char
#define Busy 0x80 //用于检测LCM状态字中的Busy标识
sbit e=P2^0; //LM0162的e引脚
sbit rw=P2^1; //LM0162的rw引脚
sbit rs=P2^2; //LM0162的rs引脚
void readstatus(void);
void delay(void)
{
int i;
for(i=0;i<1000;i++);
}
/*延时5ms*/
void delay5ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc--);
}
/*向LM1602写命令字*/
void write_c(unchar command)
{
readstatus();
rs=0;
rw=0;
P1=command;
e=0;
e=0;
e=0;
e=1;
delay();
}
/*向LM1602写数据*/
void write_d(unchar dat)
{
readstatus();
rs=1;
rw=0;
P1=dat;
e=0;
e=0;
e=0;
e=1;
delay();
}
/**读状态**/
void readstatus(void)
{
P1 = 0xFF;
rs = 0;
rw = 1;
e = 0;
e = 0;
e = 1;
while (P1 & Busy); //检测忙信号
}
main()
{
write_c(0x38);//设置为8总线16*2 5*7点阵
delay5ms();
write_c(0x38);//设置为8总线16*2 5*7点阵
delay5ms();
write_c(0x38);//设置为8总线16*2 5*7点阵
delay5ms();
write_c(0x0c);//开显示,光标闪烁
write_c(0x01);//清屏幕
while(1)
{
//write_c(0x01);//清屏幕
write_c(0x80);
write_d(0x35);//5
write_d(0x37);//7
write_d(0x30);//0
write_d(0x31);//1
write_d(0x20);//空格
write_d(0x46);//f
write_d(0x61);//a
write_d(0x63);//c
write_d(0x74);//t
write_d(0x6F);//o
write_d(0x72);//r
write_d(0x79);//y
write_d(0x20);//空格
write_d(0x6f);//O
write_d(0x66);//f
write_c(0xc6);//从第二行第三列开始显示
write_d(0x50);//P
write_d(0x4c);//L
write_d(0x41);//A
write_d(0x2c);//,
write_d(0x33);//3
write_d(0x41);//A
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -