lcd1602显示屏显示“welcome to 207”

基础知识:

lcd1602显示屏可以显示两行,一行可以显示16个字符

显示原理:(简单了解)

一般的液晶显示器(Liquid Crystal Display, LCD) 的主要原理是以电流刺激液晶分子产生点、线、面并配合背部灯管构成画面。
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。1602LCD是指显示的内容16×2,即最多只能显示32个字符。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。5X7点阵可以看做5行7列等间距分布的led灯,每一个灯相当于一个像素点,你要表达的字母或者数字都是由这些像素点组成的。只需控制灯的亮灭就可以了。
一般1602一共有16位引脚。

以下为16个引脚及说明

我们主要进行初始化,写命令,写数据

主要用到三个管脚1.RS(数据命令选择端)2.R/W(读写选择端)3.E(使能信号)

首先我们要学会创建一个多文件工程

.c文件和.h文件(上一篇文章如何建多个文件中有)

初始化的代码

void lcd1602_init(void)
{
	lcd1602_write_cmd(0x28);//数据总线4位,显示2行,5*7点阵/字符
	lcd1602_write_cmd(0x0c);//显示功能开,无光标,光标闪烁
	lcd1602_write_cmd(0x06);//写入新数据后光标右移,显示屏不移动
	lcd1602_write_cmd(0x01);//清屏	
}

写命令写数据的代码

#if (LCD1602_4OR8_DATA_INTERFACE==0)//8位LCD
void lcd1602_write_cmd(u8 cmd)
{
	LCD1602_RS=0;//选择命令
	LCD1602_RW=0;//选择写
	LCD1602_E=0;
	LCD1602_DATAPORT=cmd;//准备命令
	delay_ms(1);
	LCD1602_E=1;//使能脚E先上升沿写入
	delay_ms(1);
	LCD1602_E=0;//使能脚E后负跳变完成写入	
}
#else	//4位LCD
void lcd1602_write_cmd(u8 cmd)
{
	LCD1602_RS=0;//选择命令
	LCD1602_RW=0;//选择写
	LCD1602_E=0;
	LCD1602_DATAPORT=cmd;//准备命令
	delay_ms(1);
	LCD1602_E=1;//使能脚E先上升沿写入
	delay_ms(1);
	LCD1602_E=0;//使能脚E后负跳变完成写入
	
	LCD1602_DATAPORT=cmd<<4;//准备命令
	delay_ms(1);
	LCD1602_E=1;//使能脚E先上升沿写入
	delay_ms(1);
	LCD1602_E=0;//使能脚E后负跳变完成写入	
}
#endif

/*******************************************************************************
* 函 数 名       : lcd1602_write_data
* 函数功能		 : LCD1602写数据
* 输    入       : dat:数据
* 输    出    	 : 无
*************
这是一个比较基础的51单片机和LCD屏幕的应用。首先,需要将LCD接口和51单片机进行连接,然后通过51单片机的程序控制,向LCD屏幕发送数据进行滚动显示。 以下是一个简单的示例代码,可以实现LCD屏幕的滚动显示 "welcome to the world of mcu": ``` #include <reg51.h> #define LCD_DB P0 // 数据总线 sbit RS = P1^0; // RS引脚 sbit EN = P1^1; // EN引脚 // 延时函数 void Delay(unsigned int t) { while(t--); } // 初始化LCD屏幕 void LCD_Init() { LCD_DB = 0x38; // 8位数据总线,两行显示,5x7点阵字符 RS = 0; // 发送命令 EN = 1; // 使能 Delay(10); // 延时 EN = 0; // 禁止 LCD_DB = 0x0c; // 打开显示,光标不显示 RS = 0; // 发送命令 EN = 1; // 使能 Delay(10); // 延时 EN = 0; // 禁止 LCD_DB = 0x06; // 光标右移,字符不移动 RS = 0; // 发送命令 EN = 1; // 使能 Delay(10); // 延时 EN = 0; // 禁止 } // 向LCD屏幕发送一个字符 void LCD_Write_Char(unsigned char c) { LCD_DB = c; // 发送字符 RS = 1; // 发送数据 EN = 1; // 使能 Delay(10); // 延时 EN = 0; // 禁止 } // 向LCD屏幕发送一个字符串 void LCD_Write_String(unsigned char *str) { while(*str) // 遍历字符串 { LCD_Write_Char(*str++); // 发送字符 } } // 主函数 int main() { unsigned char str[] = "welcome to the world of mcu"; LCD_Init(); // 初始化LCD屏幕 while(1) { unsigned char i; for(i = 0; i < sizeof(str) - 1; i++) // 遍历字符串 { LCD_DB = 0x01; // 清屏 RS = 0; // 发送命令 EN = 1; // 使能 Delay(10); // 延时 EN = 0; // 禁止 LCD_DB = 0x80; // 光标移动到第一行第一列 RS = 0; // 发送命令 EN = 1; // 使能 Delay(10); // 延时 EN = 0; // 禁止 LCD_Write_String(str + i); // 发送字符串 Delay(50000); // 延时 } } return 0; } ``` 这段代码实现了LCD屏幕的初始化、字符和字符串的发送以及滚动显示。你可以根据自己的需求进行修改和扩展。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值