当前位置:网站首页>lcd1602调试
lcd1602调试
2022-07-30 05:46:00 【缘聚654】
今天来了解一下单片机里非常重要的一个模块——LCD1602显示屏,现对于led显示,这块屏里集成更为复杂的显示元件,可以实现更加多样和细致的显示。

这是一块标准的lcd1602显示屏,通过编译可以实现对数字,字母以及特殊字符的显示,显示的格式为上下两行,每行可以显示十六个字符。

图中的每个函数都对应实现lcd1602的不同功能的显示,下面具体的讲解每一个函数的作用及其代码。
![]()
初始化函数的作用都大致相同,对显示屏进行初始化就是使显示屏上的内容进行清空,为接下来的显示做好准备。
void LCD_Init()
{
LCD_WriteCommand(0x38);
LCD_WriteCommand(0x0c);
LCD_WriteCommand(0x06);
LCD_WriteCommand(0x01);
}![]()
功能:在带一行带一列显示出一个A,传入函数的数据第一个数代表所在的行,第二个表示所在的列,第三个表示要显示的内容。
void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char)
{
LCD_SetCursor(Line,Column);
LCD_WriteData(Char);
} ![]()
功能:在第一行第三列显示hello,字符串显示和字符显示大致相同,但要注意的是字符串不应过长,要保证从显示第一个字母到最后一个字母不能超过lcd1602显示屏的最大长度。
void LCD_ShowString(unsigned char Line,unsigned char Column,char *String)
{
unsigned char i;
LCD_SetCursor(Line,Column);
for(i=0;String[i]!='\0';i++)
{
LCD_WriteData(String[i]);
}
}
下面的这些函数都是实现对数字的显示,这里需要注意的就是除了和字符显示一样要对现实的行,列,内容进行输入外,还要输入数字的长度,这是因为函数内部的for循环需要这个数据进行终止循环的判断。
void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{
unsigned char i;
LCD_SetCursor(Line,Column);
for(i=Length;i>0;i--)
{
LCD_WriteData(Number/LCD_Pow(10,i-1)%10+'0');
}
}
void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length)
{
unsigned char i;
unsigned int Number1;
LCD_SetCursor(Line,Column);
if(Number>=0)
{
LCD_WriteData('+');
Number1=Number;
}
else
{
LCD_WriteData('-');
Number1=-Number;
}
for(i=Length;i>0;i--)
{
LCD_WriteData(Number1/LCD_Pow(10,i-1)%10+'0');
}
}
void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{
unsigned char i,SingleNumber;
LCD_SetCursor(Line,Column);
for(i=Length;i>0;i--)
{
SingleNumber=Number/LCD_Pow(16,i-1)%16;
if(SingleNumber<10)
{
LCD_WriteData(SingleNumber+'0');
}
else
{
LCD_WriteData(SingleNumber-10+'A');
}
}
}
void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{
unsigned char i;
LCD_SetCursor(Line,Column);
for(i=Length;i>0;i--)
{
LCD_WriteData(Number/LCD_Pow(2,i-1)%2+'0');
}
}
在这些功能函数中还包含着一些函数
void LCD_SetCursor(unsigned char Line,unsigned char Column)
{
if(Line==1)
{
LCD_WriteCommand(0x80|(Column-1));
}
else if(Line==2)
{
LCD_WriteCommand(0x80|(Column-1+0x40));
}
}
void LCD_WriteData(unsigned char Data)
{
LCD_RS=1;
LCD_RW=0;
LCD_DataPort=Data;
LCD_EN=1;
LCD_Delay();
LCD_EN=0;
LCD_Delay();
}
void LCD_WriteCommand(unsigned char Command)
{
LCD_RS=0;
LCD_RW=0;
LCD_DataPort=Command;
LCD_EN=1;
LCD_Delay();
LCD_EN=0;
LCD_Delay();
}
int LCD_Pow(int X,int Y)
{
unsigned char i;
int Result=1;
for(i=0;i<Y;i++)
{
Result*=X;
}
return Result;
}void LCD_SetCursor(unsigned char Line,unsigned char Column)
功能:将显示屏的光标移动到要显示的位置。
void LCD_WriteData(unsigned char Data)
功能:将需要显示的内容写入到显示屏中,再由显示屏显示出来
void LCD_WriteCommand(unsigned char Command)
功能:放入到 LCD_SetCursor()函数中帮助确定光标要移动到哪一列。
int LCD_Pow(int X,int Y)
功能:在显示数字时用于确定各个位上的值
以上就是lcd1602的驱动代码,将lcd1602与单片机的其他模块结合就能实现多种功能。
边栏推荐
猜你喜欢

QT weekly skills (3)~~~~~~~~~ serial port addition

QT Weekly Skills (1) ~~~~~~~~~ Running Icon

QT weekly skills (2)~~~~~~~~~ interface buttons

QT串口和CAN数据动态实时显示最后日志

Acwing刷题第一节

QT serial 4: LORA test platform based on QT and STM32H750 (3)

QT串口动态实时显示大量数据波形曲线(四)========“界面的美化与处理”

无法完成包的安装npm ERR! Refusing to install package with name “moment“ under a package also called “moment“

ES6 syntax notes (ES6~ES11)

【速成MSP430f149】电赛期间学习MSP430f149笔记
随机推荐
This beta version of Typora is expired, please download and install a newer;解决方法
QT连载4:基于QT和STM32H750的LORA试验平台(3)
Antd 树拖拽一些细节,官网没有,摸坑篇
js 替换字符串中所有 “ 引号 —— 数据处理
Kunlun State Screen Production (Serialization 2)---Basic Chapter (setting and display, serial transmission)
昆仑通态屏幕制作(连载5)---基础篇(串口接收,文本与灯显示)
【部分项目展示】
[Punctuality Atom] Simple application of sys.c, sys.h bit-band operations
VSCode隐藏左边活动栏
C语言,库函数中qsort的用法,及解释
2021年软考中级过关
OpenLayers 初学者指南,源码测试可用
HSPF model application
华秋电子成为开放原子开源基金会openDACS捐赠人,共建 openDACS开源生态
Kunlun On-state Screen Production (serial 1)---Contact
BLDC电机应用持续火爆,“网红神器”筋膜枪前景几何?
关于map对key自定义排序
你不知道的JS语法篇笔记
闭包和作用域(你不知道的JS自用笔记)
SSH-RSA密钥