📄 lcdapi.c
字号:
#include<reg51.h>
typedef unsigned char uchar;
sbit std = P1^5;
sbit cs = P1^4;
sbit sclk = P1^6;
sbit lcdk = P1^7; // 0时亮
void delay(int count)
{
int i,j;
for(i = count ; i ; i --)
for(j = 125; j ; j --);
}
void write_lcd(bit data_comm,uchar content) //L:comm; H:data;
{
uchar i,j;
delay(1);
std = 1;
cs = 1;
for(i = 5; i ; i --)
{
sclk = 0;
sclk = 1;
}
std = 0;
sclk = 0;
sclk = 1;
std = data_comm;
sclk = 0;
sclk = 1;
std = 0;
sclk = 0;
sclk = 1;
for(i = 2; i ; i--)
{
for(j = 4; j ; j --)
{
content <<= 1;
std = CY;
sclk = 0;
sclk = 1;
}
std = 0;
for(j = 4; j ; j --)
{
sclk = 0;
sclk = 1;
}
}
cs = 0;
std = 0;
sclk = 0;
}
void clear_DDram()
{
write_lcd(0,0x30);//转到基本指令集
write_lcd(0,0x01);//把DDRAM填满空格,AC指向00H
delay(1);
}
void init_lcd()
{
write_lcd(0,0x30);//转到基本指令集
lcdk = 0;
clear_DDram();
write_lcd(0,0x06);
write_lcd(0,0x3c);
}
/*******************显示一行汉字*************************/
//addr为四行开始的地址0x80,0x90,0x88,0x98
void DisLineCN(unsigned char addr, unsigned char *chn)//指向code区的指针
{
unsigned char data i;
write_lcd (0,0x30); //基本指令
write_lcd (0,addr); //写地址
for (i=0;i!=16;i++) //写16个字节,也就是8个汉字
write_lcd (1,chn[i]);
}
void DisChar(unsigned char addr,unsigned char _data)//显示一个字符
{
write_lcd(0,0x30);
write_lcd(0,addr);
write_lcd(1,_data);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -