📄 cs22-1.c
字号:
#include <REG51.H>
#include<INTRINS.H>
#define uchar unsigned char
#define uint unsigned int
#define DataPort P0
sbit LCM_RS=P2^0;
sbit LCM_RW=P2^1;
sbit LCM_EN=P2^2;
uchar code str0[]={"-This is a LCD-!"};
uchar code str1[]={"-Design by ZXH-!"};
uchar code str2[]={" "};
/*******************************/
void delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++){
for(j=0;j<121;j++)
{;}}
}
/*******************************/
void WaitForEnable(void)
{
DataPort=0xff;
LCM_RS=0;LCM_RW=1;_nop_();
LCM_EN=1;_nop_();_nop_();
while(DataPort&0x80);
LCM_EN=0;
}
/*******************************/
void WriteCommandLCM(uchar CMD,uchar Attribc)
{
if(Attribc)WaitForEnable();
LCM_RS=0;LCM_RW=0;_nop_();
DataPort=CMD;_nop_();
LCM_EN=1;_nop_();_nop_();LCM_EN=0;
}
/*******************************/
void WriteDataLCM(uchar dataW)
{
WaitForEnable();
LCM_RS=1;LCM_RW=0;_nop_();
DataPort=dataW;_nop_();
LCM_EN=1;_nop_();_nop_();LCM_EN=0;
}
/***********************************/
void InitLcd()
{
WriteCommandLCM(0x38,1);
WriteCommandLCM(0x08,1);
WriteCommandLCM(0x01,1);
WriteCommandLCM(0x06,1);
WriteCommandLCM(0x0c,1);
}
/***********************************/
void DisplayOneChar(uchar X,uchar Y,uchar DData)
{
Y&=1;
X&=15;
if(Y)X|=0x40;
X|=0x80;
WriteCommandLCM(X,0);
WriteDataLCM(DData);
}
/***********************************/
void DisplayListChar(uchar X,uchar Y,uchar code *DData)
{
uchar ListLength=0;
Y&=0x1;
X&=0xF;
while(X<=15)
{
DisplayOneChar(X,Y,DData[ListLength]);
ListLength++;
X++;
}
}
/***********************************/
void main(void)
{
char i,m;
delay(500);
InitLcd();
/*******从右移到显示屏*********************/
for(i=15;i>=0;i--)
{
WriteCommandLCM(0x01,1);
DisplayOneChar(i,0,0x20);
DisplayListChar(i,0,str0);
DisplayListChar(i,1,str1);
delay(200);
}
delay(2800);
/************向右退出显示屏*************/
for(i=0;i<16;i++)
{
WriteCommandLCM(0x01,1);
DisplayOneChar(i,0,0x20);
DisplayListChar(i,0,str0);
DisplayListChar(i,1,str1);
delay(200);
}
WriteCommandLCM(0x01,1);
delay(3000);
/********闪烁5次***********************/
for(i=0;i<10;i++)
{
WriteCommandLCM(0x01,1);
delay(500);
DisplayListChar(0,0,str0);
DisplayListChar(0,1,str1);
delay(500);
i++;
}
delay(3000);
/***************************************/
while(1)
{
/********从右移到显示屏**************************/
for(i=15;i>=0;i--)
{
WriteCommandLCM(0x01,1);
DisplayOneChar(i,0,0x20);
DisplayListChar(i,0,str0);
DisplayListChar(i,1,str1);
delay(200);
}
/***********向左退出显示屏************************/
for(i=1;i<16;i++)
{
m=16-i;
WriteCommandLCM(0x01,1);
DisplayOneChar(0,0,0x20);
DisplayListChar(0,0,&str0[i]);
DisplayListChar(0,1,&str1[i]);
DisplayListChar(m,0,str2);
DisplayListChar(m,1,str2);
delay(200);
}
WriteCommandLCM(0x01,1);
delay(200);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -