#include "lcd16024bit.h"
sbit lcdrs=P1^0; //数据/命令选择端,低电平为指令,高电平为数据
sbit lcdrw=P3^7; //读写控制端,低电平为写
sbit lcden=P3^6; //使能端
static void lcd_delay(uint x) //延时 x 毫秒
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
/*==========================================================
*函数名称:Lcd_1602_write(uchar com,date)
*功 能:向1602写数据/指令
*入口参数:com(com=0 写命令 com=1 写数据)
*出口参数:
*说 明:四线用的是1602的高四位DB4-DB7,单片机的数据口为P1口的高四位P1.4-P1.7
*==========================================================*/
static void Lcd_1602_write(uchar com,date)
{
uchar i;
lcdrw=0; //设置为写
lcdrs=com; //将形参传给lcdrs
for(i=0;i<2;i++) //每次写四位,写完一个数据/命令(8位)需要两次
{
lcden=1;
P3=(P3&0xf0)|(date&0xf0)>>4;//将date的高四位送入P1,同时保持P1的低四位不变
//如果使用P1的低四位的话,则该处应该改为:P1=(P1&0xf0)|((date>>4)&0x0f);
lcd_delay(50); //适当延时,数据稳定
lcden=0; //送入数据
date<<=4; //低四位左移到高四位
}
}
/*==========================================================
*函数名称:void Lcd_1602_init()
*功 能:对1602进行初始化
*入口参数:
*出口参数:
*说 明:用四线时,1602的初始化只需要高四位数据就可以完成,在初始化完成之后必须再传入四位数据,需注意。
* 执行完write_1602(0,0x28);之后液晶已经初始化,其实在执行了一半的时候就已经初始化完成,此时又传入了
四位数据(一个写语句会传入8位数据),这时候如果直接写数据的话,就会形成乱码
*==========================================================*/
void Lcd_1602_init()
{
Lcd_1602_write(0,0x28); //0x28=0010 1000,将液晶设置为16*2显示,5*7点阵,4位数据口
lcd_delay(5);
lcden=1;
lcden=0;
Lcd_1602_write(0,0x28); //显示方式设置
Lcd_1602_write(0,0x0c); //设置开显示,不显示光标
Lcd_1602_write(0,0x06); //默认(0x06)写入新数据后光标右移 屏幕不移动
Lcd_1602_write(0,0x01); //显示清0,数据指针清0
lcd_delay(100);
}
void Write_str(uchar add,char *s)
{
if(add)Lcd_1602_write(0,0xc0);
else Lcd_1602_write(0,0x80);
while(*s!='\0')
{
Lcd_1602_write(1,*s++);
lcd_delay(50);
}
}
void Disp_Dynamicstr(bit Yadd,uint_8 Xadd,uint_16 disp_data)
{
uint_8 qia,bai,shi,ge;
qia = disp_data/1000;
bai = disp_data/100%10;
shi= disp_data%100/10;
ge= disp_data%10;
if(Yadd)
{
Lcd_1602_write(0,0x80+0x40+Xadd);
Lcd_1602_write(1,0x30+qia);
Lcd_1602_write(1,0x30+bai);
Lcd_1602_write(1,0x2e);//显示。
Lcd_1602_write(1,0x30+shi);
Lcd_1602_write(1,0x30+ge);
}
else
{
Lcd_1602_write(0,0x80+Xadd);
Lcd_1602_write(1,0x30+qia);
Lcd_1602_write(1,0x30+bai);
Lcd_1602_write(1,0x2e);//显示。
Lcd_1602_write(1,0x30+shi);
Lcd_1602_write(1,0x30+ge);
}
}
BSP.zip_LCD1602 51单片机
版权申诉
158 浏览量
2022-09-15
01:57:52
上传
评论
收藏 2KB ZIP 举报
小贝德罗
- 粉丝: 71
- 资源: 1万+
最新资源
- 基于宏晶STC单片机开发ISP程序Demo-使用Y-Modem协议软件源码+文档说明资料.zip
- 基于Vue+Echarts开发的风力发电机中传感器的数据展示监控
- 新普_软包电池_三是调试工程05301.zip
- 基于python遥感毕业设计TOA深度学习反演PM2.5源码+文档说明(高分项目)
- 基于stc8A系列单片机和ov7670模块制作的人脸识别系统
- 基于python的系统设计与实现博客系统.zip
- SSH客户机Xshell资源包
- 未命名1.cpp
- AD7177-2 AD7175-2, AD7172-2 AD717X-系列芯片多路复用模数转换器驱动程序C源码.zip
- 后端框架入门掌握SpringBoot和Django等后端框架电子资源pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈