单片机学习笔记之点阵(8x8)
心血来潮,想捡一下丢了很久的单片机,纪录一下单片机学习简单的点阵显示,及踩到的䟘,找到吃灰很久的普中科技开发板(非广告,为毕设学习买的)。
1. 使用工具
使用开发板:
普中科技开发板
编译软件:
keil
2.资料
点阵线路图: POW 为 74HC595 芯片 输出。

74HC595 芯片 简介
使用74HC595 扩展线路,74HC595 用作把 串行信号 转换 并行信号 。还可以 节约 单片机(MCU)的 IO 口,用 3 个 IO 口 可以控制 8 个 引脚。


74HC595 数据 转换 步骤
74HC595由 两个寄存器 组成:移位寄存器和存储/输出寄存器,
两者都有8位宽度。移位寄存器负责在时钟脉冲的上升沿接收输入数据,而存储寄存器负责将数据传送到 输出引脚( q0->q7)
输出使能输入(~ OE)) 该引脚 用于 启用或禁用( Q0-Q7)。 低电平有效。
- SRLCK (11 脚) 、RLCK(12 脚 ) 置 零(0)。
- 设置 SET(14 脚) 数据。
- 将SRLCK (11 脚) 置 1 ,上升沿 有效 , 上升沿时,数据寄存器 的 数据 移位 。(即 上升沿时, 从串行输入口 获取数据 ,需要 8 个 正脉冲 才能将 8 位数据 移入 寄存器。)
- 重复 2,3 步骤 8 次
- 将 RLCK(12 脚) 置 1, 将来自串行移位寄存器的数据通过 存储寄存器 引脚的 上升沿脉冲 放置 在 输出 寄存器中
3. 代码
#include "reg51.h"
#include <intrins.h>typedef unsigned int u16;
typedef unsigned char u8;sbit RCLK = P3^5;
sbit SRCLK = P3^6;
sbit SET = P3^4;void delay(u16 i)
{while(i--);
}/*******************************************************************************
* 函 数 名 : spaceLatticeSend
* 函数功能 : 通过74HC595 串行口将数据 并行 输出
* 注意事项:。
*******************************************************************************/
void spaceLatticeSend(u8 dat)
{u8 i;RCLK = 0;SRCLK = 0;//1001 1101 for(i =0; i < 8;i++) {SET = dat>>7;//SET = 1;SRCLK =1;dat <<=1; // dat = 0011 1010_nop_();_nop_();SRCLK = 0;}RCLK = 1;_nop_();_nop_();RCLK=0;
} /*******************************************************************************
* 函 数 名 : displayOneDot
* 函数功能 : 8*8 点阵 显示 控制一个点
*******************************************************************************/
void displayOneDot()
{ //u8 a = 0xff;//0x80//u8 b=0x7f;//0x7fu8 a = 0x04;//0x80u8 b=0xEf;//0x7fspaceLatticeSend(a);P0=b;while(1);
}/*******************************************************************************
* 函 数 名 : displayNumber
* 函数功能 : 8*8 点阵 显示 数字或汉字
*******************************************************************************/
void displayNumber()
{ //u8 a[] = {0xff, 0x81,0x81,0x81,0x81,0x81,0x81,0xff};//u8 b[] = {0x7f, 0xbf,0xcf,0xef,0xf7,0xfb,0xfd,0xfe};//u8 a[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00};//u8 b[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//1//u8 a[] = {0x00,0x00,0x60,0xFF,0xFF,0x00,0x00,0x00};//u8 b[] = {0x7f, 0xff,0xdf,0xef,0xf7,0xff,0xff,0xff};//2//u8 a[] = {0x00,0x63,0x85,0x89,0x91,0x61,0x03,0x00};//u8 b[] = {0x7f, 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xff};//3//u8 a[] = {0x00,0x42,0x81,0x89,0x89,0x95,0xE3,0x00};//u8 b[] = {0x7f, 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xff};//4//u8 a[] = {0x00,0x0C,0x14,0x25,0x45,0xFF,0x05,0x05};//u8 b[] = {0x7f, 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//5//u8 a[] = {0x00,0xE6,0xA1,0xA1,0xA1,0x92,0x0C,0x00};//u8 b[] = {0x7f, 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xff};//5//u8 a[] = {0x00,0xE6,0xA1,0xA1,0xA1,0x92,0x0C,0x00};//u8 b[] = {0x7f, 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xff};//6//u8 a[] = {0x00,0x3C,0x4A,0x91,0x91,0x52,0x0C,0x00};//u8 b[] = {0x7f, 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xff};//7//u8 a[] = {0x00,0xC0,0x80,0x80,0x8F,0x90,0xA0,0xC0};//u8 b[] = {0x7f, 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//8//u8 a[] = {0x00,0x62,0x95,0x89,0x89,0x95,0x62,0x00};//u8 b[] = {0x7f, 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//9//u8 a[] = {0x32,0x49,0x89,0x89,0x89,0x52,0x3C,0x00};//u8 b[] = {0x7f, 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//中u8 a[] = {0x3C,0x28,0x28,0xFF,0x28,0x28,0x3C,0x00};u8 b[] = {0x7f, 0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xff};while(1){ u8 i;P0 = 0xFF;for(i=0; i < 8; i++){ P0 = b[i];spaceLatticeSend(a[i]);delay(100);spaceLatticeSend(0x00);}}
}void main()
{//displayOneDot();displayNumber();
}
4. 效果

相关文章:
单片机学习笔记之点阵(8x8)
心血来潮,想捡一下丢了很久的单片机,纪录一下单片机学习简单的点阵显示,及踩到的䟘,找到吃灰很久的普中科技开发板(非广告,为毕设学习买的)。 1. 使用工具 使用开发板: 普中科技开发…...
我一个普通程序员,光靠GitHub打赏就年入70万,
一个国外程序员名叫 Caleb Porzio在网上公开了自己用GitHub打赏年入70万的消息和具体做法。 Caleb Porzio 发推庆祝自己靠 GitHub 打赏(GitHub Sponsors)赚到了 10 万美元。 GitHub Sponsors是 GitHub 2019 年 5 月份推出的一个功能,允许开发…...
剖析Spring MVC如何将请求映射到Controller
Spring MVC是一种基于Java的Web框架,可以帮助开发者快速地构建Web应用程序。在Spring MVC中,请求将会被映射到对应的Controller中进行处理。本文将会介绍Spring MVC如何将请求映射到Controller的过程。 DispatcherServlet DispatcherServlet是Spring M…...
设计模式之美-工厂模式
分类:简单工厂模式(静态工厂模式),工厂方法模式,抽象工厂模式。 这种设计模式也是 Java 开发中最常见的一种模式,它的主要意图是定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类&a…...
A Star算法最通俗易懂的一个版本
01-概述虽然掌握了 A* 算法的人认为它容易,但是对于初学者来说, A* 算法还是很复杂的。02-搜索区域(The Search Area)我们假设某人要从 A 点移动到 B 点,但是这两点之间被一堵墙隔开。如图 1 ,绿色是 A ,红色是 B &…...
JavaWeb--ListenerAjaxaxiosjson
Listener&Ajax&axios1 Listener1.1 概述1.2 分类1.3 代码演示2 Ajax2.1 概述2.1.1 作用2.1.2 同步和异步2.2 快速入门2.2.1 服务端实现2.2.2 客户端实现2.2.3 测试2.3 案例2.3.1 分析2.3.2 后端实现2.3.3 前端实现2.4 测试3 axios3.1 基本使用3.2 快速入门3.2.1 后端实…...
NoneBot2,基于Python的聊天机器人
NoneBot2,基于Python的聊天机器人第一步,配置python第二步,配置[go-cqhttp](https://github.com/Mrs4s/go-cqhttp)第三步,配置[NoneBot](https://61d3d9dbcadf413fd3238e89--nonebot2.netlify.app/)NoneBot2 是一个现代、跨平台、…...
java反射机制及其详解
反射反射机制反射调用优化有时候我们做项目的时候不免需要用到大量配置文件,就拿框架举例,通过这些外部文件配置,在不修改的源码的情况下,来控制文件,就要用到我们的反射来解决 假设有一个Cat对象 public class Cat …...
Leetcode—环形链表
前言:给定一个链表,判断是否为循环链表并找环形链表的入口点 首先我们需要知道什么是双向循环链表,具体如下图所示。 对于链表,我们如何去判断链表是循环链表呢?又寻找入环点呢?我们可以利用快慢指针的方法…...
蓝牙耳机哪个戴的最舒服?久戴不累的蓝牙耳机推荐
在喧嚣的时代中,快节奏和疲惫充斥着我们的生活,于是耳机成为了人们必不可少的东西,无论是闲暇时亦或是正处在工作时,都会将它戴上,出门在外戴耳机变成了常态,所以小编就整理了一期久戴不累的蓝牙耳机。 No…...
25k的Java开发常问的AQS问题有哪些?
前言:面试高频的AQS问题大多。本文将以实战面试角度出发,将面试官喜欢问的一些问题罗列出来。 文章目录 AQSAQS定义底层实现独占锁举例底层实现独占锁超时获取锁共享锁举例共享锁实现原理作者辟谣AQS AQS定义 AQS的全称是AbstractQueuedSynchronizer,也就是抽象队列同步器…...
Grafana 监控面板绘制流程
本篇作者:IoTDB 社区 -- 张洪胤本文以 IoTDB V1.0.1 版本为例本文档介绍了 Apache IoTDB 监控指标通过 Prometheus 的方式进行采集,并且使用 Grafana 的方式进行可视化。1监控指标的 Prometheus 格式说明对于 Metric Name 为 name, Tags 为 K1V1, ..., K…...
一句话设计模式5:责任链模式
责任链模式:步步为营。 文章目录 责任链模式:步步为营。前言一、责任链模式的作用二、如何实现责任链1 既然是责任链,那么就需要一个链路的承载体 ChainBody2 责任链中每一步都是一个抽象类,因为承载体仅仅是构造链路顺序,里面不放置任何具体业务逻辑:步骤抽象类3 具体步骤执行…...
保姆级使用PyTorch训练与评估自己的EVA网络教程
文章目录前言0. 环境搭建&快速开始1. 数据集制作1.1 标签文件制作1.2 数据集划分1.3 数据集信息文件制作2. 修改参数文件3. 训练4. 评估5. 其他教程前言 项目地址:https://github.com/Fafa-DL/Awesome-Backbones 操作教程:https://www.bilibili.co…...
Java--JMH--性能测试--测试软件运行效率/时间--StopWatch
写在前面: 很多时候想要测试代码运行时间,或者比较2个运行的效率。 最简单的方法就是Sytem.currentTimeMillis记录2开始和结束时间来算 但是Java 代码越执行越快,放在后面的方法会有优势,这个原因受留个眼,以后研究。大概有受类加…...
JavaScript Array(数组)对象
数组对象的作用是:使用单独的变量名来存储一系列的值。参数参数 size 是期望的数组元素个数。返回的数组,length 字段将被设为 size 的值。参数 element ...; elementn 是参数列表。当使用这些参数来调用构造函数 Array() 时,新创建的数组的元…...
干货 | 电容在电路35个基本常识
第1个电压源正负端接了一个电容,与电路并联,用于整流电路时,具有很好的滤波作用,当电压交变时,由于电容的充电作用,两端的电压不能突变,就保证了电压的平稳。当用于电池电源时,具有交…...
日读300篇文献的技巧
感觉自己看文章很慢,有时候也抓不住重点。 如果是英文文献的话,可能还要有点难度,毕竟英语渣渣还是需要有中文-》英文的转换过程。 最近在搞毕业论文的时候,发现了一个非常好玩的东西,大大提升了我看文章搞科研&#x…...
C++核心编程
一、内存分区模型概述:C程序在执行时,将内存划分为4个区域程序运行前:代码区:存放函数体的二进制代码,由操作系统管理①共享。共享的目的是对于频繁被执行的程序,在内存中只需有一份代码即可②只读。使其只…...
SpringMVC程序开发
目录 SpringMVC 1、MVC定义 2、MVC和SpringMVC之间的关系 学SpringMVC 1、Spring MVC的创建和连接 浏览器获取前端接口和后端程序连接功能实现 2、获取参数 2.1、传递单个参数/多个参数 2.2、传递对象 2.3、传递表单参数 2.4、后端参数重命名 2.5、RequestBody接收J…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
