📄 lcd.c
字号:
/*------------------------------------------------------------------------------------------------------------*-
lcd.c(v1.00)
------------------------------------------------------------------------------------------------------------
-these rountine are used for driving FYD12864-0402B LCD module.
-*-----------------------------------------------------------------------------------------------------------*/
//简单的LCD显示驱动程序,用于驱动FYD12864-0402B液晶显示模块。
//fosc=11.0592MHz
//硬件连接:
//LCD上的VSS[1]连接到地
//LCD上的VCC[2]连接到+5V
//LCD上的VOUT[18]串联10K电位器连接到VO
//LCD上的PSB[15]可选择VCC或GND(须加限流电阻100欧)
//LCD上的/RESET[17]接复位电路
//LCD上的A[19]连接VCC
//LCD上的K[20]连接GND
#include <AT89X52.H>
#include"port.h"
#include"lcd.h"
//端口定义应放在端口头文件PORT.H中
//#define Lcd_Bus P1
//sbit RS=P2^1; //数据指令选择信号
//sbit RW=P2^2; //读写控制信号
//sbit E=P2^3; //使能信号
#define FIRST_ADDR 0 //定义字符/汉字显示起始位置
//检查忙位
void chk_busy()
{
RS=0;
RW=1;
E=1;
Lcd_Bus=0xff;
while((Lcd_Bus&0x80)==0x80);
E=0;
}
//延时子程序
void delay(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++)
;
}
//写命令到LCD
void write_com(unsigned char cmdcode)
{
chk_busy();
RS=0;
RW=0;
E=1;
Lcd_Bus=cmdcode;
delay(5);//在数据写入的时候加入适当的延时
E=0;
delay(5);
}
//写数据到LCD
void write_data(unsigned char Dispdata)
{
chk_busy();
RS=1;
RW=0;
E=1;
Lcd_Bus=Dispdata;
delay(5);//在数据写入的时候加入适当的延时
E=0;
delay(5);
}
//初始化LCD显示屏
void lcdreset()
{
delay(2000);
write_com(0x30);
delay(10); //选择基本指令集
write_com(0x30); //选择8bit数据流
delay(5);
write_com(0x0c); //开显示(无游标、不反白)
delay(10);
write_com(0x01); //清除显示,并且设定地址指针为00H
delay(500);
write_com(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
delay(0);
}
//清屏命令
void clrscreen()
{
write_com(0x01);
delay(10);
}
//显示字符串
void hzkdis(unsigned char code *s)
{
while(*s>0)
{ write_data(*s);
s++;
delay(50);
}
}
/*该函数只在测试时使用*/
//测试屏幕显示
void ceshi()
{
write_com(0x01);//清除显示,并且设定地址指针为00H
delay(5);
write_com(0x80);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示)
hzkdis("乐山师院物电系制");
write_com(0x90);//第二行(如果是地址是:90H,即LCD的第二行的第一个位置显示)
hzkdis("LCD12864点阵液晶");
write_com(0x88);//第三行(如果是地址是:88H,即LCD的第二行的第一个位置显示)
hzkdis("----测试程序----");
write_com(0x98);//第四行(如果是地址是:98H,即LCD的第二行的第一个位置显示)
hzkdis("----------黄华彬");
}
/*------------------------------------------------------------------------------------------------------------*-
---------------------------------------THE END OF FILE------------------------------------------------------
-*------------------------------------------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -