51单片机入门 -驱动 8x8 LED 点阵屏
硬件型号、软件版本、以及烧录流程
- 操作系统:Windows 10 x84-64
- 单片机:STC89C52RC
- 编译器:SDCC
- 烧录软件:stcgal 1.6
- 开发板:普中51单片机开发板A2套件(2022)
在 VS Code 中新建项目到烧录的过程:
- 左侧EIDE图标 -
新建项目
-空项目
-8位MCU项目
- 保存文件夹。 - 更改构建配置:
SDCC
;更改烧录配置:stcgal
。 - 在项目文件夹下新建
src/main.c
,右键项目资源
-添加源文件夹
-普通文件夹
,选择src
。 - 在
src
目录下开发,最后点击右上角构建
、烧录
,单片机上电,完成烧录。
LED 点阵屏
8x8 LED 点阵屏和之前用的数码管很相似,通过交叉选择的方式来减少控制引脚,从 8⋅8=648\cdot 8=648⋅8=64,降到了 8+8=168+8=168+8=16 个引脚,比如控制第1行、第1列对应的引脚 A1、K1 分别为 高、低 电平,那么左上角的LED就会亮起。
74HC595 串转并模块
单片机通过 IO 引脚来和外界交互,但是这些引脚比较有限,需要对引脚进行扩展,或者说把占用引脚数较多的设备通过一些方式减少引脚数量。
- 38译码器。如果 8 位输出在同一时间可以只需要选择其中一位置高或置低,那么一共就只有 8 个状态:
0000 0001
,0000 0010
,0000 0100
,0000 1000
,0001 0000
,0010 0000
,0100 0000
,1000 0000
。这样就只需要 3 个二进制位,就足以表达 3 个状态(23=82^3=823=8),这就是38译码器,比如在控制数码管的时候,其实并不需要让它们同时亮起,只需要反复扫描刷新,超过了人眼的刷新率,就可以让它看起来是同时亮起了。 - 串行转并行。如果实际需求 8 位要同时独立控制,也就是 256 个状态,这是无法使用38译码器来实现的,那么可以使用串行数据转并行数据的方法,用时间换空间的思路,将输出的一段时间的连续信号通过移位寄存器存储起来,然后同时将存储的 8 个信号直接推到 8 个引脚上,也就是并行输出。
74HC595 是一个串转并模块,将接收到的串行信号,以并行的形式输出。不过它同样要占用单片机的 3 个引脚来实现这个效果。
- SER:单片机将高/低电平输出到 SER 引脚。
- SRCLK:模块接收到 SRCLK 的上升沿时,读取 SER 的电平作为移位寄存器的新的输入,8 位移位寄存器整体被推动一位,溢出位给到QH′QH^\primeQH′(用来级联时输出到下一块 74HC595 的 SER 端)
- RLCK:模块接收到 RLCK 的上升沿时,将当前 8 位寄存器存储的数据一并推到 8 位输出端:QA, QB, QC, QD, QE, QF, QG, QH。
文字取模
找一个文字取模软件,设置长宽,然后在上面点出想要显示的内容即可。
把按列生成的16进制数组复制下来,粘贴到代码里面。
完整代码
#include <8051.h>
#define RLCK P3_5
#define SRCLK P3_6
#define SER P3_4unsigned char animate[] = {0x00,0x62,0x91,0x89,0x46,0x00,0x00,0x7E,0x01,0x02,0x00,0x2F,0x00,0x00,0x32,0x49,
0x51,0x3E,0x00,0x7F,0x08,0x10,0x1F,0x00,0x10,0x7F,0x11,0x00,0x00,0x1E,0x01,0x0E,
0x01,0x1E,0x00,0x00,0x2F,0x00,0x1F,0x08,0x10,0x0F,0x00,0x06,0x09,0x09,0x7E,0x01,
0x00,0x00,};void Delay() //@11.0592MHz
{unsigned char i;i = 200;while (--i);
}void _74HC595(unsigned char data) {for (int i = 0; i < 8; i++) {SER = data & (0x80 >> i);SRCLK = 0; // 产生上升沿,移位寄存器向下移位SRCLK = 1;}RLCK = 0; // 产生上升沿,将寄存器的数据推到输出端RLCK = 1;
}void MatrixLED(unsigned char data, unsigned char column) {_74HC595(data);P0 = 0xFF ^ (1 << (7 - column));Delay();P0 = 0xFF;
}void main() {unsigned int cnt = 0, cnt2 = 0, offset = 5;while (1) {for (unsigned char i = 0; i < 8; i++)MatrixLED(animate[(i + offset) % 50], i);cnt++;if (cnt > 20){cnt = 0;offset = (offset + 1) % 50;}}
}
相关文章:
51单片机入门 -驱动 8x8 LED 点阵屏
硬件型号、软件版本、以及烧录流程 操作系统:Windows 10 x84-64单片机:STC89C52RC编译器:SDCC烧录软件:stcgal 1.6开发板:普中51单片机开发板A2套件(2022) 在 VS Code 中新建项目到烧录的过程…...
Xinlinx zynq7045国产替代 FMQL45T900全国产化 ARM 核心板+扩展板
TES745D 是一款基于 FMQL45T900 的全国产化 ARM 核心板。该核心板将 FMQL45T900(与XC7Z045-2FFG900I 兼容)的最小系统集成在了一个 87*117mm 的核心板上,可以作为一个核心模块,进行功能性扩展,能够快速的搭建起一个信号…...
硬刚ChatGPT!文心一言能否为百度止颓?中国版ChatGPT“狂飙”的机会在哪儿?
文章目录目录产品背景发展历程科技简介主要功能合作伙伴结语文心一言 (英文名:ERNIE Bot) *是百度基于文心大模型技术推出的生成式对话产品,被外界誉为“中国版ChatGPT”,将于2023年3月份面向公众开放。 [40] 百度在人…...
Python 异步: 在非阻塞子进程中运行命令(19)
动动发财的小手,点个赞吧! 我们可以从 asyncio 执行命令。该命令将在我们可以使用非阻塞 I/O 写入和读取的子进程中运行。 1. 什么是 asyncio.subprocess.Process asyncio.subprocess.Process 类提供了由 asyncio 运行的子进程的表示。它在 asyncio 程序…...
蓝桥杯嵌入式第五课--输入捕获
前言输入捕获的考题十分明确,就是测量输入脉冲波形的占空比和频率,对我们的板子而言,就是检测板载的两个信号发生器产生的信号:具体来说就是使用PA15和PB4来做输入捕获。输入捕获原理简介输入捕获能够对输入信号的上升沿和下降沿进…...
Spring事务和事务传播机制
目录 Spring中事务的实现 1、通过代码的方式手动实现事务 2、通过注解的方式实现声明式事务 2.1、Transactional作用范围 2.2、Transactional参数说明 2.3、注意事项 2.4、Transactional工作原理 事务隔离级别 1、事务特性 2、Spring中设置事务隔离级别 2.1、MySQL事…...
基于OpenCV+CUDA实时视频抠绿、背景合成以及抠绿算法小结
一、关于抠绿 百度百科上描述抠绿“抠绿是指在摄影或摄像时,以绿色为背景进行拍摄,在后期制作时使用特技机的“色键”将绿色背景抠去,改换其他更理想的背景的技术。”绿幕的使用已经非常普遍,大到好莱坞大片,小到自媒体的节目,一些商业娱乐场景,几乎都用使用。但是很多非…...
MySQL 中的 UNION 语句
文章目录一、数据准备一、UNION 和 UNION ALL二、UNION 的执行顺序(UNION 和其他语句一同出现)三、MySQL 使用 UNION(ALL) ORDER 导致排序失效四、UNION 报错语法一、数据准备 -- 创建表 CREATE TABLE test_user (ID int(11) NO…...
高完整性系统工程(三): Logic Intro Formal Specification
目录 1. Propositions 命题 2.1 Propositional Connectives 命题连接词 2.2 Variables 变量 2.3 Sets 2.3.1 Set Operations 2.4 Predicates 2.5 Quantification 量化 2.6 Relations 2.6.1 What Is A Relation? 2.6.2 Relations as Sets 2.6.3 Binary Relations as…...
【linux】多线程概念详述
文章目录一、线程基本概念1.1 进程地址空间与页表1.2 页表结构1.3 线程的理解1.3.1 如何描述线程1.4 再谈进程1.5 代码理解1.5.1 原生库提供线程pthread_create1.6 资源共享问题1.7 资源私有问题二、总结2.1 什么是线程2.2 并行与并发2.3 线程的优点2.4 线程的缺点2.5 线程异常…...
【Java】P8 面向对象(3)方法 基本知识
面向对象 方法方法方法的声明权限修饰符返回值类型方法名形参列表方法体简单案例方法 方法 是对类或对象行为特征的抽象,用来完成某个功能的操作。方法的目的 是为了实现代码复用,减少冗余,简化代码;方法不能独立存在,…...
js中null和undefined的区别
js中null和undefined的区别?这也是一个常见的js面试题 相同点 1,都是基本类型。 2,做判断值都是false。 !!null false // true !!undefined false // true不同点 1,诞生时间null在前,undefined在后。因为js作者Brendan-Eic…...
【Linux】linux中的c++怎么调试?gdb的介绍和使用。
背景1.1.前提知识程序的发布方式有两种,debug模式和release模式Linux gcc/g出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项windows上的调试方法有区别吗?1.调试思路是一样的2…...
提升Python代码性能的六个技巧
文章目录前言为什么要写本文?1、代码性能检测1.1、使用 timeit 库1.2、使用 memory_profiler 库1.3、使用 line_profiler 库2、使用内置函数和库3、使用内插字符串 f-string4、使用列表推导式5、使用 lru_cache 装饰器缓存数据6、针对循环结构的优化7、选择合适算法…...
VI的常用命令
VI的常用命令 文章目录VI的常用命令vi/vim是什么?VI普通模式命令VI编辑模式命令VI指令模式vi/vim是什么? VI是Unix操作系统和类Unix操作系统中最通用的文本编辑器 VIM编辑器是从VI发展出来的一个性能更强大的文本编辑器。可以主动的将字体颜色辨别语法…...
【数据结构】万字深入浅出讲解单链表(附原码 | 超详解)
🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:C语言实现数据结构 💬总结:希望你看完…...
无线WiFi安全渗透与攻防(五)之aircrack-ng破解WEP加密
系列文章 无线WiFi安全渗透与攻防(一)之无线安全环境搭建 无线WiFi安全渗透与攻防(二)之打造专属字典 无线WiFi安全渗透与攻防(三)之Windows扫描wifi和破解WiFi密码 无线WiFi安全渗透与攻防(四)之kismet的使用 aircrack-ng破解WEP加密 1.WEP介绍 其实我们平常在使用wifi的时…...
MySQL中事务的相关问题
事务 一、事务的概述: 1、事务处理(事务操作):保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit…...
推荐算法再次踩坑记录
去年搞通了EasyRec这个玩意,没想到今年还要用推荐方面的东西,行吧,再来一次,再次踩坑试试。1、EasyRec训练测试数据下载:git clone后,进入EasyRec,然后执行:bash scripts/init.sh 将…...
STM32 (十五)MPU6050
简介前言一、MPU6050简介MPU6050是一款性价比很高的陀螺仪,可以读取X Y Z 三轴角度,X Y Z 三轴加速度,还有内置的温度传感器,在姿态解析方面应用非常广泛。下面是它在淘宝上的参数图产品尺寸产品参数产品原理图:二、硬…...
使用yarn,依赖报各种错误怎么办
使用 yarn^3.x 版本时,默认并不会安装包到 node_modules,因为 yarn3.x 是即插即用的,也就是说如果你下载过这个包,yarn只会生成一个 Png文件,然后将包的路径 link 到下载过的地方,这样可以省去很多时间。而…...
面试官:rem和vw有什么区别
"rem" 和 "vw"的区别 "rem" 和 "vw" 都是用于网页设计的CSS单位。 "rem" 是相对于根元素的字体大小来计算的单位,即相对于 "html" 标签的字体大小。例如,如果 "html" 标签的字…...
【GPT-4】GPT-4 相关内容总结
目录 编辑 官网介绍 GPT-4 内容提升总结 GPT-4 简短版总结 GPT-4 基础能力 GPT-4 图像处理 GPT-4 技术报告 训练过程 局限性 GPT-4 风险和应对措施 开源项目:OpenAI Evals 申请 GPT-4 API API的介绍以及获取 官网介绍 官网:GPT-4 API候…...
5.springcloud微服务架构搭建 之 《springboot集成Hystrix》
1.springcloud微服务架构搭建 之 《springboot自动装配Redis》 2.springcloud微服务架构搭建 之 《springboot集成nacos注册中心》 3.springcloud微服务架构搭建 之 《springboot自动装配ribbon》 4.springcloud微服务架构搭建 之 《springboot集成openFeign》 目录 1.项目…...
【工作中问题解决实践 七】SpringBoot集成Jackson进行对象序列化和反序列化
去年10月份以来由于公司和家里的事情太多,所以一直没有学习,最近缓过来了,学习的脚步不能停滞啊。回归正题,其实前年在学习springMvc的时候也学习过Jackson【Spring MVC学习笔记 五】SpringMVC框架整合Jackson工具,但是…...
香港服务器遭受DDoS攻击后如何恢复运行?
您是否发现流量异常上升?您的网站突然崩溃了吗?当您注意到这些迹象时,可能是在陷入了DDoS攻击的困境,因而,当开始考虑使用香港服务器时,也应该考虑香港服务器设备受DDoS攻击时,如何从中恢复。 在 DDoS 攻击香港…...
【Hive】配置
目录 Hive参数配置方式 参数的配置方式 1. 文件配置 2. 命令行参数配置 3. 参数声明配置 配置源数据库 配置元数据到MySQL 查看MySQL中的元数据 Hive服务部署 hiveserver2服务 介绍 部署 启动 远程连接 1. 使用命令行客户端beeline进行远程访问 metastore服务 …...
IP-GUARD如何强制管控电脑设置开机密码要符合密码复杂度?
如何强制管控电脑设置开机密码要符合密码复杂度? 7 可以在控制台-【策略】-【定制配置】,添加一条配置,开启系统密码复杂度检测。 类别:自定义 关键字:bp_password_complexity 内容:1 效果图:...
剑指 Offer II 031. 最近最少使用缓存
题目链接 剑指 Offer II 031. 最近最少使用缓存 mid 题目描述 运用所掌握的数据结构,设计和实现一个 LRU(Least Recently Used,最近最少使用) 缓存机制 。 实现 LRUCache类: LRUCache(int capacity)以正整数作为容量 capacity初始化 LRU缓…...
44岁了,我从没想过在CSDN创作2年,会有这么大收获
1998年上的大学,02年毕业,就算从工作算起,我也有20余年的码龄生涯了。 但正式开启博文的写作,却是2021年开始的,差不多也就写了2年的博客,今天我来说说我在CSDN的感受和收获。 我是真的没想到,…...
网站建设投资风险分析/搜索引擎优化策略应该包括
boolean 数据类型 boolean 变量存储为 8位(1 个字节)的数值形式,但只能是 True 或是 False,可以把它看做是一个“开关”来使用。boolean 变量的值显示为 True 或 False(在使用 Print 的时候),或…...
哪个网站做h5好/宁波seo推广外包公司
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序…...
上海网站建设公司案例/贺州seo
此文转载自:https://blog.csdn.net/qq_30803353/article/details/111573389高德主要城市迁徙意愿排行榜 我已拿到从16年至今此网站能提供的城市迁徙大数据,请自行确认自己想要的城市此网站是否提供,部分三四线城市不提供 还有一点:…...
开发软件下载网站/解释seo网站推广
最关键的部分是计算序列的同时,不会引发无限递归, #:: 表达式的右边只有在被请求时才会被求值。转载于:https://www.cnblogs.com/lianghong881018/p/11193358.html...
网站建设专业知识/seo搜索引擎优化步骤
//简单权重计算器 $data222array(0>array(id>1,name>一等奖,weight>3),1>array(id>2,name>二等奖,weight>1),2>array(id>3,name>三等奖,weight>5),3>array(id>3,name>三等奖,weight>1), );// 权重数值越高,被返回的…...
微网站开发微网站建设/软文之家
引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓“登高必自卑,涉远必自迩”。以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系列分别介绍这些Java基础知识,希望对大…...