8x8点阵字模生成器_玩转单片机 16X16点阵

2023-05-16

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

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

ba7f331ceb5fbdc1f471e5908ab5bf1c.png

16X16点阵原理图

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

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

注意点一:扫描方式

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

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

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

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

3ab6b7a4cd3fc86bf7a1c4835ecf74b0.png

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

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

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

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

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

30e503fb9560df869324227059056226.png

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

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

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

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

注意点三:数据的获取

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

先上图:

46e05494e1755ce7e60670d7c6ccc4e6.png

汉字取模软件

下面是这款软件的界面:

76f9c28fa817119c4a9cf201ef79ea04.png

汉字取模软件的界面

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

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

9aab0956f56ab91ba09b9a9fce40655b.png

第一步

第二步:

436ca6054b26dc7e039a0fef4b32020d.png

第二步

第三步:

7ca769618d923d61f33371b7cfd8e2a8.png

第三步

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

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

注意点四:74HC138芯片

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

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

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

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

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

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

a312adf31602077efcd489e7b59b4b62.png

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

注意点五:74HC595芯片

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

71b0414bab700e0727ea2607648af66f.png

74HC595原理图

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

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

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

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

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

9ada3a6dc4db37811ac7540ca781a4d2.png

16X16点阵原理图

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

扫描方式:行扫描

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

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

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

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

 【本文来自头条号:嵌入式开发心得】

ee82e1009bb46a5dac417f14397057b1.gif

●视频讲解运放原理,动图太好理解了!

●104条!PCB线路设计制作术语大全,新手老手都用得上!

●3年后你还甘心当新媒体小编吗?

●你单位中秋节发啥了?

●BUCK电路原理及PCB布局与布线注意事项

●单片机为什么要使用C语言?

●单片机编程魔法之三权分立

●详解RS-485上下拉电阻的选择

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

8x8点阵字模生成器_玩转单片机 16X16点阵 的相关文章

  • UITableView 总结

    UITableView 1 重用代理 64 interface ViewController UIViewController lt UITableViewDelegate UITableViewDataSource gt 2 定义 tab
  • 【转】ASP.Net2.0 AJAX Extensions 1.0的安装

    文章出处 xff1a DIY部落 http www diybl com course 4 webprogram asp net asp netshl 2008828 138230 html 以前一直没有去应用ajax xff0c 这2天用了
  • pip国内源

    pip 国内源 xff1a 清华 xff1a https pypi tuna tsinghua edu cn simple 阿里云 xff1a http mirrors aliyun com pypi simple 中国科技大学 https
  • 视频教程-C语言入门篇-C/C++

    C语言入门篇 23年C 43 43 语言编程经验 xff0c 经历过多个行业的开发项目包括网络安全 xff0c 网络游戏 xff0c 通信行业等等 xff0c 多年的摸爬滚打使自身具备了深厚的开发实力和实战经验 王健伟 98 00 立即订阅
  • ubuntu - 如何以root身份使用图形界面管理文件?

    nautilus 是gnome的文件管理器 xff0c 但是如果不是root账号下 xff0c 权限受限 xff0c 我们可以通过以下方式以root权限使用 xff01 一 xff0c 快捷键 ctrl 43 alt 43 t 调出shel
  • debian添加删除用户

    debian添加删除用户 增加普通用户 命令 xff1a adduser abc passwd abc exit 用abc登录 etc passwd中保存了用户信息 LINUX创建用户的命令 useradd g test d home te
  • MongoDB——副本集的同步、选举和回滚

    1 同步 复制用于在多台服务器之间备份数据 MongoDB的复制功能是使用操作日志oplog实现的 xff0c 操作日志包含了主节点的每一次写操作 oplog是主节点的locl数据库中的一个固定集合 备份节点通过查询这个集合就可以知道需要进
  • ftp (文件传输协议)

    ftp xff08 文件传输协议 xff09 锁定 本词条由 科普中国 百科科学词条编写与应用工作项目 审核 FTP 是File Transfer Protocol xff08 文件传输协议 xff09 的英文简称 xff0c 而中文简称为
  • SQL Server 中的 JSON 数据

    下面是 JSON 文本的示例 34 name 34 34 John 34 34 skills 34 34 SQL 34 34 C 34 34 Azure 34 34 name 34 34 Jane 34 34 surname 34 34 D
  • 去除地址栏带#的问题

    vue cil搭建的项目 第一步 xff1a 找到目录下router js文件 第二步 xff1a 在new Router xff08 routes xff1a xff09 中添加mode属性 xff0c 默认mode是hash expor
  • 如何给自己的Python项目制作安装包

    Packaging Python Projects 本教程将指导您如何打包一个简单的Python项目 它将向您展示如何添加必要的文件和结构来创建包 xff0c 如何构建包以及如何将其上载到Python包索引 A simple project
  • linux安装解压工具gzip,笔记6 压缩工具(gzip,bzip2,xz,zip,tar)。

    压缩打包 常见的压缩文件 windows rar zip 7z Linux zip gz bz2 xz tar gz tar bz2 tar xz gzip压缩工具 不能压缩目录 gzip压缩后边直接跟文件名就可以 xff0c gunzip
  • 洛谷 P3367 【模板】并查集

    P3367 模板 并查集 题目描述 如题 xff0c 现在有一个并查集 xff0c 你需要完成合并和查询操作 输入输出格式 输入格式 xff1a 第一行包含两个整数N M xff0c 表示共有N个元素和M个操作 接下来M行 xff0c 每行
  • js计算器(正则)

    lt doctype html gt lt html gt lt head gt lt meta charset 61 34 utf 8 34 gt lt title gt 我的计算器 lt title gt lt style gt mar
  • MySQL 分组后取每组前N条数据

    与oracle的 rownumber over partition by xxx order by xxx 语句类似 xff0c 即 xff1a 对表分组后排序 创建测试emp表 DROP TABLE IF EXISTS emp CREAT
  • archlinux 安装搜狗输入法

    安装可能需要 archlinuxcn 的源 xff0c 我这里已经配置好了 一 安装 fcitx fcitx configtool fcitx im pacman S fcitx fcitx configtool fcitx im 二 在
  • MongoDB——JavaAPI详解

    环境配置 引入MongoDB驱动 xff1a span class token tag span class token tag span class token punctuation lt span dependency span sp
  • 练习题||并发编程

    线程 进程 队列 IO多路模型 操作系统工作原理介绍 线程 进程演化史 特点 区别 互斥锁 信号 事件 join GIL 进程间通信 管道 队列 生产者消息者模型 异步模型 IO多路复用模型 select poll epoll 高性能IO模
  • luogu P2078 朋友

    题目背景 小明在A公司工作 xff0c 小红在B公司工作 题目描述 这两个公司的员工有一个特点 xff1a 一个公司的员工都是同性 A公司有N名员工 xff0c 其中有P对朋友关系 B公司有M名员工 xff0c 其中有Q对朋友关系 朋友的朋
  • Debian 9 Stretch国内常用镜像源

    使用说明 一般情况下 xff0c 修改 etc apt sources list文件 xff0c 将Debian的默认源地址改成新的地址即可 xff0c 比如将http deb debian org改成https mirrors xxx c

随机推荐