📄 1602.c
字号:
//========================1602=============================//
//========================by laputa========================//
//========================2006.5.16========================//
#include<reg51.h>
//===========================函数声明=====================================//
void WriComm(unsigned char reg_code,busy);
void Display(unsigned char Disp_Data);
void Delay();
void Init_LCM();
void Delay5Ms(void);
void Delay400Ms(void);
void LINE2_CLEAR();
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char *DData);
//==========================================================================//
sbit RS=P2^3;
sbit RW=P2^2;
sbit E=P2^1;
sbit LED=P2^0; //=======背光灯
sbit busy=P0^7;//=======忙标志
//=========================LCM初始化数据===============================//
#define lcd_bus P0
#define Set_Disp_On 0X0c
#define Set_Disp_Off 0x08
#define Set_CLR 0X01
#define Set_DISP_Mode 0X38
#define Set_LINE_Mode 0X06
//=====================================================================//
//====================主程序======================//
main()
{
EA=1;
IT1=1;
IT0=1;
EX1=1;
EX0=1;
Delay400Ms();
Init_LCM();
DisplayOneChar(4,1,'s');
//DisplayOneChar(5,1,'e');
//DisplayOneChar(5,1,'x');
while(1);
}
//================================================//
//延时子程序======================================//
//==============5ms延时==========================//
void Delay5Ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc--);
}
//==============400ms延时=========================//
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA--)
{
TempCycB=7269;
while(TempCycB--);
};
}
//=================================================//
//写入控制命令子程序=============================//
void WriComm(unsigned char reg_code,busy)
{
lcd_bus=reg_code;
RS=0;
RW=0;
E=0;
//if(busy)
// Delay();
E=1;
}
//=================================================//
//判断液晶显示器忙子程序==========================//
void Delay()
{
lcd_bus=0xff;
RS=0;
RW=1;
E=0;
E=0;
E=1;
while(busy==1);
}
//=================================================//
//显示命令子程序====================================//
void Display(unsigned char Disp_Data)
{
lcd_bus= Disp_Data;
RS=1;
RW=0;
E=0;
Delay();
E=1;
}
//===================================================//
//按指定位置显示一个字符子程序===============================================//
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x01;
X &= 0x0F;
if (Y) X |= 0x40;
X |= 0x80;
WriComm(X, 1);
Display(DData);
}
//=============================================================================//
//按指定位置显示一串字符子程序=================================================//
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char *DData)
{
Y &= 0x01;
X &= 0x0F;
if (Y) X |= 0x40;
X |= 0x80;
WriComm(X, 1);
while (*DData)
Display(*(DData++));
}
//=============================================================================//
//LCM初始化子程序==============================================================//
void Init_LCM()
{
lcd_bus=0;
WriComm(Set_DISP_Mode,0);
Delay5Ms();
WriComm(Set_DISP_Mode,0);
Delay5Ms();
WriComm(Set_DISP_Mode,0);
Delay5Ms();
WriComm(Set_DISP_Mode,1);
WriComm(Set_Disp_On,1);
WriComm(Set_LINE_Mode,1);
LED=0;
}
//=============================================================================//
//lcm第二行清字符子程序========================================================//
void LINE2_CLEAR()
{
unsigned char i;
WriComm(0XC0,1);
for(i=16;i>0;i--)
Display(0xfe);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -