Proteus仿真-LCD1602液晶屏使用方法(驱动一)

news/2025/2/22 13:08:53/

一、硬件链接

在元件库中搜索LM016即可找到LCD1602液晶屏。

按下图方式链接单片机和屏幕。

二、软件驱动代码

//屏幕相关引脚接口定义
#define D P0	
sbit E=P2^6;   
sbit RW=P2^5;
sbit RS=P2^7; //函数声明
void LcdWriteCom(uchar com);					/* LCD1602写入8位命令子函数 */
void LcdWriteData(uchar dat)	;				/* LCD1602写入8位数据子函数 */
void LcdInit();									/* LCD1602初始化子程序 */	
void setAddr(unsigned char line ,unsigned char addr);
void setBuling(unsigned char YorN);
void Show_string1(uchar a[]); 					/* 第一行从头开始显示 字符   "" 双信号内直接加显示内容即可 */
void Show_string2(uchar a[]);					/* 第二行     "" 双信号内直接加显示内容即可 */
void show_string(uchar add,uchar a[]);			/* 指定位置显示字符串 注意 算好位置  0~27   40~67   地址值,"显示字符串" */
void show_number(uchar add,uint a);				/* show_number(0x加 要显示的地址,变量或数字 */
void show_float(uchar add,float a);				/* 显示浮点数 *//* 向1602写命令函数* 参数:com 命令* 返回值 : 无*/
void LcdWriteCom(uchar com)
{E=0;RW=0;RS=0;D=com;delay_us(5);E=1;delay_us(5);E=0;
}
/* 向1602写数据命令* 参数: dat 数据* 返回值: 无*/
void LcdWriteData(uchar dat)
{E=0;RW=0;RS=1;D=dat;delay_us(5);E=1;delay_us(5);E=0;
}/* LCD1602初始化函数*/
void LcdInit()
{LcdWriteCom(0x38);LcdWriteCom(0x0c);//0x0C光标不闪
//	LcdWriteCom(0x0d);//0x0D光标闪烁LcdWriteCom(0x06);LcdWriteCom(0x01);LcdWriteCom(0x80);
}
/*设置光标位置 第一行0x00-0xF 第二行0x40-0x4f */
void setAddr(unsigned char line ,unsigned char addr)
{if(line == 1)LcdWriteCom(0x80+addr);if(line == 2)LcdWriteCom(0x80+0x40+addr);}
/*设置光标闪烁*/
void setBuling(unsigned char YorN)
{if(YorN)LcdWriteCom(0x0d);//0x0D光标闪烁else{LcdWriteCom(0x0c);//0x0C光标不闪}
}/* 指定位置显示字符串* 参数 add 地址 第一行 0~27*               第二行 40~67*      a[] 字符串 "abc" */
void show_string(uchar add,uchar a[])
{uchar i;LcdWriteCom(0x80+add);for(i=0;a[i]!='\0';i++){LcdWriteData(a[i]);}
}/* 第一行显示字符串*/
void Show_string1(uchar a[])
{uchar i;LcdWriteCom(0x80);for(i=0;a[i]!='\0';i++){LcdWriteData(a[i]);}
}/* 第二行显示字符串*/
void Show_string2(uchar a[])
{uchar i;LcdWriteCom(0x80+0X40);for(i=0;a[i]!='\0';i++){LcdWriteData(a[i]);}
}/* 任意位置显示数字 
*/
void show_number(uchar add,uint a)
{char s[10];sprintf(s,"%d",a);				show_string(add,(uchar *)s);		/* 格式转换 */
}/* 任意位置显示浮点数
*/
void show_float(uchar add,float a)
{char s[10];sprintf(s,"% .1f",a);/* 格式转换 */show_string(add,(uchar *)s);
}

三、示例程序

void main()
{float temp = 6.4;char string[17] = {0};/* LCD1602初始化函数 */LcdInit();		while(1)   //程序主逻辑{//将字符串格式化,并存储在数组中,用于显示摄氏度sprintf(string,"T:%.1f C     ",temp);     Show_string1(string);    //显示在LCD第一行}
}


http://www.ppmy.cn/news/527084.html

相关文章

外挂电容触摸屏总结(四)

目录 前文 TP基本性能 调试过程 产测 前文 触摸屏的基本性能指标都很明确了,各家厂家不一样,不过是对他们支持的程度不一样。以下是触摸屏的基本性能指标。 TP基本性能 触摸屏的基本性能:灵敏度(Sensitivity)&…

电容式触摸屏调试常见问题汇总

成品电容触摸屏测试项目:准确度、线性度、灵敏度、线性度、响应速度、抗干扰能力、抗压能力,耐高低温,耐麿,盐雾,防爆防裂等测试。 当触摸屏出现故障后,应首先检查控制卡供电是否正常,Windows驱动是否正常安…

瑞芯微RV1109配置7寸电容触摸屏的方向修改笔记

对RV1109及瑞芯微平台感兴趣的读者,请自行到文末下载SDK: 以下是我对荣品开发板官方资料的补充,本人用的是淘宝购买的荣品 RV1109 开发板,我的方向是这样的: 打开对应的LCD的dtsi文件: 关键参数: gtp_resolution_x = <1024>; # x方向分辨率 gtp_resolution_y = &l…

苹果电脑MacBook M1芯片安装SPSS(数据分析工具)教程详细介绍:保姆级教程!!!

首先声明此文章仅供帮助学习的朋友安装使用SPSS软件&#xff0c;不许用于任何商业性行为。 1.下载安装包部分2.MAC M1操作部分3.SPSS安装过程部分软件安装部分文件更换部分 4.SPSS软件功能调整部分感谢 特别强调&#xff1a;在安装过程中请逐一对照安装步骤&#xff0c;操作可以…

使用电容触摸屏做画板——软件IIC(二)

使用电容触摸屏时发现硬件IIC会使电容触摸屏卡死&#xff0c;经过调试发现软件IIC更加好用&#xff0c;那么下面就了解一下软件IIC叭。 IIC协议&#xff1a; 通讯的起始和停止信号 有效数据 响应信号 具体参考博客&#xff1a;STM32F429入门&#xff08;二十&…

电容触摸屏GT911、GT928、GT9147的使用

一、介绍与硬件连接 GT911、GT928、GT9147都属于GT9系列非单层多点触控芯片&#xff0c;他们支持的触控点数不同&#xff08;GT928支持10个点、GT911支持5个点&#xff09;、驱动和感应通道也可能不同。可是他们的寄存器和IIC通讯时序是相同的&#xff0c;也就是说驱动程序是兼…

基于51单片机的简易电容值测量仪proteus仿真设计

51单片机简易电感测量仪仿真设计( proteus仿真程序讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0039 51单片机简易电感测量仪仿真设计 51单片机最小系统的相关知识复位电路&#xf…

51单片机LCD1602液晶屏调试工具

LCD1602调试工具 使用LCD1602液晶屏作为调试窗口&#xff0c;提供类似printf函数功能&#xff0c;可实时的观察单片机内部数据的变换情况&#xff0c;便于调试和演示。 我们买普中的实验板时&#xff0c;会附赠这个LCD1602液晶屏。 调试的方法 除了LCD1602调试&#xff0c;…