⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hd44780.c

📁 单片机接口技术实用子程序配套源代码
💻 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 + -