LCD1602液晶显示
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_DATA P0 //定义数据线D0-D7
sbit LCD_RS=P1^0; //定义寄存器选择位
sbit LCD_RW=P1^1; //定义读写信号线位
sbit LCD_E=P1^2; //定义使能信号位
sbit LCD_BUSY=LCD_DATA^7; //检测LCD状态字中BUSY标识
sbit hang1=P2^5; //键控第一行显示
sbit hang2=P2^6; //键控第二行显示
sbit both=P2^7; //键控两行显示
void LCD_Init(void);
void LCD_Write_Data(uchar dat);
void LCD_Write_Cmd(uchar cmd,BusyC);
uchar LCD_Read_Data(void);
void LCD_Disp_Char(uchar X,uchar Y,uchar DData);
void LCD_Disp_String(uchar X,uchar Y,uchar code *DData);
void LCD_Delay(uint ms);
uchar LCD_Check_Busy(void);
uchar code school_name[]={"wodedianzimeng"};
uchar code email[]={"39543855@163.com"};
void main(void)
{
while(1)
{
if(hang1==0) //按键1按下控制第一行显示
LCD_Delay(5) ; //延时去抖动
if(hang1==0) //再次确认键1按下
{
while(hang1==0); //等待键起 显示
LCD_Init();
LCD_Disp_String(0,0,school_name);
}
if(hang2==0) //按键2控制第二行显示
LCD_Delay(5);
if(hang2==0)
{
while(hang2==0);
LCD_Init();
LCD_Disp_String(0,1,email);
}
if(both==0) //按键3控制两行都显示
LCD_Delay(1);
if(both==0)
{
while(both==0);
LCD_Delay(400) ;
LCD_Init();
LCD_Disp_String(0,0,school_name);
LCD_Disp_String(0,1,email);
}
}
}
void LCD_Init(void)
{
LCD_DATA=0;
LCD_Write_Cmd(0x38,0); //三次显示模式设置,不检测忙信号
LCD_Delay(5);
LCD_Write_Cmd(0x38,0);
LCD_Delay(5);
LCD_Write_Cmd(0x38,0);
LCD_Delay(5);
LCD_Write_Cmd(0x38,1); //显示模式设置,开始要求检测忙信号:8位、2行、5X7点阵
LCD_Write_Cmd(0x08,1); //关闭显示
LCD_Write_Cmd(0x01,1); //清屏
LCD_Write_Cmd(0x06,1); //显示光标移动设置:文字不动,光标自动右移
LCD_Write_Cmd(0x0C,1); //显示开及光标设置:光标关、光标不闪烁
}
void LCD_Write_Data(uchar dat)
{
LCD_Check_Busy();
LCD_DATA=dat;
LCD_RS=1;
LCD_RW=0;
LCD_E=0;
LCD_Delay(5);
LCD_E=1;
}
void LCD_Write_Cmd(uchar cmd,BusyC)
{
if(BusyC) LCD_Check_Busy();
LCD_DATA=cmd;
LCD_RS=0;
LCD_RW=0;
LCD_E=0;
LCD_Delay(5);
LCD_E=1;
}
uchar LCD_Read_Data(void)
{
LCD_RS=1;
LCD_RW=1;
LCD_E=0;
LCD_Delay(5);
LCD_E=1;
return(LCD_DATA);
}
uchar LCD_Check_Busy(void)
{
LCD_DATA=0xFF;
LCD_RS=0;
LCD_RW=1;
LCD_E=0;
LCD_Delay(5);
LCD_E=1;
while(LCD_DATA & 0x80);
return(LCD_DATA);
}
void LCD_Disp_Char(uchar X,uchar Y,uchar DData)
{
Y &=0x01;
X &=0x0F;
if(Y) X|=0x40;
X|=0x80;
LCD_Write_Cmd(X,0);
LCD_Write_Data(DData);
}
void LCD_Disp_String(uchar X,uchar Y,uchar code *DData)
{
uchar StringLength;
StringLength=0;
Y &=0x01;
X &=0x0F;
while(DData[StringLength]>0x20)
{
if(X<=0x0F)
{
LCD_Disp_Char(X,Y,DData[StringLength]);
StringLength++;
X++;
}
}
}
void LCD_Delay(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<250;i++);
}
}
LCD1602液晶显示相关推荐
- 基于ATMEGA16单片机,MQ-3酒精传感器,LCD1602液晶显示的酒精浓度检测阈值报警仪
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文章为个人单片机课程大作业,代码都是自己写的,只是记录自己的学习过程,不做任何商用. 目录 单片机大作业: 一.使用仪器.材料 二. ...
- 【无标题】Ds1302驱动代码编写并在Lcd1602液晶显示
目录 Ds1302实时时钟芯片简介 一.Ds1302寄存器介绍 二.SPI总线通讯时序与Ds1302时序 1.SPI总线时序 2.Ds1302时序解析以及控制代码 总结 Ds1302实时时钟芯片简介 ...
- 1602实现计算机实验报告,LCD1602液晶显示实验报告
LCD1602液晶显示实验报告 一.实验目的 (1)了解LCD1602的基本原理,掌握其基本的工作流程. (2)学习用Verilog HDL语言编写LCD1602的控制指令程序,能够在液晶屏 上显示出 ...
- C语言LCD1602液晶实验报告,LCD1602液晶显示实验报告.doc
LCD1602液晶显示实验报告 LCD1602液晶显示实验报告 实验目的 (1)了解LCD1602的基本原理,掌握其基本的工作流程. 学习用Verilog HDL语言编写LCD1602的控制指令程序, ...
- LCD1602液晶显示模块学习笔记
LCD1602液晶显示模块 一.初识LCD602 1.1.实物图 1.2.引脚图 1.3.引脚功能说明 二.显示位置 三.显示内容 四.指令集 五.工作时序 5.1.写操作时序 5.2.读操作时序 六 ...
- Micro Python 入门教程-pyboard V1.1控制LCD1602液晶显示模块
11. LCD1602液晶显示模块 11.1 初识LCD1602液晶模块 LCD1602什么意思,LCD表示Liquid Crystal Display,1602表示一行可以显示16个字符,一共有两行 ...
- microbit使用oled ssd1306液晶显示汉字和lcd1602液晶显示字符串
最近几天在研究 microbit使用oled ssd1306液晶显示汉字和lcd1602液晶显示字符串 上图哈:microbit使用oled ssd1306液晶显示汉字 https://github ...
- 51单片机怎么显示当前时间_(记录)51单片机——LCD1602液晶显示模块
(用LCD1602做个温度显示装置) https://zhuanlan.zhihu.com/p/145666965zhuanlan.zhihu.com LCD1602液晶显示模块 原理部分 引脚说明 ...
- 51单片机学习:LCD1602液晶显示实验
实验名称:LCD1602液晶显示实验 接线说明: 实验现象:下载程序后,LCD1602上显示字符信息 注意事项: ...
- LCD1602液晶显示模块的单片机驱动深入详解之硬件篇
(本文以HD44780主控芯片的LCD1602为蓝本进行描述,其中的截图也来自HD44780数据手册,用户可自行搜索其datasheet,有部分整理网上的,但绝对要比你看到的要深入得多) 一.接口 L ...
最新文章
- 从零到熟练编写LaTex数学公式,这两篇就够了
- 库存管理系统的开发过程!
- glance was not installed properly
- 有关volatile unsigned long一些说明
- 图像灰度图,直方图,像素通道问题
- 美剧迷失_迷失(机器)翻译
- 多校一道KMP+DP的题
- java web逻辑删除代码_MyBatis-Plus之逻辑删除的实现
- iOS CAReplicatorLayer 简单动画
- 外挂摄像头?iPhone XI新概念图曝光:差点就信了...
- nginx 发送动态内容注意事项
- 新建一个html页 必须要有的标签 (meta)
- pat1091. Acute Stroke (30)
- 斯坦福人工智能与图像处理_斯坦福大学设计新型AI摄像头,能更快对图像进行分类...
- 老板开会要用Word文档?立马做了一款无限次且免费的PDF转Word小程序。
- 漫天繁星构成文字情话
- 自动化鼠标和键盘操作pyautogui
- Windows——插件:动态主题(轻量级 每日自动换壁纸)
- 盘古石考核取证复现检材1(??)
- 2021年,手机拼什么?
热门文章
- matlab hrv,利用ECG信号进行HRV分析
- qchart 怎么点击一下 出一条线_mastercam9.1教程之Mastercam9.1数控编程里面怎么出多个坐标系...
- 【R】OPPO发布惊人技术,这才是未来手机该有的样子啊!
- php 远程图片大小,PHP下载远程图片并保存到本地方法总结
- vlookup两个条件匹配_用VLOOKUP进行同时满足两个条件的查找,几种方法都在这啦!||Excel技巧...
- 腾讯音乐计划以介绍形式在港交所主板二次上市
- 菜鸟:春节保障300城照常收货 3亿补贴直接发给一线员工
- realme Pad通过认证:搭载7100mAh大容量电池
- 一年3000家企业涌入,站上风口的男色经济难逃烧钱亏损
- 哈啰出行赴美递交招股书:2020年营收60亿元 顺风车成新增长极