1. 基本介绍

LED点阵

LED点阵是由发光二极管排列组成的显示器件,通常应用较多的是88点阵,然后通过多个88点阵组成不同分辨率的LED点阵显示屏,如4个88组成的1616点阵

8*8点阵由64个LED组成,每个LED是放置在行线和列线的交叉点上,因此通过横纵坐标就可以实现对任何一个LED亮和灭。

74CH595芯片

74HC595芯片是串转并移位锁存器,即芯片通过一个IO口串行接收8bit的数据,然后将8bit数据转为并行输出的移位缓存器。
单片机可以只通过1个IO口串行的输出8bit数据,通过这个芯片转为并行的8bit数据,就可以控制led点阵中的8条阳极,此时在加一个相同的芯片控制阴极,就可以实现两个IO口控制8*8的led点阵,节省了IO口的数量。

  • QA~QH:并行数据输出,即将串行输入的数据通过8个引脚并行输出出去
  • SER:串行数据输入,芯片通过这个引脚逐位接收数据
  • SCK:移位寄存器时钟输入,芯片在每个SCK上升沿时,通过SER读取1bit数据
  • RCK:存储寄存器时钟输入,芯片在每个RCK上升沿时,将SER读取到的数据通过QA-QH并行端口输出
  • Q‘H:串行数据输出,在芯片中存满8位数据后,再输入数据时,就会将原来存的8bit数据通过该引脚逐位挤出去
  • ^G:输出有效
  • ^SCLR:低电平复位引脚

2. 电路原理图

16*16LED点阵

74HC595模块

由原理图可知,74HC595的C和D是直接与LED点阵的阴极连接在一起的,因此只要将LED点阵的阳极(J28、J34)与74HC595的A和B输出(J27、J32)连接在一起即可。同时将J24与单片机上的引脚连接。

3. 软件编程

单独显示

sbit SER = p1^0;
sbit SCK = p1^1;
sbit RCK = p1^2;/*传入4个595模块的值*/
void SendLedData(u8 Neg9to16, u8 Neg1to8, u8 Pos9to16, u8 Pos1to8)
{int i = 0;SCK = 0;RCK = 0;/*第一个595芯片工作,数据为Negative 9-16引脚*/for(i = 0; i < 8; i++){SER = Neg9to16 >> 7;  //数据最高位SCK = 0;SCK = 1;               //制造上升沿读取数据Neg9to16 = Neg9to16 << 1;//移到下一位}for(i = 0; i < 8; i++){SER = Neg1to8>> 7;SCK = 0;SCK = 1;Neg1to8 = Neg1to8<< 1;}/*第三个595芯片工作,数据为Positive9-16引脚*/for(i = 0; i < 8; i++){SER = Pos9to16>> 7;SCK = 0;SCK = 1;Pos9to16= Pos9to16<< 1;}for(i = 0; i < 8; i++){SER = Pos1to8>> 7;SCK = 0;SCK = 1;Pos1to8= Pos1to8<< 1;}RCK = 0;          //制造上升沿,595芯片并行输出RCK = 1;
}void main()
{SendLedData(0x00, 0x00, 0x00, 0x01);   //只亮第一行SendLedData(0xff, 0xfe, 0xff, 0xff); //只亮第一列
}

字模显示

/*“姜”字横向取模*/
u8 colData[] = {0x10,0x04,0x20,0x02,0xFE,0x3F,0x80,0x00,0xFC,0x1F,0x80,0x00,0xFF,0x7F,0x40,0x00,0x20,0x00,0xFF,0x7F,0x10,0x04,0x08,0x04,0x38,0x02,0xC0,0x01,0x30,0x0E,0x0E,0x10,
};
u8 rowData[32] =
{0x01,0x00, 0x02,0x00, 0x04,0x00, 0x08,0x00, 0x10,0x00, 0x20,0x00, 0x40,0x00, 0x80,0x00, 0x00,0x01, 0x00,0x02, 0x00,0x04, 0x00,0x08, 0x00,0x10, 0x00,0x20, 0x00,0x40, 0x00,0x80,
};
sbit SER = P3^4;
sbit RCK = P3^5;
sbit SCK = P3^6;void sendLedData(u8 n1, u8 n0, u8 p1, u8 p0)
{int i;RCK = 0;SCK = 0;for(i = 0; i < 8; i++){SER = n1>>7;SCK = 0;SCK = 1;n1= n1 << 1;}     for(i = 0; i < 8; i++){SER = n0>>7;SCK = 0;SCK = 1;n0= n0 << 1;}          for(i = 0; i < 8; i++){SER = p1>>7;SCK = 0;SCK = 1;p1= p1 << 1;}          for(i = 0; i < 8; i++){SER =p0>>7;SCK = 0;SCK = 1;p0= p0 << 1;}RCK = 0;RCK = 1;
}void displayLedData(u8 row[], u8 col[])
{int i;//按行显示,共显示16行for(i = 0; i < 16; i++){sendLedData(~colData[2*i+1], ~colData[2*i], rowData[2*i+1], rowData[2*i]);   }
}void main(void)
{displayLedData(rowData, colData);
}       

单片机——LED点阵相关推荐

  1. 51单片机LED点阵显示文字

    51单片机LED点阵显示文字 代码如下. #include <REGX51.H> #define u8 unsigned char sbit SER = P3^4; sbit RCLK = ...

  2. led动态显示 c语言,单片机LED点阵的纵向移动(动态显示)

    点阵的动画显示,说到底就是对多张图片分别进行取模,使用程序算法巧妙的切换图片,多张图片组合起来就成了一段动画了,我们所看到的动画片.游戏等等,它们的基本原理也都是这样的. 上一节我们学了如何在点阵上画 ...

  3. 51单片机 | LED点阵实验 | 点亮一个点 | 显示数字 | 显示图像

    文章目录 一.LED点阵介绍 二.硬件设计 三.软件设计 1.LED点阵(点亮一个点) 2.LED点阵(显示数字) 3.LED点阵(显示图像) 四.实验现象 1.LED 点阵(点亮一个点) 2. LE ...

  4. 单片机LED点阵控制。

    系列文章目录 <font color=#999AAA 文章目录 系列文章目录 前言 一.74HC595芯片的说明及其使用 二.LED点阵 1![](https://img-blog.csdnim ...

  5. 51单片机LED点阵实验(74HC595)

    实验目的:用8*8的LED点阵显示一颗爱心. 实验仪器:普中开发板(非广告) 实验背景:出于一些原因,最近在看Arduino,但仍觉得51好玩.遂,一边看Arduino,一边整理51. 8*8的LED ...

  6. 51单片机LED点阵控制原理、74HC595工作原理和字母和滚动显示实验代码

    目录 1. 74HC595工作原理图解 2.LED点阵控制原理 3.点阵LED实验 3.1 配置74HC595代码 3.2 D点阵LED显示H 3.3 滚动LED (1) 滚动扫描图示 (2)程序代码 ...

  7. 51单片机led点阵C语言,51单片机驱动LED点阵扫描显示C语言程序

    #ifndef__Matrix_H__ #define__Matrix_H__ #ifdef__cplusplus extern"C" { #endif #define SET  ...

  8. 51单片机学习笔记(清翔版)(13)——LED点阵、74HC595

    如图3,点阵屏分单色和彩色,点阵屏是由许多点组成的,在一个点上,只有一颗一种颜色的灯珠,这就是单色点阵屏,彩色的在一个点上有三颗灯珠,分别是RGB三原色. 图4你可能没看出来,那么大块黄色的就是点阵屏 ...

  9. 【51单片机实验笔记】3. LED点阵的基本控制

    目录 前言 硬件介绍 驱动芯片 74HC595芯片 MAX7219芯片 原理分析 软件实现 爱心图片 旋转大风车 滚动日期 螺旋线动画 LED点阵功能函数封装 总结 前言 本章接触的硬件依然与LED息 ...

  10. 【Proteus仿真】【51单片机】LED点阵花样显示设计

    文章目录 一.功能简介 二.软件设计 三.实验现象 联系作者 一.功能简介 本项目使用Proteus8仿真51单片机控制器,使用8*8LED点阵.按键模块等. 系统运行后,默认以静态模式显示,此时点阵 ...

最新文章

  1. 计算机专业指南考试,电大计算机专业专科期末考试试卷《计算机专业指南》试卷...
  2. 问题 | FileNotFoundError: [Errno 2] No such file or directory: 'null'
  3. Kettle使用_4 Excel批量数据输入
  4. GitKraken - 简单教程
  5. 弹出数组第一个元素 php,弹出第一个元素数组以在php codeigniter中插入批处理
  6. MTV模型—urls和view
  7. centos6.6_vsftpd 虚拟账户FTP服务搭建
  8. 电脑开机无logo,进不了bios
  9. 在升龙备份方法_[求助]关于使用再生龙备份系统的问题
  10. 米签---个人中心页面功能(uniapp)
  11. Google工作10年的职场感悟
  12. 4.1 I/O流
  13. 如何设置word从某一页开始第一页页码?今天介绍给大家
  14. 开发神器,color-dev ,告别百度rgb转16进制和16进制转rgb
  15. ajax 泛微oa表单js_【泛微OA】付款报销单-检查部门是否填写以及调取明细表预算并计算差额...
  16. 计算机系统基础实验-LinkLab实验
  17. POJ 3133 Manhattan Wiring 笔记
  18. Alembic数据库迁移工具使用
  19. mac苹果屏幕截图快捷键
  20. 用独立思考与自我管理构建人生规划(在南方科技大学的演讲稿)

热门文章

  1. 贪心+二分+快速排序
  2. MySQLworkbench中PK,NN,UQ意思详解
  3. html5 css3冷色调渐变色特效
  4. 什么是数字图书馆——What is Digital Library?
  5. Rime添加Emoji输入方案
  6. uni-app个人中心页开发
  7. 《关键对话》思维导图
  8. Another exception was thrown: The PrimaryScrollController is currently attached to more than one Scr
  9. 简明c语言,简明易懂的C语言俄罗斯方块
  10. Kienct与Arduino学习笔记(1) 基础知识之Arduino’Kinect‘Processing