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

📄 my1602.c

📁 液晶显示器1602 c语言驱动实例,本程序使用51单片机,已调试通过.
💻 C
字号:
//lcd1602 dirve
//write by feiyang
#define line1 0//显示第一行
#define line2 1//显示第二行
#define line1_head 0x80//显示第一行加行头
#define line2_head 0xc0//显示第二行加行头
#define lcd_delay_time 40
#define data_mode 0x38//显示模式:8位2行5x7点阵
#define open_screen 0x0c//打开显示
#define display_address 0x80
#define clearscreen lcd_en_command(0x01)

#define high 1
#define low 0
#define zero 0
#define msb 0x80
#define lsb 0x01

#define lcdio p2
sbit lcd1602_rs=p07;//寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器
sbit lcd1602_rw=p06;//RW为读写信号线,高电平时进行读操作,低电平时进行写操作
sbit lcd1602_en=p05;//E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令

void main(void)
 {
 	lcd_init();//初始化
 	while(1)
 	 {
 	 	clearscreen;//清屏
 	 	delay_nms(2);
 	 	lcd_write_string(0,line1,"lcd test");
 	 	lcd_write_string(0,line2,"successful");
 	 	delay_nms(200);
 	 	clearscreen;
 	 	delay_nms(2);
 	 	lcd_write_string(0,line1,"lcd test");
 	 	lcd_write_string(0,line2,"successful");
 	 	delay_nms(200);
 	 }
 	}
///////////////////
void lcd_delay(void)
{
 unsigned char i;
 for(i=lcd_delay_time;i>zero;i--)
 ;
}
void lcd_en_command(unsigned char command)
 {
 	lcdio=command;
 	lcd1602_rs=low;
 	lcd1602_rw=low;//当RS和RW共同为低电平时写入指令或者显示地址
 	lcd1602_en=low;
 	lcd_delay();
 	lcd1602_en=high;
 }
void lcd_en_dat(unsinged char dat)
 {
 	lcdio=dat;
 	lcd1602_rs=high;
 	lcd1602_rw=low;//当RS为高电平RW为低电平时写入数据
 	lcd1602_en=low;
 	lcd_delay();
 	lcd1602_en=high;
 }
void lcd_set_xy(unsigned char x,unsigned char y)
 {
 	unsigned char address;
 	if(y==line1)
 		address=line1_head+x;
 	else
 		address=line2_head+X;
 	lcd_en_command(address);//写入地址
 }
void lcd_write_char(unsigned char x,unsigned char y,unsigned char dat)
 {
 	lcd_set_xy(x,y);//写入地址
 	lcd_en_dat(dat);//写入数据
 }
void lcd_write_string(unsigned char x,unsigned char y,unsigned char *s)
 {
 	lcd_set_xy(x,y);
 	while(*s)
 	 {
 	 	lcdio=*s;
 	 	lcd_en_dat(*s);
 	 	s++;
 	 }
 	}
void lcd_init(void)
 {
 	clearscreen;
 	lcd_en_command(data_mode);
 	lcd_en_command(open_screen);
 	lcd_en_command(display_address);//设置开始显示地址
 	clearscreen;
 }
void delay_nms(unsigned int n)
 {
 	unsigned int i=0,j=0;
 	for(i=n;i>0;i--)
 	 for(j=o;j<1140;j++);

⌨️ 快捷键说明

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