#include "LCD1602.h"
/*****************************************
函 数 名:Lcd1602_Delay1ms
函数功能:延时1ms函数
输 入:
输 出:
*****************************************/
void Lcd1602_Delay1ms(uint c)
{
uchar a,b;
for(;c>0;c--)
{
for(b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
/*****************************************
函 数 名:LcdWriteCom
函数功能:向LCD1602写入一个字节的命令
输 入:
输 出:
*******************************************/
#ifndef LCD1602_4PINS //当没用定义LCD1602_4PINS时
void LcdWriteCom(uchar com) //写入命令
{
LCD1602_E=0; //使能
LCD1602_RS=0; //命令/数据选择端,RS=0为命令,RS=1为数据;
LCD1602_RW=0; //读/写选择端,RW=0向LCD1602写入,RW=1从LCD1602读取;
LCD1602_DATAPINS=com; //写入命令
Lcd1602_Delay1ms(1); //等待数据稳定
LCD1602_E=1; //写入时序
Lcd1602_Delay1ms(5); //保持时间
LCD1602_E=0;
}
#else
void LcdWriteCom(uchar com) //写入命令
{
LCD1602_E=0; //使能
LCD1602_RS=0; //命令/数据选择端,RS=0为命令,RS=1为数据;
LCD1602_RW=0; //读/写选择端,RW=0向LCD1602写入,RW=1从LCD1602读取;
LCD1602_DATAPINS=com; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1); //等待数据稳定
LCD1602_E=1; //写入时序
Lcd1602_Delay1ms(5); //保持时间
LCD1602_E=0;
LCD1602_DATAPINS=com<<4; //发送低4位
Lcd1602_Delay1ms(1); //等待数据稳定
LCD1602_E=1; //写入时序
Lcd1602_Delay1ms(5); //保持时间
LCD1602_E=0;
}
#endif
/***********************************************
函 数 名:LcdWriteData
函数功能:向LCD写入1个字节的数据
输 入:
输 出:
*************************************************/
#ifndef LCD1602_4PINS //当没用定义LCD1602_4PINS时
void LcdWriteData(uchar dat) //写入命令
{
LCD1602_E=0; //使能
LCD1602_RS=1; //命令/数据选择端,RS=0为命令,RS=1为数据;
LCD1602_RW=0; //读/写选择端,RW=0向LCD1602写入,RW=1从LCD1602读取;
LCD1602_DATAPINS=dat; //写入命令
Lcd1602_Delay1ms(1); //等待数据稳定
LCD1602_E=1; //写入时序
Lcd1602_Delay1ms(5); //保持时间
LCD1602_E=0;
}
#else
void LcdWriteData(uchar dat) //写入命令
{
LCD1602_E=0; //使能
LCD1602_RS=1; //命令/数据选择端,RS=0为命令,RS=1为数据;
LCD1602_RW=0; //读/写选择端,RW=0向LCD1602写入,RW=1从LCD1602读取;
LCD1602_DATAPINS=dat; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1); //等待数据稳定
LCD1602_E=1; //写入时序
Lcd1602_Delay1ms(5); //保持时间
LCD1602_E=0;
LCD1602_DATAPINS=dat<<4; //发送低4位
Lcd1602_Delay1ms(1); //等待数据稳定
LCD1602_E=1; //写入时序
Lcd1602_Delay1ms(5); //保持时间
LCD1602_E=0;
}
#endif
/**************************************************
函 数 名:LcdInit()
函数功能:初始化LCD屏
输 入:
输 出:
************************************************/
#ifndef LCD1602_4PINS
void LcdInit()
{
LcdWriteCom(0x38);//开显示
LcdWriteCom(0x0c);//开显示,不显示光标
LcdWriteCom(0x06);//写一个指针加1
LcdWriteCom(0x01);//清屏
LcdWriteCom(0x80);//设置数据指针起点
}
#else
void LcdInit()
{
LcdWriteCom(0x32);//将8位总线转为4位总线
LcdWriteCom(0x28);//在四位线下的初始化
LcdWriteCom(0x0c);//开显示,不显示光标
LcdWriteCom(0x06);//写一个指针加1
LcdWriteCom(0x01);//清屏
LcdWriteCom(0x80);//设置数据指针起点
}
#endif
14、实时时钟DS1302.zip_51单片机
版权申诉
130 浏览量
2022-09-21
20:51:33
上传
评论
收藏 36KB ZIP 举报
刘良运
- 粉丝: 71
- 资源: 1万+
最新资源
- 游戏销售和评价数据【Kaggle数据】
- python爬虫抓包工具reqable-app-windows-x86-64
- VS2019专业版 C#和MFC安装
- 按键精灵+长时间循环+自动按键+按空格键
- nursery.data
- EasyCodeConfig-Final
- whisper-small-ct2 OPENAI ct2 语言识别模型实例,python环境请自行下载
- FPGA项目verilog实例资料带项目源码设计文档基于FPGA与DS18B20温度传感器的通信实现
- FPGA项目verilog实例资料带项目源码设计文档基于FPGA的序列检测器
- FPGA项目verilog实例资料带项目源码设计文档基于FPGA的信号发生器
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈