lcd1602.h
来自「利用8255a扩展的lcd1602程序 希望喜欢」· C头文件 代码 · 共 108 行
H
108 行
#include <at89x51.h>
#include <absacc.h>
#define uchar unsigned char
#define A XBYTE[0x7efc]
#define B XBYTE[0x7efd]
#define C XBYTE[0x7efe]
#define Com XBYTE[0x7eff]
void LCD_INIT( )
{ int i;
Com=0x81;
C=0xfb; //P1口输出信号状态
C=0xfa;
for(i=0;i<100;i++); //延迟
//LcdEn=0;
//P1=DBPort;
Com=0x80; //写入命令 8位数据端口,2行显示,5*10点阵
C=0xf8;
B=0x3c;
C=0xf9;
for(i=0;i<100;i++); //延迟
C=0xf8;
//P1=DBPort; //P1口输出信号状态
Com=0x80;
C=0xf8;
B=0x0f;
C=0xf9;
for(i=0;i<100;i++); //延迟
C=0xf8;
//P1=DBPort; //P1口输出信号状态
//写入命令 光标移动,字符不动
Com=0x80;
C=0xf8;
B=0x06;
C=0xf9;
for(i=0;i<100;i++); //延迟
C=0xf8;
//P1=DBPort; //P1口输出信号状态
}
void LCD_CLR() //写入命令 清屏
{ int i;
Com=0x80;
C=0xf8;
B=0x01;
C=0xf9;
for(i=0;i<100;i++); //延迟
C=0xf8;
//P1=DBPort; //P1口输出信号状态
}
void Gotoxy(int x,int y)
{
int i;
Com=0x80;
if(y==0) //写入命令 光标移动,字符不动
{
C=0xf8;
B=0x80|x; // 不能改变第一行字符显示位置
C=0xf9;
for(i=0;i<100;i++); //延迟
C=0xf8;
//P1=DBPort; //P1口输出信号状态
}
if(y==1) //写入命令 光标移动,字符不动
{
C=0xf8;
B=0x80|(x+0x40);
//DBPort=0x80|x;
C=0xf9;
for(i=0;i<100;i++); //延迟
C=0xf8;
//P1=DBPort; //P1口输出信号状态
}
}
void writedata(uchar dat)
{
int i;
Com=0x80;
C=0xfc;
B=dat;
C=0xfd;
for(i=0;i<100;i++); //延迟
C=0xfc;
}
void Print(unsigned char *str)
{
while(*str!='\0')
{
int i=0;
Com=0x80;
C=0xfc;
B=*str;
C=0xfd;
for(i=0;i<100;i++); //延迟
C=0xfc;
str++;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?