51单片机【点阵屏】

这篇具有很好参考价值的文章主要介绍了51单片机【点阵屏】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

51单片机【点阵屏】

​ 我们有一个8*8的点阵屏,里面是64个发光二极管。

​ 二极管的阳极我们给它接了74HC595的八个输出引脚,阴极接P00-P07引脚。

​ 74HC595的八个引脚控制八个行,P00-P07控制八个列,行为1,列为0 对应的那个LED灯会亮,其他的组合不行。

​ 如何让74HC595的八个输出引脚输出不同的值,我们需要查看手册。

​ 查看手册得知:这个芯片对我们有用的输入管脚有三个,一个SCK当它下降沿时使得移位寄存器右移一位,一个RCK当它下降沿时将移位锁存器里的值放到存储寄存器并输出到引脚上,一个SER将每次右移后前面缺出的位置补上它。移位前,移位寄存器每位都是0,通过SER给它加上1。

​ 我们的板子上,P34控制SCK,P35控制RCK,P36控制SER。

​ 我们想要在点阵屏绘制一幅图片,我们需要定义三个函数,一个初始化,一个写显存(这里的显存是个数组,接收外部传过来的,一个元素为一行的点亮的灯),最后一个函数是让通过595芯片的两个下降沿一行一行地控制,每一行有效时,把对应的显存赋给P0,就能让对应的亮起来。如果想使用回调函数,则每行一毫米刷新。以下是用定时器实现的代码。

#include "Int_LedMatrix.h"

// 移位寄存器时钟(上升沿有效,右移)
#define SCK P34
// 数据寄存器时钟
#define RCK P35
// IO线,补的位
#define SER P36

static u8 s_buffer[8] = 0;
static u8 s_pc = 0;

void LedMatrix_Init()
{
    SCK = 0;
    RCK = 0;
    SER = 1;
}

void LedMatrix_SetPic(u8 *pic)
{
    u16 i;
    for (i = 0; i < 8; i++) {
        s_buffer[i] = pic[i];
    }
}

void LedMatrix_Refresh()
{

    s_pc = s_pc>=8 ? SER=1, 0 : s_pc;
    // 列引脚
    P0 = 0xff;
    // 上升沿
    SCK = 1;
    RCK = 1;
    // 列引脚
    P0 = ~s_buffer[s_pc++];
    // Delay1ms(1);
    // 关掉补位1
    SER = 0;
    // 
    SCK = 0;
    RCK = 0;


}
// 主函数
#include "Int_LedMatrix.h"

// 下面的两个数组可以合并为一个,就是每次+8
// 这个没有实现什么效果,一个乱的图
static u8 s_pic[] = {1, 2, 4, 8, 16, 32, 64, 128};
static u8 s_pic1[] = {2, 12, 34, 58, 166, 372, 694, 1028};

void main() {
    LedMatrix_Init();
    // LedMatrix_SetPic(s_pic);
    Dri_Timer0_Init();
    Dri_Timer0_RegisterCallback(LedMatrix_Refresh);
    while(1){
        LedMatrix_SetPic(s_pic);
        Delay1ms(500);
        LedMatrix_SetPic(s_pic1);
        Delay1ms(200);
    }
}

如果一个数组里每8个是一个图,想让它流动起来,可以定义函数,让它从第六行图赋给第七行,第五行图赋给第四行...... 第0行补传过来的值,这个传过来的值就是数组(这个数组是main中的数组,不是显存)的下一个元素,这样的话,刚开始屏幕为0(显存就为0),也可以从第一行数组的第一个往下刷,刷完一次后,可以再刷几次空行,然后重复(这个重复是指主函数中的while(1)。)代码略。文章来源地址https://www.toymoban.com/news/detail-760845.html

到了这里,关于51单片机【点阵屏】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机8*8点阵屏

    8*8点阵屏是一种LED显示屏,它由8行和8列的LED灯组成。每个LED灯的开闭状态都可以独立控制,从而可以显示出数字、字母、符号、图形等信息。 8*8点阵屏的原理是通过行列扫描的方式,控制LED灯的亮灭,从而显示出所需的图案或信息。通过逐行逐列地控制LED的亮灭,就可以在

    2024年01月21日
    浏览(39)
  • 【51单片机】LED点阵屏

    🎊专栏【51单片机】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Waiting For Love】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🍔74HC595图片 🍔74HC595原理 🍔”上升沿“是什么意思 🎆LED点阵屏显示图形  🎈现象  🎈代码(三部分) main.c  Del

    2024年02月02日
    浏览(43)
  • 51单片机LED点阵屏

    LED点阵屏是一种由许多小型LED灯组成的矩阵式显示屏。这些LED灯可以是单色、双色或全彩的,它们排列成行和列的网格,可以根据需要点亮来显示图像、文字或动画等内容。LED点阵屏广泛应用于户外广告牌、室内显示、交通信号灯、电子价格标签和其他需要显示信息的场合。

    2024年01月23日
    浏览(51)
  • 51单片机 点阵矩阵 坤坤代码

    2024年02月05日
    浏览(91)
  • 51单片机点阵屏实现俄罗斯方块

    前言 一、关于点阵屏 二、俄罗斯方块代码部分 1.main主函数 2.按键扫描 3.方块生成 4.方块显示  5.方块下降   6.固定的方块显示 7.方块的左右移动 8.键值的判断与执行  9.方块的旋转   10.总代码 总结 这里采用的是清翔51单片机,通过独立键盘实现左右移动和旋转,通过8×8点

    2024年02月11日
    浏览(34)
  • 51单片机 8*8LED点阵(入门教学)

    LED 点阵介绍 LED 点阵是由发光二极管排列组成的显示器件,在我们日常生活的电器中随 处可见,被广泛应用于汽车报站器,广告屏等。 通常应用较多的是 8*8 点阵,然后使用多个 8*8 点阵可组成不同分辨率的 LED 点阵显示屏,比如16*16 点阵可以使用 4 个 8*8 点阵构成。因此理解

    2024年02月02日
    浏览(46)
  • 51单片机——LED点阵屏(显示滚动画面)

    目录   一、关于数码管、LED点阵屏显示的注意点 二、功能介绍 三、主要模块的介绍 3.1 74HC595模块和点阵屏显示函数 3.1.1 74HC595介绍 3.1.2 点阵屏显示函数MatrixLED() 3.2定时器中断模块 四、程序实现 五、效果展示   一定要消影,不然显示的画面有重影。不管是数码管还是LED点阵

    2023年04月17日
    浏览(41)
  • 基于51单片机点阵汉字显示程序设计

    本次实践是用51单片机最小系统为核心,并使用4块8×8LED点阵组成的16×16LED点阵、2块74HC595位移寄存器芯片作为16×16LED点阵的行驱动、2块74HC138译码器芯片作为16×16LED点阵的列驱动、和8个独立按键组成的51单片机系统,实现汉字在LED点阵屏幕上进行多种功能的显示:实现静态显

    2024年02月05日
    浏览(45)
  • 【【51单片机实现LED点阵屏幕和动画显示】】

    我们先搞清楚74HC595的原理 sfr 特殊功能寄存器声明 sbit 特殊位声明 就举个例子,我们在之前的各种测试中对LED进行控制会直接输入P2=什么什么,那我想问你怎么知道P2口控制的就是LED呢,其实这些就是已经在内部声明完成了,我们可以直接拿来使用 内部

    2024年02月11日
    浏览(48)
  • 51单片机学习--LED点阵屏显示图形&动画

    为了通用性考虑,需要把用到的几个口用特殊位声明来重新命名,由于RCLK在头文件中已有定义,所以这里把P3^5声明成RCK吧。。这样的做法可以提高可读性 接下来编写74HC595的输入函数 执行完八次循环后数据就会存到移位寄存器里面了,接下来要输出只需要给RCLK一个高电平即

    2024年02月14日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包