51单片机点阵开发

一.LED点阵屏

LED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片、动画、视频等,LED点阵显示屏制作简单,安装方便,被广泛应用于各种公共场合,如汽车报站器、广告屏、银行窗口屏叫号屏以及停车系统等等。
LED点阵屏在生活中的应用:
在这里插入图片描述

二.点阵原理分析

我们今天实验的是8*8点阵屏,其原理图如下所示:
在这里插入图片描述
直接看右边的原理图,它有8行8列的LED灯构成,其共有16个引脚,对于的左边的实物16个引脚位置如图所示。
假设我们现在要点亮右边原理图的第一个引脚,根据二极管的特性是不是需要把引脚9姐高电平,引脚13接低电平,才能使第一个LED灯亮起来。那么如何像生活中那样多个位置的LED灯同时亮起来呢?比如现在要让第一个LED灯和二行二列的那个LED灯同时亮起来,是不是引脚9和14都接高电平,而引脚13和3都接低电平就行了呢?
其实不然,如果同时让引脚引脚9和14都接高电平,而引脚13和3都接低电平,那么你分析以下第二个引脚也就是一行二列的那个引脚,它也是要亮起来的,从而达不到我们的要求。其实这个数码管的动态显示的原理是一样的,也是借助人的视觉效果看起来像是同时亮的,其实它是分两次传输,第一次只有引脚9接高电平,引脚13接低电平从而让第一个灯亮起,而第二次传输只有引脚24接高电平,而引脚3接低电平从而让其对应的灯亮起来。也就是说实际上它是分两次亮起来的,而人眼却无法区分代码运行时这二者的效果,从而实际看起来是同时亮起来的。

三.74HC595芯片

74HC595芯片是一种串入并出的芯片,在电子显示屏制作当中有广泛的应用。 74HC595是8位串行输入/输出或者并行输出移位寄存器。

1.原理图

为什么要在这里说这个芯片呢,原因是我们刚刚知道一个88的点阵屏有16的引脚,而我们的51单片机总共才32个引脚,如果需要同时满足两个或三个点阵屏工作其单片机引脚远远是不够的,但是不可能为此再购买另一个单片机,成本高昂。所以就有了74HC595芯片,它的作用就是可以节省点阵屏占用的引脚数,只需要3个引脚就可以控制一个88的点阵屏,大大节省了引脚资源。
74HC595芯片原理图如下:
在这里插入图片描述

2.引脚说明

符号引脚描述
Q0~Q7第15脚、第1-7脚8位并行数据输出
GND第8脚接地
Q7’第9脚串行数据输出
MR第10脚主复位(低电平)
SHCP第11脚数据输入时钟线
STCP第12脚输出存储器锁存时钟线
OE第13脚输出有效(低电平)
DS第14脚串行数据输入
VCC第16脚电源

3.使用方法

  • DS(14脚):串行数据输入端,级联的话接上一级的Q7
  • Q7'(9脚): 级联输出端。将它接下一个595的DS
  • SHCP(11脚):上升沿时数据从DS(14脚)串行输入。
  • Q0->Q1->...->Q7:移位寄存器的数据移位。
  • STCP(12脚):上升沿时数据从Q0---Q7并行输出
  • MR(10脚):低电平时将移位寄存器的数据清零,通常将它接VCC
  • OE(13脚):高电平时禁止输出(高阻态),通常将它接GND

4.过程分析

串行输入并行输出的过程,首先我们要明白595芯片内部有Q0->Q7八个并行输出端口,每个输出端口与一个移位寄存器相连,总共8个移位寄存器,他们是以类似于“栈”的方式存储的,比如现在我们要输入1001 1011的8位数据,首先它是在SHCP(11脚)和Q7'(9脚)的共同作用下串行输入的,我们在芯片SHCP接收到的第一个上升沿时从Q7'传输最低位的1,然后在下一次的上升沿传输其次的1,在8个上升沿后完成串行输入。
其中第一次传入的1本来是存在Q7端口对应的寄存器,但是在下一位1传入后,第一次的1被挤入Q6对应的寄存器,类似于进栈操作理解,最后的结果是最低位的1存在Q0端口对应的寄存器,最高位的1存在Q7端口对应的寄存器。
那么如何并行输出呢,当输入完成后,如果STCP(12脚)再检测到一个上升沿,那么寄存器对应的内容就会通过对应的输出端口再这个上升沿时全部输出完毕。

5.电路图

74HC595芯片与我们8*8点阵连接的电路图如图所示:
在这里插入图片描述

四.实践编程

1.点亮一颗灯

练习从点亮一颗灯开始:

#include <reg52.h>
#define uchar unsigned char
sbit DIO=P3^4;     //串行输入端口
sbit S_CLK=P3^5;   //移位寄存器时钟,即输入时钟
sbit R_CLK=P3^6;   //输出锁存器时钟,即输出时钟void main(){//ROW 0x80 ,COL 0xfeuchar i,date;//先发列数据,再发行数据,这是由电路决定的date=0xfe;for(i=0;i<8;i++){S_CLK=0;R_CLK=0;if(date & 0x01)     //求最低位,为1就发1,为0就发0DIO=1;elseDIO=0;S_CLK=1;            //产生上升沿,发送数据date=date>>1;       //这里有人可能会记得上回的_cror_()函数,注意它是循环右移函数,而不是算术右移函数}date=0x80;for(i=0;i<8;i++){S_CLK=0;R_CLK=0;if(date & 0x01)     //求最低位,为1就发1,为0就发0DIO=1;elseDIO=0;S_CLK=1;            //产生上升沿,发送数据date=date>>1;}	R_CLK=1;    //并行输出数据while(1);}

2.显示一个简单的汉字

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
sbit DIO=P3^4;     //串行输入端口
sbit S_CLK=P3^5;   //移位寄存器时钟,即输入时钟
sbit R_CLK=P3^6;   //输出锁存器时钟,即输出时钟uchar code table[8]={0xEF,0x01,0x6D,0x01,0x6D,0x01,0xEE,0xE0};//把发送一次8位数据封装为一个函数
void send_byte(uchar date){uchar i;S_CLK=0;R_CLK=0;for(i=0;i<8;i++){if(date & 0x01)     //求最低位,为1就发1,为0就发0DIO=1;elseDIO=0;S_CLK=1;            //产生上升沿,发送数据date=date>>1;       //这里有人可能会记得上回的_cror_()函数,注意它是循环右移函数,而不是算术右移函数S_CLK=0;}}void main(){//0xEF,0x01,0x6D,0x01,0x6D,0x01,0xEE,0xE0 电//ROW 0x80 ,COL 0xfeuchar j,ROW;while(1){ROW=0x80;for(j=0;j<8;j++){send_byte(table[j]);send_byte(ROW);R_CLK=1;R_CLK=0;ROW=_cror_(ROW,1);}}
}

五.课后作业

循环显示几个汉字。

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

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

相关文章

Ansible的切片特性与多机器选取

一、【概述】 本文介绍一下Ansible的多机器选取和切片特性&#xff0c;这个还是一个比较有用的技巧&#xff0c;可以快速选取仓库中我们需要的机器清单。 因为该特性可能与其他工具语法稍微有些不一样&#xff0c;时间长了会忘&#xff0c;值得记录一下 二、【具体说明】 1…

力扣(leetcode)第606题根据二叉树创建字符串(Python)

606.根据二叉树创建字符串 题目链接&#xff1a;606.根据二叉树创建字符串 给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号和整数组成的字符串&#xff0c;返回构造出的字符串。 空节点使用一对空括号对 “()” 表示&…

NUS CS1101S:SICP JavaScript 描述:二、使用数据构建抽象

原文&#xff1a;2 Building Abstractions with Data 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 我们现在来到数学抽象的决定性步骤&#xff1a;我们忘记符号代表什么。…[数学家]不需要闲着&#xff1b;他可以用这些符号进行许多操作&#xff0c;而无需看它们所代…

Jenkins实现基础CI操作配合python

条件&#xff1a; gitlab准备好 jenkins准备好 (不会java项目, 故跳过Maven打jar包) jenkins配置 在配置里通过插件Git Parameter配置Git&#xff0c;以便于从gitlab 拉去代码到Jenkins r容器内 /var/jenkins_home/ 刚接触python 项目好像不需要构建&#xff0c;直接推送到远…

测试工程师能否作为一份「终身职业」?30岁+怎么办?

【讨论】测试工程师可否作为一份终生的职业&#xff1f; 这是我在论坛看到的一个讨论&#xff0c;你的答案是什么呢&#xff1f; 我希望大家能认真思考后给出一个属于自己的答案&#xff0c;无论你是新手入门&#xff0c;还是资深专家。回答这个问题请不要凭一腔热血&#xff…

ZooKeeper初探:分布式世界的守护者

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 ZooKeeper初探&#xff1a;分布式世界的守护者 前言Zookeeper的概述分布式系统中的角色和作用&#xff1a; Zookeeper的数据模型Znode的概念和层次结构&#xff1a;Znode的类型和应用场景&#xff1a;…

NUS CS1101S:SICP JavaScript 描述:三、模块化、对象和状态

原文&#xff1a;3 Modularity, Objects, and State 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 变化中安宁 &#xff08;即使它在变化&#xff0c;它仍然保持不变。&#xff09; ——赫拉克利特 变化越大&#xff0c;越是相同。 ——阿方斯卡尔 前面的章节介绍了构…

程序员如何弯道超车?周末有奇效

作为一名程序员&#xff0c;不断提升自己的技能和知识是至关重要的。然而&#xff0c;在繁忙的工作日常中&#xff0c;很难有足够的时间和精力来学习新技术或深入研究。因此&#xff0c;周末成为了一个理想的时机&#xff0c;可以专注于个人发展和技能提升。所以程序员如何利用…

Vulnhub靶机:driftingblues 3

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;driftingblues3&#xff08;10.0.2.19&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entr…

三种方法实现获取链表中的倒数第n个元素

文章目录 先放初始代码方式1方式2方式3 先放初始代码 节点类 public class HeroNode {public int no;public String name;public HeroNode next; //指向下一个节点public HeroNode(int no, String name, HeroNode next) {this.no no;this.name name;this.next next;}Overr…

【论文解读】SiamMAE:用于从视频中学习视觉对应关系的 MAE 简单扩展

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://siam-mae-video.github.io/resources/paper.pdf 项目主页&#xff1a;https://siam-mae-video.github.io/ 1.背景 时间是视觉学习背景下的一个特殊维度&#xff0c;它提供了一…

蓝桥杯回文日期判断

思想&#xff1a;对于回文数的判断方法&#xff0c;最快的就是取其中一半的字符串长度&#xff0c;为s&#xff0c;然后将其进行翻转为s’ &#xff0c;再把两者进行拼接即可保证是回文数&#xff0c;这样子就解决了枚举所有回文数的问题。 注意点&#xff1a; 要求必须是有效…

java的object类

object类 看下object类的结构&#xff1a; Object是所有类的父类&#xff0c;任何类都默认继承Object。在Java中&#xff0c;如果没有指定父类&#xff0c;则默认为Object。这是因为Object类是Java中最基本的类&#xff0c;也是所有类的祖先 public String toString() : 这…

【UML】第16篇 活动图

目录 一、什么是活动图 二、应用场景&#xff1a; 三、绘图符号的说明&#xff1a; 四、语法&#xff1a; 五、例图 六、建模的流程 6.1 对业务流程建模时 6.2 对用例进行活动图建模时 一、什么是活动图 活动图&#xff08;Activity Diagram&#xff09;是UML中用于描…

Linux学习记录——삼십칠 传输层TCP协议(2)

文章目录 1、滑动窗口2、拥塞控制3、延迟应答4、捎带应答5、总结TCP可靠性和性能提高6、面向字节流7、粘包问题8、异常情况9、全连接、半连接 上一篇是传输层TCP协议&#xff08;1&#xff09;。本篇默认读者已经清楚TCP报头各个部分、可靠性和握手挥手的含义。 有时候会把客户…

KVM Vcpu概述

KVM Vcpu概述 Intel VTSMP系统CPU过载使用CPU模型CPU绑定和亲和性CPU优化 Intel VT Intel的硬件虚拟化技术大致分为3类&#xff1a; 1、VT-x技术&#xff1a;是指Intel处理器中的一些虚拟化技术支持&#xff0c;包括CPU中最基础的VMX技术&#xff0c;也包括内存虚拟化的硬件支…

R语言将list转变为dataframe(常用)

在R语言使用中常常遇到list文件需要转变为dataframe格式文件处理。这是需要写循环来进行转换。IOBR查看其收录的相关基因集(自备)_iobr_deg-CSDN博客 示例文件 list文件&#xff1a; 循环转换为dataframe data <- signature_tme dat <- as.data.frame(t(sapply(data, …

USB_CH340一键下载电路

目录标题 1、CH340概述2、CH340芯片特点3、CH340系列芯片4、CH340引脚定义5、CH340传统的一键下载电路5.1、Stm32串口下载5.2、ESP32串口下载5.3、注意 6、免外围电路下载 1、CH340概述 CH340是一个USB总线的转接芯片&#xff0c;可实现USB转串口或者USB转打印口。 2、CH340芯…

OFBiz RCE漏洞复现(CVE-2023-51467)

漏洞名称 Apache OFBiz 鉴权绕过导致命令执行 漏洞描述 Apache OFBiz是一个非常著名的电子商务平台&#xff0c;是一个非常著名的开源项目&#xff0c;提供了创建基于最新J2EE/XML规范和技术标准&#xff0c;构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式…

腾讯云优惠券(代金券)领取方法及最新优惠活动汇总

腾讯云作为国内领先的云计算服务提供商&#xff0c;一直致力于为用户提供优质、高效、安全可靠的云计算服务。为了回馈广大用户&#xff0c;腾讯云会不定期地推出各种优惠活动&#xff0c;其中包括优惠券的发放。本文将分享腾讯云优惠券的领取方法并汇总最新优惠活动&#xff0…