/******************************************************************************/
/* 叁议电子 */
/* www.ppptalk.com */
// 版本: 51END
// 文件名: lcd1602.c
// 说明: LCD1602模块
// 编写日期: 2017年11月27日
// qq交流群: 677878048
// 网址: www.ppptalk.com
// 淘宝店地址:https://shop115025335.taobao.com
// 在线视频: https://space.bilibili.com/253153822/#/channel/detail?cid=37504
// 视频下载: 链接:https://pan.baidu.com/s/1DqXNUDjyAKiApw-aAji8Ug 密码:lezb
// 免责声明: 该程序仅用于学习与交流
// (c) PPPTalk All Rights Reserved
/******************************************************************************/
/******************************************************************************/
// 包含头文件
/******************************************************************************/
#include "config.h"
#include "delay.h"
#include "lcd1602.h"
/******************************************************************************/
// 函数名称:Lcd_Custom_Char
// 输入参数:row-行 col-列 pos-CGRAM位置 *customValueTable-自定义字符数据
// 输出参数:无
// 函数功能:显示自定义字符
/******************************************************************************/
//void Lcd1602_Custom_Char(uint8 row, uint8 col, uint8 pos, uint8 *customValueTable){
// uint8 i = 0;
// for(i=0;i<8;i++){
// Lcd1602_Write_Cmd(0x40+pos*8+i);
// Lcd1602_Write_Data(*(customValueTable+i));
// }
// if(row==1){
// Lcd1602_Write_Cmd(0x00+0x80+col-1);
// Lcd1602_Write_Data(0x00+pos);
// }else{
// Lcd1602_Write_Cmd(0x40+0x80+col-1);
// Lcd1602_Write_Data(0x00+pos);
// }
//}
/******************************************************************************/
// 函数名称:Lcd_Show_String
// 输入参数:row-行 col-列 *str-字符
// 输出参数:无
// 函数功能:LCD1602显示字符
/******************************************************************************/
void Lcd1602_Show_String(uint8 row, uint8 col,uint8 *str){
uint8 *defaultValue = "parameter error" ;
switch(row){
case 1:
Lcd1602_Write_Cmd(0x00+0x80+col-1);//第一行第y个空格
while(*str!='\0'){
Lcd1602_Write_Data(*str);
str++;
}
break;
case 2:
Lcd1602_Write_Cmd(0x40+0x80+col-1);//第二行第y个空格
while(*str!='\0'){
Lcd1602_Write_Data(*str);
str++;
}
break;
default:
Lcd1602_Write_Cmd(0x00+0x80);//parameter error
while(*defaultValue!='\0'){
Lcd1602_Write_Data(*defaultValue);
defaultValue++;
}
}
}
/******************************************************************************/
// 函数名称:Lcd_Busy_Check
// 输入参数:无
// 输出参数:无
// 函数功能:LCD1602忙信号检查
/******************************************************************************/
void Lcd1602_Busy_Check(void){
uint8 tmp;
lcdPort = 0xff;//一开始的时候,lcdPort设置成输入状态
do{
RS = 0;
RW = 1;
EN = 0;
EN = 1;
_nop_();
_nop_();//延时CP
tmp = lcdPort;
_nop_();//延时PQ
EN = 0;
_nop_();
}while(tmp&0x80);
}
/******************************************************************************/
// 函数名称:Lcd_Init
// 输入参数:无
// 输出参数:无
// 函数功能:LCD1602初始化
/******************************************************************************/
void Lcd1602_Init(void){
Delay15ms();
Lcd1602_Write_Cmd(0x38);//写指令38H
Delay5ms();
Lcd1602_Write_Cmd(0x38);//显示模式设置
Lcd1602_Write_Cmd(0x08);//显示关闭
Lcd1602_Write_Cmd(0x01);//显示清屏
Lcd1602_Write_Cmd(0x06);//显示光标移动设置
Lcd1602_Write_Cmd(0x0c);//显示开及光标设置
}
/******************************************************************************/
// 函数名称:Lcd_Write_Cmd
// 输入参数:myCmd-指令
// 输出参数:无
// 函数功能:LCD1602写指令
/******************************************************************************/
void Lcd1602_Write_Cmd(uint8 cmd){
Lcd1602_Busy_Check();
RS = 0;
RW = 0;
EN = 0;
//delay AB 没有说明,取消延时
lcdPort = cmd;
_nop_();//delay BC 延时1us
EN = 1;
_nop_();//delay CD 延时1us
EN = 0;
_nop_();//delay DE 延时1us
_nop_();//delay EF 延时1us
}
/******************************************************************************/
// 函数名称:Lcd_Write_Data
// 输入参数:myData-数据
// 输出参数:无
// 函数功能:LCD1602写数据
/******************************************************************************/
void Lcd1602_Write_Data(uint8 Data){
Lcd1602_Busy_Check();
RS = 1;
RW = 0;
EN = 0;
//delay AB 没有说明,取消延时
lcdPort = Data;
_nop_();//delay BC 延时1us
EN = 1;
_nop_();//delay CD 延时1us
EN = 0;
_nop_();//delay DE 延时1us
_nop_();//delay EF 延时1us
}
没有合适的资源?快使用搜索试试~ 我知道了~
STC89C52RC单片机L+DS1302+LCD1602设计数字时钟模块软件实例源代码+开发板硬件参考设计原理图(PDF版)
共28个文件
c:4个
lst:4个
h:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 108 浏览量
2024-05-19
15:50:17
上传
评论
收藏 232KB ZIP 举报
温馨提示
STC89C52RC单片机L+DS1302+LCD1602设计数字时钟模块软件实例源代码+开发板硬件参考设计原理图(PDF版) int main(void){ uint8 dataSecond,dataMin,dataHour; //定义时分秒 Lcd1602_Init(); //1602初始化 Lcd1602_Show_String(2,3,"DS1302 TEST!"); Ds1302_Write_Data(0x8e,0x00); Ds1302_Write_Data(0x8e,0x00); //设置50秒 Ds1302_Write_Data(0x80,0x50); //设置50秒 Ds1302_Write_Data(0x82,0x59);
资源推荐
资源详情
资源评论
收起资源包目录
STC89C52RC单片机L+DS1302+LCD1602设计数字时钟模块软件实例源代码+开发板硬件参考设计原理图(PDF版).zip (28个子文件)
STC89C52RC单片机开发板PDF硬件设计原理图.pdf 191KB
DS1302
src
lcd1602.c 5KB
ds1302.h 1KB
ds1302.c 3KB
config.h 5KB
lcd1602.h 1KB
delay.h 1KB
delay.c 3KB
main.c 3KB
output
ds1302.hex 2KB
ds1302.plg 191B
ds1302.lnp 167B
delay.lst 6KB
main.lst 5KB
ds1302 16KB
delay.obj 2KB
ds1302.obj 4KB
ds1302.m51 15KB
ds1302.lst 6KB
lcd1602.obj 7KB
lcd1602.lst 9KB
main.obj 4KB
project
ds1302.uvproj 14KB
ds1302_uvopt.bak 73KB
ds1302.plg 2KB
ds1302.uvopt 73KB
ds1302.uvgui.Administrator 72KB
ds1302_uvproj.bak 15KB
共 28 条
- 1
资源评论
GJZGRB
- 粉丝: 1980
- 资源: 7064
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功