📄 1602.c
字号:
/* This program is a example */
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define LCDCLRCMD 0X01
#define LCDIPMODECMD 0X06
#define LCDDISPCMD 0X0C
#define LCDDISPCMD2 0X0D
#define LCDCURSHIFTCMD 0X10
#define LCDRETURNCMD 0X02
#define LCDFUCCMD 0X38
/*BIT*/
sbit RS=P2^5;
sbit RW=P2^6;
sbit EN=P2^7;
sbit LGT=P1^0;
/*function*/
void LCDCMDSET(uchar CMD,uint DLT);
void LCDDDRAMSET(uchar LCDLCDADDR);
void LCDDATAWRITE(uchar LCDDATA);
void DELAY(uint T);
void DISPSTR(uchar code *str);
uchar code STRING1[]={"CHEAP MAN.......CHEAP MAN......."};
uchar code STRING2[]={"OH YEAH.........OH YEAH........."};
void DELAY(uint T)
{
uchar i;
while(T)
{
T--;
for(i=0;i<10;i++)_nop_();
}
}
void LCDCMDSET(uchar CMD,uint DLT)
{
RS=0;
RW=0;
P0=CMD;
EN=1;
EN=0; //r/w at the falling adge
DELAY(DLT);
}
void LCDDDRAMSET(uchar LCDADDR)
{
RS=0;
RW=0;
LCDADDR=LCDADDR|0x80;
P0=LCDADDR;
EN=1;
EN=0;
DELAY(4);
}
void LCDDATAWRITE(uchar LCDDATA)
{
RS=1;
RW=0;
P0 =LCDDATA;
EN=1;
EN=0;
DELAY(4);
}
void DISPSTR(uchar code *str)
{
uchar data i;
LCDDDRAMSET(0x00);
for(i=0;i<16;i++)
{
LCDDATAWRITE(*str++);
}
LCDDDRAMSET(0x40);
for(i=0;i<16;i++)
{
LCDDATAWRITE(*str++);
}
}
void LCDINIT()
{
LCDCMDSET(LCDCLRCMD,200);
LCDCMDSET(LCDIPMODECMD,4);
LCDCMDSET(LCDDISPCMD2,4);
LCDCMDSET(LCDFUCCMD,4);
LCDCMDSET(LCDRETURNCMD,200);
}
void main()
{
LCDINIT();
while(1)
{
LGT = !LGT;
if(LGT==0)
{
DISPSTR(STRING2);
}
if(LGT==1)
{
DISPSTR(STRING1);
}
DELAY(20000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -