📄 lcd12864.h
字号:
/****************************************/
/********* 液晶12864头文件 *************/
/****************************************/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit RST=P3^1; /***复位信号***/
sbit PSB=P3^7; /***串、并行选择信号***/
sbit SCLK=P3^6; /***时钟信号***/
sbit SID=P3^5; /***数据信号***/
sbit CS=P3^4; /***片选信号***/
void delay(uint xms)
{
uchar x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
/***************************************/
/* 以串行协议发送数据 */
/***************************************/
void send_bit(uchar byte)
{
uchar x;
for(x=0;x<8;x++) //八位数据,一位一位发送//
{
if((byte<<x)&0x80) //如果最高位为1,则发送1//
{
SID=1;
}
else
{
SID=0; //如果最高位为0,则发送0//
}
SCLK=0;
SCLK=1; //每发送一位,SCLK跳变一次,上升沿有效//
}
delay(5);
}
/***************************************/
/* 写串口命令函数 */
/***************************************/
void write_com(uchar com)
{
CS=1; //每次传数据前把CS端拉高//
send_bit(0xf8); //串行发送命令前必发0xf8识别命令//
send_bit(com&0xf0); //0xf0为1111 0000,送高四位
send_bit((com<<4)&0xf0); //0xf0为1111 0000,送低四位
delay(5);
CS=0;
}
/***************************************/
/* 写串口数据函数 */
/***************************************/
void write_date(uchar date)
{
CS=1; //每次传数据前把CS端拉高//
send_bit(0xfa); //串行发送数据前必发0xfa识别数据//
send_bit(date&0xf0); //0xf0为1111 0000,送高四位//
send_bit((date<<4)&0xf0); //0xf0为1111 0000,送低四位//
delay(10);
CS=0;
}
/***************************************/
/* 液晶显示初始化 */
/***************************************/
void LCD_init()
{
RST=0;
delay(50);
RST=1;
PSB=0; //选择串口方式
delay(5);
write_com(0x30); //基本指令操作
delay(5);
write_com(0x0c); //开显示,关光标
delay(5);
write_com(0x02); //地址归位
delay(5);
write_com(0x01); //清除液晶显示内容
delay(5);
}
/** 显示字符串 **/
void write_zi(uchar code *S)
{
while(*S!='\0')
{
write_date(*S);
S++;
delay(5);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -