侵权投诉

16X16点阵编写技巧的思路

玩转单片机 2020-10-26 11:16 次阅读

来说一下16X16点阵的编写技巧,主要讲一下思路,因为在写16X16点阵驱动时,很多人一上来大脑一片空白啊,根本无从下手,我这里举一个例子讲下思路,以后大家可以按照我下面的思路来写程序。

首先要看一下16X16点阵的驱动电路,以这个电路为例我写一下自己编写16X16点阵驱动时的小经验,勿喷勿喷哈,O(∩_∩)O,上电路图:

16X16点阵原理图

(注:图中我加了一些注释,可能有的人不喜欢,所以想看原图的人可以去找我在单片机贴吧发的帖子里找,有PDF文件,很清晰!)

从图片中我们可以看出74HC138芯片控制列,74HC595芯片控制行,我们都知道在同一时间内74HC138芯片只能有一个引脚输出有效(不知道74HC138和后面要提到的74HC595的人也不要着急,文章后面也会讲74HC138和74HC595),也就是说同一时间内只能选中一行,而74HC595是“串入并出”,八个引脚可以同时有效,这样就会导致16X16点阵驱动编写时的第一个易错点:扫描方式。

注意点一:扫描方式

这个16X16点阵的驱动扫描方式是由电路图决定的(我仅仅指这个16X16点阵),不像8X8点阵,8X8点阵的扫描方式是任意的。

上面说了,74HC138只能一个引脚有效,且74HC138控制行,所以此次驱动编写只能用行扫描,列送入数据。行扫描的原理上一篇已经说了,这里就不重复了,免得大家嫌我啰嗦......~(≧▽≦)/~喵

还有这里我要纠正一个自己犯的错误哈,刚刚才发现,不要打我!【o(>﹏<)o不要啊】

上一篇里我说,呃......直接上图吧:

上一篇文章里的8X8点阵代码编写思路

上次我说思路一代码实现简单,思路二不好实现,当时写学习笔记的我还仅仅只是编过一些小程序,数据量不大,但是今天写16X16点阵驱动的时候,用了比较多的数据,发现思路一在数据很多的时候根本实现不了(我仅仅指容量很小的51系列里面),51单片机的容量太小,根本无法同时处理这么多数据,所以这里纠正一下哈。

注意点二:滚动效果的实现

刚才说了,数据比较多时,我们就不能用改变数据的方式实现滚动效果了,只能通过修改扫描函数读取数据的起始位置来实现滚动效果。(如果您有更好的思路,请务必告诉小弟一下,先谢谢啦^_^)下面我说一下我的代码编写思路:

用一个for循环就可以实现修改每次的数据读取位置,for循环里面不是有一个变量嘛(一般都叫 i),将这个变量 i 加到读取数据时的数据数组下标里就行了。我只写文字的话你们一般不明白什么意思,所以就....上图:

滚动效果的代码实现:思路一

for循环里我之所以写两个 i++ 的原因是:16X16点阵嘛,一次要传输两个字节,所以每移动一个LED位,扫描的起始位置就要移动两个字节,所以要写两个;另外不用 i = i + 2是因为 i++ 的运行速度快;还有就是 i 之所以取385,是因为我用了386个字节的数据,0开头嘛,所以就写385啦!扯远了哈,让我们再回归正题。

从图中可以看出,我把 i 加在了83、88、93等行的数组StreamData的下标里面,这样每次扫描时读取数据的位置就会后移两个字节,这样就不用再写数据处理函数了。

再来就该说一下16X16点阵的数据了:8X8点阵好说,就算自己算也不难啊,但是16X16点阵呢?难道还要自己一行一行得算吗?

注意点三:数据的获取

获取数据也就是获取字模,现在有很多获取字模的软件,所以这里我就介绍我用的一款软件:

先上图:

汉字取模软件

下面是这款软件的界面:

汉字取模软件的界面

软件使用方法:(我就不敲字了,敲字不直观,直接上图)

第一步:(此用法仅仅针对于16X16点阵的汉字取模,其实这个软件还有其他很多功能,这个以后用到的时候再说)

第一步

第二步:

第二步

第三步:

第三步

这样,我们就可以很快获取想要显示的汉字的字模了。对于这个软件在使用前还要进行适当的设置,在: 参数设置—> 其他选项 里面,软件自身也有相当详细的说明,自己看就行了。

讲整体思路之前先讲一下上面提到的两个芯片,最后将前面讲的全部串起来。

注意点四:74HC138芯片

下面是我自己用Altium Designer画的一个74HC138元件图(Altium Designer我刚学完,才过了一个周,不怎么会用),一共有16个引脚。

1. 整体功能:138(后面都简称138)主要功能是用一个三位的二进制数控制八位输出引脚中的一个引脚,经常用于动态显示。

2. A0、A1、A2就组成了那个三位的二进制数。

3. Y0~Y7就是那八位输出引脚。

4. E1、E2、E3用于控制当前的138是否工作,当要控制多个138的时候就要用到这三个引脚了。

再详细的包括真值表啊、具体电路接法啊什么的我就不说了,我这里只是讲技巧的嘛,最基本的基础知识还是靠自己学才能记得最扎实!

我自己画的74HC138原理图,网上没找到好的

注意点五:74HC595芯片

下面我自己用“画图”画了一张74HC595的工作原理图:(画一张这么简单的图花了我近一个小时,不想活了....╯﹏╰)

74HC595原理图

74HC595芯片具体的编程还要涉及到时序,不是一句两句就能说完的,所以这些基本知识我就不说了,我说一下我对4HC595的理解:

74HC595的组成:74HC595呢就好像是一个水库,有一个进水口(图中的DS引脚,就是第一列)、一个存水箱(图中的数据保存区,就是第二列)、一个放水闸门(图中的OE引脚,第三列),八个出水口(也是第三列)。

74HC595的工作原理:当接到进水命令时(SH_CP引脚),开始进水,水进多了就会漏出来(下面的 Q7' 引脚),接到存水命令时(ST_CP引脚),进来的水就会进入存水箱,最后当接到放水命令时(OE引脚)就会放水,8个出水口同时放水。

这样74HC595就讲完了(再说一下哈,基础知识这里不讲,哎呀,不要怪我嘛,我主要是分享经验和技巧,基础知识可以百度百科嘛,那上面讲的更好更详细!)

这样知识准备就差不多了,现在我们再来看这张原理图:

16X16点阵原理图

这下我们编写代码的整体思路就有了:

扫描方式:行扫描

滚动实现:数据读取位置变更(上文已讲)

用一个for循环控制移动的时间间隔,for里面用两个74HC138依次选中每一行,再用两个74HC595送入每一行的数据,这样直至扫描完一个屏幕(不是8行了,这次是16行);之后外面再嵌套一个for循环用来变更数据读取的位置(后移两个字节),这样就实现了16X16点阵的驱动编写。

注意细节不要忽略,这也是LED类的,要进行微延时和消隐操作,当然作为一个有理想的开发者,规范的代码格式也是必须滴!

在上一篇文章的评论里面大家在讨论我用的编程软件,我这里说一下,我用的是TKStudio,挺好用的,我最喜欢的是它的代码提示功能,这个很厉害,Keil C51是没有代码提示的,但是Keil MDK for ARM是有代码提示功能的,但是初学者最开始都是在写C51的,所以写C51代码时TKStudio还是不错的,新手的福音啊。本来想说一下这个软件的,可是好晚了,该睡觉了,明天还要上课呢,那么就在下一篇文章的时候我再说一下TKStudio这个软件吧 ,到时候会主要说说怎么改字体和语法高亮,我也会把我的编辑风格文件分享出来,大家直接引用就可以了,不喜欢我的那个风格就自己再改一下就行。

责任编辑:xj

原文标题:玩转单片机 16X16点阵

文章出处:【微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。

原文标题:玩转单片机 16X16点阵

文章出处:【微信号:mcu168,微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

单片机上拉电阻有什么样的作用好使用原则详细说明

电子发烧友网站提供《单片机上拉电阻有什么样的作用好使用原则详细说明.pdf》资料免费下载
发表于 11-26 23:50 10次 阅读
单片机上拉电阻有什么样的作用好使用原则详细说明

如何让STC单片机接上电就可以开始工作

电子发烧友网站提供《如何让STC单片机接上电就可以开始工作.pdf》资料免费下载
发表于 11-26 23:48 3次 阅读
如何让STC单片机接上电就可以开始工作

使用单片机实现看门狗溢出测试的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现看门狗溢出测试的C语言程序免费下载。
发表于 11-26 17:31 7次 阅读
使用单片机实现看门狗溢出测试的C语言程序免费下载

使用单片机实现外部中断1电平触发的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现外部中断1电平触发的C语言程序免费下载。
发表于 11-26 17:31 8次 阅读
使用单片机实现外部中断1电平触发的C语言程序免费下载

使用单片机实现外部中断0电平触发的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现外部中断0电平触发的C语言程序免费下载。
发表于 11-26 17:31 7次 阅读
使用单片机实现外部中断0电平触发的C语言程序免费下载

使用单片机实现矩阵键盘简易计算器的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现矩阵键盘简易计算器的C语言程序免费下载。
发表于 11-26 17:31 11次 阅读
使用单片机实现矩阵键盘简易计算器的C语言程序免费下载

使用单片机实现按键长按短按效果的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现按键长按短按效果的C语言程序免费下载。
发表于 11-26 17:31 8次 阅读
使用单片机实现按键长按短按效果的C语言程序免费下载

单片机是如何构成的?

  单片机是这些电器动作的关键,是指挥硬件运行的。例如:接收按钮或按键的输入信号,按照事先编好的程序,指挥马达和LCD的...
发表于 11-26 17:12 7次 阅读
单片机是如何构成的?

stm8单片机的供电模块

  STM8 的MCU有四个供电单元:   1. VDD/VSS:主电源(3V~5.5V);   2. VDDIO/VSSIO: I/O口...
发表于 11-26 17:10 0次 阅读
stm8单片机的供电模块

常见的四种单片机常用开方根算法

  C语言中要求平方根,可以在头文件中加入#include 〈math.h》。然后调用sqrt(n);函数即可。但在单片机中调用此函数无疑会耗...
发表于 11-26 17:01 0次 阅读
常见的四种单片机常用开方根算法

单片机系统开发入门知识及基本条件

  1. 入门知识储备   想学习单片机系统的开发,必须先有以下几个方面的知识储备:   (一) 微机原理   (二) C语言...
发表于 11-26 16:57 0次 阅读
单片机系统开发入门知识及基本条件

单片机如何用一个IO口采集多个按键信号?

一般按键信号都是高低电平,对于每一个按键信号单片机都需要一个IO口进行采集,这种按键采集方式比较简单,但是占用的单片机I...
发表于 11-26 16:51 0次 阅读
单片机如何用一个IO口采集多个按键信号?

减轻单片机设计干扰的方法

现在的单片机一般在片内集成有RC振荡电路,可以产生MCU工作需要的时钟脉冲,使用片内时钟不仅可以简化外部电路设计,还可以...
发表于 11-26 16:47 0次 阅读
减轻单片机设计干扰的方法

STM8S003单片机最小系统的电路原理图

本文以ST公司的STM8S003单片机为例,给大家讲解一个单片机最小系统的电路原理图:通过单片机采集一个按键信号,点亮一颗L...
发表于 11-26 16:45 0次 阅读
STM8S003单片机最小系统的电路原理图

stm8单片机复位功能的一些特性

  对于stm8单片机的复位引脚NRST,有九种情况会触发复位:   通过外部电位作用于NRST引脚产生复位   上电复位(...
发表于 11-26 16:38 0次 阅读
stm8单片机复位功能的一些特性

STM8单片机中断的主要功能有哪些

  内部中断:一般是由硬件错误或者运算过程中出错引起的,一般是不可避免的;   外部中断:是处理器的外设发出的中断请求,如...
发表于 11-26 16:36 0次 阅读
STM8单片机中断的主要功能有哪些

学习51单片机的误区

  误区1:51单片机是学习的基础   “51单片机是学习的基础”这句话本身并没有错。在我读本科的时候,当时它无疑是学习的基础...
发表于 11-26 16:27 0次 阅读
学习51单片机的误区

基于AT89C55WD单片机和编程语言实现继电保护实验系统的设计

其中控制系统采用单片机控制,包含以下4个部分:数据处理单元,即微机主系统;数据采集单元,即模拟量输入....
的头像 电子设计 发表于 11-26 10:10 187次 阅读
基于AT89C55WD单片机和编程语言实现继电保护实验系统的设计

单片机上电复位后端口的状态详细概述

 在 MSP430 单片机的手册中,对于端口复位后的状态,是这样描述的:复位后,所有端口处于输入状态....
发表于 11-25 16:30 42次 阅读
单片机上电复位后端口的状态详细概述

单片机整体的CPU使用情况详细介绍

打开电脑的任务管理器,看着跳动的 CPU 使用率,发现很舒服。每一个线程占用了多少 CPU 清清楚楚....
发表于 11-25 15:58 40次 阅读
单片机整体的CPU使用情况详细介绍

为什么不能使用单片机取代PLC

单片机可以替代 PLC 吗? 这个问题如同面粉能代替面条一样,答案是否定的。第一次听到这个答案可能很....
发表于 11-25 10:58 97次 阅读
为什么不能使用单片机取代PLC

单片机到底有什么作用PDF文件讲解

1. uC/OS 是个什么鬼?在一些朋友的留言和大神的文章中多次提到了 uC/OS,相信很多朋友看到....
发表于 11-25 10:57 43次 阅读
单片机到底有什么作用PDF文件讲解

单片机实现按键触发设计的方案和电路图分析

在学习单片机的时候想必大家都接触过按键,按键是一个人机交互的接口设备,在刚开始接触的时候最简单也是最....
发表于 11-25 09:34 37次 阅读
单片机实现按键触发设计的方案和电路图分析

工业物联网的无线网络WiFi单片机的方案详细概述

正如 Microchip 所看到的一样,随着物联网从家庭自动化领域拓展到如供暖、通风与空调(HVAC....
发表于 11-25 08:20 24次 阅读
工业物联网的无线网络WiFi单片机的方案详细概述

使用单片机实现独立按键依次输入数据的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现独立按键依次输入数据的C语言程序免费下载。
发表于 11-24 17:57 33次 阅读
使用单片机实现独立按键依次输入数据的C语言程序免费下载

使用单片机实现按键从右至左输入的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现按键从右至左输入的C语言程序免费下载。
发表于 11-24 17:57 37次 阅读
使用单片机实现按键从右至左输入的C语言程序免费下载

使用单片机实现抢答器的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现抢答器的C语言程序免费下载。
发表于 11-24 17:50 28次 阅读
使用单片机实现抢答器的C语言程序免费下载

使用单片机实现多位数按键加减不闪烁的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现多位数按键加减不闪烁的C语言程序免费下载。
发表于 11-24 17:50 25次 阅读
使用单片机实现多位数按键加减不闪烁的C语言程序免费下载

使用单片机实现多位数按键加减闪烁数码管显示的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现多位数按键加减闪烁数码管显示的C语言程序免费下载。
发表于 11-24 17:50 18次 阅读
使用单片机实现多位数按键加减闪烁数码管显示的C语言程序免费下载

单片机C51程序设计的学习课件免费下载

本文档的主要内容详细介绍的是单片机C51程序设计的学习课件免费下载包括了:1、C51程序设计基础,2....
发表于 11-24 17:24 24次 阅读
单片机C51程序设计的学习课件免费下载

基于单片机和热电阻Cu5实现烤烟温度自动控制系统的设计

烟叶初烤过程中,烤房内温度的准确测量和有效控制是烘烤的核心和烟叶质量的根本保证。
的头像 电子设计 发表于 11-24 10:13 224次 阅读
基于单片机和热电阻Cu5实现烤烟温度自动控制系统的设计

AT89S52单片机的中文资料说明

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使....
发表于 11-24 08:00 47次 阅读
AT89S52单片机的中文资料说明

实现蜂鸣器的程序和工程文件免费下载

本文档的主要内容详细介绍的是使用单片机实现蜂鸣器的程序和工程文件免费下载。
发表于 11-24 08:00 41次 阅读
实现蜂鸣器的程序和工程文件免费下载

使用单片机实现1个独立按键控制LED状态转换的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现1个独立按键控制LED状态转换的C语言程序免费下载。 ....
发表于 11-23 17:45 53次 阅读
使用单片机实现1个独立按键控制LED状态转换的C语言程序免费下载

如何打造一套属于自己的嵌入式软件开发平台

在本次的项目中GUI采用了最新的TouchGFX,放弃了已经使用多年的emwin。一个原因是因为To....
的头像 电路设计技能 发表于 11-23 14:36 244次 阅读
如何打造一套属于自己的嵌入式软件开发平台

使用Labview实现PC通信与单片机测控源程序的合集免费下载

本文档的主要内容详细介绍的是使用Labview实现PC通信与单片机测控源程序的合集免费下载包括了:网....
发表于 11-23 08:00 26次 阅读
使用Labview实现PC通信与单片机测控源程序的合集免费下载

FreeRTOS的基础知识和应用教程

嵌入式系统不只是ARM+Linux,不是只有安卓,凡是电子产品都可称为嵌入式系统。物联网行业的兴起,....
发表于 11-22 11:34 734次 阅读
FreeRTOS的基础知识和应用教程

单片机C语言程序设计原理学习课件免费下载

本例的一个典型应用就是软件延时。在程序的设计中,经常用到时间延迟,可用循环结构来实现,即循环执行指令....
发表于 11-20 17:14 117次 阅读
单片机C语言程序设计原理学习课件免费下载

STC89C51单片机的硬件系统设计介绍

STC系列单片机是美国STC公司最新推出的一种新型51内核的单片机。片内含有Flash程序存储器、S....
发表于 11-20 17:14 233次 阅读
STC89C51单片机的硬件系统设计介绍

使用单片机实现矩阵键盘反转扫描的C语言实例免费下载

本文档的主要内容详细介绍的是使用单片机实现矩阵键盘反转扫描的C语言实例免费下载。
发表于 11-20 16:49 135次 阅读
使用单片机实现矩阵键盘反转扫描的C语言实例免费下载

使用单片机实现矩阵键盘密码锁的C语言实例免费下载

本文档的主要内容详细介绍的是使用单片机实现矩阵键盘密码锁的C语言实例免费下载。
发表于 11-20 16:49 57次 阅读
使用单片机实现矩阵键盘密码锁的C语言实例免费下载

使用单片机实现矩阵键盘中断扫描的C语言实例免费下载

本文档的主要内容详细介绍的是使用单片机实现矩阵键盘中断扫描的C语言实例免费下载。
发表于 11-20 16:49 87次 阅读
使用单片机实现矩阵键盘中断扫描的C语言实例免费下载

使用单片机实现8位端口检测8独立按键的C语言实例免费下载

本文档的主要内容详细介绍的是使用单片机实现8位端口检测8独立按键的C语言实例免费下载。
发表于 11-20 16:49 64次 阅读
使用单片机实现8位端口检测8独立按键的C语言实例免费下载

使用单片机实现矩阵键盘行列扫描的C语言实例免费下载

本文档的主要内容详细介绍的是使用单片机实现矩阵键盘行列扫描的C语言实例免费下载。
发表于 11-20 16:49 75次 阅读
使用单片机实现矩阵键盘行列扫描的C语言实例免费下载

开发STM32的四种库

1.我是选择寄存器开发STM32,还是标准外设库呢?2.你有STM32L0标准外设库吗?3.HAL库....
的头像 strongerHuang 发表于 11-20 15:56 284次 阅读
开发STM32的四种库

C51单片机的入门教程免费下载

计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进....
发表于 11-20 08:00 114次 阅读
C51单片机的入门教程免费下载

使用单片机实现1个独立按键控制LED的C语言程序免费

本文档的主要内容详细介绍的是使用单片机实现1个独立按键控制LED的C语言程序免费。
发表于 11-19 18:10 91次 阅读
使用单片机实现1个独立按键控制LED的C语言程序免费

使用单片机实现两按键加减操作数码管显示的C语言程序免费

本文档的主要内容详细介绍的是使用单片机实现两按键加减操作数码管显示的C语言程序免费。
发表于 11-19 18:10 94次 阅读
使用单片机实现两按键加减操作数码管显示的C语言程序免费

使用单片机实现多位数按键加减闪烁实例免费下载

本文档的主要内容详细介绍的是使用单片机实现多位数按键加减闪烁实例免费下载。
发表于 11-19 18:10 41次 阅读
使用单片机实现多位数按键加减闪烁实例免费下载

TMS320F28335单片机的介绍和组成最小应用系统的设计说明

介绍TMS320F28335 的性能特点、仿真工具和开发环境,给出了由TMS320F28335组成的....
发表于 11-19 17:47 55次 阅读
TMS320F28335单片机的介绍和组成最小应用系统的设计说明

单片机学习教程之C程序的简单介绍

包含头文件:现学习的是C51 单片机,所以需要的头文件是#include《reg51.h》程序的主函....
发表于 11-19 17:24 111次 阅读
单片机学习教程之C程序的简单介绍

基于EM78P156E单片机实现红外探测障碍的应用设计

在实测电路中,使用台湾义隆公司的EM78P156E单片机,红外发射管为MIE552A2,红外接收头为....
的头像 电子设计 发表于 11-19 10:22 277次 阅读
基于EM78P156E单片机实现红外探测障碍的应用设计

B码解码接口卡的电路设计方案分析

对B码进行解码就是将B码中所包含的时、分、秒信息提取出来,转换成主计算机能够识别的形式,同时以秒的准....
的头像 电子设计 发表于 11-19 10:14 271次 阅读
B码解码接口卡的电路设计方案分析

使用PROTEUS实现一个闪烁的LED基础教程

 知识点:晶振电路,晶振结合单片机内部电路产生时钟频率,为单片机工作提供时钟信号,有了这个时钟信号,....
发表于 11-19 08:00 127次 阅读
使用PROTEUS实现一个闪烁的LED基础教程

使用单片机实现左右来回流水的8个LED基础教程

好,第1步、打开proteus软件,我们复习一下PROTEUS添加器件基本操作:器件库,器件列表,P....
发表于 11-19 08:00 103次 阅读
使用单片机实现左右来回流水的8个LED基础教程

单片机实现花样流水灯的基础课程

 这个是电路图,这个是ATMEL89C52单片机,这个是P0口控制8个LED灯,这是P2口控制8个L....
发表于 11-19 08:00 139次 阅读
单片机实现花样流水灯的基础课程

使用单片机实现9999累加的C语言实例免费下载

本文档的主要内容详细介绍的是使用单片机实现9999累加的C语言实例免费下载。
发表于 11-18 17:44 42次 阅读
使用单片机实现9999累加的C语言实例免费下载

使用单片机实现9999累减的C语言实例免费下载

本文档的主要内容详细介绍的是使用单片机实现9999累减的C语言实例免费下载。
发表于 11-18 17:44 45次 阅读
使用单片机实现9999累减的C语言实例免费下载

使用单片机产生200mS方波的C语言实例免费下载

本文档的主要内容详细介绍的是使用单片机产生200mS方波的C语言实例免费下载。
发表于 11-18 17:43 46次 阅读
使用单片机产生200mS方波的C语言实例免费下载

使用单片机产生多路不同频率方波的C语言实例免费下载

本文档的主要内容详细介绍的是使用单片机产生多路不同频率方波的C语言实例免费下载。
发表于 11-18 17:43 48次 阅读
使用单片机产生多路不同频率方波的C语言实例免费下载