失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 51单片机系列--led点阵屏显示汉字

51单片机系列--led点阵屏显示汉字

时间:2021-05-26 19:57:23

相关推荐

51单片机系列--led点阵屏显示汉字

LED 点阵是由发光二极管排列组成的显示器件。

通常应用较多的是 8* 8 点阵,通过进行对不同位置的点亮与熄灭,构成一个图案,这一点也被应用到了电视机的显示屏上。下面是点阵屏的原理图

它的DPa到DPh引脚分别对应了侧排的引脚(引脚为高电平,控制P0号引脚低电平即可点亮二极管),采用74HC595串转并芯片,需要在使用过程中对595的3个输入端进行控制。

跳线帽OE:OE, 输出使能控制脚,它是低电才使能输出,所以接GND,OE端会被GND下拉为0。

P34-SER:代表串行输入,我们串行输入就是把数据放到这。

P35-SCK :上升沿移位,即RCK从0-1电位变化会让数据往下移一位

P36-RCK:上升沿锁存,搬运工,即SCK从0-1电位变化会把数据搬运到芯片输出端

其中:SER负责将数据输入,SCK上升沿触发后数据插入队列,RCK则会锁存复制到输出端队列当中。

可以用取字模软件进行取模,下载链接在文末,下面是操作例图:

程序:

#include <reg52.h>#include <intrins.h>typedef unsigned char u8; // 重命名类型u8简化代码编写typedef unsigned int u16;#define MATRIX_PORTP0// 点阵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}; //位选控制哪个亮、段选控制输入内容u8 gZhong[] = {0x00,0x3C,0x52,0x52,0x7E,0x12,0x10,0x00};/*"中",0*/void delay(u16 i);void Hc595SendByte(u8 dat);void MatrixDisplay(u8 *zimo);void delay(u16 i){while(i--);}/********************************************************************** 函 数 名 : main* 函数功能 : 主函数* 参数列表 : 无* 函数输出: 无*********************************************************************/void main(void){MatrixDisplay(gZhong);}/********************************************************************** 函 数 名 : MatrixDisplay* 函数功能 : 循环刷新显示字模到点阵上* 参数列表 : zimo - 待显示的字模数组* 函数输出: 无*********************************************************************/void MatrixDisplay(u8 *zimo){u8 i = 0;while (1){for(i=0;i<8;i++){MATRIX_PORT = gLineCode[i]; // 位选Hc595SendByte(zimo[i]);// 发送段选数据delay(100);Hc595SendByte(0x00); // 消隐}break;}}/********************************************************************** 函 数 名 : 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指令_nop_();j++;// 延时代码,等同于nop指令SCK = 0;}RCK = 1;j++;// 延时代码,等同于nop指令j++;// 延时代码,等同于nop指令}

效果图:

取字模软件下载

如果觉得《51单片机系列--led点阵屏显示汉字》对你有帮助,请点赞、收藏,并留下你的观点哦!

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