视频教程:https://www.bilibili.com/video/BV1HK411W7La
#include< reg51.h >
#define uchar unsigned char
#define uint unsigned int
#define LCD1602_DATAPINS P0
sbit LCD1602_E=P2^2;
sbit LCD1602_RW=P2^1;
sbit LCD1602_RS=P2^0;
sbit KEY = P3^0;
/*******************************************************************************
* 函 数 名 : Lcd1602_Delay1ms
* 函数功能 : 延时函数,延时1ms
* 输 入 : c
* 输 出 : 无
* 说 名 : 该函数是在12MHZ晶振下,12分频单片机的延时。
*******************************************************************************/
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
* 输 出 : 无
*******************************************************************************/
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;
}
/*******************************************************************************
* 函 数 名 : LcdWriteData
* 函数功能 : 向LCD写入一个字节的数据
* 输 入 : dat
* 输 出 : 无
*******************************************************************************/
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;
}
/*******************************************************************************
* 函 数 名 : LcdInit()
* 函数功能 : 初始化LCD屏
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x38); //开显示
LcdWriteCom(0x0c); //开显示不显示光标
LcdWriteCom(0x06); //写一个指针加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80); //设置数据指针起点
}
//按指定位置显示一个字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
X |= 0x80; // 算出指令码
LcdWriteCom(X); //这里不检测忙信号,发送地址码
LcdWriteData(DData);
}
//按指定位置显示一串字符
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned char ListLength;
ListLength = 0;
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
while (DData[ListLength]>=0x20) //若到达字串尾则退出
{
if (X <= 0xF) //X坐标应小于0xF
{
DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
ListLength++;
X++;
}
}
}
void main()
{
uint datt = 324;
LcdInit();
//DisplayListChar(3,1,"Cheng One");
DisplayOneChar(0,0,(char)(datt/100+'0'));
DisplayOneChar(1,0,(char)(datt/10%10+'0'));
DisplayOneChar(2,0,(char)(datt%10+'0'));
while(1)
{
if(KEY==0)
{
Lcd1602_Delay1ms(20);
if(KEY==0)
{
while(KEY==0);
datt++;
}
}
DisplayOneChar(0,0,(char)(datt/100+'0'));
DisplayOneChar(1,0,(char)(datt/10%10+'0'));
DisplayOneChar(2,0,(char)(datt%10+'0'));
}
}
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
液晶
+关注
关注
6文章
606浏览量
69675 -
Proteus
+关注
关注
79文章
1692浏览量
106694 -
晶振
+关注
关注
34文章
2880浏览量
68141 -
LCD1602
+关注
关注
14文章
607浏览量
52636
发布评论请先 登录
相关推荐
lcd1602显示原理,LCD1602液晶显示器的分类有哪些?
LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符。LCD1602液晶显示原理 LCD1602液晶
发表于 10-20 10:32
•3.6w次阅读
LCD1602是什么?关于LCD1602液晶模块的显示问题?
LCD1602表示2行16个字符,也就是有不同的显示地点,那么单片机如何告诉LCD1602的显示地点呢?因此前面的分析可以总结为三个问题,如何初始化;如何传送
发表于 07-02 09:16
•2.3w次阅读
LCD1602显示接收到的红外线键值程序和LCD1602的延迟函数
本文档的主要内容详细介绍的是LCD1602显示接收到的红外线键值程序和LCD1602的延迟函数。
发表于 05-06 16:40
•25次下载
lcd1602液晶显示屏介绍_lcd1602引脚功能
本文首先阐述了lcd1602液晶显示屏的概念,其次阐述了LCD1602外形尺寸,最后介绍了lcd1602引脚功能。
发表于 04-23 08:53
•7.2w次阅读
lcd1602在proteus中怎么找_lcd1602proteus仿真
proteus提供了很多LCD的仿真器件,分享一个关于lcd1602的查找操作,希望对需要的朋友有帮助。
发表于 04-23 09:02
•12.5w次阅读
51单片机驱动LCD1602显示原理及例程
51单片机驱动LCD1602显示原理及例程1.LCD1602A介绍2.LCD1602A中文手册 下载3.LCD1602A接线4. 51单片
发表于 11-10 19:51
•149次下载
51单片机LCD1602显示实验
实验目标:掌握LCD1602显示控制方法; 掌握利用Proteus单片机控制系统的仿真及调试方法。任务:根据要求编写程序,并写出原理性注释; 将检查程序运行的结果,分析一下是否正确; 完成所建
发表于 11-10 20:06
•25次下载
STMCubeMX+Proteus仿真DHT11(LCD1602显示)
信息显示在LCD1602上Tips:之前写过一期LCD1602的,贴个传送门 STM32CubeMX+Proteus仿真LCD1602的
发表于 11-21 14:06
•50次下载
51单片机 LCD1602驱动显示(模板)+Proteus
51单片机 LCD1602驱动显示(模板)+Proteus本项目工程篇,只展示LCD1602驱动显示,不涉及其他外设驱动使用,可以作为
发表于 11-23 17:06
•30次下载
STM32CubeMX+Proteus仿真LCD1602的显示
本文说明开发工具:STM32CubeMX+Keil5开发芯片:STM32F103R6显示屏幕:LCD1602仿真软件:Proteus 8.12工程目标:在LCD1602上
发表于 01-14 09:31
•60次下载
评论