序言

  • 衍生
    • 设计思路
    • 硬件设计
      • 原理图
      • PCB
      • 3D图
      • 焊接后的实物
    • 软件设计
      • U盘
      • 实物显示
      • 资源连接

20年毕业后,工作之余还是抽出了点时间来做一个自己一直想做的一个项目,那就是一个点阵屏。

衍生

我当时设想的是先显示一些简单的字体什么的但后面又觉得太low了,于是又加了个外部存储芯片,费了好大劲做好字库并将字库写进存储芯片里面,字库包括中英文以及特殊字符全给整上。但是随即又遇到新的问题,总不能我想让它显示其他什么汉字的时候每次都要重新下载程序吧。
在存储芯片里存储完字库以后仍然剩余大部分的空间,于是我将剩余的空间虚拟成U盘,然后在U盘里面创建一个txt文档;文档里面保存着我所需要的显示的中英文内容;这样我写芯片应用的时候只需要通过fatfs读取出txt内容后,根据内容翻译出对应字库中的gbk地址,根据地址读取出相应的点阵字库后通过LED显示即可。
同样的道理,stm32的flash空间也虚拟成U盘,这样我想更新程序就可以不必再依赖于下载器了,只要有根数据线连接usb即可。而且,我还可以提前将一些应用备份到外部存储芯片中去,这样我想换个程序运行的时候将提前备份好的bin文件复制过去或者让其自动复制过去即可。
后来发现灯太亮了,又加了调光。

设计思路

我的设想还是16X16的点阵屏可以满足绝大部分的汉字。如果做大一点的话比如32X32的话也不是不可以,就是led灯太多了,难焊。而且PCB板的大小也超过10X10CM,嘉立创要收费。。。。容我思考了一秒钟后16X16的大小足以显示汉字,而且还可以用便宜点的芯片比如使stm32f103c8t6这样的。
(当时我用这块芯片的时候它价格还在疯涨,最后还是淘宝上搞的几块钱的,毕竟刚出来兜里比我脸还干净。)
在点阵屏的显示这块的思路主要就是利用整个GPIOB作为列数据,采用译码器选择性的让每一个列通电即可,只要显示的频率够快,人眼就分辨不清楚它在闪。

硬件设计

原理图

单纯想着用32个io当然不可能啦,实际上我只用了20个io引脚来控制led灯,其中16个用于数据显示,刚好对应u16的数据,另外4个通过译码器来完成16线的切换。

PCB

线好像也只能这样布了;

3D图


焊接后的实物

led灯有点难焊,重新画了板做固定才焊接的间隙一致的,其他的还好。现在灯都有点生锈了。

软件设计

首先是第一层应用软件,主要负责的事情就是将芯片变成U盘或者跳转到U盘的起始地址去运行bin文件。

再然后就是所编写的bin文件内容主要是通过fatfs读取外部flash里面存储的字符串,再读取完成以后将字符串进行循环显示即可。不过再读取txt文件的时候遇到一个坑,,fatfs文件系统只能读取ANSI编码的文件,如果txt文件是UTF-8编码的话在读取中文的时候会报错

U盘

我把芯片内部flash,以及外部剩余的15Mflash虚拟成U盘。

外部flash中主要是一个备份文件跟一个txt文件。

备份文件中还保存着我写着一些斌文件,不过主要是用来备份字库的;通过文件系统读取字库数据后再将其写到指定的地址上;

芯片内部flash虚拟出来的这个盘主要用于存储要运行的bin文件,有优点也有缺点
优点:不需要下载器,只要有数据线就行、对bin文件的取名无要求;
缺点:在更新bin文件前要确保U盘里面是空的,否则的文件话就放不到指定位置运行了;(bin文件同名的话可以直接覆盖掉

实物显示

可惜了,这个平台传不了视频也传不了动图。。。
索性上个图片吧;(远一点会比较好看

资源连接

原理图PCB以及软件链接
链接文件里面包括内容如下,
1、Formal_APP文件夹下包含生成bin文件的工程
2、usb_t文件下包含判断进入U盘或者跳转代码工程
3、U盘内容包括准备好的txt文件以及备份的字库和可运行的测试bin文件
4、原理图以及PCB ~用AD20画的

一个LED16X16点阵屏相关推荐

  1. java---解惑--

    Java谜题1--表达式谜题 谜题1:奇数性 下面的方法意图确定它那唯一的参数是否是一个奇数.这个方法能够正确运转吗? public static boolean isOdd(int i){  ret ...

  2. [日常] 面试知识点总结(持续更新)

    数据结构和算法:物理结构和逻辑结构1.逻辑结构(集合结构,线性结构,树形结构,图形结构)2.物理结构一般是讲内存,顺序存储结构,链式存储结构浅谈算法中,高斯算法从1加到100,循环的话是100次,高斯 ...

  3. 堆栈计算机的原理和实现

    堆栈计算机的原理和实现 原书< Stack Computers: the new wave > (原书封面) 原作者 Philip J. Koopman, Jr. 编译者 赵宇 张文翠 这 ...

  4. Python3 OpenCV4 计算机视觉学习手册:6~11

    原文:Learning OpenCV 4 Computer Vision with Python 3 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 计算机视觉 译文集] ...

  5. 【题库】计算机二级选择题

    一.公共基础知识 考10分 二.计算机基础 考4分 三.Office操作 考6分 一.公共基础知识 考10分 1.下列叙述中正确的是 A)所谓算法就是计算方法 B)程序可以作为算法的一种描述方法 C) ...

  6. 表决器c语言课程设计,项目二:玩转RGB点阵屏——表情表决器

    项目二:玩转RGB点阵屏--表情表决器项目二:玩转RGB点阵屏--表情表决器(建议2课时) [情境导入] 图2.1 医护人员"逆行"湖北 是她们不畏生死驰援湖北,为中国抗疫带来胜利 ...

  7. 用python实现点阵屏_MicroPython拼插编程实例:点亮心形8x8点阵

    一.什么是TPYBoard开发板 TPYBoard是以遵照MIT许可的MicroPython为基础的一款MicroPython开发板,它基于STM32F405单片机,通过USB接口进行数据传输.该开发 ...

  8. 51单片机8*8点阵屏、取模软件的使用

    取模软件网盘提取 链接:https://pan.baidu.com/s/1YYQo_tZNCXlo9uWVbtsNdg 提取码:jfbr 74HC595芯片原理图: 两片595芯片级联驱动点阵屏只需要 ...

  9. 【51单片机快速入门指南】2.4:74HC595、LED点阵屏及其SPI控制

    目录 硬知识 IO 口扩展方式-串转并 74HC595 芯片介绍 硬件设计 测试源码 HC74595.c HC74595.h main.h 实验现象 SPI控制 普中51-单核-A2 STC89C52 ...

最新文章

  1. 一步一步写算法(检查表)
  2. 函数传参字典_Python 函数参数解包
  3. linux shell脚本无法执行,报错syntax error near unexpected token `$'\r''解决方法
  4. Java如何实现二维码?【附源码】
  5. 入门 | 32 个常用 Python 实现
  6. html网页设如何置访问密码,利用JS给单页html加上简单访问密码,需要密码才能访问!...
  7. 实时备份工具之inotify+rsync
  8. Kotlin 5 控制流,返回和跳转
  9. 200个c语言程序(由简单到复杂),200个c语言程序(由简单到复杂)
  10. 【汇编语言与计算机系统结构笔记11】程序格式与伪操作:段定义、堆栈 #简洁笔记形式
  11. cudnn 7.5 linux x64,Ubuntu 18.04 N卡驱动安装+CUDA10.0+cuDNN7.5+Anaconda+Tensorflow-GPU
  12. X86服务器虚拟化技术CNware-WinServer
  13. 软件工程——五大模型
  14. Java电阻计算器(二)
  15. ccy影响因子版270ms
  16. UE4_UE5蓝图command节点的使用(开启关闭屏幕响应-log-发布全屏显示)
  17. 零基础学python难吗?python自学难吗?
  18. line-height的使用方式
  19. 数蛙科技百亿级物流标签轨迹时序数据压测
  20. App推广技术如何帮助App推广

热门文章

  1. iOS 屏幕实时共享功能实践(内附详细代码)
  2. 游戏背景音乐与音效存在于游戏中有什么特殊的意义?
  3. 调试工具Firebug的使用方法
  4. 工作总结与述职报告ppt模板
  5. Mac OS X运行程序出现bad interpreter: operation not permitted的解决方案
  6. 50用户中小企业办公桌面云方案
  7. Kotlin的型变解析(协变、逆变和不变)
  8. LKDHelper使用LKDBHelper以实体类对象进行数据库的操作,例如新建一个新闻实体类,以这个类来
  9. 猴子吃桃问题:小猴子摘了一大堆桃子,第一天吃了一半,还嫌不过瘾,又吃了一个,第二天又吃了剩下的一半多一个....以后每天如此, 到了第十天,小猴子一看只剩下一个桃子了,它想知道最初自己摘了多少个桃子。
  10. 天线辐射电磁波的原理