【51单片机】MAX7219 LED点阵GUI设计
文章目录
- 一、主要功能
- 二、硬件资源
- 1.硬件准备
- 2.硬件连接
- 三、软件设计
- 1.软件结构
- 2.主要代码
- 四、实验现象
- 联系作者
一、主要功能
LED点阵显示初始信息,可通过K3键切换显示模式,可实现RTC时钟显示、滚动字符显示 、滚动汉字显示,项目中以实现常用绘图API函数,如画点、线、圆、框、填充、显示字符、汉字等。代码中可简单修改MAX7219点阵级联个数实现不同尺寸的兼容。
二、硬件资源
1.硬件准备
项目所需要的硬件资源如下:
①51单片机开发板1个
②MAX7219 点阵模块1个(可根据自身财力购买点阵大小)
③USB线1条(用于供电和程序下载)
④杜邦线若干
2.硬件连接
独立按键模块-->单片机IOK3-->P32MAX7219 LED点阵模块-->单片机IOCLK-->P22CS-->P21DIN-->P20VCC-->5VGND-->GND
三、软件设计
1.软件结构
2.主要代码
#include "app_demo.h"
#include "time.h"
#include "max7219.h"
#include "exti.h"
#include "key.h"
#include "string.h"
#include "stdio.h"//定义全局结构体变量
_leddz_struct leddz_struct;//定时器0中断函数
void time0() interrupt 1
{static u8 i=0;TH0=0XDC; //给定时器赋初值,定时10msTL0=0X00;i++;if(i==100)//1S{leddz_struct.sec++;if(leddz_struct.sec>=60){leddz_struct.sec=0;leddz_struct.min++;if(leddz_struct.min>=60){leddz_struct.min=0;leddz_struct.hour++;if(leddz_struct.hour==24)leddz_struct.hour=0;}}}
}void exti0(void) interrupt 0 //外部中断0中断函数
{delay_10us(1000);//消斗if(KEY3==0)//再次判断K3键是否按下{leddz_struct.mode++;if(leddz_struct.mode==4)leddz_struct.mode=0;leddz_clear();leddz_show_reflash(); }
}void sys_parm_init(void)
{leddz_struct.mode=0;leddz_struct.hour=12;leddz_struct.min=59;leddz_struct.sec=23;
}//静态显示汉字
void static_show_hz(void)
{u8 i=0;while(leddz_struct.mode==0){for(i=0;i<4;i++){leddz_show_fonthz(i*16,0,i,16,1);//显示“欢迎观看” }leddz_show_reflash(); }
}//显示RTC
void rtc_show(void)
{u8 i=0;xdata u8 buf[8];while(leddz_struct.mode==1) {i++;if(i%1==0){buf[0]=leddz_struct.hour/10+0x30;buf[1]=leddz_struct.hour%10+0x30;buf[2]=':';buf[3]=leddz_struct.min/10+0x30;buf[4]=leddz_struct.min%10+0x30;buf[5]=':';buf[6]=leddz_struct.sec/10+0x30;buf[7]=leddz_struct.sec%10+0x30;leddz_clear();leddz_show_string(0,0,buf,16);leddz_show_reflash(); }delay_ms(1); }
}//字符滚动显示
void roll_char_show(void)
{u8 i=0;char sx=LEDDZ_WIDTH;xdata u8 buf[]="Hai.XiaoYi,QQ:3443792007,Thanks!";while(leddz_struct.mode==2){i++;if(i%10==0){leddz_clear();leddz_show_string(sx,0,buf,12);leddz_show_reflash();sx--;if(sx<=-strlen(buf)*6)sx=LEDDZ_WIDTH; }delay_ms(1); }
}//汉字滚动显示
void roll_show_hz(void)
{u8 i=0;char sx=LEDDZ_WIDTH;xdata u8 buf[]="深圳加油!嗨小易";while(leddz_struct.mode==3){i++;if(i%10==0){leddz_clear();leddz_show_fonthz_ex(sx,0,buf);leddz_show_reflash();sx--;if(sx<=-strlen(buf)*8)sx=LEDDZ_WIDTH; }delay_ms(1); }
}//LED点阵花样显示系统
void leddz_control_sys(void)
{ time0_init();//初始化定时器0time0_start();//开启定时器0exti0_init();sys_parm_init();max7219_init();//清屏leddz_clear();leddz_show_reflash();while(1){static_show_hz();//静态显示汉字rtc_show();//RTC时钟显示roll_char_show();//字符滚动显示roll_show_hz();//汉字滚动显示 }
}
四、实验现象
B站演示视频:https://space.bilibili.com/444388619
联系作者
作者B站链接:https://space.bilibili.com/444388619
可提供手把手教学服务,资料获取请联系作者QQ:3443792007
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。
【51单片机】MAX7219 LED点阵GUI设计相关推荐
- 【Proteus仿真】【51单片机】LED点阵广告牌设计
文章目录 一.功能简介 二.软件设计 三.实验现象 联系作者 一.功能简介 本项目使用Proteus8仿真51单片机控制器,使用16*16LED点阵.按键.74HC595D等. 系统运行后,默认以静态 ...
- 【Proteus仿真】【51单片机】LED点阵花样显示设计
文章目录 一.功能简介 二.软件设计 三.实验现象 联系作者 一.功能简介 本项目使用Proteus8仿真51单片机控制器,使用8*8LED点阵.按键模块等. 系统运行后,默认以静态模式显示,此时点阵 ...
- 利用51单片机进行LED 跑马灯设计
题目: 使用单片机驱动8个LED,2个按键并实现跑马灯功能. 当按下按键1时,LED 从左至右依次点亮,全亮后再从右至左依次熄灭,全灭后再从左至右依次点亮,依次循环下去. 当按下按键2 时,LED 从 ...
- 51单片机实现c语言字母滚动,基于51单片机的led点阵滚动显示上下左右c语言程序.docx...
*********** * * *LED点阵实验(左右上下流动显示) ***************************************************************** ...
- 基于51单片机的LED呼吸灯设计(定时器)
定时器实现led呼吸灯 实验原理: 灯在高速闪烁时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失.每次循环时,前半部分先让亮的时间逐渐增加,暗的时间逐渐减小:后半部分 ...
- 51单片机led点阵C语言,51单片机驱动LED点阵扫描显示C语言程序
#ifndef__Matrix_H__ #define__Matrix_H__ #ifdef__cplusplus extern"C" { #endif #define SET ...
- 基于51单片机的51单片机的LED彩灯霓虹灯控制器(心形流水灯)设计
基于51单片机的51单片机的LED彩灯霓虹灯控制器(心形流水灯)设计 必看!!视频讲解 基于51单片机的LED彩灯霓虹灯心形流水灯设计 这里写目录标题 1 开发环境 2 功能说明介绍 3 仿真图 4 ...
- 51单片机控制系统的人机交互接口设计【51单片机与LED数码管的动态显示接口案例分析】
本章节利用Keil uVision5和ISIS 7 Professional两个软件来进行仿真实验. [例]运用51单片机实现8位8段数码管的动态显示,LED数码管的段选数据由51单片机的P0口控制, ...
- 单片机遥控车c语言程序,基于51单片机的无线遥控小车设计[附发射接收程序]
/***************************************************************/ /*[基于51单片机的无线遥控小车设计] 作者王*茹 */ /*** ...
最新文章
- 给 Spring Boot 项目减减肥!18.18M 到 0.18M 是如何做到的?
- 浅谈数据分析的魅力和能力要求!
- 用navicate 连接本地数据库提示用户名/口令无效
- CV方向介绍 | 基于自然语言的跨模态行人re-id的SOTA方法简述(上)
- orm2 中文文档 8. 聚合
- Machine learning for improved image-based wavefront sensing
- html5应用开发大赛
- 一些NER的英文数据集
- Parentheses Column Values
- 一些python书=待买
- jsp 网页计数器代码
- Python实现Mean Shift算法
- php为图片平铺文字水印
- less文件中导入另一个less文件
- MATLAB批量改变图片大小
- MBR膜持续发力 守护绿水青山
- 荣耀猎人游戏本散热怎么样?测试一下就知道
- 02 汇编语言的函数
- 2022最新软件测试面试八股文,全网最全最新,堪称地表最强
- 企业升级改造项目中的电力监控系统的研究与应用