本文主要介绍了max7219与arduino驱动设计例程。重点介绍了arduino uno 使用max7219驱动单个8*8点阵led模块;wemos d1制作的max7219八位数码管实时时钟以及arduino和max7219led点阵模块制作一个属于你的表白神器。谁说理工男不懂浪漫?这才是浪漫的正确打开方式。
实例一:arduino uno 使用max7219驱动单个8*8点阵led模块3
只占用3个io口,就可以控制8*8点阵的显示,非常实用,简单。
问题注意:
① 接线的时候,注意方向,在in的方向接线(输入)
② led的方向也要注意,如果显示不正常,请转变下安插的方向。
实验效果
接线方式
在in方向的针脚
arduino uno --- max7219
5v 《---》 vcc
gnd 《---》 gnd
12 《---》 din
11 《---》 cs
10 《---》 clk
程序:
#include 《ledcontrol.h》
int din = 12;
int cs = 11;
int clk = 10;
byte e[8]= {0x7c,0x7c,0x60,0x7c,0x7c,0x60,0x7c,0x7c}; //e
byte d[8]= {0x78,0x7c,0x66,0x66,0x66,0x66,0x7c,0x78}; //d
byte u[8]= {0x66,0x66,0x66,0x66,0x66,0x66,0x7e,0x7e}; //u
byte c[8]= {0x7e,0x7e,0x60,0x60,0x60,0x60,0x7e,0x7e}; //c
byte eight[8]= {0x7e,0x7e,0x66,0x7e,0x7e,0x66,0x7e,0x7e}; //8
byte s[8]= {0x7e,0x7c,0x60,0x7c,0x3e,0x06,0x3e,0x7e}; //s
byte dot[8]= {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18}; //。
byte o[8]= {0x7e,0x7e,0x66,0x66,0x66,0x66,0x7e,0x7e}; //o
byte m[8]= {0xe7,0xff,0xff,0xdb,0xdb,0xdb,0xc3,0xc3}; //m
ledcontrol lc=ledcontrol(din,clk,cs,4);
void setup(){
lc.shutdown(0,false); //启动时,max72xx处于省电模式
lc.setintensity(0,8); //将亮度设置为最大值
lc.cleardisplay(0); //清除显示
}
void loop(){
byte smile[8]= {0x3c,0x42,0xa5,0x81,0xa5,0x99,0x42,0x3c};//笑脸
byte neutral[8]= {0x3c,0x42,0xa5,0x81,0xbd,0x81,0x42,0x3c};//标准脸
printbyte(eight);//显示8
delay(1000);//延时1秒
printbyte(neutral);//显示标准脸
delay(1000);
}
//点阵显示函数
void printbyte(byte character [])
{
int i = 0;
for(i=0;i《8;i++)
{
lc.setrow(0,i,character[i]);
}
}
实例二 :wemos d1制作的max7219八位数码管实时时钟
这是一片esp8266开发板,直接能连wifi,这个测试项目是通过wifi连接时间服务器,然后在八位数码管显示实时时间,开机初始化时会显示“arduino”。开发板选wemos d1(retired),如图。
开机显示arduino
显示实时时间
#include 《ledcontrol.h》
#include《esp8266wifi.h》
#include《esp8266wifimulti.h》
#include 《time.h》
#define timezone 8
const char* ssid = “tp-link_****”; //wifi名称
const char* password = “********”; //wifi密码
unsigned long ms_timer = 0;
unsigned long timer,lasttime=0;
char *time_str;
char h1,h2,m1,m2,s1,s2;
ledcontrol lc=ledcontrol(d12,d11,d10,1); // d12 -》din,d11-》clk,d10-》cs,1片max7219
void writearduino() {
lc.setchar(0,7,‘a’,false);
lc.setrow(0,6,0x05);
lc.setchar(0,5,‘d’,false);
lc.setrow(0,4,0x1c);
lc.setrow(0,3,b00010000);
lc.setrow(0,2,0x15);
lc.setrow(0,1,0x1d);
}
void disptime(){
lc.setchar(0,7,h1,false);
lc.setchar(0,6,h2,false);
lc.setrow(0,5,b00000001); //横线
lc.setchar(0,4,m1,false);
lc.setchar(0,3,m2,false);
lc.setrow(0,2,b00000001); //横线
lc.setchar(0,1,s1,false);
lc.setchar(0,0,s2,false);
}
void setup() {
delay(50);
serial.begin(115200);
lc.shutdown(0,false); //屏初始化
lc.setintensity(0,15); //亮度(0~15)
lc.cleardisplay(0); //清屏
writearduino(); //屏显“arduino”
wifi.disconnect();
wifi.mode(wifi_sta);//设置模式为sta
serial.print(“is connection routing, please wait”);
wifi.begin(ssid, password); //wifi接入到网络
serial.println(“\nconnecting to wifi”);
//如果wifi状态不是wl_connected,则表示连接失败
while (wifi.status() != wl_connected) {
serial.print(“。”);
delay(1000); //延时等待接入网络
}
//设置时间格式以及时间服务器的网址
configtime(timezone * 3600, 0, “pool.ntp.org”, “time.nist.gov”);
serial.println(“\nwaiting for time”);
while (!time(nullptr)) {
serial.print(“。”);
delay(1000);
}
serial.println(“”);
}
void loop() {
timer = millis();
if ((timer - lasttime)》=1000){
time_t now = time(nullptr); //获取当前时间
time_str = ctime(&now);
h1 = time_str[11];
h2 = time_str[12];
m1 = time_str[14];
m2 = time_str[15];
s1 = time_str[17];
s2 = time_str[18];
serial.printf(“%s%c%c:%c%c:%c%c\n”,time_str,h1,h2,m1,m2,s1,s2);
disptime();
lasttime = timer;
}
}
实例三:arduino和max7219led点阵模块制作一个属于你的表白神器
前三行的代码要根据你自己的arduino版的max7219的引脚来定的,这三个引脚是自定义的。
以下是ascii码对照表,大家可以根据这个表来设计你喜欢的图案和文字
下面给大家看效果图:
程序:
int clk = 2;
int cs = 1;
int din = 0; //这里定义了那三个脚
unsigned char disp1[38][8]={
{0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7e},//l
{0x3c,0x42,0x42,0x42,0x42,0x42,0x42,0x3c},//o
{0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x18},//v
{0x7e,0x40,0x40,0x7e,0x40,0x40,0x40,0x7e},//e
{0x66,0xff,0xff,0xff,0xff,0x7e,0x3c,0x18},//tx
};
void delay(double x)
{
double i;
for(i=0;i《x;i++);
}
void setup() {
// put your setup code here, to run once:
pinmode(clk,output);
pinmode(cs,output);
pinmode(din,output); //让三个脚都是输出状态
}
void loop() {
// put your main code here, to run repeatedly:
unsigned char i,j;
delay_xms(50);
init_max7219();
while(1)
{
for(j=0;j《38;j++)
{
for(i=1;i《9;i++)
write_max7219(i,disp1[j][i-1]);
delay(80000);
}
}
}
void delay_xms(unsigned int x)
{
unsigned int i,j;
for(i=0;i《x;i++)
for(j=0;j《112;j++);
}
//--------------------------------------------
//功能:向max7219(u3)写入字节
//入口参数:data
//出口参数:无
//说明:
void write_max7219_byte(unsigned char data)
{
unsigned char i;
digitalwrite(cs,low);
for(i=8;i》=1;i--)
{
digitalwrite(clk,low);
if(data&0x80)
digitalwrite(din,high);
else
digitalwrite(din,low);
data《《=1;
digitalwrite(clk,high);
}
}
//-------------------------------------------
//功能:向max7219写入数据
//入口参数:address、dat
//出口参数:无
//说明:
void write_max7219(unsigned char address,unsigned char dat)
{
digitalwrite(cs,low);
write_max7219_byte(address); //写入地址,即数码管编号
write_max7219_byte(dat); //写入数据,即数码管显示数字
digitalwrite(cs,high);
}
void init_max7219(void)
{
write_max7219(0x09, 0x00); //译码方式:bcd码
write_max7219(0x0a, 0x03); //亮度
write_max7219(0x0b, 0x07); //扫描界限;4个数码管显示
write_max7219(0x0c, 0x01); //掉电模式:0,普通模式:1
write_max7219(0x0f, 0x00); //显示测试:1;测试结束,正常显示:0
}
Sarkar说:妇女必须在区块链工业中起带头作用
2019款新iPhone将在10月份上市搭载了A13处理器和浴霸样式设计
谷歌、戴尔、英特尔等多家IT和云计算主流科技公司组成“现代计算联盟”
创基USB HUB轻松解决电脑互换问题
防水型智慧灯杆网关采用航天接头设计性能更优秀
max7219与arduino驱动设计例程
Nordic推出全新nRF5340 Audio音频开发套件
电子管的种类
药物研发的未来是人工智能吗
Type-C扩展坞好产品价格不贵还实惠
微雪电子树莓派2.13寸 墨水屏介绍
平衡运算放大器输入端电阻
运营商如何玩转5G技术
Surface商用版设备化身护眼小能手
DARPA的可解释人工智能程序
家用负载安全载流量查询
乐视曝裁员10% ,年底执行,考核淘汰?
ARM/StrongARM
智慧视通蜂鸟实时布控系统高效管控疫情的蔓延
“国产化率报告”都有哪些内容与指标?一文读懂