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

📄 lcd1602.h

📁 使用摩托罗拉PC9CSDG128B单片机进行定时中断LCD显示
💻 H
字号:
/**********************************************************
*            LCD1602驱动程序<lcd1602.h>
* 程序功能 : 实现LCD1602的显示驱动 
* 调用说明 : 用户应调用LCD1602的中层驱动函数,避免使用底层驱动
* 作    者 : qf and xiaochun ; At Mar,24,2006, 23:15 
**********************************************************/
#define CLR_SCREEN		 0//清屏
#define DISP_ON    		 1//显示开
#define DISP_OFF		 2//显示关
#define CURSOR_ON		 3//光标开
#define CURSOR_OFF		 4//光标关
#define CURSOR_FLASH_ON  5//光标闪烁开
#define CURSOR_FLASH_OFF 6//光标闪烁关
#define PICTURE_LEFT	 7//画面左移
#define PICTURE_RIGHT    8//画面右移
#define CURSOR_LEFT      9//光标左移
#define CURSOR_RIGHT     10//光标右移
 
//LCD1602控制端口与数据端口定义
#define LCD1602_RS PORTB_BIT0
#define LCD1602_RW PORTB_BIT1
#define LCD1602_EN PORTB_BIT2
#define LCDIO	   PORTA  //LCDIO为数据端口
//LCD1602用户控制命令定义
              
/**********************************************************
*                    底层驱动
* 包含文件 : void LCD_en_command(unsigned char command);
*            //写命令函数:向寄存器写入控制字
*            void LCD_en_dat(unsigned char dat);
*            //写数据函数:向寄存器写入数据
*            void LCD_delay();            
*            //LCD命令,数据写入延时3-5ms
**********************************************************/
//LCD命令,数据写入延时,3-5ms
void LCD_delay(){
	 int i;
	 for(i=0;i<10;i++)
	 { int j;
	   j=0x1996;
	   while(j>0) j--;
	 }
}
//*********************************************************
//写命令函数:向寄存器写入控制字
//参数:command- 控制字
void LCD_en_command(unsigned char command){
LCD_delay();			//延时一段时间,5ms
LCD1602_RW=0;			//写命令时,R/W为低电平
LCD1602_RS=0;   		//写入指令,RS为低电平
LCD1602_EN=1;		    //置高使能线
LCDIO=command;			//接收命令字并送到数据总线上
LCD1602_EN=0;			//在使能线的下降沿写入数据
}
//*********************************************************
//写数据函数:向寄存器写入数据
//参数:dat- 待要显示数据
void LCD_en_dat(unsigned char dat)
{
LCD_delay();			//延时一段时间
LCD1602_RW=0;			//写指令时,R/W为低电平
LCD1602_RS=1;   		//写入数据,RS为高电平
LCD1602_EN=1;   		//置高使能线
LCDIO=dat;				//接收数据并送到数据总线上
LCD1602_EN=0;			//在使能线的下降沿写入数据
}
/**********************************************************
*                    中层驱动
* 包含文件 : void LCD_set_xy(unsigned char x, unsigned char y);
*            //设置显示坐标:设置字符的显示位置,行、列坐标
*            void LCD_write_string(unsigned char x,unsigned char y,unsigned char *s)
*            //写字符串函数:向液晶写入字符串
*            void LCD_init(void)            
*            //LCD初始化函数
*            void LCD_cmd(unsigned char cmd)             
*            //LCD中层控制函数 
**********************************************************/
//LCD初始化函数
void LCD_init(void)
{ 
 LCD_en_command(0x38);			//设置为8位数据传送模式 
 LCD_en_command(0x0c);		   //开显示
 LCD_en_command(0x01);        //清屏,准备
}
//*********************************************************
//LCD中层控制函数
void LCD_cmd(unsigned char cmd){
     switch(cmd){
     case CLR_SCREEN      :LCD_en_command(0x01);break;
     case DISP_ON         :LCD_en_command(0x0c);break; 
     case DISP_OFF        :LCD_en_command(0x08);break;
     case CURSOR_ON       :LCD_en_command(0x0e);break;
     case CURSOR_OFF      :LCD_en_command(0x0c);break;
     case CURSOR_FLASH_ON :LCD_en_command(0x0f);break;
     case CURSOR_FLASH_OFF:LCD_en_command(0x0e);break;
     case PICTURE_LEFT    :LCD_en_command(0x18);break;
     case PICTURE_RIGHT   :LCD_en_command(0x1c);break;
     case CURSOR_LEFT     :LCD_en_command(0x10);break;
     case CURSOR_RIGHT    :LCD_en_command(0x14);break;
     default: break;
     }
 
}
//*********************************************************
//设置显示坐标:设置字符的显示位置,行、列坐标
//参数: x-列坐标,y-行坐标 
void LCD_set_xy(unsigned char x, unsigned char y)
{
 unsigned char address;		
 if (x == 0) 				    //判断行
  address = 0x80 + y;   		//设置列坐标
 else 
  address = 0xc0 + y;
 LCD_en_command(address); 		//将地址写入寄存器
}
//写字符串函数:向液晶写入字符串
//参数:x-列坐标,y-行坐标,*s-将要显示的字符串数据
void LCD_write_string(unsigned char x,unsigned char y,unsigned char *s)
{
    LCD_set_xy(x,y); 		//首先设置显示坐标
    while (*s)  			//判断是否结束
    {
        LCD_en_dat(*s);   
 		s++;
    }
}

/*

  LCD_init();
  LCD_cmd(CLR_SCREEN);
  LCD_cmd(DISP_ON);
  LCD_cmd(CURSOR_OFF);
  LCD_cmd(CURSOR_FLASH_OFF);
  LCD_write_string(0,0,p);
  LCD_cmd(CLR_SCREEN);
  LCD_write_string(1,0,p);
  
  */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -