include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<intrins.h>
sbit RS = P2^6; //定义端口
sbit RW = P2^5;
sbit EN = P2^7;
sbit SPK = P3^0;
unsigned char time[] = {'0','1','2','3','4','5','6','7','8','9'};
unsigned char *clock = "23:59:54";
unsigned char hour,minute,second = 58,num;
unsigned char keyscan1(void);
unsigned char updatetimerflag;
#define RS_CLR RS=0
#define RS_SET RS=1
#define RW_CLR RW=0
#define RW_SET RW=1
#define EN_CLR EN=0
#define EN_SET EN=1
#define DataPort P0
#define KEYPORT P1
void init_timer0();
void gong_zi();
void clock_1();
void clock_2();
void delayus(unsigned char t)
{
while(--t);
}
void delayms(unsigned char t)
{
while(t--)
{
delayus(245);
delayus(245);
}
}
//判忙函数
bit LCD_Check_Busy()
{
DataPort = 0xff;
RS_CLR;
RW_SET;
EN_CLR;
_nop_();
EN_SET;
return (bit) (DataPort & 0x80);
}
//写入命令函
#include<intrins.h>
sbit RS = P2^6; //定义端口
sbit RW = P2^5;
sbit EN = P2^7;
sbit SPK = P3^0;
unsigned char time[] = {'0','1','2','3','4','5','6','7','8','9'};
unsigned char *clock = "23:59:54";
unsigned char hour,minute,second = 58,num;
unsigned char keyscan1(void);
unsigned char updatetimerflag;
#define RS_CLR RS=0
#define RS_SET RS=1
#define RW_CLR RW=0
#define RW_SET RW=1
#define EN_CLR EN=0
#define EN_SET EN=1
#define DataPort P0
#define KEYPORT P1
void init_timer0();
void gong_zi();
void clock_1();
void clock_2();
void delayus(unsigned char t)
{
while(--t);
}
void delayms(unsigned char t)
{
while(t--)
{
delayus(245);
delayus(245);
}
}
//判忙函数
bit LCD_Check_Busy()
{
DataPort = 0xff;
RS_CLR;
RW_SET;
EN_CLR;
_nop_();
EN_SET;
return (bit) (DataPort & 0x80);
}
//写入命令函

该博客介绍了如何使用LCD1602液晶显示屏进行初始化,并展示了写入命令、数据、字符串和字符的方法。通过提供的代码示例,展示了包括设置端口、初始化函数、清屏、写入命令、写入数据、写入字符串和字符等功能。此外,还包含了简单的延时函数和液晶屏忙判断函数。

1万+

被折叠的 条评论
为什么被折叠?



