博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Arduino下实现LED Martix级联
阅读量:6578 次
发布时间:2019-06-24

本文共 3027 字,大约阅读时间需要 10 分钟。

hot3.png

前面介绍过在pcDuino上运行LED Matrix Kit,这个套件中有MAX7219芯片,它是串行输入/输出共阴极数码管显示驱动芯片,它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX7219的内部指令和数据寄存器,而且它还支持多片7219串联,即可以通过3根线控制更多的数码管显示

封装引脚图:

在Arduino下级联三片LED Matrix 点阵屏

CLK   –> arduino D8

CS    –> arduino D9
DIN   –> arduino D10

每片LED显示频率在驱动程序里可以设置,程序代码如下

#define uchar unsigned charint Max7219_CLK = 8;int Max7219_CS = 9;int Max7219_DIN = 10;uchar num[16][8] = {{0x1C,0x22,0x22,0x22,0x22,0x22,0x22,0x1C},//0{0x08,0x18,0x28,0x08,0x08,0x08,0x08,0x3E},//1{0x3E,0x02,0x02,0x3E,0x20,0x20,0x20,0x3E},//2{0x3E,0x02,0x02,0x3E,0x02,0x02,0x02,0x3E},//3{0x0C,0x14,0x24,0x3E,0x04,0x04,0x04,0x04},//4{0x3E,0x20,0x20,0x3E,0x02,0x02,0x02,0x3E},//5{0x3E,0x20,0x20,0x3E,0x22,0x22,0x22,0x3E},//6{0x3E,0x02,0x04,0x08,0x08,0x08,0x08,0x08},//7{0x1C,0x22,0x22,0x1C,0x22,0x22,0x22,0x1C},//8{0x3E,0x22,0x22,0x3E,0x02,0x02,0x02,0x3E},//9{0x08,0x14,0x22,0x22,0x3E,0x22,0x22,0x22},//A{0x3C,0x22,0x22,0x3C,0x22,0x22,0x22,0x3C},//B{0x1C,0x22,0x20,0x20,0x20,0x20,0x22,0x1C},//C{0x38,0x24,0x22,0x22,0x22,0x22,0x24,0x38},//D{0x3E,0x20,0x20,0x3E,0x20,0x20,0x20,0x3E},//E{0x3E,0x20,0x20,0x3E,0x20,0x20,0x20,0x20},//F};void write_byte(uchar DATA){uchar i;digitalWrite(Max7219_CS,LOW);for(i=8;i>=1;i--){digitalWrite(Max7219_CLK,LOW);digitalWrite(Max7219_DIN,DATA&0x80);//提取Data的高一位数据 DATA = DATA<<1;digitalWrite(Max7219_CLK,HIGH);}}void write_first(uchar address,uchar dat){digitalWrite(Max7219_CS,LOW);write_byte(address);           //写入地址,即数码管编号 write_byte(dat);               //写入数据,即数码管显示数字  digitalWrite(Max7219_CS,HIGH);}void write_second(char address,char dat){digitalWrite(Max7219_CS,LOW);write_byte(address);           //写入地址,即数码管编号 write_byte(dat);               //写入数据,即数码管显示数字  write_byte(0);write_byte(0);digitalWrite(Max7219_CS,HIGH);}void write_third(char address,char dat){digitalWrite(Max7219_CS,LOW);write_byte(address);           //写入地址,即数码管编号 write_byte(dat);               //写入数据,即数码管显示数字  write_byte(0);write_byte(0);write_byte(0);write_byte(0);digitalWrite(Max7219_CS,HIGH);}void max7219_init(void){write_first(0x09, 0x00);       //译码方式:BCD码 write_first(0x0a, 0x03);       //亮度  write_first(0x0b, 0x07);       //扫描界限;8个数码管显示 write_first(0x0c, 0x01);       //掉电模式:0,普通模式:1 write_first(0x0f, 0x00);       //显示测试:1;测试结束,正常显示:0 write_second(0x09, 0x00);       //译码方式:BCD码 write_second(0x0a, 0x03);       //亮度  write_second(0x0b, 0x07);       //扫描界限;8个数码管显示 write_second(0x0c, 0x01);       //掉电模式:0,普通模式:1 write_second(0x0f, 0x00);       //显示测试:1;测试结束,正常显示:0 write_third(0x09, 0x00);       //译码方式:BCD码 write_third(0x0a, 0x03);       //亮度  write_third(0x0b, 0x07);       //扫描界限;8个数码管显示 write_third(0x0c, 0x01);       //掉电模式:0,普通模式:1 write_third(0x0f, 0x00);       //显示测试:1;测试结束,正常显示:0 }void setup(){pinMode(Max7219_CLK,OUTPUT);pinMode(Max7219_CS,OUTPUT);pinMode(Max7219_DIN,OUTPUT);max7219_init();}void loop(){uchar i,count;while(1){for(i=1;i<9;i++){write_first(i,num[count/100][i-1]);write_second(i,num[count%100/10][i-1]);write_third(i,num[count%10][i-1]);}delay(200);count++;}}

转载于:https://my.oschina.net/pcduino/blog/141964

你可能感兴趣的文章
delphi webbrowser 经常用法演示样例
查看>>
iptables相关操作以及简单理解端口和服务之间关系
查看>>
Ubuntu上运行Blender,在控制台上查看运行结果
查看>>
怎么检查网站的死链接呢?
查看>>
scrapy爬虫框架实例一,爬取自己博客
查看>>
JAVA简单选择排序算法原理及实现
查看>>
Spring MVC实现Junit Case
查看>>
HttpClient通过Post方式发送Json数据
查看>>
React是UI的未来吗?
查看>>
中国人社部:2018年15个省(区、市)调整最低工资标准
查看>>
JS中的继承
查看>>
手把手教你通过Thrift 访问ApsaraDB for HBase
查看>>
Java多线程进阶(十二)—— J.U.C之atomic框架:Unsafe类
查看>>
MacOS安装MySQL 报错
查看>>
Java知识点总结(反射-反射操作泛型)
查看>>
Vue+webpack+Element 兼容问题总结
查看>>
【跃迁之路】【534天】刻意练习系列293(2018.07.24)
查看>>
初中级PHP面试基础汇总
查看>>
《软技能》读书笔记(下)
查看>>
textarea文域高度自适应
查看>>