零知开源快速入门21-点阵LED应用(8x8)-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4033|回复: 0

零知开源快速入门21-点阵LED应用(8x8)

[复制链接]
发表于 2018-6-29 11:52 | 显示全部楼层 |阅读模式
转载自:零知开源快速入门21-点阵LED应用(8x8)
http://www.lingzhilab.com/forum. ... d=211&fromuid=2
(出处: 零知实验室)

点阵在我们生活中非常的常见,因此我们在这里就简单介绍下LED点阵的应用。

一、工具原料
  • 电脑,windows系统
  • 零知开发板
  • micro-usb线
  • LED点阵1个
  • 220Ω 电阻8个
  • 面包板一个+若干跳线

二、硬件连接
这里的连线比较多,所以在图上表示不清楚,就不传图片了,我们这里使用的LED点阵式24脚的,双色(红色和黄色),从点阵的背面看引脚定义如下:
然后我们把V1-V8的列引脚连接220Ω电阻后与零知开发板的0-7引脚连接起来,再把H1-H8的红色行控制引脚与9-14、A0、A1这8个脚连接(注意这里开发板8脚没有使用),如果你还需要黄色的显示,可以再把黄色行控制的H1-H8连接到开发板的A2、A3、A4、A5、21、22、23、24这8个引脚连接即可,这里就先不用黄色了,因此没有连接黄色控制脚。
三、方法步骤
1、打开零知实验室软件开发工具,然后新建项目,输入以下代码:
  • /**
  • *    文件: 点阵LED-8x8.ino      by 零知实验室(www.lingzhilab.com)
  • *    -- 零知开源,让电子制作变得更简单! --
  • *    时间: 2018/06/28 21:07
  • *    说明: 8x8点阵led应用
  • **/
  • int V_PORT[8] = {0,1,2,3,4,5,6,7};//控制1-8列的引脚
  • int RED_PORT[8] = {9,10,11,12,13,14,15,16};//红色1-8
  • int YELLOW_PORT[8] = {17,18,19,20,21,22,23,24};//黄色LED脚
  • unsigned char heart_big[8] = {0x00,0x66,0xff,0xff,0xff,0x7e,0x3c,0x18};
  • unsigned char heart_small[8]={0x00,0x00,0x24,0x7e,0x7e,0x3c,0x18,0x00};
  • unsigned char Text[]={0x00,0x1c,0x22,0x22,0x22,0x22,0x22,0x1c};
  • void show_cls(void);
  • void Draw_point(unsigned char x,unsigned char y);
  • void show_num(unsigned char *str);
  • // the setup routine runs once when you press reset:
  • void setup() {
  •     // put your setup code here, to run once:
  •         int i = 0;
  •         for(i=0; i<=24; i++)
  •         {
  •                 pinMode(i, OUTPUT);
  •         }
  •         show_cls();
  • }
  • // the loop routine runs over and over again forever:
  • void loop() {
  •     // put your main code here, to run repeatedly:
  •         int i = 0;
  •         while(i++<50)
  •         {
  •                 show_num(heart_big);
  •         }
  •         i = 0;
  •         while(i++<20)
  •         {
  •                 show_num(heart_small);
  •         }
  • }
  • void show_cls(void)
  • {
  •         int i = 0;
  •         for(i=0; i<8; i++)
  •         {
  •                 digitalWrite(V_PORT, LOW);
  •                 digitalWrite(RED_PORT, HIGH);
  •         }
  • }
  • void Draw_point(unsigned char x,unsigned char y)//画点函数
  • {
  •         int i=0;
  •         int j = 0;
  •         for(i=0; i<x; i++)
  •         {
  •                 digitalWrite(RED_PORT, HIGH);
  •         }
  •         digitalWrite(RED_PORT[x], LOW);
  •         for(i=x+1; i<8; i++)
  •         {
  •                 digitalWrite(RED_PORT, HIGH);
  •         }
  •         for(j=0; j<y; j++)
  •         {
  •                 digitalWrite(V_PORT[j], LOW);
  •         }
  •         digitalWrite(V_PORT[y], HIGH);
  •         for(j=y+1; j<8; j++)
  •         {
  •                 digitalWrite(V_PORT[j], LOW);
  •         }
  •    //delay(1);
  •         delayMicroseconds(300);
  • }
  • void show_num(unsigned char *str)
  • {
  •         unsigned char i,j,data;
  •         for(i=0;i<8;i++)
  •         {
  •                 data=str;
  •                 for(j=0;j<8;j++)
  •                 {
  •                   if(data & 0x80)
  •                           Draw_point(j,i);
  •                   data<<=1;
  •                 }
  •         }
  • }

[color=rgb(51, 102, 153) !important]复制代码

2、按照之前的方式先【编译】,然后【上传】到开发板中。
四、成果展示
上面步骤成功完成后,我们就可以看到预期的结果了,如下(这里可以把代码中的延时调节的稍小一些效果会更好,这里为了录制因此延时稍大):




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 06:40 , Processed in 0.072231 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表