0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

16X16点阵编写技巧的思路

GReq_mcu168 来源:玩转单片机 作者:玩转单片机 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点阵

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6034

    文章

    44547

    浏览量

    634369
  • 16X16点阵
    +关注

    关注

    0

    文章

    2

    浏览量

    5486

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

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    BT139/BTA16/BTB16双向可控硅手册

    BT139-BTA16-BTB16C   16A  (TO-263)双向可控硅手册
    发表于 12-16 17:37 0次下载

    大电流数码管驱动/LED显示驱动芯片VK16K33AA SSOP28,灰度可调16级/可支持16×8的点阵

    产品品牌:永嘉微VINKA 产品型号:VK16K33AA 封装形式:SSOP28 概述 VK16K33AA是一种带按键扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有数据 锁存器、键盘扫描
    的头像 发表于 11-26 16:30 129次阅读
    大电流数码管驱动/LED显示驱动芯片VK<b class='flag-5'>16</b>K33AA SSOP28,灰度可调<b class='flag-5'>16</b>级/可支持<b class='flag-5'>16</b>×8的<b class='flag-5'>点阵</b>

    DS160PT801X16EVM转接卡评估模块

    电子发烧友网站提供《DS160PT801X16EVM转接卡评估模块.pdf》资料免费下载
    发表于 11-21 15:57 0次下载
    DS160PT801<b class='flag-5'>X16</b>EVM转接卡评估模块

    VK1651 SOP16/DIP16点阵LED数码管驱动/数显驱动控制器/8级整体亮度可调

    、键盘扫描等电路。SEG脚接LED阴极,GRID脚接LED阳极,可支持 7SEGx4GRID的点阵LED显示。最大支持7x1按键。本芯片性能优良,适用于电磁炉、微波 炉及小家电产品的显示屏驱动。采用
    的头像 发表于 10-23 15:47 195次阅读
    VK1651 SOP<b class='flag-5'>16</b>/DIP<b class='flag-5'>16</b><b class='flag-5'>点阵</b>LED数码管驱动/数显驱动控制器/8级整体亮度可调

    iPhone 16系列预售标准版遇冷

    苹果公司于9月13日晚8正式开启了iPhone 16系列的预售盛宴,市场反应迅速分化。iPhone 16 Pro与iPhone 16 Pro Max两款高端机型一经推出便成为抢购热点
    的头像 发表于 09-19 17:01 367次阅读

    卡莱特X16E处理器电脑端快速场景和信号源切换软件网络通讯方式

     针对卡莱特X16E处理器编写的电脑端控制软件,具备16个场景的调用和6个窗口的视频信号源切换,配置软件中可以设定每个场景下的窗口数量
    发表于 08-16 10:30 1次下载

    VK2C21点阵式存储映射的LCD驱动器中文手册

    VK2C21是一个点阵式存储映射的LCD驱动器,可支持最大80(20SEGx4COM)或者最大12816SEGx8COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示
    发表于 08-05 11:50 0次下载

    MSP430F15x, MSP430F16x, MSP430F161x混合信号微控制器数据表

    电子发烧友网站提供《MSP430F15x, MSP430F16x, MSP430F161x混合信号微控制器数据表.pdf》资料免费下载
    发表于 08-01 12:50 0次下载
    MSP430F15<b class='flag-5'>x</b>, MSP430F<b class='flag-5'>16x</b>, MSP430F161<b class='flag-5'>x</b>混合信号微控制器数据表

    陀螺仪LSM6DSV16X与AI集成(7)----FIFO数据读取与配置

    LSM6DSV16X是一款高性能、低功耗的6轴IMU传感器,集成了3轴加速度计和3轴陀螺仪。本文将详细介绍如何配置和读取LSM6DSV16X传感器的FIFO数据,包括初始化、配置以及数据处理的完整流程, 以实现数据的批量处理和传输,减少系统功耗,提高应用的响应速度和数据处
    的头像 发表于 07-18 10:40 1472次阅读
    陀螺仪LSM6DSV<b class='flag-5'>16X</b>与AI集成(7)----FIFO数据读取与配置

    TCA8424低压8x16键盘扫描器数据表

    电子发烧友网站提供《TCA8424低压8x16键盘扫描器数据表.pdf》资料免费下载
    发表于 07-11 11:46 0次下载
    TCA8424低压8<b class='flag-5'>x16</b>键盘扫描器数据表

    基于51单片机16x16点阵显示电路图及程序元件清单

    本资源内容概要:       这是基于51单片机16x16点阵显示电路图及程序设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开)、元件清单
    发表于 06-21 14:34 4次下载

    ESP32驱动3264点阵屏有噪的原因?

    ESP32 驱动3264点阵屏显示时间,采用ARDUINO编写。 不打开WIFI,显示会一切正常,打开WIFI,显示屏会有噪闪动,无规律,就是发光的二极管会不时地更亮一下。 用ESP8266无此问题。
    发表于 06-13 06:56

    请问怎么用按键控制1602中的5*8点阵亮灭及加减?

    请问怎么用按键控制1602中的5*8点阵亮灭及加减
    发表于 05-07 08:04

    128 x 64点阵式OLED/PLED段/带控制器的通用驱动器SSD1306数据手册

    电子发烧友网站提供《128 x 64点阵式OLED/PLED段/带控制器的通用驱动器SSD1306数据手册.pdf》资料免费下载
    发表于 03-19 11:01 3次下载

    苹果iPhone 16系列或搭载差异化基带芯片

    据称,iPhone 16 Pro和iPhone 16 Pro Max将会搭载高通推出的最新的骁龙X75基带芯片,然而,iPhone 16与iPhone
    的头像 发表于 01-24 14:10 795次阅读