#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液晶显示相关推荐

  1. 基于ATMEGA16单片机,MQ-3酒精传感器,LCD1602液晶显示的酒精浓度检测阈值报警仪

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文章为个人单片机课程大作业,代码都是自己写的,只是记录自己的学习过程,不做任何商用. 目录 单片机大作业: 一.使用仪器.材料 二. ...

  2. 【无标题】Ds1302驱动代码编写并在Lcd1602液晶显示

    目录 Ds1302实时时钟芯片简介 一.Ds1302寄存器介绍 二.SPI总线通讯时序与Ds1302时序 1.SPI总线时序 2.Ds1302时序解析以及控制代码 总结 Ds1302实时时钟芯片简介 ...

  3. 1602实现计算机实验报告,LCD1602液晶显示实验报告

    LCD1602液晶显示实验报告 一.实验目的 (1)了解LCD1602的基本原理,掌握其基本的工作流程. (2)学习用Verilog HDL语言编写LCD1602的控制指令程序,能够在液晶屏 上显示出 ...

  4. C语言LCD1602液晶实验报告,LCD1602液晶显示实验报告.doc

    LCD1602液晶显示实验报告 LCD1602液晶显示实验报告 实验目的 (1)了解LCD1602的基本原理,掌握其基本的工作流程. 学习用Verilog HDL语言编写LCD1602的控制指令程序, ...

  5. LCD1602液晶显示模块学习笔记

    LCD1602液晶显示模块 一.初识LCD602 1.1.实物图 1.2.引脚图 1.3.引脚功能说明 二.显示位置 三.显示内容 四.指令集 五.工作时序 5.1.写操作时序 5.2.读操作时序 六 ...

  6. Micro Python 入门教程-pyboard V1.1控制LCD1602液晶显示模块

    11. LCD1602液晶显示模块 11.1 初识LCD1602液晶模块 LCD1602什么意思,LCD表示Liquid Crystal Display,1602表示一行可以显示16个字符,一共有两行 ...

  7. microbit使用oled ssd1306液晶显示汉字和lcd1602液晶显示字符串

    最近几天在研究  microbit使用oled ssd1306液晶显示汉字和lcd1602液晶显示字符串 上图哈:microbit使用oled ssd1306液晶显示汉字 https://github ...

  8. 51单片机怎么显示当前时间_(记录)51单片机——LCD1602液晶显示模块

    (用LCD1602做个温度显示装置) https://zhuanlan.zhihu.com/p/145666965​zhuanlan.zhihu.com LCD1602液晶显示模块 原理部分 引脚说明 ...

  9. 51单片机学习:LCD1602液晶显示实验

    实验名称:LCD1602液晶显示实验 接线说明:     实验现象:下载程序后,LCD1602上显示字符信息 注意事项:                                         ...

  10. LCD1602液晶显示模块的单片机驱动深入详解之硬件篇

    (本文以HD44780主控芯片的LCD1602为蓝本进行描述,其中的截图也来自HD44780数据手册,用户可自行搜索其datasheet,有部分整理网上的,但绝对要比你看到的要深入得多) 一.接口 L ...

最新文章

  1. 从零到熟练编写LaTex数学公式,这两篇就够了
  2. 库存管理系统的开发过程!
  3. glance was not installed properly
  4. 有关volatile unsigned long一些说明
  5. 图像灰度图,直方图,像素通道问题
  6. 美剧迷失_迷失(机器)翻译
  7. 多校一道KMP+DP的题
  8. java web逻辑删除代码_MyBatis-Plus之逻辑删除的实现
  9. iOS CAReplicatorLayer 简单动画
  10. 外挂摄像头?iPhone XI新概念图曝光:差点就信了...
  11. nginx 发送动态内容注意事项
  12. 新建一个html页 必须要有的标签 (meta)
  13. pat1091. Acute Stroke (30)
  14. 斯坦福人工智能与图像处理_斯坦福大学设计新型AI摄像头,能更快对图像进行分类...
  15. 老板开会要用Word文档?立马做了一款无限次且免费的PDF转Word小程序。
  16. 漫天繁星构成文字情话
  17. 自动化鼠标和键盘操作pyautogui
  18. Windows——插件:动态主题(轻量级 每日自动换壁纸)
  19. 盘古石考核取证复现检材1(??)
  20. 2021年,手机拼什么?

热门文章

  1. matlab hrv,利用ECG信号进行HRV分析
  2. qchart 怎么点击一下 出一条线_mastercam9.1教程之Mastercam9.1数控编程里面怎么出多个坐标系...
  3. 【R】OPPO发布惊人技术,这才是未来手机该有的样子啊!
  4. php 远程图片大小,PHP下载远程图片并保存到本地方法总结
  5. vlookup两个条件匹配_用VLOOKUP进行同时满足两个条件的查找,几种方法都在这啦!||Excel技巧...
  6. 腾讯音乐计划以介绍形式在港交所主板二次上市
  7. 菜鸟:春节保障300城照常收货 3亿补贴直接发给一线员工
  8. realme Pad通过认证:搭载7100mAh大容量电池
  9. 一年3000家企业涌入,站上风口的男色经济难逃烧钱亏损
  10. 哈啰出行赴美递交招股书:2020年营收60亿元 顺风车成新增长极