lcd1602驱动程序

lcd.c

#include "lcd.h"
#include "reg52.h"


void lcd1602_write_cmd(uchar cmd)
{
	LCD1602_RS=0;  //写命令
	LCD1602_RW=0;//写
	LCD1602_E=0;
	LCD1602_DATEPORT=cmd;
	delay_ms(1);//1ms
	LCD1602_E=1;
	delay_ms(1);
	LCD1602_E=0;
}
void lcd1602_write_data(uchar dat)
{
	LCD1602_RS=1;  //写数据
	LCD1602_RW=0;//写
	LCD1602_E=0;
	LCD1602_DATEPORT=dat;
	delay_ms(1);//1ms
	LCD1602_E=1;
	delay_ms(1);
	LCD1602_E=0;
}
void lcd1602_init(void)
{
	lcd1602_write_cmd(0x38);
	lcd1602_write_cmd(0x0c);
	lcd1602_write_cmd(0x06);//模式
	lcd1602_write_cmd(0x01);
}
void lcd1602_clear(void)
{
	lcd1602_write_cmd(0x01);
}
//x:0-15  y:0-1
void  lcd1602_show_string(uchar x,uchar y,uchar *str)//lcd1602_show_string(0,0,"123456789")
{
	uchar i=0;
	if((y>1)|(x>15))return;
	if(y<1)  //从第一行开始显示
	{
		while(*str!='\0')
		{
			if(i<16-x)lcd1602_write_cmd(0x80+x+i);//第一行
			else lcd1602_write_cmd(0x80+0x40+x+i-16);//第二行
			lcd1602_write_data(*str);
			str++;
			i++;
		}
	}
	else  //从第二行开始显示
	{
		while(*str!='\0')
		{
			if(i<16-x)lcd1602_write_cmd(0x80+0x40+x+i);//第一行
			else lcd1602_write_cmd(0x80+x+i-16);//第二行
			lcd1602_write_data(*str);
			str++;
			i++;
		}
	}
}
void lcd1602_show_data(uchar x,uchar y,uchar dat)//lcd1602_show_data(0,0,1);dat+0x30
{
	if((y>1)|(x>15))return;
	if(y<1)//第一行
	{
		lcd1602_write_cmd(0x80+x);
	}
	else //第二行
	{
		lcd1602_write_cmd(0x80+0x40+x);
	}
	lcd1602_write_data(dat+0x30);
}

lcd.h

#ifndef __lcd_H_
#ifndef __lcd_H_

#include "reg52.h"

#define uchar unsigned char
#define uint unsigned int

#define LCD1602_DATEPORT  P2

sbit LCD1602_RS=P0^7;
sbit LCD1602_RW=P0^6;
sbit LCD1602_E=P0^5;

void delay_ms(uint ms);
void lcd1602_write_cmd(uchar cmd);
void lcd1602_write_data(uchar dat);
void lcd1602_init(void);
void lcd1602_clear(void);
void  lcd1602_show_string(uchar x,uchar y,uchar *str);
void lcd1602_show_data(uchar x,uchar y,uchar dat);

#endif

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值