单片机学习笔记 9. 8×8LED点阵屏

 更多单片机学习笔记:
单片机学习笔记 1. 点亮一个LED灯
单片机学习笔记 2. LED灯闪烁
单片机学习笔记 3. LED灯流水灯
单片机学习笔记 4. 蜂鸣器滴~滴~滴~
单片机学习笔记 5. 数码管静态显示
单片机学习笔记 6. 数码管动态显示
单片机学习笔记 7. 独立键盘
单片机学习笔记 8. 矩阵键盘按键检测


0、实现的功能

        8*8点阵模块的使用,实现中文汉字的点阵循环显示​

1、Keil工程

1-1 8*8LED点阵屏

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

        共阳极指的是行线都是接的正极。9给正电,13给负电就点亮了。如果想要同时亮两个灯,也是用动态显示的方法来实现(分时循环显示,让人眼以为是同时显示的)

        而16个IO口的点阵,一般用两片74HC595芯片去驱动,只需要3个IO口即可完成

1-2 74HC595芯片工作原理

        74HC595芯片是一种串入并出的芯片,在电子显示屏制作当中有广泛的应用。 74HC595是8位串行输入/输出或者并行输出移位寄存器
        14脚DS是串行输入,一位一位的串行输入;
        9脚Q7是用于级联的输出端,并行输出;
        11脚SH_CP是上升沿(0---1)才存入数据,当DS输入时,只有SH_CP为01上升沿时才会把DS输入的数据,存入内部的8位移位寄存器中;所以一般接时钟信号
        12脚ST_CP是上升沿(0---1)才并行输出移位寄存器中的数据,同时还会锁存数据,只要寄存器中的数据没有更新,在上电的情况下都不会改变Q0-Q7;
        10脚/MR是低电平清零,一般不需要,所以直接接VCC;
        13脚/OE是高电平禁止输出(高阻态),一般接GND;
        16脚VCC一般2-6V

2、代码实现

2-1 点亮一个点

        先点亮一个点。行号上面是高位,列号右边是高位。列号接的是2号74HC595,行号接的是1号,所以先输入列号再行号,这样子输入串行数据时才会把行号挤到2号595上。
        用for去输入串行数据

        代码实现:

#include<reg52.h>
sbit DIO = P3^4;	//串行数据脚
sbit S_CLK = P3^5;		//移位寄存器时钟信号
sbit R_CLK = P3^6;		//输出锁存器的时钟void main()
{//ROW 0x80, COL 0xfeunsigned char i;dat = 0xfe;		//先发列值for(i=0;i<8;i++){S_CLK = 0;R_CLK = 0;if(dat & 0x01)    //当串行输入的一位数据为1时DIO=1DIO = 1;elseDIO = 0;S_CLK = 1;		//给S_CLK上升沿,将数据送入移位寄存器中dat = dat >> 1;		//输入一位后,dat要右移动一位//dat >>= 1;和上面这句一样} 	//循环8次,将0xfe发出dat = 0x80;for(i=0;i<8;i++){S_CLK = 0;R_CLK = 0;if(dat & 0x01)DIO = 1;elseDIO = 0;S_CLK = 1;		//给S_CLK上升沿,将数据送入移位寄存器中dat = dat >> 1;		//输入一位后,dat要右移动一位}R_CLK = 1;	//给R_CLK一个上升沿,将数据从移位寄存器中输出到Q0-Q15(并行输出)	while(1);
} 

        可以把该函数集成写到一个函数中,方便调用:

#include<reg52.h>
sbit DIO = P3^4;	//串行数据脚
sbit S_CLK = P3^5;		//移位寄存器时钟信号
sbit R_CLK = P3^6;		//输出锁存器的时钟void Send_Byte(unsigned char dat)
{unsigned char i;S_CLK = 0;R_CLK = 0;for(i=0;i<8;i++){if(dat & 0x01)DIO = 1;elseDIO = 0;S_CLK = 1;dat >>= 1;S_CLK = 0;		//每次循环完都要把S_CLK拉低,以便下次上升沿触发} 	
}
void main()
{Send_Byte(0xfe);		//发送列值Send_Byte(0x40);		//发送行值while(1);
} 

        实物展示:

2-2 中文显示

        下面进行显示中文,要用到动态扫描,分时去显示。显示一个中文行列都要扫描8次,循环显示两个汉字的话就再加个for循环即可,但要加上延时模块
        用辅助软件去生成每个汉字的列选数据,行选数据直接8行循环即可

代码实现:

#include<reg52.h>
#include<intrins.h>
sbit DIO = P3^4;	//串行数据脚
sbit S_CLK = P3^5;		//移位寄存器时钟信号
sbit R_CLK = P3^6;		//输出锁存器的时钟unsigned char code table[2][8] = {	   //[2]表示二维数组
0xE0,0xEE,0x01,0x6D,0x01,0x6D,0x01,0xEF;	//电
0xE7,0xF7,0xF7,0xF7,0x81,0xF7,0xFB,0xC3		//子
};
//0xEF,0x01,0x6D,0x01,0x6D,0x01,0xEE,0xE0
void Send_Byte(unsigned char dat)
{unsigned char i;S_CLK = 0;R_CLK = 0;for(i=0;i<8;i++){if(dat & 0x01)DIO = 1;elseDIO = 0;S_CLK = 1;dat >>= 1;S_CLK = 0;		//每次循环完都要把S_CLK拉低,以便下次上升沿触发} 	
}
void main()
{unsigned char j, k, ROW;unsigned int z;		//为了字体与字体之间的延时while(1){	for(k=0; k<2; k++)	//循环显示两个字{for(z=0; z<1000; z++)	//延时显示,加个delay函数也行	{ROW = 0x80;		//行号初始值为第一行for(j=0;j<8;j++){Send_Byte(table[k][j]);		//发送列号Send_Byte(ROW);		//发送行号R_CLK = 1;		//R_CLK上升沿,直接输出移位寄存器的数据R_CLK = 0;ROW = _cror_(ROW, 1);		//行号循环右移一位}}}}
} 

        实物展示:

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

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

相关文章

vue 预览pdf 【@sunsetglow/vue-pdf-viewer】开箱即用,无需开发

sunsetglow/vue-pdf-viewer 开箱即用的pdf插件sunsetglow/vue-pdf-viewer, vue3 版本 无需多余开发&#xff0c;操作简单&#xff0c;支持大文件 pdf 滚动加载&#xff0c;缩放&#xff0c;左侧导航&#xff0c;下载&#xff0c;页码&#xff0c;打印&#xff0c;文本复制&…

Css—实现3D导航栏

一、背景 最近在其他的网页中看到了一个很有趣的3d效果&#xff0c;这个效果就是使用css3中的3D转换实现的&#xff0c;所以今天的内容就是3D的导航栏效果。那么话不多说&#xff0c;直接开始主要内容的讲解。 二、效果展示 三、思路解析 1、首先我们需要将这个导航使用一个大…

重新定义社媒引流:AI社媒引流王如何为品牌赋能?

在社交媒体高度竞争的时代&#xff0c;引流已经不再是单纯追求流量的数字游戏&#xff0c;而是要找到“对的用户”&#xff0c;并与他们建立真实的连接。AI社媒引流王通过技术创新和智能策略&#xff0c;重新定义了社媒引流的方式&#xff0c;帮助品牌在精准触达和高效互动中脱…

Docker1:认识docker、在Linux中安装docker

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

Centos 8, add repo

Centos repo前言 Centos 8更换在线阿里云创建一键更换repo 自动化脚本 华为Centos 源 , 阿里云Centos 源 华为epel 源 , 阿里云epel 源vim /centos8_repo.sh #!/bin/bash # -*- coding: utf-8 -*- # Author: make.han

《硬件架构的艺术》笔记(五):低功耗设计

介绍 能量以热量形式消耗&#xff0c;温度升高芯片失效率也会增加&#xff0c;增加散热片或风扇会增加整体重量和成本&#xff0c;在SoC级别对功耗进行控制就可以减少甚至可能消除掉这些开支&#xff0c;产品也更小更便宜更可靠。本章描述了减少动态功耗和静态功耗的各种技术。…

Matlab 深度学习工具箱 案例学习与测试————求二阶微分方程

clc clear% 定义输入变量 x linspace(0,2,10000);% 定义网络的层参数 inputSize 1; layers [featureInputLayer(inputSize,Normalization"none")fullyConnectedLayer(10)sigmoidLayerfullyConnectedLayer(1)sigmoidLayer]; % 创建网络 net dlnetwork(layers);% 训…

LM2904运算放大器的应用:测电池电压

在电子设备的广泛应用中&#xff0c;电池作为便携设备的能量来源&#xff0c;其电压监测显得尤为关键。LM2904作为一款低功耗、高增益带宽积和高共模抑制比的双运算放大器&#xff0c;非常适用于电池电压的测量与监测。本文详细介绍了LM2904在电池电压测量方面的应用&#xff0…

C/C++逆向:虚函数逆向分析

虚函数&#xff08;Virtual Function&#xff09;是C中实现多态的一种机制&#xff0c;它允许在运行时通过基类的指针或引用调用派生类中的函数&#xff0c;而不是基类中的版本。虚函数通常与继承和多态结合使用。通过在基类中使用 virtual 关键字声明函数&#xff0c;允许派生…

永磁同步电机末端振动抑制(输入整形)

文章目录 1、前言2、双惯量系统3、输入整形3.1 ZV整形器3.2 ZVD整形器3.3 EI整形器 4、伺服系统位置环控制模型5、仿真5.1 快速性分析5.2 鲁棒性分析 参考 1、前言 什么是振动抑制&#xff1f;对于一个需要精确定位的系统&#xff0c;比如机械臂、塔吊、码头集装箱等&#xff…

pywinauto常见用法详解

1 安装 pip install pywinauto0.6.3 -i https://pypi.tuna.tsinghua.edu.cn/simple 2 启动app appApplication(backenduia).start(程序路径) backend 参数有2种 win32和uia 3 窗口选择 3.1通过类选择 dlgapp["类名"] dlgapp.类名 3.2通过标题选择 dlgapp[&…

20241125复盘日记

昨日最票&#xff1a; 南京化纤 滨海能源 广博股份 日播时尚 众源新材 返利科技 六国化工 丰华股份 威领股份 凯撒旅业 华扬联众 泰坦股份 高乐股份高均线选股&#xff1a; 理邦仪器高乐股份日播时尚领湃科技威领股份资金最多的票&#xff1a; 资金攻击最多的票&#xff1a; …

【实用向】Django 框架入门

声明 这是一篇实用向的Django框架教程博客&#xff0c;适用于想要快速入门的开发者&#xff0c;有前后端开发以及语言基础&#xff0c;想要学习语法或者特性。&#xff0c;包括一些基础的使用&#xff0c;想要学习请结合文章初识 Django并按照我的顺序一步步进行&#xff0c;做…

Git的使用_仓库管理_CI/CD介绍

文章目录 一、Git的基础知识一-1、什么是GitLinux命令行的git的简易安装Git项目的组成Git的基本工作流程Git文件的三种状态 一-2、存储库远程存储库与本地存储库创建存储库git init命令的使用方法1. 初始化一个新的 Git 仓库2. 在指定目录初始化一个新的 Git 仓库3. 初始化一个…

畅游Diffusion数字人(6): JoyHallo: Digital human model for Mandarin

Diffusion Models专栏文章汇总:入门与实战 前言:目前音频驱动大部分的论文和数据都是围绕英文输入驱动打造的,应用在东亚人和国语上效果有所降低。与英语相比,普通话中复杂的嘴唇动作使模型训练更加复杂。这篇博客介绍京东提出的数字人技术《JoyHallo: Digital human model…

SpringCloud入门实战-Spring Cloud Stream消息驱动概述

❤️ 《SpringCloud入门实战系列》解锁SpringCloud主流组件入门应用及关键特性。带你了解SpringCloud主流组件,是如何一战解决微服务诸多难题的。项目demo&#xff1a;源码地址 ❤️ 作者&#xff1a;一只IT攻城狮。关注我&#xff0c;不迷路。 ❤️ 再小的收获x365天都会成就…

Flink 安装与入门:开启流式计算新时代

在当今大数据蓬勃发展的时代&#xff0c;数据处理的时效性愈发关键。传统基于先存储再批量处理的数据方式&#xff0c;在面对诸如网站实时监控、异常日志即时分析等场景时&#xff0c;显得力不从心。随着 5G、物联网等技术的兴起&#xff0c;海量数据如潮水般涌来&#xff0c;且…

神经网络归一化方法总结

在深度学习中&#xff0c;归一化 是提高训练效率和稳定性的关键技术。以下是几种常见的神经网络归一化方法的总结&#xff0c;包括其核心思想、适用场景及优缺点。 四种归一化 特性Batch NormalizationGroup NormalizationLayer NormalizationInstance Normalization计算维度…

设计理念与数据反馈:面向火星熔岩管探索的跳跃机器人

随着人类对火星探索的深入&#xff0c;熔岩管作为潜在资源和居住地的科学价值受到广泛关注。然而&#xff0c;这些复杂且规模宏大的地下空间&#xff0c;对传统探测技术提出了严峻挑战。因此&#xff0c;本文介绍了一款专为火星熔岩管探索设计的跳跃机器人&#xff0c;其核心设…

MTK 展锐 高通 sensorhub架构

一、MTK平台 MTK框架可以分为两部分&#xff0c;AP和SCP。 AP是主芯片&#xff0c;SCP是协处理器&#xff0c;他们一起工作来处理sensor数据。 SCP 是用来处理sensor和audio相关功能和其他客制化需求的一个协处理理器&#xff0c;MTK SCP选择freeRTOS作为操作系统&#xff0c…