单片机 > 单片机程序设计 > 详情

单片机第14课:LCD使用

发布时间:2020-09-03 发布时间:
|

下面是LCD的电路,其中RD接P2^6;LCDE接P2^7,WR接P2^5。


#include
#define uint unsigned int
#define uchar unsigned char

sbit lcd_E = P2^7;
sbit lcd_RS = P2^6;
sbit lcd_WR = P2^5;

uchar code table_show1[] = "Hello!";
uchar code table_show2[] = "I am ChenLu!";

void delay(uint time);
void init_lcd();
void write_lcd_command(uchar comm);
void write_lcd_data(uchar lcdData);

void main()
{
	int flag1,flag2,flag3;
	init_lcd();
	//写入缓存区
	write_lcd_command(0x80+0x10);
	for(flag1=0; flag1<6; flag1++)
	{
		write_lcd_data(table_show1[flag1]);
	}
	//写入缓存区
	write_lcd_command(0x80+0x50);
	for(flag2=0; flag2<12; flag2++)
	{
		write_lcd_data(table_show2[flag2]);
	}
	//整个屏幕向左移动至最左端
	for(flag3=0; flag3<16; flag3++)
	{
		write_lcd_command(0x18);	
	}
	//停在这里,避免反复刷新
	while(1);
}

//初始化LCD
void init_lcd()
{
	//初始化LCD的属性
	//显示模式
	write_lcd_command(0x38);
	//光标
	write_lcd_command(0x0f);
	write_lcd_command(0x06);
	//清屏
	write_lcd_command(0x01);
	//数据指针
	write_lcd_command(0x80);

}

//LCD写命令
void write_lcd_command(uchar comm)
{
	delay(5);
	//RS=L  RW = L  E=H
	lcd_RS = 0;
	delay(5);
	lcd_WR = 0;
	//写命令
	P0 = comm;
	delay(5);	
	lcd_E = 1;
	delay(5);
	lcd_E = 0;
	
}

//LCD写数据
void write_lcd_data(uchar lcdData)
{
	delay(5);
	//RS=H  RW = L  E=H
	lcd_RS = 1;
	delay(5);
	lcd_WR = 0;
	//写数据
	P0 = lcdData;
	delay(5);	
	lcd_E = 1;
	delay(5);
	lcd_E = 0;
	
}

//延时函数
void delay(uint time)
{
	uint i,j;
	for(i=100; i>time; i--)
		for(j=0; j<100; j++);
}

使用LCD主要是参考LCD数据手册,基本的用法就是上面的程序,关键是要注意时序问题。


读者可以在网上下载1602液晶资料,然后对着本程序琢磨。

注意:写命令---可以理解为设置显示屏的属性;写数据---可以理解成为你要让显示器显示的数据。





『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编指令 DCD