📄 lcdok.c
字号:
#include<reg51.h>
#include<string.h>
#include"lcd.h"
unsigned char l;
unsigned char m;
unsigned char n;
unsigned char tmp;
void delay_ms(int k)/*delay 1ms*,11.0592Mhz*/
{
int i,j;
for(i=0;i<k;i++)
for(j=0;j<121;j++);
}
unsigned char ReadStatusLCM(void)
{
P1=0xff;
LCM_RS=0;
LCM_RW=1;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=1;
while(P1&Busy);
return P1;
}
unsigned char ReadDataLCM(void)
{
LCM_RS=1;
LCM_RW=1;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=1;
return P1;
}
void WriteCommandLCM(unsigned char WCLCM,unsigned char BusyC)/*Instruction Register*/
{
if(BusyC)
ReadStatusLCM();
P1=WCLCM;
LCM_RS=0;
LCM_RW=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=1;
}
void WriteDataLCM(unsigned char WDLCM)
{
ReadStatusLCM();
P1=WDLCM;
LCM_RS=1;
LCM_RW=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=0;
LCM_EN=1;
}
void InitLcd(void)
{
delay_ms(200);
WriteCommandLCM(0x01,1);
delay_ms(5);
WriteCommandLCM(0x04,1);
delay_ms(5);
WriteCommandLCM(0x0c,1);
delay_ms(5);
WriteCommandLCM(0x14,1);
delay_ms(5);
WriteCommandLCM(0x3c,1);
delay_ms(5);
WriteCommandLCM(0x80,1);
delay_ms(5);
}
void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData)
{
Y&=1;
X&=15;
if(Y)
X|=0x40;
X|=0x80;
WriteCommandLCM(X,0);
delay_ms(18);
WriteDataLCM(DData);
delay_ms(25);
}
void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData)
{
unsigned char ListLength=0;
Y&=0x01;
X&=0x0f;
while(X<=15)
{
DisplayOneChar(X,Y,DData[ListLength]);
ListLength++;
X++;
if(X==0x0F)
{
X=0;
Y=!Y;
}
delay_ms(100);
}
}
void main()
{
unsigned char code str0[]="hello!Computer!Design By Palamer!This is my first LCD Programme!";
InitLcd();
delay_ms(200);
DisplayListChar(0,0,str0);
delay_ms(10);
for(;;);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -