13_LED点阵屏
2025-09-05 来源:cnblogs
介绍

显示原理

原理图


74HC595

C51的sfr,sbit

选择列来显示矩阵LED
main.c
#include #inlcude 'Delay.h' sbit mRCLK=P3^5; //RCLK sbit mSRCLK=P3^6; //SRCLK sbit mSER=P3^4; //SER void _74HC595_WriteByte(unsigned char Byte) { unsigned char i; mSRCLK=0; mRCLK=0; for(i=0;i<8;i++) { mSER=Byte&(0x80>>i); //sbit非0置1 mSRCLK=1; mSRCLK=0; } mRCLK=1; } void MatrixLED_ShowColumn(unsigned char Column, Data) { _74HC595_WriteByte(Data); P0=~(0x80>>Column); } void main() { MatrixLED_ShowColumn(7,0xF0); while(1) { } } 运行效果 矩阵LED显示笑脸 main.c #include #include 'Delay.h' sbit mRCLK=P3^5; //RCLK sbit mSRCLK=P3^6; //SRCLK sbit mSER=P3^4; //SER #define MATRIX_LED_PORT P0 /** * @brief 74HC595写入一个字节 * @param 要写入的字节 * @retval 无 */ void _74HC595_WriteByte(unsigned char Byte) { unsigned char i; mSRCLK=0; mRCLK=0; for(i=0;i<8;i++) { mSER=Byte&(0x80>>i); //sbit非0置1 mSRCLK=1; mSRCLK=0; } mRCLK=1; } /** * @brief LED点阵屏显示一列数据 * @param Column 要选择的列, 范围: 0~7, 0在最左边 * @param Data 选择列显示的数据, 高位在上, 1为亮,0为灭 * @retval 无 */ void MatrixLED_ShowColumn(unsigned char Column, Data) { _74HC595_WriteByte(Data); MATRIX_LED_PORT=~(0x80>>Column); Delay(1); MATRIX_LED_PORT=0xFF; } void main() { while(1) { MatrixLED_ShowColumn(0,0x3C); MatrixLED_ShowColumn(1,0x42); MatrixLED_ShowColumn(2,0xA9); MatrixLED_ShowColumn(3,0x85); MatrixLED_ShowColumn(4,0x85); MatrixLED_ShowColumn(5,0xA9); MatrixLED_ShowColumn(6,0x42); MatrixLED_ShowColumn(7,0x3C); } } 运行效果 矩阵LED显示流动字幕 MatrixLED.c #include #include 'Delay.h' sbit mRCLK=P3^5; //RCLK sbit mSRCLK=P3^6; //SRCLK sbit mSER=P3^4; //SER #define MATRIX_LED_PORT P0 /** * @brief 74HC595写入一个字节 * @param 要写入的字节 * @retval 无 */ void _74HC595_WriteByte(unsigned char Byte) { unsigned char i; mSRCLK=0; mRCLK=0; for(i=0;i<8;i++) { mSER=Byte&(0x80>>i); //sbit非0置1 mSRCLK=1; mSRCLK=0; } mRCLK=1; } /** * @brief LED点阵屏显示一列数据 * @param Column 要选择的列, 范围: 0~7, 0在最左边 * @param Data 选择列显示的数据, 高位在上, 1为亮,0为灭 * @retval 无 */ void MatrixLED_ShowColumn(unsigned char Column, Data) { _74HC595_WriteByte(Data); MATRIX_LED_PORT=~(0x80>>Column); Delay(1); MATRIX_LED_PORT=0xFF; } MatrixLED.h #ifndef __MATRIX_LED_H__ #define __MATRIX_LED_H__ void _74HC595_WriteByte(unsigned char Byte); void MatrixLED_ShowColumn(unsigned char Column, Data); #endif main.c #include #include 'MatrixLED.h' unsigned char code Animation[]={ //放入Flash不占用内存,但是只读 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xFF,0x08,0x08,0xFF,0x00,0x0E,0x15,0x15,0x0D,0x00,0xFE,0x01,0x02,0x00,0xFE,0x01, 0x02,0x00,0x0E,0x11,0x11,0x0E,0x00,0x7D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; void main() { unsigned char i,Offset=0,Count=0; while(1) { for(i=0;i<8;i++) { MatrixLED_ShowColumn(i,Animation[i+Offset]); } Count++; if(Count>10) { Count=0; Offset++; if(Offset>32) { Offset=0; } } } } 运行效果

上一篇:12_串口通信
下一篇:14_DS1302实时时钟
- 艾迈斯欧司朗与美志光电就Spider Farmer灯具所用LED专利纠纷达成和解
- 亮度超50000nits!天马成功点亮12英寸Micro-LED高亮车载显示屏
- e络盟与 Fulham 宣布建立全球分销合作伙伴关系
- 聚积科技前进2026慕尼黑车灯展 以「闪耀你的光芒」定义次世代车用照明新美学
- LED产业百花怒放ISE 2026,聚积科技驱动LED应用不设限
- 丰田合成开发可在车内投射动态图案的LED灯组照明
- 艾迈斯欧司朗推出专为智能眼镜优化的紧凑型RGGB LED解决方案
- 艾迈斯欧司朗推出以人眼安全为核心设计准则的LED驱动芯片方案
- 艾迈斯欧司朗与合作伙伴联合推出可大幅降低二氧化碳排放的纸质卷盘LED运输解决方案
- 共创生态高效汽车照明制造:艾迈斯欧司朗携手DP Patterning助力智能LED控制
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 蓝牙信道探测技术原理与开发套件实践
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策




