液晶显示屏问题

**

步骤

**
液晶屏显示内部处理问题
读状态(检测是否属于忙碌状态)
写命令(输入给函数想要显示的位置信息)
写数据(输入给函数想要显示的信息内容)
初始化(使用液晶屏之前应先初始化)

读状态(检测是否属于忙碌状态)

void check_busy(void)
{uchar dt;do{dt = 0xff; //dt为变量,并设置初始值为0xffE = 0;//先置零 RS = 0;//按照规定在读写操作时才可以读忙标志,即RS=0,E=1时 RW = 1;E = 1;dt = out;//out为规定的P0口,将P0口的状态送入到dt中 }while(dt&0x80);//此处0X80转换成二进制即为10000000,即屏蔽掉D0到D6这七位的输入状态,//只检测D7口输出的数值,D7与BF相连,即检测BF的数值E = 0;//检测完毕再置零 }

写命令(输入给函数想要显示的位置信息)

//写命令
void write_command(uchar com)
{check_busy();//除初始化不需要检测是否忙碌,其他任何时间都需首先检测是否忙碌//因写命令是在RS和E为零时才可以进行E = 0;//为写命令做准备 RS = 0;RW = 0;out = com;//将命令com写入P0口E = 1;//写命令时E应为正脉冲,即正跳变,_nop_();//空操作一个机械周期,等待硬件反应E = 0;//E为使能装置,每次使用完应置零delay(1); }

写数据(输入给函数想要显示的信息内容)

 //写数据
void write_data(uchar dat)
{check_busy;E = 0;//为写入数据时,E变为正脉冲做准备 RS = 1;RW = 0;//按照规定此状态下才可以写入数据out = dat;//将数据dat从P0口输出,即写入到显示屏模块上 E = 1;//跳变为正脉冲_nop_();//空操作,留点时间给硬件反应E = 0;//使用完再次置零delay(1); }

初始化(使用液晶屏之前应先初始化)

void LCD_initial(void)
{write_common(0x38);//写入0x38:两行显示,5*7点阵,8位数据
write_common(0x0c);
write_common(0x05);
write_common(0x01);
delay(1);//延时程序
}

具体内容可参考单片机书133页

//LCD1602液晶显示模块的初始化
#include<reg52.h>
//初始化函数
void LCD_initial(void)
{write_common(0x38);//写入0x38:两行显示,5*7点阵,8位数据
}
//检测忙函数
void check_busy(void)
{uchar dt;do{dt = 0xff; //dt为变量,并设置初始值为0xffE = 0;//先置零 RS = 0;//按照规定在读写操作时才可以读忙标志,即RS=0,E=1时 RW = 1;E = 1;dt = out;//out为规定的P0口,将P0口的状态送入到dt中 }while(dt&0x80);//此处0X80转换成二进制即为10000000,即屏蔽掉D0到D6这七位的输入状态,//只检测D7口输出的数值,D7与BF相连,即检测BF的数值E = 0;//检测完毕再置零 } //写命令
void write_command(uchar com)
{check_busy();//除初始化不需要检测是否忙碌,其他任何时间都需首先检测是否忙碌//因写命令是在RS和E为零时才可以进行E = 0;//为写命令做准备 RS = 0;RW = 0;out = com;//将命令com写入P0口E = 1;//写命令时E应为正脉冲,即正跳变,_nop_();//空操作一个机械周期,等待硬件反应E = 0;//E为使能装置,每次使用完应置零delay(1); } //写数据
void write_data(uchar dat)
{check_busy;E = 0;//为写入数据时,E变为正脉冲做准备 RS = 1;RW = 0;//按照规定此状态下才可以写入数据out = dat;//将数据dat从P0口输出,即写入到显示屏模块上 E = 1;//跳变为正脉冲_nop_();//空操作,留点时间给硬件反应E = 0;//使用完再次置零delay(1); } //延时程序void delay(uchar i)//非精确延时
{uchar j = 250;for(;i>0;i--){while(--j);j = 249;while(--j);j = 250;//延时时间可通过执行的机械周期次数可大致计算出延时时间//本延时可用中断来实现精确延时 }
}
void main(void)//主函数,
{lcd_initial();//初始化函数,对于液晶屏,在使用前都应初始化,来确定程序运行的初始位置 while(1){string(0x85,"welcome");//0x85代表着10000101,显示第一行字符串 ,从左边第五个字符处开始显示 string(0xc2,"Harbin CHINA");//0xc2代表着11000010.显示第二行字符串,从左边第二个字符处开始显示 //详情可看单片机书134至135页,对于液晶屏显示位置的不同是根据要求显示 ,按照目标要求来计算出二进制地址 delay(100);//延时程序 write_command(0x01);//清屏命令,其他位置不显示出来,表示着剩下的所用的液晶不用显示,也不用被修改 delay(100);//延时程序 }}
void string(uchar ad,uchar *s)//第一个用来表示输入的地址信息,第二个用字符串的形式用指针指来显示所想显示的文字
{write_command(ad);while(*s>0){write_data(*s++);delay(100);}
}

液晶显示屏LCD1602相关推荐

  1. 【常用传感器】LCD1602液晶工作原理详解及例程代码

    本文带你详细的了解下LCD1602液晶的工作原理以及代码编写 LCD1602液晶显示屏 LCD1602主要参数 LCD发光原理 LCD屏幕的组成: LCD和OLED区别: LCD1602引脚接线: L ...

  2. STC15w4k32s 数字温度传感器 DS18B20 +Lcd1602

    DS18B20有九个字节寄存器,前四个是常用的,前两个温度转换,后两个温度上下限制 工具: Keil uVision5 stc-isp-15xx-v6.86L stc15w4k56s开发板 面包板 温 ...

  3. 利用c51进行数模转换并在液晶屏上显示_基于C51单片机的智能计算器、矩阵键盘、lcd1602...

    目录 1绪论.............................................................................................. ...

  4. 基于STM8的数字温度计设计

    基于STM8的数字温度计设计 这是在2021年12月初完成的一次课程设计,全程自己设计组装完成,现作为记录存档发布,大家也可以借鉴本文来完成自己的课程设计.(建议使用电脑阅读) 课程设计目录 基于ST ...

  5. 基于单片机的车内滞留儿童预警系统设计

     word完整版可点击如下下载>>>>>>>> 基于单片机的车内滞留儿童预警系统设计-嵌入式文档类资源-CSDN下载内容包括详细设计文档word版,附带 ...

  6. C51应用原理与编程

    单片机,英文Micro Controller Unit,简称MCU.其内部集成了CPU.RAM(random access memory,即随机存取存储器).ROM(read-only memory, ...

  7. 基于51单片机的数字电压表c语言程序,基于AT89C51单片机的直流数字电压表设计毕业论文+任务书+Proteus代码+电路图+源码...

    摘 要 数字电压表是一种结构简单.应用广泛的测量仪表,近年来越来越多地应用在电压测量场合,因此对其测量精度.可靠性和可维护性的要求也越来越高.数字电压表是也诸多数字化仪表的核心与基础,其数字化是将连续 ...

  8. 综合小项目1--基于51单片机的温度检测报警系统

    目录 一. 系统简介 二. 系统设计 三. 实验设备 四. 实验过程 五. 系统测试 六. 总结 一. 系统简介   该系统是基于51单片机的温度监测报警系统.由主控模块.检测模块.显示模块以及报警模 ...

  9. 基于AT89C51单片机的简易计算机设计

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87715642?spm=1001.20 ...

最新文章

  1. SWPU 2021年团队程序设计天梯赛选拔赛 题解
  2. 快速了解微信小程序的使用,一个根据小程序的框架开发的todos app
  3. 为什么华为在发布会不提鸿蒙,华为又要开发布会?这次没有手机,鸿蒙系统要当主角!...
  4. 必须正确理解的---ng指令中的compile与link函数解析
  5. 成功解决numpy.linalg.LinAlgError: singular matrix
  6. 使用Docker部署SpringBoot+Vue博客系统
  7. VTK:网格之QuadricClustering
  8. 数据库和MySQL相关面试题目
  9. 一个利用sql 语句来实现分页的存储过程
  10. 转:SQL的内连接与外连接
  11. python程序设计实验配置_20181235 实验三《Python程序设计》实验报告
  12. 【Flink】Flink SQL 开源UI平台 flink-streaming-platform-web
  13. 论文页眉奇偶页不同怎么设置_什么!论文排版这么简单的吗?!
  14. Android重新分区parted,分区工具parted的详解及常用分区使用方法【转】
  15. c语言编程星号输出图形的步骤,使用C语言打印不同星号图案
  16. 数据抓取可否发展出好的商业模式?
  17. html5 实心圆点,html5如何使用canvas画空心圆与实心圆
  18. 码住,这4个宝藏资源网站,让你工作娱乐两不误
  19. iOS Instruments使用
  20. 如何将PDF文件转换成TXT文档

热门文章

  1. linux磁盘分区方法 重新分区方法 新建分区方法
  2. u盘安装盘的制作汇总
  3. 浅谈JAVA程序破解(原创)
  4. 7000 字 23 张图,Pandas 一键生成炫酷的动态交互式图表
  5. 如何使用计算机处理文件,如何设置电脑自动清理文件
  6. java freemind_java环境变量的应用:为Freemind配置Java环境
  7. SDL系列教程(一):SDL简介
  8. 扫描普通二维码跳转到微信小程序指定页面
  9. mpd无法启动的案例及解决
  10. 【ToB产品经理训练营】笔记