#include "reg52.h"
#include "LCD1602.h"
void Lcd1602_Delay1ms(uint c) //误差 0us
{
uchar a,b;
for (; c>0; c--)
{
for (b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
/*******************************************************************************
* 函 数 名 : LcdWriteCom
* 函数功能 : 向LCD写入一个字节的命令
* 输 入 : com
* 输 出 : 无
*******************************************************************************/
#ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时
void LcdWriteCom(uchar com) //写入命令
{
LCD1602_E = 0; //使能
LCD1602_RS = 0; //选择发送命令
LCD1602_RW = 0; //选择写入
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; //选择写入命令
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = com; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
LCD1602_DATAPINS = com << 4; //发送低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
#endif
/*******************************************************************************
* 函 数 名 : LcdWriteData
* 函数功能 : 向LCD写入一个字节的数据
* 输 入 : dat
* 输 出 : 无
*******************************************************************************/
#ifndef LCD1602_4PINS
void LcdWriteData(uchar dat) //写入数据
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 1; //选择输入数据
LCD1602_RW = 0; //选择写入
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; //选择写入数据
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = dat; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
LCD1602_DATAPINS = dat << 4; //写入低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
#endif
/*******************************************************************************
* 函 数 名 : LcdInit()
* 函数功能 : 初始化LCD屏
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
#ifndef LCD1602_4PINS
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x38); //开显示
LcdWriteCom(0x0c); //开显示不显示光标
LcdWriteCom(0x06); //写一个指针加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80); //设置数据指针起点
}
#else
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x32); //将8位总线转为4位总线
LcdWriteCom(0x28); //在四位线下的初始化
LcdWriteCom(0x0c); //开显示不显示光标
LcdWriteCom(0x06); //写一个指针加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80); //设置数据指针起点
}
#endif
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
DHT11温湿度.zip (34个子文件)
DHT11温湿度
仿真图
LCD滚动显示.pdsprj.USER-20190602CH.Administrator.workspace 3KB
LCD滚动显示.pdsprj 20KB
Last Loaded LCD滚动显示.pdsbak 20KB
Backup Of LCD滚动显示.pdsbak 19KB
程序 仿真用
LCD1602.h 605B
LCD.uvgui.Administrator 165KB
LCD.uvproj 14KB
LCD.uvopt 6KB
Objects
计算器.build_log.htm 1KB
计算器.hex 3KB
delay.__i 119B
caculator.obj 10KB
计算器 16KB
delay.obj 2KB
LCD1602.obj 4KB
LCD1602.__i 125B
DHT11.obj 5KB
temp.obj 6KB
temp.__i 116B
计算器.lnp 130B
LCD1602.c 3KB
Listings
temp.lst 7KB
delay.lst 2KB
LCD1602.lst 6KB
计算器.m51 16KB
caculator.lst 6KB
DHT11.lst 3KB
计算器.uvopt 5KB
delay.h 182B
DHT11.c 1KB
DHT11.h 237B
delay.c 389B
计算器.uvgui.Administrator 84KB
caculator.c 3KB
共 34 条
- 1
资源评论
- m0_749066462023-12-11感谢资源主的分享,这个资源对我来说很有用,内容描述详尽,值得借鉴。
- m0_747899712024-03-13支持这个资源,内容详细,主要是能解决当下的问题,感谢大佬分享~
- Eurekaaaaaaaaaa2023-11-27这个资源对我启发很大,受益匪浅,学到了很多,谢谢分享~
- 彦烟2024-03-29资源质量不错,和资源描述一致,内容详细,对我很有用。
- 2301_768844202024-04-21资源内容总结地很全面,值得借鉴,对我来说很有用,解决了我的燃眉之急。
嵌入式小李
- 粉丝: 1w+
- 资源: 146
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功