C51单片机驱动LCD1602显示字符串

之前做了好多外设,都只是玩玩,并不曾记录一下,时间久了,竟也都忘记了,周末无事,重新写了一下LCD1602的驱动函数,给有需要的人做一个参考:

硬件电路:

C51单片机驱动LCD1602显示字符串_第1张图片

其中,RS:P1.0

RW:P1.1

EN:P1.2

主函数:

#include "reg52.h"
#include "1602.h"

/*
要显示的字符串,可以定义很多,程序会分屏显示在LCD1602上
*/
char code MyStr[]="With this hand , I will left your sorrows! Your cup will never empty , for I will be your wine , with this candle\
  I will light your darkness , With this ring , I ask you to be mine!";

void main(void)
{
  init_lcd();//初始化LCD1602
  while(1)
  {
    ShowStr(0,0,MyStr,100 , 50000 , 1);//显示字符串在LCD1602上
    delay_lcd(60000);//所有字符显示完,停顿一下
  }
}

LCD1602驱动函数

#include "1602.h"
/*
LCD1602使用延时函数
*/
void delay_lcd(uint x)
{
	uint i;
	for(i=0;i14)
      {
        dress = 0x80+x;
        y=0;
        x=0;
        delay_lcd(delay);
        if(clear)
        {
          sentcode(LCD_CLEAR_SCREEN);
        }
      }
      
    }
    else
    {
      dress = 0x80+x;
      sentcode(dress);
      sentdata(*p);
      p++;
      x++;
      if((dress-0x80)>14)
      {
        dress = 0x80+x;
        y=1;
        x=0;
      }
    }
    delay_lcd(speed);
  }
}
/*
清屏操作
*/
void lcd_clear(void)
{
  sentcode(LCD_CLEAR_SCREEN);
//  sentcode(LCD_HOMING);
}

LCD1602头文件

#ifndef __1602_h__
#define __1602_h__

#include "reg52.h"

#define uchar unsigned char
#define uint unsigned int
  
#define show P0//显示数据总线
sbit lcdrs=P1^0;//控制/数据指示
sbit lcdrw=P1^1;//读/写指示
sbit lcde=P1^2;//使能


#define LCD_CLEAR_SCREEN	0x01      // 清屏
#define LCD_HOMING  		0x02      // 光标返回原点

void delay_lcd(uint x);
void sentcode(uchar cod);
void sentdata(uchar dat);
void init_lcd(void);
void play(uchar a,uchar b,uchar dat);
void ShowStr(uchar x , uchar y , char *p , uint speed , uint delay , uchar clear);
void lcd_clear(void);




#endif

 

你可能感兴趣的:(程序拾遗)