|

楼主 |
发表于 2022-4-29 18:10
|
显示全部楼层
程序八:快速显示字符,逐点刷屏 (1)Arduino参考开源代码
- /*
- 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
- 程序八:快速显示字符,逐点刷屏
- */
- //导入驱动库
- #include "LedControl.h"
- //定义点阵屏的引脚,接线DIN-D11,CLK-D13,CS-D10
- LedControl lc = LedControl(11, 13, 10, 1);
- //我们总是在显示更新之间等待一段时间
- unsigned long delaytime = 100;
- void setup() {
- //MAX72XX 启动时处于省电模式,我们得叫醒
- lc.shutdown(0, false);
- //将亮度设置为中等值
- lc.setIntensity(0, 8);
- //并清除显示
- lc.clearDisplay(0);
- }
- //快速显示字符
- void writeArduinoOnMatrix() {
- //这里是字符的数据
- byte a[5] = {B01111110, B10001000, B10001000, B10001000, B01111110};
- byte r[5] = {B00111110, B00010000, B00100000, B00100000, B00010000};
- byte d[5] = {B00011100, B00100010, B00100010, B00010010, B11111110};
- byte u[5] = {B00111100, B00000010, B00000010, B00000100, B00111110};
- byte i[5] = {B00000000, B00100010, B10111110, B00000010, B00000000};
- byte n[5] = {B00111110, B00010000, B00100000, B00100000, B00011110};
- byte o[5] = {B00011100, B00100010, B00100010, B00100010, B00011100};
- //现在以一个小的延迟一个一个地显示它们
- lc.setRow(0, 0, a[0]);
- lc.setRow(0, 1, a[1]);
- lc.setRow(0, 2, a[2]);
- lc.setRow(0, 3, a[3]);
- lc.setRow(0, 4, a[4]);
- delay(delaytime);
- lc.setRow(0, 0, r[0]);
- lc.setRow(0, 1, r[1]);
- lc.setRow(0, 2, r[2]);
- lc.setRow(0, 3, r[3]);
- lc.setRow(0, 4, r[4]);
- delay(delaytime);
- lc.setRow(0, 0, d[0]);
- lc.setRow(0, 1, d[1]);
- lc.setRow(0, 2, d[2]);
- lc.setRow(0, 3, d[3]);
- lc.setRow(0, 4, d[4]);
- delay(delaytime);
- lc.setRow(0, 0, u[0]);
- lc.setRow(0, 1, u[1]);
- lc.setRow(0, 2, u[2]);
- lc.setRow(0, 3, u[3]);
- lc.setRow(0, 4, u[4]);
- delay(delaytime);
- lc.setRow(0, 0, i[0]);
- lc.setRow(0, 1, i[1]);
- lc.setRow(0, 2, i[2]);
- lc.setRow(0, 3, i[3]);
- lc.setRow(0, 4, i[4]);
- delay(delaytime);
- lc.setRow(0, 0, n[0]);
- lc.setRow(0, 1, n[1]);
- lc.setRow(0, 2, n[2]);
- lc.setRow(0, 3, n[3]);
- lc.setRow(0, 4, n[4]);
- delay(delaytime);
- lc.setRow(0, 0, o[0]);
- lc.setRow(0, 1, o[1]);
- lc.setRow(0, 2, o[2]);
- lc.setRow(0, 3, o[3]);
- lc.setRow(0, 4, o[4]);
- delay(delaytime);
- lc.setRow(0, 0, 0);
- lc.setRow(0, 1, 0);
- lc.setRow(0, 2, 0);
- lc.setRow(0, 3, 0);
- lc.setRow(0, 4, 0);
- delay(delaytime);
- }
- /*
- 此功能连续点亮一些 LED。
- 该模式将在每一行上重复。
- 该模式将与行号一起闪烁。
- 行号 4 (index==3) 将闪烁 4 次,以此类推。
- */
- void rows() {
- for (int row = 0; row < 8; row++) {
- delay(delaytime);
- lc.setRow(0, row, B10100000);
- delay(delaytime);
- lc.setRow(0, row, (byte)0);
- for (int i = 0; i < row; i++) {
- delay(delaytime);
- lc.setRow(0, row, B10100000);
- delay(delaytime);
- lc.setRow(0, row, (byte)0);
- }
- }
- }
- /*
- 此功能点亮一列中的一些 LED。
- 该模式将在每一列上重复。
- 该模式将与列号一起闪烁。
- 第 4 列(索引==3)将闪烁 4 次,以此类推。
- */
- void columns() {
- for (int col = 0; col < 8; col++) {
- delay(delaytime);
- lc.setColumn(0, col, B10100000);
- delay(delaytime);
- lc.setColumn(0, col, (byte)0);
- for (int i = 0; i < col; i++) {
- delay(delaytime);
- lc.setColumn(0, col, B10100000);
- delay(delaytime);
- lc.setColumn(0, col, (byte)0);
- }
- }
- }
- /*
- 此功能将点亮矩阵上的每个 Led。
- LED 将与行号一起闪烁。
- 行号 4 (index==3) 将闪烁 4 次,以此类推。
- */
- void single() {
- for (int row = 0; row < 8; row++) {
- for (int col = 0; col < 8; col++) {
- delay(delaytime);
- lc.setLed(0, row, col, true);
- delay(delaytime);
- for (int i = 0; i < col; i++) {
- lc.setLed(0, row, col, false);
- delay(delaytime);
- lc.setLed(0, row, col, true);
- delay(delaytime);
- }
- }
- }
- }
- //循环写入
- void loop() {
- writeArduinoOnMatrix();
- rows();
- columns();
- single();
- }
复制代码
|
|