LED点阵屏与LCD1602

目录

LED点阵屏

点阵屏的介绍

LED点阵屏分类

点阵屏的显示原理

点阵案例

静态案例

电路图

keil文件

动态案例

电路图

keil文件

LCD1602

LCD1602概述

LCD1602内部结构

存储器结构

LCD引脚及应用电路

时序结构

LCD1602指令集

LCD1602编程

初始化

显示字符

仿真案例

电路图

keil文件

LED点阵屏

点阵屏的介绍

前言:LED点阵屏由若干个独立的LED组成,LED以矩阵的行式排列,以灯珠亮灭来显示文字、图片、视频等。

LED点阵屏分类

  • 按颜色:单色、双色、全彩
  • 按像素:8*8、16*16等(大规模的LED点阵通常由很多个小点阵拼接而成)

点阵屏的显示原理

  • LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素以8字型排列而已
  • LED点阵屏与数码管一样,有共阴极和共阳极两种接法,不同的接法对应的电路结构不同
  • LED点阵屏需要进行逐行和逐列扫描,才能使所有LED同时显示

点阵案例

静态案例

需求:通过开关控制电阵屏上0-9的数字显示。

电路图

注意:P2是行,低电平有效;P3是列,高电平有效。

keil文件
#include "reg51.h"
sbit key=P1^0;
#用来在行的基础下做列显示——高电平有效
unsigned char code tab[]={0x00,0x7E,0xFF,0xC3,0xC3,0xFF,0x7E,0x00, //00x00,0x00,0x43,0xFF,0xFF,0x03,0x00,0x00, //10x00,0x63,0xC7,0xCF,0xDB,0xF3,0x63,0x00, //20x00,0x42,0xDB,0xDB,0xDB,0xFF,0x66,0x00, //30x00,0x3E,0x46,0xFF,0xFF,0x06,0x06,0x00, //40x00,0xF6,0xF7,0xD3,0xD3,0xDF,0xDE,0x00, //50x00,0x7E,0xFF,0xDB,0xDB,0xDF,0x4E,0x00, //60x00,0xC0,0xC0,0xC7,0xFF,0xF8,0xC0,0x00, //70x00,0x7E,0xFF,0xDB,0xDB,0xFF,0x7E,0x00, //80x00,0x72,0xFB,0xDB,0xDB,0xFF,0x7E,0x00, //9
};
unsigned char row[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned char num=0,flag=0;
void keyboard(){if(flag==0&&key==0){ //按键按下flag=1;}if(flag==1&&key==1){ //按键按下并且松手num++;flag=0;}if(num==10){num=0;}
}
void matrix(){int i=0;for(i=8*num;i<8*(num+1);i++){P2=~row[i-8*num]; //确定行,低电平有效P3=tab[i]; //确定列,高电平有效}
}
void main()
{while(1){keyboard(); //按键盘matrix(); //显示点阵屏}
}

注意:此代码采用了逐行扫描的方式,通过行与行之间的延时将整个图画显示出来。

动态案例

需求:在点阵中动态显示移动字幕hello!

电路图

keil文件
#include "reg51.h"
unsigned char str[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0x08,0x08,0x08,0xff,0x00,0x0e,0x15,
0x15,0x15,0x08,0x00,0x7e,0x01,0x02,0x00,
0x7e,0x01,0x02,0x00,0x0e,0x11,0x11,0x0e,
0x00,0x7d,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char offset=0;
void main()
{unsigned char i=0,offset=0,n=10;while(1){while(n--){for(i=0;i<8;i++){P2=~(0x80>>i);P3=str[i+offset];}}offset++;if(offset>40){offset=0;}}
}

LCD1602

LCD1602概述

  • LCD1602液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其他的一些内置特殊字符,还可以有8个自定义字符
  • 显示容量:16*2个字符,每个字符为5*2点阵
  • LCD1602是一个自带控制和扫描电路的,我们显示时只需要通过数据线将我们要显示的内容发送给它就行

LCD1602内部结构

解释:

  • LCD1602中的屏幕由32个小方块组成,其中每个小方块都属于一个点阵 
  • LCD1602的引脚都接在控制器中。
  • 里面由两个存储单元,CGRAM和CGROM,其相当于数码管中的段码表
  • DDRAM数据显示区,我们想要让他显示的数据是写在DDRAM中,然后他会通过DDRAM中的数据来向子模库找到相应字符的一个显示点阵的字模,然后再在屏幕对应的位置上显示我们的点阵数据。
  • DDRAM是40*2的会比屏幕长些(用于做移动字幕),但是他只有前16列(32块)映射到了屏幕上

存储器结构

注意:

  • DDRAM就是一个RAM存储器,存储器内部都有对应屏幕位置的地址;第一行对应屏幕第一行的地址;第二行对应屏幕第二行的地址。 
  • 80个字节的显示缓冲区DDRAM(原始地址:0x80),分2行,地址分别为00H——27H,40H——67H
  • 要在LCD的某个位置显示符号,只需要将显示符号的ASCII码存入DDRAM的对应位置即可
  • 在CG存储器中我们想要显示某个数据只需要填写他的索引码就行,就是字符对应横排的码与字符对应纵排的码连接组成索引码

LCD引脚及应用电路

时序结构

理解:我们在读数据之前要把RS设置为高电平,RW杠置高电平(因为RS=1,RW=1为读数据)之后将e置位高电平,经过一段时间后,那么内部就会把读出来的数据放入,持续一段时间后再把e置低,那么我们的一次读数据就完成了。 

理解:我们在写数据之前要把RS设置为高电平,RW杠置低电平(因为RS=1,RW=0为写数据)之后再把我们要写的一字节数据放在我们的对应口,当把这些数据设置好之后将e置位高电平,此时数据便是有效的,持续一段时间后再把e置低,那么我们的一次写数据就完成了。

LCD1602指令集

LCD1602编程

初始化

发送指令:0x38设置16*2显示,5*7点阵,8位数据接口
发送指令:0x0C设置开显示,不显示光标,闪烁关
发送指令:0x06数据读写操作后,光标自动+1,画面不动
发送指令:0x01清屏指令

显示字符

  • 发送指令0x80|AC:设置要显示字符的位置 

  • 发送数据:发送显示的字符数据

仿真案例

需求:通过LCD液晶屏幕在第二行的正中间显示Hello World!

电路图

keil文件

#include "reg51.h"
sbit RS=P3^0;
sbit RW=P3^1;
sbit E=P3^2;
unsigned char str[]={"Hello World!"};
void delay(unsigned int n){unsigned int i=0,j=0;for(i=0;i<n;i++){for(j=0;j<120;j++);}
}
#写指令
void writecom(unsigned char com){RS=0;RW=0;E=0;P2=com;delay(5);E=1;E=0;
}
#写数据
void writedat(unsigned char dat){RS=1;RW=0;E=0;P2=dat;delay(5);E=1;E=0;
}
#初始化液晶屏
void initlcd(){writecom(0x38);writecom(0x0c);writecom(0x06);writecom(0x01);
}
void display(){unsigned int i=0;writecom(0x80+0x40+2);delay(5);while(str[i]!='\0'){writedat(str[i]);delay(5);i++;}
}
void main(){initlcd();while(1){display();}
}

注意:

  • 实际地址在发送之前要把他的最高位置1,代表它是一个地址设置的指令。
  • 第一行第一列显示的地址:0x80+0x00;第二行第一列显示的地址:0x80+0x40
  • 指令数据都有执行时间,因此每次写入数据后都需要延时一段时间,否则会出错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/597062.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Web应用技术基础】JavaScript(6)——案例:留言墙

视频已发。截图如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…

linux------jekins构建cicd

&#x1f388;个人主页&#xff1a;靓仔很忙i &#x1f4bb;B 站主页&#xff1a;&#x1f449;B站&#x1f448; &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;linux &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#…

并发编程三大特性之原子性

一、并发编程3大特性是什么&#xff1f; 并发编程三大特性分别是原子性、可见性和有序性。java内存模型JMM就是围绕着原子性、 可见性、原子性来处理java线程间通信的。 二、原子性 1、什么是原子性&#xff1f; 原子性是指一个操作是不可分割的&#xff0c;不可终端的&#xf…

想要孩子对你敞开心扉,就别再做这件事情了

短篇日记 今天晚上&#xff0c;发生了几件小事&#xff0c;让我明白&#xff0c;与孩子真诚沟通比说教要强一万倍。 第一件事情&#xff1a;晚上我下班回来&#xff0c;俩宝都在小区边玩边等我。 玩儿了一会儿觉得有点冷&#xff0c;我们就打算回家。 回家途中&#xff0c;…

B/S结构和C/S结构详细介绍

文章目录 什么是c/s结构、b/s结构c/s结构b/s结构 b/s结构和c/s结构各自的优点&#xff1a;数据放在服务端和客户端的利与弊&#xff1f;c/s、b/s区别&#xff1a; 什么是c/s结构、b/s结构 1、C/S结构&#xff0c;即Client/Server(客户机/服务器)结构&#xff0c;是大家熟知的软…

【智能排班系统】基于SpringSecurity实现登录验证、权限验证

文章目录 SpringSecurity介绍sss-security实现依赖工具类Jwt工具JSON响应工具加密工具类 用户上下文用户信息实体类用户上下文 自定义重写自定义无权限的报错自定义密码加密自定义用户类 过滤器登录过滤器权限过滤器 Service登录Service 配置类说明登录验证权限验证IP流量限制 …

【数据分析面试】12. 随机抽取颜色球(Python random模块应用:choices()/choice()/sample())

题目 随机抽取颜色球 编写一个函数来模拟从罐子中抽取球的过程。球的颜色存储在名为jar的列表中&#xff0c;每个颜色对应球的数量存储在名为n_balls的列表中&#xff0c;且数量与颜色列表的索引对应。 示例&#xff1a; 输入&#xff1a; jar [green, red, blue] n_bal…

【XCPC笔记】2023 (ICPC) Jiangxi Provincial Contest——ABCHIJKL 做题记录

赛后gym练习及补题&#xff0c;gym链接&#xff1a;2023 (ICPC) Jiangxi Provincial Contest – Official Contest 补题顺序 L [Zhang Fei Threading Needles - Thick with Fine](https://codeforces.com/gym/104385/problem/L)题面解读参考代码 A [Drill Wood to Make Fire](h…

Ceph学习 - 2.分布式文件系统DFS

文章目录 1.分布式文件系统DFS1.1 DFS简介1.1.1 存储基础1.1.2 分布式文件系统1.1.3 DSS简介1.1.4 常见的文件系统 1.2 原理解读1.2.1 分布式数据存储1.2.2 存储角色1.2.3 数据高可用 1.3 小结 1.分布式文件系统DFS 学习目标&#xff1a;这一节&#xff0c;我们从DFS简介、原理…

ENSP防火墙配置内网NAT访问外网,内网发表web服务器

内网配置NAT访问外网 搭建拓扑 基础配置 cloud配置 配置防火墙web登录&#xff0c;配置web和设备命令行过期时间 Username:admin Password: // Admin123 The password needs to be changed. Change now? [Y/N]: Y Please enter old password: // Admin123 Please enter …

石油化工控制台定制厂家具备的专业条件一览

石油化工行业&#xff0c;作为国家的支柱产业之一&#xff0c;对设备与控制台的要求尤为严格。石油化工控制台是石油化工行业必不可少的办公设备之一。因此&#xff0c;选择一家专业的石油化工控制台定制厂家&#xff0c;对于提升企业的生产效率与安全水平具有不可估量的价值&a…

雷弗流体创新技术装备与您与您相约2024第13届生物发酵展

参展企业介绍 保定雷弗流体科技有限公司于2010年1月成立。为创新型企业&#xff0c;荣获国家级高新技术企业、国家级专精特新小巨人企业、河北省单项冠军企业、组织部巨人计划创业团队等荣誉称号。 保定雷弗流体科技有限公司现有职工180人&#xff0c;其中工程技术人员53人。现…