/*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--);
}