扫码加入

  • 方案介绍
  • 相关推荐
申请入驻 产业图谱

基于51单片机8x8LED点阵广告牌左右滚动,闪烁显示设计

2025/12/06
3093
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

 

【普中开发板】基于51单片机8x8LED点阵广告牌设计

本设计包含proteus仿真+程序+设计报告+讲解视频

这里写目录标题

  • 一、开发环境
  • 二、主要功能
  • 三、实物图
  • 四、仿真设计
  • 五、程序代码
  • 六、设计报告
  • 七、设计资料内容清单&&下载链接

一、开发环境

仿真图:proteus8.17(有低版本)

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:P26

二、主要功能

1、设计一款能够显示不同字符的 LED 点阵广告牌;

2、设计不同的字符切换效果(如闪烁、左右移等);

3、设计不同控制按钮,可以在不同效果间切换;

4、能够显示图形或自定义宁符;

5、可以有其他扩展功能;

6、可以使用普中开发板和proteus演示功能。

主要硬件 51单片机 8x8点阵 独立按键

(目前仅完全适配普中51-实验板234,需具备8x8点阵屏,16X16不适用)

img

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

资料下载链接:

P系列单片机设计下载链接(复制到浏览器打开)

https://docs.qq.com/doc/DS2pPenNRaHB6SlR1

以下为本设计资料展示图:

三、实物图

img

四、仿真设计

点阵滚动显示实心心形、文字"HELLO"、“你好”,按键控制点阵滚动方向和滚动速度以及滚动方式。

img

img

五、程序代码

使用keil4或者keil5编译,代码有注释,可以结合注释了解代码含义。

img

#include "reg51.h"#include <intrins.h>typedef unsigned int u16;typedef unsigned char u8;sbit SRCLK = P3^6;sbit RCLK = P3^5;sbit SER = P3^4;sbit SPEED_ADD = P3^1; // 速度+sbit SPEED_DEC = P3^0; // 速度-sbit DIR = P3^2;       // 切换左右显示sbit TURN = P3^3;      // 闪烁显示// 点阵数据:实心心形 + 文字 + 空心心形u8 ledduan[] = {    // 实心心形    0x38,0x7C,0x7E,0x3F,0x3F,0x7E,0x7C,0x38, // 实心心形 (0-7)	0x00,0x00,0x7E,0x10,0x10,0x7E,0x00,0x00, //H	0x00,0x7E,0x52,0x52,0x52,0x52,0x00,0x00, //E    0x00,0x00,0x7E,0x02,0x02,0x02,0x00,0x00, //L	0x00,0x00,0x7E,0x02,0x02,0x02,0x00,0x00,//L	0x00,0x00,0x3C,0x42,0x42,0x3C,0x00,0x00, //O	0x10,0x7F,0x12,0x64,0x2F,0x20,0x2C,0x00,/*"你",0*//* (8 X 8 , 黑体 )*/    0x28,0x76,0x3C,0x22,0x49,0x5F,0x68,0x08,/*"好",1*//* (8 X 8 , 黑体 )*/    // 空心心形    0x38,0x44,0x42,0x21,0x21,0x42,0x44,0x38  // 空心心形 (56-63)};u8 ledwei[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};u8 index = 0;u8 dir = 1;            // 滚动方向:1=向右,0=向左u8 turn_flag = 0;       // 闪烁标志:0=关闭,1=开启u16 speed_level = 500;  // 闪烁速度控制(值越大越慢)u8 blink_state = 0;     // 闪烁状态:0=显示,1=熄灭u16 blink_counter = 0;  // 闪烁计数器u8 char_index = 0;     // 当前显示的字符索引(0-8)u8 show_char = 1;      // 当前是否显示字符void Hc595SendByte(u8 dat) {    u8 a;    SRCLK = 0;    RCLK = 0;    for(a = 0; a < 8; a++) {        SER = dat >> 7;        dat <<= 1;        SRCLK = 1;        _nop_();        _nop_();        SRCLK = 0;        }    RCLK = 1;    _nop_();    _nop_();    RCLK = 0;}void key_scan() {    static u8 key_debounce[4] = {0}; // 按键消抖计数器    static u8 key_state[4] = {1,1,1,1}; // 按键状态        // 速度+按键扫描 (P3.1)    if (SPEED_ADD == 0) {        if (key_debounce[0] < 10) key_debounce[0]++;        if (key_debounce[0] == 5 && key_state[0]) {            key_state[0] = 0;            if (speed_level > 100) speed_level -= 100; // 加速        }    } else {        key_debounce[0] = 0;        key_state[0] = 1;    }        // 速度-按键扫描 (P3.0)    if (SPEED_DEC == 0) {        if (key_debounce[1] < 10) key_debounce[1]++;        if (key_debounce[1] == 5 && key_state[1]) {            key_state[1] = 0;            if (speed_level < 2000) speed_level += 100; // 减速        }    } else {        key_debounce[1] = 0;        key_state[1] = 1;    }        // 方向切换按键扫描 (P3.2)    if (DIR == 0) {        if (key_debounce[2] < 10) key_debounce[2]++;        if (key_debounce[2] == 5 && key_state[2]) {            key_state[2] = 0;            dir = !dir; // 切换滚动方向        }    } else {        key_debounce[2] = 0;        key_state[2] = 1;    }        // 闪烁开关按键扫描 (P3.3)    if (TURN == 0) {        if (key_debounce[3] < 10) key_debounce[3]++;        if (key_debounce[3] == 5 && key_state[3]) {            key_state[3] = 0;            turn_flag = !turn_flag; // 切换闪烁状态            blink_counter = 0;            blink_state = 0;            char_index = 0;        // 重置字符索引            show_char = 1;         // 重置显示状态        }    } else {        key_debounce[3] = 0;        key_state[3] = 1;    }}完整代码见文章下载链接void main() {        TMOD = 0x10;                // 定时器1工作方式1    TH1 = (65536 - 1000) / 256; // 1ms中断一次    TL1 = (65536 - 1000) % 256;    ET1 = 1;                    // 允许定时器1中断    TR1 = 1;                    // 启动定时器1    EA = 1;                     // 开总中断        while(1) {        // 主循环保持空转,所有功能在中断中处理    }        }

六、设计报告

8174字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等

img

七、设计资料内容清单&&下载链接

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

img

0、常见使用问题及解决方法–必读!!!!

1、程序

2、proteus仿真

3、功能要求

4、软硬件流程图

5、开题报告

6、设计报告

7、烧录工具

8、讲解视频

9、实物图

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

资料下载链接(可点击):

https://docs.qq.com/doc/DS2pPenNRaHB6SlR1

相关推荐