📄 hd44780.c
字号:
//-----------------------函数声明,变量定义--------------------------------------------------------
#include <reg51.h>
#include <intrins.h>
//-----------------------定义管脚--------------------------------------------------------
#define data_IO P1
sbit rs=P3^0; //指令和数据寄存器//
sbit rw=P3^1; //读写控制//
sbit e=P3^2; //片选//
sbit flag=P1^7;
#define LCM_CLS 01H
#define CURSOR_HOME 02H
#define CURSOR_SR 14H
#define CURSOR_SL 10H
#define INCDD_CG_SHF_C 06H
#define TURN_ON_DISP 0FH
#define LCD_ON_CSR_OFF 0CH
unsigned char d[10]; //显示数据存储区
//-----------------------函数声明--------------------------------------------------------
unsigned char busy(int); //判忙//
void w_dat(unsigned char); //写显示数据子程序//
void w_com(unsigned char); //写指令代码子程序//
void HD44780_init(void); //初始化子程序//
void disp(unsigned char); //显示//
void delay(unsigned int ); //延时//
//--------------------------------------------------------------------------------------------------
// 函数名称: delay
// 入口参数: N
// 函数功能:延时子程序,实现(16*N+24)us的延时
// 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
//--------------------------------------------------------------------------------------------------
void delay(unsigned int N)
{
int i;
for(i=0;i<N;i++);
}
//------------------------------------------------------------------------------------------------------
// 函数名称 busy
// 函数功能 判忙
//------------------------------------------------------------------------------------------------------
void busy()
{
while(1)
{
data_IO=0xff;
rs=0; //RS=1为数据,RS=0为命令
rw=1; //RW=1为读,RW=1为写
e=1;
if(!flag) break;
e=0;
}
}
//------------------------------------------------------------------------------------------------------
// 函数名称 w_dat
// 函数功能 写显示数据
//------------------------------------------------------------------------------------------------------
void w_dat(unsigned char dat) //写数据//
{busy( );
data_IO=dat;
rs=1;
rw=0;
e=1;
e=0;
return;
}
//------------------------------------------------------------------------------------------------------
// 函数名称 w_com
// 函数功能 写指令
//------------------------------------------------------------------------------------------------------
void w_com(unsigned char com) //写指令//
{
busy( );
data_IO=com;
rs=0;
rw=0;
e=1;
e=0;
}
//------------------------------------------------------------------------------------------------------
// 函数名称 HD44780_init
// 函数功能 液晶初始化
//------------------------------------------------------------------------------------------------------
void HD44780_init(void) {
unsigned char i;
rs=0;
rw=0;
e=0;
for (i=0;i<2;i++)
{
w_com(0x30);
delay(100);
}
w_com(0x38);
w_com(0x0f);
w_com(0x18);
w_com(0x06);
w_com(0x01);
w_com(0x80);
}
//------------------------------------------------------------------------------------------------------
// 函数名称 disp
// 入口参数:data_num一次显示数据的个数
// 函数功能 显示数据
//------------------------------------------------------------------------------------------------------
void disp(unsigned char data_num)
{
unsigned char j;
w_com(1);
w_com(0x80);
for (j=0;j<data_num;j++)
w_dat(d[j]);
w_dat(' ');
w_com(0xc0);
w_dat('-');
w_dat('-');
w_dat('-');
w_dat('-');
w_dat('-');
w_dat('-');
w_dat('x');
w_dat('z');
}
//------------------------------------------------------------------------------------------------------
// 函数名称 main
// 函数功能 主函数
//------------------------------------------------------------------------------------------------------
main( )
{
HD44780_init( );
d[0]='D';
d[0]='P';
d[0]='J';
disp(3);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -