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

📄 16x2lcddriver.c

📁 LCD1602的驱动程序 测试通过 希望对有兴趣的朋友有帮助
💻 C
字号:
#include <p18cxxx.h>
#include "16x2LCDDriver.h"

//16X2LCD的延时子程序
void lcd_delay(unsigned int delaytime)
{
  while(delaytime)delaytime--;
}
//向LCD写入命令的子程序
void write_lcd_command(unsigned char write_command)
{
  lcd_delay(40);
  RsCLR;//Rs=0
  RWCLR;//RW=0
  LCDPORT=write_command;//写命令字
  ENsET;//EN=1;
  ENCLR;//EN=0
}
//向LCD写入数据的子程序
void write_lcd_data(unsigned char write_data)
{
  lcd_delay(40);
  RssET;//Rs=1
  RWCLR;//RW=0
  LCDPORT=write_data;//写数据
  ENsET;//EN=1
  ENCLR;//EN=0
}
//初始化LCD的子程序
void initize_lcd(void)
{
  unsigned char i;
  ENCLR;
  for(i=200;i>0;i--)lcd_delay(248);//延时45ms
  write_lcd_command(0x3f);
  for(i=4;i>0;i--)lcd_delay(248);
  write_lcd_command(0x3f);
  write_lcd_command(0x0f);
  write_lcd_command(0x01);
  for(i=4;i>0;i--)lcd_delay(248);
  write_lcd_command(0x06);
  for(i=4;i>0;i--)lcd_delay(248);
}
//在LCD上显示字符串内容的子程序,X和Y分别与LCD显示屏上的坐标,左上角为(0,0)
void lcd_displaystr(unsigned char x,unsigned char y,const unsigned char *str)
{
  switch(x)
    {
      case 0:
	    write_lcd_command(0x80+y);//光标定位在第一行
	    break;
	  case 1:
	    write_lcd_command(0xc0+y);//光标定位在第二行
	    break;
	}
  while(*str)//判断字符串是否全部送完
    {
	  write_lcd_data(*str);//向LCD送需要显示的数据
	  str++;//指针加1
	}
}
//在LCD上显示字符串内容的子程序,X和Y分别与LCD显示屏上的坐标,左上角为(0,0)
void lcd_displaystr_ram(unsigned char x,unsigned char y,unsigned char *str)
{
  switch(x)
    {
      case 0:
	    write_lcd_command(0x80+y);
	    break;
	  case 1:
	    write_lcd_command(0xc0+y);
	    break;
	}
  while(*str)
    {
	  write_lcd_data(*str);
	  str++;
	}
}

⌨️ 快捷键说明

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