📄 16020.c
字号:
#include <stc89c51.h>
#define uchar unsigned char
sbit ebit =P3^5;
sbit rw=P3^1;
sbit rs=P3^0;
void delay(uchar a);
void stalcd(void);
void writelcd(uchar);
void readrw(void);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void writesjlcd(uchar a) ;
uchar code aaa[]={"///www.kxit.com" };
uchar code bbb[]={"//cskxit@163.com"} ;
void delay1(void)
{
unsigned long int a;
for(a=0;a<50000 ;a++)
WDT_CONTR=0x3f;
}
void writelcd(uchar a) //写指令 或指令
{
ebit=1;
delay(1);
rs=0;
delay(1);
rw=0;
delay(1);
P0=a;
delay(1);
ebit=0;
delay(20);
ebit=1;
}
void writesjlcd(uchar a) // 或数据
{
ebit=1;
delay(1);
rs=1;
delay(1);
rw=0;
delay(1);
P0=a;
delay(1);
ebit=0;
delay(20);
ebit=1;
}
void readrw(void) //查状态
{ uchar a=200;
P0=0xff;
delay(1);
rs=0;
delay(1);
rw=1;
delay(1);
ebit=1;
delay(1);
ebit=0;
delay(1);
delay(1);
delay(1);
ebit=1;
delay(1);
delay(5);
do
{
delay(1);
if(P0==0xff) break;
}while(a--);
}
void delay(uchar a) //延时函数,为赋值的15倍
{
unsigned int b,c;
for(b=0;b<a;b++)
for(c=0;c<=150;c++);
}
void stalcd(void) //初始化函数
{
delay(200);
writelcd(0x38);
delay(50);
writelcd(0x38);
delay(50);
writelcd(0x38);
readrw();
writelcd(0x38); //设置显示模式
readrw();
writelcd(0x08); //关闭显示
readrw();
writelcd(0x01); //显示清屏
readrw();
writelcd(0x06); //显示光标移动位置
readrw();
writelcd(0x0c); //显示开关和光标设置
}
void main(void)
{
WDT_CONTR=0x3f;
delay(200); //启动等待,等LCM讲入工作状态
stalcd(); //LCM初始化
delay(50); //延时片刻(可不要)
while(1)
{
DisplayListChar(0, 0, aaa);
DisplayListChar(0, 1, bbb);
delay1();
WDT_CONTR=0x3f; }
}
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
if (Y!=0) X |= 0x40; //当要显示第二行时地址码+0x40;
X |= 0x80; //算出指令码
writelcd(X); //这里不检测忙信号,发送地址码
writesjlcd(DData);
}
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned char ListLength;
ListLength = 0;
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
while (DData[ListLength]>0x20) //若到达字串尾则退出
{
if (X <= 0xF) //X坐标应小于0xF
{
DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
ListLength++;
X++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -