产品概述

单片机led点阵程序 玩转单片机!基于ESP8266模块的WIFI点阵时钟制作

小编 2024-11-24 产品概述 23 0

玩转单片机!基于ESP8266模块的WIFI点阵时钟制作

用ESP8266模块制作的网络授时点阵时钟

美图镇楼

楼主是一名业余的单片机爱好者,做过许多各种各样的时钟,能看过眼去的都发在了本版,还蒙版主厚爱给过精华。可是至今也没有做出一个十分满意的“作品”来。因为做的每个时钟都有这样那样的缺点, DS1302并不太准确;DS3231要好一点但还是有误差(其实也够用了);GPS授时倒是准了,但是要拖一根GPS天线到室外,不够整洁。一直想DIY一个准确、简洁的时钟治愈我的“强迫症”,苦于一直没有找到好的方案。

在一个月黑风高的晚上我偶然地发现了物联网模块ESP8266,能连接WIFI,竟然还集成了32位的单片机,关键还是白菜价,简直就是神器啊!就想着用它来做一个从网络获取时间的时钟,这样只要有网络,时间就准确无误,再也不用纠结了。

1: 认识ESP8266

ESP8266是上海乐鑫(ESPRESSIF)生产的WI-FI低功耗芯片,是业内集成度最高的 Wi-Fi 芯片,封装尺寸仅为 5mm x 5mm。 ESP8266EX 高度集成了天线开关、射频 balun、功率放大器、低噪放大器、过滤器和电源管理模块,仅需很少的外围电路,可将所占 PCB 空间降到最低。ESP8266EX 内置 Tensilica L106 32 位微型控制器 (MCU),具有超低功耗和 16 位RSIC,时钟速度最高可达 160 MHz。支持实时操作系统 (RTOS),目前 Wi-Fi 协议栈只用了 20% 的 MIPS,其他均可用于用户编程和开发。ESP8266EX 专为移动设备、可穿戴电子产品和物联网应用而设计,通过多项专有技术实现了最低功耗。ESP8266EX 有三种运行模式:激活模式、睡眠模式和深度睡眠模式,能够延长电池寿命。(PS:这段是抄的)

当然了,只有芯片是没法玩的,网上有和外围电路一起封装好的模块。还有基于这些模块的开发板,板载USB转串口电路,只要用MicroUSB线(安卓手机数据线)连接电脑就可以调试了。方便好用价格也不贵。

Esp8266模块

Esp8266开发板

为便于理解,我们可以把ESP8266模块看作一个可以连接WIFI的单片机。但是要玩转这片小小的板子,却没有想像中那么简单。模块的编程和51单片机有很大的区别,需要从头开始学起,没有找到系统的教程,只好从网络上多如牛毛的信息中提取所需要的知识点,用蚂蚁啃骨头的精神,一点点攻克难关,终于实现了想要的功能。在这里分享一下个人的一些不成熟经验,有兴趣的同好可以参考一下。

2:流行的几种开发方式

AT指令:模块通过串口与上位机连接,上位机发出指令,模块收到指令后做出响应。可以用PC端的串口助手调试。当然也可以用另一片单片机做上位机,不过放着模块集成的32位MCU不用,再用51之类的8位单片机驱动的话就有点小马拉大车了。

NodeMCU:运行于ESP8266模块上的一种固件,该固件提供一些封装好的模块(API),直接调用就可以了。使用LUA语言编程。

Arduino:模块可以在Arduino环境下调试,有基础的同学可以使用此方式。本菜鸟没玩过Arduino,只是按教程简单试了一下,发现编译下载好慢。

几种方法都试了试,发现最适合自己的是NodeMCU。LUA语言与C有共通之处,很快就能适应了。还有现成的API,一些复杂的功能用几行代码就能实现。

3:刷NodeMCU固件

买来模块后需要刷入NodeMCU固件,NodeMCU的源代码发布在Github网站,但是要编译成可刷入模块的bin固件,需要在陌生的Linux环境下,没有Linux基础貌似玩不转。

好在像作者这样的菜鸟可以在线订制固件,打开http://nodemcu-build.com/,留下自己的Email,根据自己的需要选择相应的模块和版本。等会就收到订制好的固件了。

刷入固件用的工具从这里下载https://github.com/nodemcu,按住Flash键不放,把模块接入USB,选好COM口和要刷入的固件,速度不要选的太高,可能会刷入失败,用哪个波特率自己多试几次就好。

固件刷好后,就可以开心的玩了。开发软件个人建议使用Esplorer,此软件需要安装JAVA。试一下第一句程序:print(“Hello NodeMCU!”),模块正常的话会显示Hello NodeMCU!

试试node.restart(),重新启动一下模块,会显示当前固件的版本、生成时间、包含模块等信息。

最新的NODEMCU固件支持可变波特率,不再局限于9600bps。比如可以在Esplorer里把波特率改为57600。如下图:

至此开发环境搭建完毕,可以试着先把模块连接到家里的WIFI,网上有例程,把SSID和密码改成自己的,运行一下就能连接了。

4:从Internet获取时间

关于从网络获取标准时间,先试了试获取百度网站返回的HTTP头,里面包含当前的日期时间等数据,提取一下就好,但是有网友说这个时间也不是十分的准确。

后来发现NodeMCU包含SNTP模块,是专门干校准时间这活的。并且操作也非常的简单,就决定了采用这种方式。

SNTP简介:

SNTP,即简单网络时间协议(Simple Network Time Protocol),主要被用来同步因特网上计算机的时间。SNTP协议采用客户端/服务器的工作方式。SNTP服务器通过接收GPS信号或自带的原子钟作为系统的时间基准。SNTP客户端通过定期访问SNTP服务器获得准确的时间信息,用于调整客户端自身所在系统的时间,达到同步时间的目的。

上网找到国内常用的NTP服务器,用PC端的Ping命令简单的测试了一下,结果如下。

NodeMCU固件sntp模块用法很简单,本制作只使用其中的sntp.sync()函数。

语法:sntp.sync({ server1, server2, .. }, [callback], [errcallback], [autorepeat])。

各参数解释:

1. Server1,server2,..:指定要使用的一个或多个ntp服务器

2. Callback:同步成功回调,不需要在这里显式的调用rtctime.set(),该模块在内部自动执行此操作,以获得最佳的准确性。

3.Errcallback:失败回调,返回失败的原因。

1:DNS查找失败

2:内存分配失败

3:UDP发送失败

4:超时,不接收NTP响应

4. autorepeat:如果是非零值,那么每1000秒同步将发生一次,每次同步操作后都会调用回调。

找来例程试一下

sntp.sync("202.120.2.101",

function(sec, usec, server, info)

print('sync', sec, usec, server)

end,

function()

print('failed!')

end)

运行结果:sync 1497432519 920178 202.120.2.101

结果显示同步成功,并返回了1970/01/01到现在的UNIX时间戳和同步服务器。SNTP每次成功同步后会自动更新ESP8266模块的实时时钟,也就是自动调用rtctime.set()函数。所以要使用sntp授时需要rtctime模块的支持,定制固件时不要落下。需要说明的是,成功同步后会自动更新MCU内部的RTC。

当然那一大串UNIX时间戳我们人类是不太能看懂的,还要转为我们习惯使用的日期和时间,这就要用到rtctime模块中的rtctime.epoch2cal()函数,语法为rtctime.epoch2cal(timestamp)。函数成功运行后返回一个数组,数组包括:

year 1970年 ~ 2038年

mon 1 ~ 12月

day 1 ~ 31 日

hour 小时

min 分钟

sec 秒

yday 当前是一年中的第1 ~ 366天

wday 星期 (星期天是1)

例程:

tm = rtctime.epoch2cal(rtctime.get()) --获取当前日期时间并转换

print(string.format("%04d/%02d/%02d %02d:%02d:%02d",

tm["year"], tm["mon"], tm["day"],

tm["hour"], tm["min"], tm["sec"]))

运行结果:2017/07/08 09:48:04

5:显示标准时间

标准时间有了,下一步的工作就是怎样显示出来的问题,总不能开着电脑用串口助手看时间吧。家里用的话1602或12864液晶字太小,远了就看不清楚;数码管做的太多,都审美疲劳了;最后决定用点阵,但是ESP8266模块的GPIO太少,不够用来直驱点阵,为解决这个问题,特地从淘宝上淘了基于MAX7219的点阵模块,4个MAX7219驱动4片8*8点阵。使用SPI串口通讯,还可以多片级联,只要用3个GPIO就能驱动若干片8*8点阵。

MAX7219简介(来自百度百科)

MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。 只有一个外部寄存器用来设置各个LED的段电流。 MAX7221与SPI™、 QSPI™以及 MICROWIRE™相兼容,同时它有限制回转电流的段驱动来减少EMI(电磁干扰)。 一个方便的四线串行接口可以联接所有通用的微处理器。 每个数据可以寻址在更新时不需要改写所有的显示。MAX7219允许用户对每一个数据选择编码或者不编码。 整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。

第一次玩MAX7219,由于LUA语言用的不顺手,调试起来有点麻烦。先用熟悉的51来点亮点阵,调试通过后再一点一点地移植到ESP8266。买的点阵是32*8,即使用不美观的4*8字体,时分秒也无法全部显示,更不用说标准的5*8的字体了。最后决定只用3片点阵,使用5*8字体,只显示小时和分钟,但也不够用,折衷一下:0-19时用24小时制,20-23时用12小时制。

成功点亮后的点阵,私人订制的字体,还是很漂亮的。

6:开始制作:

硬件很简单,就是一个ESP8266模块, 5V转3.3V的电路和几个阻容。用洞洞板很快就搞定了。

用茶色亚克力做面板,可以增强点阵的可读性。插上电源,模块尝试连接WIFI,蓝色LED亮起,成功连接后该LED熄灭,稍等就会显示当前准确的时间了。如果WIFI断线,模块会尝试自动重连,LED会指示当前的WIFI连接状态。

在每次上电后自动同步时间,然后每隔一个小时与NTP服务器同步一下。这样只要有网络,本时钟显示的时间就是准确的。

功耗也不大,白天正常亮度,不到100ma。21:30后降低亮度,避免影响睡觉。

再来几张美图

7:后记

对于一个仅仅靠兴趣驱动的爱好者来说,做这么一个小玩意遇到的困难太多了,身边没有谁可以请教,只能在网上一点一点的找答案,好在还算是成功的实现了自己想要的功能。现在已经正常的运行了一个多月,时间与GPS几乎一秒不差。

不足的地方就是本时钟只能在一个WIFI环境下使用。其实NodeMCU也提供了通过浏览器设定模块的SSID和密码的功能,但试了几次发现不太稳定,再说换了WIFI只要简单的改改程序就好,也不算麻烦。决定不再折腾,能做到这样就很满意了。

-----官方NodeMCU文档,请移步http://nodemcu.readthedocs.io/en/master/en/

还有调试中的一张图,用液晶屏显示,一起发上来

谢谢观看!

浏览更多精彩内容请登录数码之家网站

技术交流请联系原作者

作者:qxgm

本文来源:数码之家

玩转16×16LED点阵屏

在单片机发烧友圈子中,有关用单片机驱动LED、数码管、LCD等的入门文章随处可见,有关驱动LED点阵屏的文章则不多,至于真正能够显示一个国标汉字的16×16点阵屏的则更少。本文向大家介绍一款用ATmega48单片机控制16×16点阵屏显示汉字,并可做出多种动画特效的实验小系统,让你尽显编程技巧,尽情玩转16×16点阵屏这一汉字显示最小单位。

原理说明

1.计算机显示汉字的基本原理

计算机显示屏上的汉字实际上是由一组有序排列的像素构成的。如果有笔画的像素不亮,而其周围的像素都是亮的,就能看到一个黑色笔画的汉字。能够清楚地显示一个汉字的最小像素数是16×16=256,这是DOS时代就定下的规矩。现在的Windows有了矢量字体,大大丰富了汉字的显示,能在屏幕上不失真地显示汉字书法的美。

现在回到16×16LED点阵屏,我们的任务是在这块方寸之地显示一个汉字,而且要能上下、左右地滚动,首先要解决的问题就是如何存放这256个汉字笔画像素的信息。

图11.1

图11.2 系统原理图

当初DOS绝不是随便定下16×16,即16行与16列的标准的。在计算机世界里,8位(bit)组成一个字节(byte),而双字节则构成一个字。于是办法有了,用两个字节共16位来代表一行的信息,16行共32个字节,用某位是0还是1来控制点亮还是熄灭对应位置的像素,就能在16×16LED屏上显示汉字,存放汉字笔画信息的问题解决了。

下一个要解决的问题是如何得到一个汉字的点阵信息。图11.1所示是中国象棋中的帅字,我们将一个汉字的显示区域划分成4个8×8的子区,即A区、B区、C区、D区。显而易见,可以用一个字节来代表一个子区中一行的信息,32个字节就能表示4个子区。获取点阵信息的方法也就随之产生了,我们只要按照某种顺序,依次将这些信息存入一个容量为32的数组就可以了。存取的顺序可以有多种,比如A、B、C、D或A、C、B、D等,存取顺序的不同,没有大的区别,只是影响将来的编程思路。以图11.1为例,我们按横向每行(区的顺序是A、B、C、D)的顺序取得的数据如下(C 语言的表示方式):

0x0F,0xF0,0x30,0x0C,0x44,0x22,0x44,0x22,

A B A B A B A B

0x95,0xFD,0x95,0x25,0x95,0x25,0x95,0x25,

A B A B A B A B

0x95,0x25,0x95,0x25,0x85,0x25,0x89,0x2D,

C D C D C D C D

0x50,0x22,0x40,0x22,0x30,0x0C,0x0F,0xF0

C D C D C D C D

图11.3 4个8×8LED模块与单片机端口的寻址关系

2.系统原理

从图11.2的原理图中可以看出,单片机ATmega48的3个端口几乎全部用上。端口D和端口B分别控制纵向左(A区和C区)、右(B区和D区)两组8×8点阵模块的列寻址。端口C则通过一个74HC154译码器将4位地址值转换成15个行控制信号。在硬件设计上,这15个控制信号也被分成两组,分别控制横向的上(A区和B区)、下(C区和D区)两组8×8点阵模块的行寻址。

4个8×8LED模块与单片机端口的寻址关系如图11.3所示。搞清这些关系将是软件设计的基础。

硬件介绍

1.单片机主控板

图11.4所示的是AVR单片机最小系统,因为引脚定义完全一致,所以可换插ATmega48/88/168/328系列单片机和ATmega8单片机。这块板子的电路图见图11.5。

图11.4 AVR单片机最小系统

图11.5 AVR单片机最小系统电路图

该板子的一个设计特点是“资源全开放”,因为ATmega48系列单片机具有引脚功能复用的特点,即所有的B端口、D端口和C端口的6个引脚通过插针全部对外开放,使用者负责定义每个引脚的工作模式和状态。例如,在你的程序中使用了串口功能,D端口的PD0 和PD1两个引脚就不能用作I/O。同理,如果系统使用了外部晶体振荡器,则PB7和PB6也不能用作他用。从图4可以看出,端口B和D都将8个引脚通过排针引了出来。而端口C的设计有些独特,不但将引脚引出,还增加了一排VCC插针和一排GND插针,这主要是为了方便接插伺服电机和众多传感器而设计的。大家知道,伺服电机3根引线的排列顺序是信号、VCC、GND,很多传感器也是如此排列3根引脚,而且端口C的引脚从0至5又具有ADC的第二功能。如此一来,需要接插伺服电机和传感器时就方便多了。板子上还提供专门的位置将串口引出。而外部晶体振荡器则通过开关控制其是否接入系统。当然,改变系统振荡源时不要忘记相关标志位的设置。ISP下载部分则是标准的10针插座,可接插多种下载器。

2. 16×16点阵屏模块

这块板子上的主要元件就是4个8×8LED模块和一只74HC154地址译码器,如图11.6所示。本文不准备详述点阵模块这种发光元件的基本原理,爱好者们可以找到很多相关文章,并参照本文前面的说明自行设计搭建。需要强调的是,要搞清模块的引脚排列,不同厂家的产品并不完全相同。另外要搞清模块是共阴的还是共阳的,这主要决定着地址译码器的选择。

图11.6 16×16点阵屏模块

本文中用到的这块板子使用的是共阳模块,就是当某列的引脚为高电位,而某行的引脚为低电位时,处于该行与该列交叉点的LED被点亮。74HC154译码器的输出为低电平有效,因此,当单片机端口B和D的某个引脚输出高电位即1时,此时74HC154译码器的某个引脚有效(输出低电平),则处于交叉点的LED被点亮。

3.系统搭建

图11.7 系统搭建方法

系统搭建非常简单,如图11.7所示。使用两根8线排缆将单片机主控板的D端口和B端口分别与16×16点阵屏的对应端口插接,用一组4线杜邦头的跳线将单片机主控板C端口的0~3 与16×16点阵屏的4位地址线接插,另用一根电源引线通过单片机主控板C端口任意一组VCC、GND插针引出接入16×16点阵屏,即可完成系统搭建。

程序

所谓程序就是数据+算法。首先设计一个有效的数据结构,再根据硬件电路的寻址方式,有序地将数据送达正确的点位(算法),我们要求的图案就显示出来了。

笔者选取了几个例子与爱好者朋友分享,作为抛砖引玉,相信朋友们会设计出更丰富多彩的程序。

一个汉字垂直向上移动例程序

#include

#include

#include

#pragma data:eeprom

//中国象棋中的帅字点阵,存储在EEPROM中

char table[]={

0x0F,0xF0,0x30,0x0C,0x44,0x22,0x44,0x22, 0x95,0xFD,0x95,0x25,0x95,0x25,0x95,0x25, 0x95,0x25,0x95,0x25,0x85,0x25,0x89,0x2D, 0x50,0x22,0x40,0x22,0x30,0x0C,0x0F,0xF0};

#pragma data:data

//一个粗略的延时子程

void delay_1ms(void)

{

unsigned int i;

for (i=1;i < 1000;i++) ;

}

//端口初始化函数

void port_init(void)

{

PORTB=0x00;

DDRB=0xFF;

PORTC=0x00;

DDRC=0x0F;

PORTD=0x00;

DDRD=0xFF;

}

void main(void)

{

char i,K,L;

char B_port[32];

port_init();//数据准备

for (i=0;i <32;i++)

{//从EEPROM 读出数据,初始化数组B_port。

EEPROM_READ(i, B_port[i]);

}

K=0;//初始化计数变量K

while(1)//无限循环

{

for(L=0;L<10;L++)//滚屏速度控制

{

for(i=0;i<16;i++)//点阵屏刷新

{

PORTD=B_port[i*2];//送端口D

PORTB=B_port[i*2+1];//送端口B

PORTC=i;//行寻址

delay_1ms();

}

}

//将数组中的数据都顺序向前移动一排

for (i=0;i < 29;i+=2)

{

B_port[i]=B_port[i+2];

B_port[i+1]=B_port[i+3];

}

//从EEPROM中取出两个字节,填充到数组最后两个单元中

EEPROM_READ(K, B_port[30]);

K++;

EEPROM_READ(K, B_port[31]);

K++;

if (K >=32)//行更新计数

K=0;

}

}

1.数据准备

从本文前述关于16×16点阵汉字信息的提取,结合实例中的硬件寻址方式,大家不难想象,只要将这32个字节顺序存入一个数组,然后每两个字节为一组送往D端口和B端口形成列地址,再通过C端口给出行地址,对应行的LED将被选中,位于D、B端口字节中高电位的LED被点亮,其他的不亮,该行的点阵就形成了。如此动作16次,将32个字节依次送出,一帧(16×16点阵)的图案就显示出来了。我们只要以小于1ms的时间间隔循环做这组动作,一个汉字(或图案)就能稳定地显示在点阵屏上。

2.文字上下滚动

让汉字在16×16点阵屏上、下滚动(垂直移动)是最为简单的动作。

向右水平移动汉字例程序

#include

#include

//中国象棋中的帅字点阵,以数组形式存储在RAM中

char table[]={

0x0F,0xF0,0x30,0x0C,0x44,0x22,0x44,0x 22,

0x95,0xFD,0x95,0x25,0x95,0x25,0x95,0x 25,

0x95,0x25,0x95,0x25,0x85,0x25,0x89,0x 2D,

0x50,0x22,0x40,0x22,0x30,0x0C,0x0F,0x F0};

//工作数组

char A_array[16][4];

//一个粗略的延时子程

void delay_1ms(void)

{

unsigned int i;

for (i=1;i < 1000;i++) ;

}

//端口初始化函数

void port_init(void)

{

PORTB=0x00;

DDRB=0xFF;

PORTC=0x00;

DDRC=0x0F;

PORTD=0x00;

DDRD=0xFF;

}

//数据准备函数

void A_arr_prepare(void)

{

char i,j;

for (i=0;i < 16;i++)

{

j=i*2;

A_array[i][3]=table[j];

A_array[i][2]=table[j+1];

A_array[i][1]=0;

A_array[i][0]=0;

}

}

void main(void)

{

char i,L;

char m0,m1,m2,m3;

//用于存储移出位的变量

port_init();

//数据准备

A_arr_prepare();

while(1)

{

for(L=0;L < 10;L++)//滚屏速度控制

{

for(i=0;i<16;i++)//点阵屏刷新

{

PORTD=A_array[i][1];

PORTB=A_array[i][0];

PORTC=i;

delay_1ms();

}

}

//整屏数据右移一列

for (i=0;i < 16;i++)

{

if (A_array[i][0] & 0x01==1)

//保留移出位

m0=0x80;//如果是1,保留在高位。

else

m0=0;

if (A_array[i][1] & 0x01==1)

m1=0x80;

else

m1=0;

if (A_array[i][2] & 0x01==1)

m2=0x80;

else

m2=0;

if (A_array[i][3] & 0x01==1)

m3=0x80;

else

m3=0;

A_array[i][3]=A_array[i][3]>>1;//字节右移一位

A_array[i][3]=A_array[i][3] | m0;//将前一字节的高位移入

A_array[i][2]=A_array[i][2]>>1;

A_array[i][2]=A_array[i][2] | m3;

A_array[i][1]=A_array[i][1]>>1;

A_array[i][1]=A_array[i][1] | m2;

A_array[i][0]=A_array[i][0]>>1;

A_array[i][0]=A_array[i][0] | m1;

}

}

}

向上滚动时的流程图如图11.8所示,其实现程序在ICC 7平台调试通过。这个小例程使用EEPROM存储汉字点阵信息,主要是作为练习,爱好者也可以使用RAM中的数组省去EEPROM的读动作。

3. 文字左右移动

左右移动(水平横向移动)稍微复杂一些,因为要进行数据位的循环移动。在下面的例子中,我们使用一个二维数组A_array[16][4],目的是在汉字水平移动时有一个字的空格,当然你也可以试着只留半个空格或不留空格。此例程没有使用EEPROM,而是在RAM中建立一个存放点阵数据的数组table[ ]。在数据准备阶段,将数组table[ ]中的数据导入数组A_array[16][4]的后两列,即A_array[16][3]和A_array[16][2]。显示完一帧后,再对这16组4个字节向右移位,实现整帧的右移。数组A_array[16][4]的移动动作顺序如图11.9所示,该例程的流程图如图11.10所示。

图11.8 文字向上滚动的流程图

图11.9 数组A_array[16][4]的移动动作顺序

图11.10 文字向右移动的流程图

拓展练习

本文仅对16×16点阵屏做一浅显介绍,相信单片机爱好者可以借助这个小平台玩出许多花样,例如对角移动、中心开花、中心会聚、对称分开或合拢,以及多字连续移动等。文中例程序是用C语言写的,也可以使用BASIC语言,里面的一些函数可以改成汇编语言的,将会显著提高效率。现在,很多爱好者玩起了Arduino,同样可以驱动这个16×16点阵屏,只是由于Arduino端口开放得不全,所以要加锁存器,并分步传送数据,程序会稍微复杂些,但基本思路是相似的。

相关问答

单片机 P1口与集成的好的 led点阵 模块接法?

直插LED压降在1.8V~2.2V之间,贴片LED压降在2V~3.3V之间,按3V压降计算,LED的电流I=(Vcc-Uled-Uce)÷R=(5V-3V-0.3V)÷200Ω=8.5mA;理...

自己用电路板焊接一个 单片机点阵 . LED 留水灯什么的,焊接技术...

LED的电流,都说经典电流是10mA,实际上是不用那么大的单片机输出就是5V,你只要是接一个在5K以下,470欧以上的电阻就可以,可以根据你自己要求的亮度相应的加大或...

用电机带动一镜子高速旋转,还有一 点阵 ,用 单片机 控制每一小灯...

[回答]这个简单的,你先自己想想先了,想不出来再来找找我也行

关于 LED 灯矩阵( LED点阵 显示屏同样原理)的串并连接問題-ZOL问答

接13盏时,取led的电流一个典型值20mA,那么总电I=20*4*13=1040mA,而LED的亮度在电压达到阈值后与电流有关,所以灯的亮度减弱了,估计就是电流变小而且小于正常水平...

什么是 点阵 图形?

点阵图形图形点阵模块是一种集成了点阵显示系统和驱动系统,能够进行字符和图形曲线显示的显示模块。图形点阵模块是单片机系统中最理想的显示器件,近年来被广...

为什么 单片机点阵 不能重复?

说明片区被覆盖,无法使用说明片区被覆盖,无法使用

LED 显示屏工作原理是什么? - 8OxDT3CrWk1 的回答 - 懂得

LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。由于它具有发光率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能...

LED点阵 显示器一般要怎样控制?针对 LED 单元,8x8那种。选通用7...

针对LED单元,8x8那种。选通用74HC138、数据STB和ABCD信号那种。举报手机HT...控制卡点阵一般都是用异步的异步控制卡一大堆的如果需要推荐可以联系我有...

51 单片机 max7219数码管使用方法?

...2.初始化:编写初始化函数,包括设置控制口输出、设置扫描限制、设置亮度等。3.发送数据:将需要显示的内容写入到Max7219中,可以使用SPI通讯方式向Max7219...

小白想学习stm32,都需要用什么相关软件呢?求指教?

1.编程环境:KeilMDKSTM32单片机需要编程,就必须用到编程环境,KEIL是应用最广泛的STM32单片机编程环境,该软件界面友好、易操作、用户体验很好,很受欢迎。...在...

猜你喜欢