2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 51单片机——LED点阵屏显示图形

51单片机——LED点阵屏显示图形

时间:2024-06-27 03:10:00

相关推荐

51单片机——LED点阵屏显示图形

1.前言

1.1 LED点阵屏介绍

LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等

LED点阵屏分类

按颜色:单色、双色、全彩

按像素:8*8、16*16等(大规模的LED点阵通常由很多个小点阵拼接而成)

1.2 显示原理

LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素以“8”字型排列而已

LED点阵屏与数码管一样,有共阴和共阳两种接法,不同的接法对应的电路结构不同

LED点阵屏需要进行逐行或逐列扫描,才能使所有LED同时显示

1.3 开发板引脚对应关系

点阵列P07到P00直接接到I/O口上,直接给P0口赋值就好了,点阵行D0到D7而是接到了8位的串行输入,并行输出的移位缓存器74HC595上。74HC595 可用3根线输入串行数据,8根线输出并行数据,多片级联后,可输出16位、24位、32位等,常用于IO口扩展。

(左:74HC595 右:LED点阵屏)

(--OE)为Output Enable低电平有效,简单来说(--OE)为低电平时才有输出(J24中GND与OE短接);P35,P36,P4控制右边QA到QH的输出; (--SRCLR)串行清零端,SRCLK串行时钟,SER串行数据,共同控制输出;QH'是用来多片级联的。

左:移位寄存器;右:输出缓存器

SER:串行数据,在时钟的激励下一个一个数据从这个引线中出去,给移位寄存器输入数据,SERCLK:串行时钟,时钟每来一个上升沿,数据就会向下移位,数据一位一位往下走;RCLK:寄存器时钟如果寄存器时钟有上升沿的话,就会把移位寄存器中的数据同时搬运到输出缓存器中去。

2.源码

#include <REGX52.H>sbit RCK=P3^5;//RCLKsbit SCK=P3^6;//SRCLKsbit SER=P3^4;//SER#define MATRIX_LED_PORTP0 //宏定义P0口//延时函数void Delay(unsigned int xms){unsigned char i,j;while(xms){i=2;j=239;do{while(--j);}while(--i);xms--;}}void _74HC595_WriteByte(unsigned char Byte){unsigned char i;for(i=0;i<8;i++){SER=Byte&(0x80>>i);SCK=1;//时钟每来一个上升沿,数据就会往下移,循环8次,//把发送来的串行数据全部放到移位寄存中去;SCK=0;//为下次移位做准备;}RCK=1; //把移位寄存器的数据搬运到输出缓存器中;RCK=0;}void MatrixLED_ShowColumn(unsigned char Column,Data){_74HC595_WriteByte(Data);MATRIX_LED_PORT=~(0x80>>Column);//选中列; 1000 0000取反0111 1111即选中第一列Delay(1);MATRIX_LED_PORT=0xFF;//消影}void main(){SCK=0;//单片机上电初始化后,所有I/O口都为高电平,所以上电后RCLK和SRCLK要置零;RCK=0;while(1){//MatrixLED_ShowColumn(0,0x24);//显示第一列MatrixLED_ShowColumn(1,0x18);//显示第二列MatrixLED_ShowColumn(2,0x24);MatrixLED_ShowColumn(3,0x22);MatrixLED_ShowColumn(4,0x11);MatrixLED_ShowColumn(5,0x22);MatrixLED_ShowColumn(6,0x24);MatrixLED_ShowColumn(7,0x18);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。