孙建振 王振 姬广超 董雨鑫 梁栋茂 邹劢豪
摘要:多功能迷你LED灯屏幕它的设计方案主要是以 ARDUINO 为主控单元,基于GPIO的输入输出功能,用LED点阵实现动态显示、秒表以及贪吃蛇小游戏。硬件电路包括控制单元ARDUINO UNO单片机 LED点阵屏幕以及74HC595位移缓存器。软件控制部分用C/C++语言编写,并进行了简单的PCB设计,在单片机的控制下显示各种各样的内容。用户可以通过简单的通讯对显示内容进行设计,方便人们的学习与使用。
关键词 :ARDUINO开发板;LED灯;游戏;PCB;C语言
中图分类号:TP3 文献标识码:A
文章编号:1009-3044(2020)23-0220-02
1 引言
5G将要到来,物联网的应用越来越广泛,许许多多的物联网产品走进了人们的生活。基于LED的电子产品就是非常典型的例子。从交通灯到电视显示屏等现代电子产品都与LED密切相关,所以学习、设计或了解LED产品都是非常有必要的事情。单片机是一种具有CPU的集成控制芯片,作为控制器被广泛使用。本文将LED与ARDUINO单片机联系在一起,基于ARDUINO单片机做了一系列有趣的LED开发。
2 迷你LED智能屏幕系统总体介绍
迷你LED智能点阵屏幕是基于ARDUINO开发板开发的。围绕ARDUINO最小应用系统开发了数值显示、时钟、LED贪吃蛇等功能。功能核心是由ARDUINO主控芯片发送数据到74HC595位移缓存器,从而控制LED灯实现各种显示功能。
2.1 电路设计
2.1.1 ARDUINO介绍
ARDUINO NANO是ARDUINO USB接口的微型版本,最大的不同是没有电源插座以及USB接口是Mini-B型插座。ARDUINO NANO是尺寸非常小的而且可以直接插在面包板上使用。其处理器核心是ATMEGA328(NANO3.0),同时具有14路数字输入/输出口(其中6路可作为PWM输出),8路模拟输入,一个16MHz晶体振荡器,一个MINI-B USB口,一个ICSPHEADER和一个复位按钮。ARDUINO 编程环境可以跨平台,而且该软件可以在Windows Macintosh Osx Linux等操作系统上运行。ARDUINO的产品性价比高,可以自行设计,也可以购买很多完善的产品。
2.1.2 屏幕部分
74HC595位移缓存器是一个8位串行输入、并行输出的位移缓存器,并行输出为三态输出。在SCK 的上升沿,串行数据由SDL输入到内部的8位位移缓存器,并由Q7'输出,而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低时输出使能,并行输出端的输出值等于并行输出缓存器所存储的值。器件图如图1所示。
引脚功能如下:
Q0~Q7:并行数据输出端; GND:接地引脚; Q7S:串行数据输出(多个芯片联用时使用);MR: 复位引脚,当引脚接低电平时芯片内部数据存储寄存器数据清零复位,如不使用一般接高电平;SHCP:移位寄存器的时钟输入,当接收到上升沿时移位寄存器内部数据整体后移;STCP:数据存储寄存器时钟输入,当检测到上升沿时使能数据存储寄存器,将芯片接收到的数据输出到Q0~Q7,Q7S引脚。可以将其理解为锁存信号,当数据发送给芯片完成后对该引脚发送上升沿;OE: 输出使能引脚,为高电平时芯片输出引脚为高组态,当为低电平时芯片输出引脚为高(低)电平。该引脚可用于同时控制并行输出引脚的电平,如控制LED闪烁等。当不使用该功能时通常接低电平;DS:串行数据输入端;VCC:电源引脚。
智能小屏幕的显示,将由其中的单片机向3个74HC595位移缓存器(横向2个,纵向1个)写入数据从而控制8*16个LED,进行亮灭操作进而实现多种功能。
2.1.3 硬件电路图设计
智能小屏幕的电路图是用Altium Designer软件绘制的,他的系统电路原理图如下。
图中数据输入输出口分配:将A0数据口与横向的其中一个74HC595位移缓存器的DS口连接,并将此移位缓存器的Q7S口与另一个横向74HC595位移缓存器DS口连接(第一个缓存器溢出的数据会被第二个器件吸收)。同样的将数据口A3与纵向移位缓存器连接。使用74HC595位移缓存器解决了接口不够用的问题。
硬件设计采用上下两层方便拆卸硬件构成设计如图3。
3 软件部分
软件的设计由ARDUINO LED 软件采用C++/C语言编写,系统的流程图如下。
数据信息经过ARDUINO 的操控线写入缓存器当中,通过不断地改变显示信息从而改变显示状态,实现各种各样的效果。
软件设计流程如下:
1) 首先編写一个写入显示函数,主要能够实现将一个状态的显示状况写到屏幕上;
2) 显示功能的实现是先取字模,然后将字模数据写入到显示函数记录数据状态的数组里。这样重置调用显示函数即可根据新的数据在显示屏上显示相应的字母;
3) 秒表功能运用了ARDUINO单片机的定时器中断的功能。每秒进行一个中断,触发中断时中断服务函数中对时间参数进行累加,将相应的时间参数写入到字模数组里,再用显示函数进行显示就能够实现秒表功能了;
4) LED贪吃蛇小游戏同样是将数据显示到写入到显示数组,调用显示函数显示, 通过外部的上下左右操作,改变LED显示的状态实现小蛇移动吃豆的功能,就基本实现了贪吃蛇小游戏。
4 结语
本文以ARDUINO 开发板为核心,以74HC595位移缓存器以及若干LED灯为辅助器件,设计了一款迷你的多功能LED点阵屏幕,有趣小巧。用ARDUINO单片机开发项目比使用51单片机要简单快捷,且很容易上手学习,但是要对单片机系统有一定的理解。根据LED屏控制电路,先测试程序将所有灯点亮,然后再使用各种逻辑的控制实现各种各样的功能,通过调试,基于ARDUINO单片机的LED屏系统达到了设计要求,并具有可操作性强、灵巧、便于学习、趣味性强等特点。
参考文献:
[1] [英]Simon Monk .ARDUINO编程指南 75个智能硬件程序设计技巧[M].北京:人民邮电出版社,2016.
[2] 《无线电》编辑部.超炫的35个ARDUINO制作项目[M].北京:人民邮电出版社,2014.
[3] 杰里米·布鲁姆 .ARDUINO魔法书:实现梦想的工具和技术[M].北京:电子工业出版社,2014.
[4] (美)Steven F. Barrett .ARDUINO高级开发权威指南(原书第2版)[M].北京: 机械工业出版社,2014.
[5] 陈永强,魏金成,吴昌东.模拟电子技术[M].北京:人民邮电出版社,2013.
[6] 李兴华.物理实验手册[M].北京:中国计量出版社,2012.
[7] [美]Michael Margolis .ARDUINO权威指南(第2版)[M].北京:人民邮电出版社,2015.
【通联编辑:代影】