/*51单片机学习打卡*/
/*老师视频之后,使用普中科技51单片机开发板实现1602液晶显示*/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="I LOVE MCU!";
uchar code table1[]="HI! CHEN SIRAN ";
sbit Lcd1602_en=P2^7; //使能端,写数据或命令时,必须先置零,完成指令之后,置1.使指令能发出给液晶
sbit Lcd1602_rs=P2^6; //确定液晶得到的指令,是命令(0)、还是数据(1)
sbit Lcd1602_rw=P2^5; //对液晶数据的读取,由于不用读取,故设为低电平0
void Initialize();
void Write_Command(uchar command);
void Write_Data(uchar date);
void Delayms(uint xms);
uchar num;
void main()
{
Initialize();
for(num=0;num<11;num++)
{
Write_Data(table[num]);
Delayms(5);
}
Write_Command(0x80+0x40);
for(num=0;num<15;num++)
{
Write_Data(table1[num]);
Delayms(5);
}
}
void Write_Command(uchar command) //写指令函数
{
Lcd1602_rs=0; //确定为写指令
P0=command;
Delayms(5);
Lcd1602_en=1; //使能口为1,使液晶能得到命令com,因为初始化时已经置零
Delayms(5);
Lcd1602_en=0; //回归初始状态,等待下一命令的到来
}
void Write_Data(uchar date) //写数据函数
{
Lcd1602_rs=1;
P0=date;
Delayms(5);
Lcd1602_en=1;
Delayms(5);
Lcd1602_en=0;
}
void Initialize()
{
Lcd1602_en=0;
Lcd1602_rw=0;
Write_Command(0x38); //设置16*2显示,5*7点阵,8位数据口
Write_Command(0x0c); //设置打开显示,且没有光标
Write_Command(0x06); //写一个字符后地址加1
Write_Command(0x01); //显示清零,数据指针清零
}
void Delayms(uint xms)
{
uint i;
uchar j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}