关于显示器的分辨率,像素,清晰度这些概念不再赘述

讲一下pitch这个比较陌生的概念:指的是两个像素点的圆心之间的距离,通常默认单位是毫米 例如:p10指的是间距10毫米的led点阵

LED的P00-P07是直接接在处理器上但是因为处理器针脚有限所以需要下面的74HC595(处理器使用3个引脚经过这个芯片产生8个并行的信号等效于使用了8个引脚)

J13如果跳线OE和GND HC595将无法工作也为没有电压 而跳线OE和VCC才可以工作

74HC595是一个移位寄存器74HC595是将串行信号转为并行信号 其中P34是处理器输入串行信号 P36是串行时钟 P35是工作时钟 然后经过这个芯片处理生成8个并行的信号 接在LED点阵的D0-D7上

这里这个芯片还可以控制一排LED是通过将图中的J14跳线帽连接后 LED一端为高电压另一端为HC595输出的8个串行的高低电压将LED点亮

void Hc595SendByte(u8 dat)
{u8 i = 0, j = 0;SCK = 0;                // 将SCK置为初始状态RCK = 0;              // 将RCK置为初始状态for (i=0; i<8; i++)     //使用for循环将数字信号分8次发送出去也就是一个串行信号{SER = dat >> 7;dat <<= 1;SCK = 1;j++;                // 延时代码,等同于nop指令j++;               // 延时代码,等同于nop指令SCK = 0;    }RCK = 1;j++;                    // 延时代码,等同于nop指令j++;                   // 延时代码,等同于nop指令
}

LED点阵显示图像原理与数码管动态显示类似

首先选择出每个要点亮的LED像素点 然后反复循环刷新即可

链接:https://pan.baidu.com/s/1-RGR0v9WUH7LWmOaUTpSbQ 
提取码:pmw2

这是字模提取软件 也就是帮你选择那些LED管需要去点亮

注意的是:要管理员身份运行 
                  字模由光盘中:工具软件/88字模提取软件/LEDDOT V0.2.exe生成
                  注意取模软件菜单栏设置中,设置为:
                  字模显示方式:单行
                  字模提取方式:逐列
                  字模提取格式:C51格式

void main(void)
{MatrixDisplay(gZhu);
}
void MatrixDisplay(u8 *zimo)
{u8 i = 0;while (1){for(i=0;i<8;i++){MATRIX_PORT = gLineCode[i];                // 位选Hc595SendByte(zimo[i]);        // 发送段选数据Hc595SendByte(0x00);       // 消隐}  }
}
void Hc595SendByte(u8 dat)
{u8 i = 0, j = 0;SCK = 0;                // 将SCK置为初始状态RCK = 0;              // 将RCK置为初始状态for (i=0; i<8; i++){SER = dat & (0x01);dat >>= 1;SCK = 1;j++;             // 延时代码,等同于nop指令j++;               // 延时代码,等同于nop指令SCK = 0;    }RCK = 1;j++;                    // 延时代码,等同于nop指令j++;                   // 延时代码,等同于nop指令
}/*
// 由于取模软件只能选择横向纵向,但是不能选择纵向从上向下还是从下向上
// 实际测试取模软件的模式,适合先发LSB而不是MSB
void Hc595SendByte(u8 dat)
{u8 i = 0, j = 0;SCK = 0;                // 将SCK置为初始状态RCK = 0;              // 将RCK置为初始状态for (i=0; i<8; i++){SER = dat >> 7;dat <<= 1;SCK = 1;j++;               // 延时代码,等同于nop指令j++;               // 延时代码,等同于nop指令SCK = 0;    }

这里和前面发送串行码的顺序不同 这个需要实际测试 因为这个顺序可能导致LED现实的字是反的

**********************************************************************
*                         头文件包含
**********************************************************************
*/
#include <reg52.h>
#include <intrins.h>
/*
**********************************************************************
*                         本地宏定义
**********************************************************************
*/
typedef unsigned char u8;       // 重命名类型u8简化代码编写
typedef unsigned int u16;#define MATRIX_PORT        P0      // 点阵LED负极端口/*
**********************************************************************
*                         本地全局变量
**********************************************************************
*/
sbit SCK = P3^6;           // SCK上升沿移位
sbit RCK = P3^5;           // RCK上升沿串行输出寄存器锁存
sbit SER = P3^4;           // SER引脚送字节数据进去// 点阵列选值,数组每个元素的值选中其中一列
u8 gLineCode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};  /* 字模* 字模由光盘中:工具软件/88字模提取软件/LEDDOT V0.2.exe生成* 注意取模软件菜单栏设置中,设置为:*      字模显示方式:单行*       字模提取方式:逐列*       字模提取格式:C51格式*/u8 gZhu[] = {0x73,0xD6,0x58,0xFF,0x58,0x54,0x52,0x12};        // 汉字 朱
u8 gSi[]  = {0x0,0x4,0x1C,0x24,0x7E,0x4,0x0,0x0};          // 数字 4
u8 gK[]   = {0x0,0x0,0x7E,0x38,0x66,0x0,0x0,0x0};          // 字模 K/*
**********************************************************************
*                         函数原型声明
**********************************************************************
*/
void Hc595SendByte(u8 dat);
void MatrixDisplay(u8 *zimo);/*********************************************************************
* 函 数 名       : main
* 函数功能       : 主函数
* 参数列表       : 无
* 函数输出       : 无
*********************************************************************/
void main(void)
{MatrixDisplay(gZhu);
}/*********************************************************************
* 函 数 名       : MatrixDisplay
* 函数功能       : 循环刷新显示字模到点阵上
* 参数列表       : zimo - 待显示的字模数组
* 函数输出       : 无
*********************************************************************/
void MatrixDisplay(u8 *zimo)
{u8 i = 0;while (1){for(i=0;i<8;i++){MATRIX_PORT = gLineCode[i];                // 位选Hc595SendByte(zimo[i]);        // 发送段选数据Hc595SendByte(0x00);       // 消隐}  }
}/*********************************************************************
* 函 数 名       : Hc595SendByte
* 函数功能       : 通过74HC595串行移位发送一个字节出去
* 参数列表       : dat - 待发送的字节数据
* 函数输出       : 无
*********************************************************************/
void Hc595SendByte(u8 dat)
{u8 i = 0, j = 0;SCK = 0;                // 将SCK置为初始状态RCK = 0;              // 将RCK置为初始状态for (i=0; i<8; i++){SER = dat & (0x01);dat >>= 1;SCK = 1;j++;             // 延时代码,等同于nop指令j++;               // 延时代码,等同于nop指令SCK = 0;    }RCK = 1;j++;                    // 延时代码,等同于nop指令j++;                   // 延时代码,等同于nop指令
}/*
// 由于取模软件只能选择横向纵向,但是不能选择纵向从上向下还是从下向上
// 实际测试取模软件的模式,适合先发LSB而不是MSB
void Hc595SendByte(u8 dat)
{u8 i = 0, j = 0;SCK = 0;                // 将SCK置为初始状态RCK = 0;              // 将RCK置为初始状态for (i=0; i<8; i++){SER = dat >> 7;dat <<= 1;SCK = 1;j++;               // 延时代码,等同于nop指令j++;               // 延时代码,等同于nop指令SCK = 0;    }RCK = 1;j++;                    // 延时代码,等同于nop指令j++;                   // 延时代码,等同于nop指令
}
*/

51单片机【五】LED点阵屏相关推荐

  1. 【51单片机】LED点阵屏(74HC595讲解)

  2. 基于51单片机的51单片机的LED彩灯霓虹灯控制器(心形流水灯)设计

    基于51单片机的51单片机的LED彩灯霓虹灯控制器(心形流水灯)设计 必看!!视频讲解 基于51单片机的LED彩灯霓虹灯心形流水灯设计 这里写目录标题 1 开发环境 2 功能说明介绍 3 仿真图 4 ...

  3. 51单片机的LED的位定义(通俗易懂)

    51单片机的LED的位定义 一.位定义原理 二.代码实现 三.烧录演示 一.位定义原理 定义方法:sbit 位名=特殊功能寄存器^位置; sbit LED1 = P2^0; 符号"^&quo ...

  4. 51单片机控制系统的人机交互接口设计【51单片机与LED数码管的动态显示接口案例分析】

    本章节利用Keil uVision5和ISIS 7 Professional两个软件来进行仿真实验. [例]运用51单片机实现8位8段数码管的动态显示,LED数码管的段选数据由51单片机的P0口控制, ...

  5. 51单片机实验 LED半秒闪烁 定时器0方式2 中断实现

    51单片机实验 LED半秒闪烁 定时器0方式2 中断实现 实验目的: P1.0接一个发光管,实现亮半秒灭半秒, 要求使用定时器0工作方式2,中断实现. C语言代码: #include "at ...

  6. 51单片机实现LED数码管0-9999秒的计时功能

    标题51单片机实现LED数码管0-9999秒的计时功能 一.实现原理: P0口给高低电平控制LED灯亮暗,来显示数字: 74HC138实现数码管高低电平状态,循环实现数码管动态扫描显示. LED1-L ...

  7. 51单片机 PWM LED灯亮度调节+Proteus仿真

    51单片机 PWM LED灯亮度调节+Proteus仿真 Proteus仿真 实例代码 #include "reg51.h" unsigned int cd,dd; unsigne ...

  8. 51单片机入门————LED灯的控制

    LED的电路图 通过原理图看出,LED灯是接单片机芯片的P20~P27的 一共有8个LED,51单片机也是8字节的 P2=0x01 0xFE----1111 1110 P2=0xFE可以表示把在P2端 ...

  9. 51单片机实验——LED小灯的操作(一)

    目录 引言 led模块原理图解析 led小灯的操作 1.点亮led小灯 位操作法 总线操作法 2.闪烁led小灯 位操作法 总线操作法 3.led流水灯 位操作法 总线操作法 总线操作-数组循环遍历法 ...

  10. 51单片机8*8点阵屏、取模软件的使用

    取模软件网盘提取 链接:https://pan.baidu.com/s/1YYQo_tZNCXlo9uWVbtsNdg 提取码:jfbr 74HC595芯片原理图: 两片595芯片级联驱动点阵屏只需要 ...

最新文章

  1. Python数据挖掘:数据转换-数据规范化
  2. 彻底疯了,要给雷锋开博客?
  3. C语言函数知识体系大学霸IT达人
  4. python globals().get,python – 为什么人们会使用globals()来定义变量
  5. Prime Count 求大区间素数个数
  6. Spark常用函数讲解之键值RDD转换
  7. P3385-[模板]负环【SPFA】
  8. 使用C#操作XML文件
  9. eclipse工程导入Android Studio
  10. ai人工智能_人工智能能力问答中的人工智能不确定性
  11. MYSQL8.0 排序查询报错 this is incompatible with sql_mode=only_full_group_by
  12. CAP原理和最终一致性(Eventually Consistency)
  13. apt-get安装与卸载
  14. vue延迟渲染组件_做一个可复用的 echarts-vue 组件(延迟动画加载)
  15. 《JavaScript 高级程序设计(第四版)》—— 06 集合引用类型
  16. NLP-语料库:语料库资源介绍
  17. 粒子群算法的适应度函数问题
  18. 2022-2028全球放射性废物管理系统行业调研及趋势分析报告
  19. GMC解封秘籍:解决 Google 账户被封窘境
  20. 我终于开通了微信公众号

热门文章

  1. 微信小程序加载效果和取消加载效果
  2. C# 打开exe文件
  3. iOS_21团购_拼音搜索
  4. 最新小象学院python量化交易项目实战(完整)
  5. NOIP模拟赛20191024 T1 嘟嘟噜【约瑟夫问题的mlogn解法】
  6. 2、一个向量乘它的转置,其几何意义是什么?
  7. android缩略图在哪,Android 缩略图问题
  8. PyTorch神经网络框架
  9. WIN10 共享文件夹并取消密码访问
  10. Echarts Map地图类型使用