当前位置: 首页 > news >正文

单片机学习笔记之点阵(8x8)

心血来潮,想捡一下丢了很久的单片机,纪录一下单片机学习简单的点阵显示,及踩到的䟘,找到吃灰很久的普中科技开发板(非广告,为毕设学习买的)。

1. 使用工具

    使用开发板:

                普中科技开发板

    编译软件:

                keil

2.资料

点阵线路图: POW 为 74HC595 芯片 输出。

74HC595 芯片 简介

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

 

 74HC595 数据 转换 步骤

         74HC595由 两个寄存器 组成:移位寄存器存储/输出寄存器

两者都有8位宽度。移位寄存器负责在时钟脉冲的上升沿接收输入数据,而存储寄存器负责将数据传送到 输出引脚(  q0->q7)

    输出使能输入(~ OE)) 该引脚 用于 启用或禁用( Q0-Q7)。 低电平有效。

  1. SRLCK (11 脚)  、RLCK(12 脚 )  置 零(0)。
  2. 设置 SET(14 脚)  数据。
  3. 将SRLCK (11 脚)  置 1 ,上升沿 有效 , 上升沿时,数据寄存器 的 数据 移位 。(即 上升沿时, 从串行输入口 获取数据 ,需要 8 个 正脉冲 才能将 8 位数据 移入 寄存器。)
  4.  重复 2,3 步骤 8 次 
  5. 将 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)

心血来潮&#xff0c;想捡一下丢了很久的单片机&#xff0c;纪录一下单片机学习简单的点阵显示&#xff0c;及踩到的䟘&#xff0c;找到吃灰很久的普中科技开发板&#xff08;非广告&#xff0c;为毕设学习买的&#xff09;。 1. 使用工具 使用开发板&#xff1a; 普中科技开发…...

我一个普通程序员,光靠GitHub打赏就年入70万,

一个国外程序员名叫 Caleb Porzio在网上公开了自己用GitHub打赏年入70万的消息和具体做法。 Caleb Porzio 发推庆祝自己靠 GitHub 打赏&#xff08;GitHub Sponsors&#xff09;赚到了 10 万美元。 GitHub Sponsors是 GitHub 2019 年 5 月份推出的一个功能&#xff0c;允许开发…...

剖析Spring MVC如何将请求映射到Controller

Spring MVC是一种基于Java的Web框架&#xff0c;可以帮助开发者快速地构建Web应用程序。在Spring MVC中&#xff0c;请求将会被映射到对应的Controller中进行处理。本文将会介绍Spring MVC如何将请求映射到Controller的过程。 DispatcherServlet DispatcherServlet是Spring M…...

设计模式之美-工厂模式

分类&#xff1a;简单工厂模式&#xff08;静态工厂模式&#xff09;&#xff0c;工厂方法模式&#xff0c;抽象工厂模式。 这种设计模式也是 Java 开发中最常见的一种模式&#xff0c;它的主要意图是定义一个创建对象的接口&#xff0c;让其子类自己决定实例化哪一个工厂类&a…...

A Star算法最通俗易懂的一个版本

01-概述虽然掌握了 A* 算法的人认为它容易&#xff0c;但是对于初学者来说&#xff0c; A* 算法还是很复杂的。02-搜索区域(The Search Area)我们假设某人要从 A 点移动到 B 点&#xff0c;但是这两点之间被一堵墙隔开。如图 1 &#xff0c;绿色是 A &#xff0c;红色是 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&#xff0c;基于Python的聊天机器人第一步&#xff0c;配置python第二步&#xff0c;配置[go-cqhttp](https://github.com/Mrs4s/go-cqhttp)第三步&#xff0c;配置[NoneBot](https://61d3d9dbcadf413fd3238e89--nonebot2.netlify.app/)NoneBot2 是一个现代、跨平台、…...

java反射机制及其详解

反射反射机制反射调用优化有时候我们做项目的时候不免需要用到大量配置文件&#xff0c;就拿框架举例&#xff0c;通过这些外部文件配置&#xff0c;在不修改的源码的情况下&#xff0c;来控制文件&#xff0c;就要用到我们的反射来解决 假设有一个Cat对象 public class Cat …...

Leetcode—环形链表

前言&#xff1a;给定一个链表&#xff0c;判断是否为循环链表并找环形链表的入口点 首先我们需要知道什么是双向循环链表&#xff0c;具体如下图所示。 对于链表&#xff0c;我们如何去判断链表是循环链表呢&#xff1f;又寻找入环点呢&#xff1f;我们可以利用快慢指针的方法…...

蓝牙耳机哪个戴的最舒服?久戴不累的蓝牙耳机推荐

在喧嚣的时代中&#xff0c;快节奏和疲惫充斥着我们的生活&#xff0c;于是耳机成为了人们必不可少的东西&#xff0c;无论是闲暇时亦或是正处在工作时&#xff0c;都会将它戴上&#xff0c;出门在外戴耳机变成了常态&#xff0c;所以小编就整理了一期久戴不累的蓝牙耳机。 No…...

25k的Java开发常问的AQS问题有哪些?

前言:面试高频的AQS问题大多。本文将以实战面试角度出发,将面试官喜欢问的一些问题罗列出来。 文章目录 AQSAQS定义底层实现独占锁举例底层实现独占锁超时获取锁共享锁举例共享锁实现原理作者辟谣AQS AQS定义 AQS的全称是AbstractQueuedSynchronizer,也就是抽象队列同步器…...

Grafana 监控面板绘制流程

本篇作者&#xff1a;IoTDB 社区 -- 张洪胤本文以 IoTDB V1.0.1 版本为例本文档介绍了 Apache IoTDB 监控指标通过 Prometheus 的方式进行采集&#xff0c;并且使用 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. 其他教程前言 项目地址&#xff1a;https://github.com/Fafa-DL/Awesome-Backbones 操作教程&#xff1a;https://www.bilibili.co…...

Java--JMH--性能测试--测试软件运行效率/时间--StopWatch

写在前面: 很多时候想要测试代码运行时间&#xff0c;或者比较2个运行的效率。 最简单的方法就是Sytem.currentTimeMillis记录2开始和结束时间来算 但是Java 代码越执行越快&#xff0c;放在后面的方法会有优势&#xff0c;这个原因受留个眼&#xff0c;以后研究。大概有受类加…...

JavaScript Array(数组)对象

数组对象的作用是&#xff1a;使用单独的变量名来存储一系列的值。参数参数 size 是期望的数组元素个数。返回的数组&#xff0c;length 字段将被设为 size 的值。参数 element ...; elementn 是参数列表。当使用这些参数来调用构造函数 Array() 时&#xff0c;新创建的数组的元…...

干货 | 电容在电路35个基本常识

第1个电压源正负端接了一个电容&#xff0c;与电路并联&#xff0c;用于整流电路时&#xff0c;具有很好的滤波作用&#xff0c;当电压交变时&#xff0c;由于电容的充电作用&#xff0c;两端的电压不能突变&#xff0c;就保证了电压的平稳。当用于电池电源时&#xff0c;具有交…...

日读300篇文献的技巧

感觉自己看文章很慢&#xff0c;有时候也抓不住重点。 如果是英文文献的话&#xff0c;可能还要有点难度&#xff0c;毕竟英语渣渣还是需要有中文-》英文的转换过程。 最近在搞毕业论文的时候&#xff0c;发现了一个非常好玩的东西&#xff0c;大大提升了我看文章搞科研&#x…...

C++核心编程

一、内存分区模型概述&#xff1a;C程序在执行时&#xff0c;将内存划分为4个区域程序运行前&#xff1a;代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统管理①共享。共享的目的是对于频繁被执行的程序&#xff0c;在内存中只需有一份代码即可②只读。使其只…...

SpringMVC程序开发

目录 SpringMVC 1、MVC定义 2、MVC和SpringMVC之间的关系 学SpringMVC 1、Spring MVC的创建和连接 浏览器获取前端接口和后端程序连接功能实现 2、获取参数 2.1、传递单个参数/多个参数 2.2、传递对象 2.3、传递表单参数 2.4、后端参数重命名 2.5、RequestBody接收J…...

Lingyuxiu MXJ LoRA效果展示:masterpiece+best quality+8k三重加持高清输出

Lingyuxiu MXJ LoRA效果展示&#xff1a;masterpiecebest quality8k三重加持高清输出 1. 引言&#xff1a;当唯美人像遇上AI创作 想象一下&#xff0c;你是一位摄影师或设计师&#xff0c;需要创作一组具有特定艺术风格的人像作品。传统的流程需要寻找模特、布置灯光、后期精…...

科哥IndexTTS2 V23应用案例:虚拟主播语音定制,情感控制更强

科哥IndexTTS2 V23应用案例&#xff1a;虚拟主播语音定制&#xff0c;情感控制更强 1. 引言&#xff1a;虚拟主播语音定制的新标杆 在虚拟主播行业蓬勃发展的今天&#xff0c;语音表现力已成为决定用户体验的关键因素。传统语音合成系统往往只能提供机械化的朗读效果&#xf…...

Qwen3-0.6B-FP8模型服务化:使用Git进行版本管理与CI/CD集成

Qwen3-0.6B-FP8模型服务化&#xff1a;使用Git进行版本管理与CI/CD集成 1. 引言 咱们做AI模型部署的&#xff0c;是不是经常遇到这种烦心事&#xff1a;好不容易把模型服务调通了&#xff0c;过两天想加点新功能&#xff0c;结果发现原来的配置参数、客户端代码、甚至API封装…...

【Docker】容器生命周期管理:从优雅停止到高效清理的实战技巧

1. 为什么需要关注容器生命周期管理&#xff1f; 第一次接触Docker时&#xff0c;很多人会把容器当成"轻量级虚拟机"来用。直到某天深夜&#xff0c;我的生产环境突然报警——磁盘空间爆满了。排查后发现&#xff0c;原来过去三个月创建的测试容器都没清理&#xff0…...

实时手机检测-通用:5分钟快速部署,小白也能轻松上手

实时手机检测-通用&#xff1a;5分钟快速部署&#xff0c;小白也能轻松上手 1. 模型简介 实时手机检测-通用是一款基于DAMOYOLO-S框架的高性能目标检测模型&#xff0c;专门用于在各种场景中快速准确地检测手机设备。这个模型在精度和速度上都超越了传统的YOLO系列方法&#…...

手把手教你用QEMU+GDB调试RISC-V中断:以蜂鸟E200 ECLIC为例

从零构建RISC-V中断调试实战&#xff1a;基于QEMU与蜂鸟E200 ECLIC的深度解析 第一次在QEMU中成功捕获到中断向量跳转时&#xff0c;GDB窗口里那个闪烁的mtvec地址让我兴奋得差点打翻咖啡——这比看任何理论文档都直观十倍。作为从ARM Cortex-M转型RISC-V的嵌入式开发者&#x…...

Gradio界面定制化:为DAMO-YOLO WebUI添加导出检测结果CSV功能

Gradio界面定制化&#xff1a;为DAMO-YOLO WebUI添加导出检测结果CSV功能 1. 项目背景与需求 如果你用过那个基于DAMO-YOLO的手机检测WebUI&#xff0c;可能会发现一个问题&#xff1a;检测结果只能看&#xff0c;不能存。 每次上传图片&#xff0c;系统会告诉你检测到了几个…...

前端国际化:别让你的应用只懂一种语言

前端国际化&#xff1a;别让你的应用只懂一种语言 毒舌时刻这应用写得跟方言似的&#xff0c;出了本地就没人懂。各位前端同行&#xff0c;咱们今天聊聊前端国际化。别告诉我你的应用还只有中文版本&#xff0c;那感觉就像在国际会议上只说方言——能说&#xff0c;但没人懂。 …...

让经典Flash游戏重获新生:CefFlashBrowser终极使用指南

让经典Flash游戏重获新生&#xff1a;CefFlashBrowser终极使用指南 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 你是否还记得那些曾经在4399、7k7k等网站上玩过的经典Flash游戏&#x…...

数据标注公司怎么选?从百度、阿里到龙猫、倍赛,聊聊2024年不同类型平台的合作门道

2024年数据标注平台合作指南&#xff1a;如何根据团队基因选择最优赛道 数据标注行业正在经历一场静默的革命。从传统的人工密集型标注到AI辅助的半自动化流程&#xff0c;从单一文本标注到多模态数据清洗&#xff0c;这个曾经被视为"AI流水线工人"的行业&#xff0c…...