嵌入式学习笔记7——LCD1602液晶屏
操作步骤:
初始化
写命令(RS=L)设置显示坐标
写数据(RS=H)
1602的指令码
初始化
开关显示及光标设置
数据指针设置
其他设置
//写入命令:
RS=0;
RW=0;
...//命令写入
EN=1;
//delay();
EN=0;//写入数据:
RS=1;
RW=0;
...//数据写入
EN=1;
//delay();
EN=0;
/**********************BST-V51实验开发板例程************************
* 平台:BST-V51 + Keil U3 + STC89C52
* 名称:LCD1602模块实验
******************************************************************/
//实验目的:
/*-----------------------------------------------名称:LCD1602内容:通过标准程序静态显示字符引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<intrins.h>sbit RS = P1^0; //定义端口
sbit RW = P1^1;
sbit EN = P2^5;
sbit DU = P2^0;
sbit WE = P2^1;#define RS_CLR RS=0 //RS清零
#define RS_SET RS=1#define RW_CLR RW=0
#define RW_SET RW=1 #define EN_CLR EN=0
#define EN_SET EN=1#define DataPort P0//D0~D7void cmg88()//关数码管,点阵函数
{DU=1;
P0=0X00;
DU=0;
}
/*------------------------------------------------uS延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编,大致延时长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{ while(--t);
}
/*------------------------------------------------mS延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}
}
/*------------------------------------------------判忙函数
------------------------------------------------*/bit LCD_Check_Busy(void) { DataPort= 0xFF; RS_CLR; RW_SET; //读取数码管命令的状态EN_CLR; _nop_(); EN_SET;//读取到的数据在DataPort里面return (bit)(DataPort & 0x80);}
/*------------------------------------------------写入命令函数
------------------------------------------------*/void LCD_Write_Com(unsigned char com) { while(LCD_Check_Busy()); //忙则等待RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); //延迟函数EN_CLR;}
/*------------------------------------------------写入数据函数
------------------------------------------------*/void LCD_Write_Data(unsigned char Data) { while(LCD_Check_Busy()); //忙则等待RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_();EN_CLR;}/*------------------------------------------------清屏函数
------------------------------------------------*/void LCD_Clear(void) { LCD_Write_Com(0x01); DelayMs(5);}
/*------------------------------------------------写入字符串函数
------------------------------------------------*/void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) { if (y == 0) { LCD_Write_Com(0x80 + x); //表示第一行}else { LCD_Write_Com(0xC0 + x); //表示第二行} while (*s) { LCD_Write_Data( *s); s ++; }}
/*------------------------------------------------写入字符函数
------------------------------------------------*/void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) { if (y == 0) { LCD_Write_Com(0x80 + x); } else { LCD_Write_Com(0xC0 + x); } LCD_Write_Data( Data); }
/*------------------------------------------------初始化函数
------------------------------------------------*/void LCD_Init(void) {LCD_Write_Com(0x38); /*显示模式设置*/ DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); //重复操作的目的是为了确认显示屏清零LCD_Write_Com(0x08); /*显示关闭*/ LCD_Write_Com(0x01); /*显示清屏*/ LCD_Write_Com(0x06); /*显示光标移动设置*/ DelayMs(5); LCD_Write_Com(0x0C); /*显示开及光标设置*/}/*------------------------------------------------主函数
------------------------------------------------*/
void main(void)
{
cmg88();//关数码管,点阵函数
LCD_Init();
LCD_Clear();//清屏
while (1) { LCD_Write_Char(7,0,'o');LCD_Write_Char(8,0,'k');LCD_Write_String(1,1,"hello world");while(1);}
}
嵌入式学习笔记7——LCD1602液晶屏相关推荐
- 【C51单片机学习笔记----DS18B20温度传感器LCD1602液晶屏直流电机调速与呼吸灯AD模数转换红外外部中断】
文章目录 一.DS18B20温度传感器 1.DS18B20温度传感器连接原理图 2.DS18B20温度传感器单总线通信时序 3.DS18B20温度传感器代码模块 二.LCD1602液晶屏 1.LCD1 ...
- 【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...
- 嵌入式学习笔记——ADC模数转换器
ADC模数转换器 前言 ADC介绍 ADC概述 ADC的数量 ADC的特性 ADC框图 芯片外部框图 芯片内部框图 转换部分框图 状态输出部分 条件触发框图 寄存器介绍 编程思路 模式选择 规则通道的 ...
- LCD1602液晶屏使用(51单片机七夕特别版)
LCD1602液晶屏使用(51单片机七夕特别版) LCD1602简介 实现过程 操作时序 指令码 如何改变文本的样式 代码 效果图 今天是七夕节,周围的朋友啊小姐妹(伪)啊都跟对象出去玩了 囧rz,而 ...
- 通过 I2C 驱动 LCD1602 液晶屏(51单片机)
通过 I2C 驱动 LCD1602 液晶屏(51单片机) 硬件实物 原理图 3.程序 #include <reg51.h> #include <intrins.h>#defin ...
- cortex_m3_stm32嵌入式学习笔记(十五):待机唤醒实验(WK_UP外部中断)
cortex_m3_stm32嵌入式学习笔记(十五):待机唤醒实验(WK_UP外部中断) https://blog.csdn.net/qq_16255321/article/details/43086 ...
- 【花雕动手做】有趣好玩的音乐可视化系列项目(31)--LCD1602液晶屏
偶然心血来潮,想要做一个音乐可视化的系列专题.这个专题的难度有点高,涉及面也比较广泛,相关的FFT和FHT等算法也相当复杂,不过还是打算从最简单的开始,实际动手做做试验,耐心尝试一下各种方案,逐步积累 ...
- 嵌入式学习笔记——STM32的USART通信概述
文章目录 前言 常用通信协议分类及其特征介绍 通信协议 通信协议分类 1.同步异步通信 2.全双工/半双工/单工 3.现场总线/板级总线 4. 串行/并行通信 5. 有线通信.无线通信 STM32通信 ...
- 51单片机进阶案例(1)——基于MATLAB GUI的单片机串口与PC的通信实现实时时钟和双向可调时钟功能(利用DS1302时钟芯片和LCD1602液晶屏)
目录 一.案例描述 二.实现功能 三.51单片机部分实现 3.1 实时时钟的实现 3.2 串口通信的实现 3.2.1 接收数据 3.2.2 发送数据 四.MATLAB部分实现 4.1 GUI界面 4. ...
- 嵌入式学习笔记--jlink 工具RTT使用笔记
嵌入式学习笔记–jlink 工具RTT 使用笔记 最近有调试一个ethcat板卡的需求,板卡设计的很简洁,没有多余的调试串口,正准备飞线到单片机针脚上的时候发现了RTT 的这个工具,记录一下使用的方法 ...
最新文章
- 北航与西安交大计算机专业对比,北航和西安交大,谁的工科实力更强,该上哪一所大学呢?...
- 基于SfM计算相机姿态
- Scrapy框架的入门使用
- 特斯拉放弃SAP,仅25个人4个月就开发了整套ERP!就问你服不服?
- tensorflow1.14.0 包含了1.x和2.x内容,此后版本要求兼容该版本
- 新冠疫苗厂商科兴成立房地产公司?网友:准备打疫苗送房子了?
- 小程序 - 学习笔记
- C/C++面试题—旋转数组的最小数字
- 【BZOJ 1036】 树的统计count
- HTML关联两个标签事件,javascript – 交换2个html元素并保留事件侦听器
- 澳洲java待遇_2018年澳洲IT薪资一览,最新IT薪水Salary,给学IT的同学打一针鸡血...
- 数字化转型中平台思维的十大要素-《数字化转型的道与术》
- Byond Compare软件
- 电脑预装Office2016打开Word时点击保存弹出“word无法启动转换器RECOVR32.CNV”对话框问题的修复方法
- 数学建模【规划模型--线性规划(整数规划、0-1规划)、非线性规划-附:案例分析、奶制品的生产和销售(详细求解过程)】
- 冒泡排序【Java】
- 直播软件开发Android直播悬浮窗实现
- 武汉理工校训计算机工程学,"厚德博学,追求卓越"武汉理工大学校训
- NewBlue Titler Pro 7不能预览 预览黑屏
- 区块链如何保护版权?
热门文章
- ThingJS:探索3D信息技术发展应用之3D城市地图搭建
- html使用视频给网页做背景
- 技术干货 | MindSpore AI科学计算系列(三):SciML分析
- 如何学计算机打字,电脑如何快速学会打字
- x5650服务器装系统,笔记本处理器天梯图,小猪教您最新笔记本显卡天梯图
- (数据分析)网课评论分析
- 计算机操作系统存在的意义,电脑操作系统的作用
- 【代码段】动态生成页面heading
- SpringBoot入门之SpringBoot热部署,什么是热部署 04
- 开源机器人库orocos KDL 学习笔记(三):Kinematric Chain