单片机交流
直播中

蔡鼎瑾

7年用户 1013经验值
私信 关注
[问答]

如何使用74HC595在LED阵列上显示数字“0-9”?

如何使用74HC595在LED阵列上显示数字“0-9”?

回帖(1)

王利祥

2021-11-2 11:23:32
  本文介绍使用74HC595在LED阵列上,显示数字“0-9”的方法。
   一、数字字模0-9

  1、0的字模:0x80、0xB6、0x80
  
行        列
2
1
0
0
0
0
0
1
0
1
0
2
0
1
0
3
0
1
0
4
0
1
0
5
0
1
0
6
0
0
0
7
1
1
1
2、1的字模0xFF、0x80、0xFF
  
行        列
2
1
0
0
1
0
1
1
1
0
1
2
1
0
1
3
1
0
1
4
1
0
1
5
1
0
1
6
1
0
1
7
1
1
1
3、2的字模0x86、0xB6、0xB0
  
行        列
2
1
0
0
0
0
0
1
1
1
0
2
1
1
0
3
0
0
0
4
0
1
1
5
0
1
1
6
0
0
0
7
1
1
1
4、3的字模0xB6、0xB6、0x80
  
行        列
2
1
0
0
0
0
0
1
1
1
0
2
1
1
0
3
0
0
0
4
1
1
0
5
1
1
0
6
0
0
0
7
1
1
1
5、4的字模0xF0、0xF7、0x80
  
行        列
2
1
0
0
0
1
0
1
0
1
0
2
0
1
0
3
0
0
0
4
1
1
0
5
1
1
0
6
1
1
0
7
1
1
1
6、5的字模0xB0、0xB6、0x86
  
行        列
2
1
0
0
0
0
0
1
0
1
1
2
0
1
1
3
0
0
0
4
1
1
0
5
1
1
0
6
0
0
0
7
1
1
1
7、6的字模0x80、0xB6、0x86
  
行        列
2
1
0
0
0
0
0
1
0
1
1
2
0
1
1
3
0
0
0
4
0
1
0
5
0
1
0
6
0
0
0
7
1
1
1
8、7的字模0xFE、0xFE、0x80
  
行        列
2
1
0
0
0
0
0
1
1
1
0
2
1
1
0
3
1
1
0
4
1
1
0
5
1
1
0
6
1
1
0
7
1
1
1
9、8的字模0x80、0xB6、0x80
  
行        列
2
1
0
0
0
0
0
1
0
1
0
2
0
1
0
3
0
0
0
4
0
1
0
5
0
1
0
6
1
0
0
7
1
1
1
10、9的字模0xB0、0xB6、0x80
  
行        列
2
1
0
0
0
0
0
1
0
1
0
2
0
1
0
3
0
0
0
4
1
1
0
5
1
1
0
6
0
0
0
7
1
1
1
二、编程实现倒计时


int main(void)
{
        //定义局部变量
       
        //目标板初始化,该函数会自动初始化相应的外设文件       
        TARGET_Init();
       
        //初始化全局变量       
               
        //在上电时,执行的相应操作       
                       
        //后台主循环
        while(1)
        {
                /*
                **********************************
                在这里完成自己的项目逻辑
                **********************************
                */       
                HC595_WriteByte(0xB0);        //9
                HC595_WriteByte(0xB6);
                HC595_WriteByte(0x80);
                HC595_SELECT;
                TARGET_Delayms(1000, 1);
                HC595_WriteByte(0x80);        //8
                HC595_WriteByte(0xB6);
                HC595_WriteByte(0x80);
                HC595_SELECT;
                TARGET_Delayms(1000, 1);
                HC595_WriteByte(0xFE);        //7
                HC595_WriteByte(0xFE);
                HC595_WriteByte(0x80);
                HC595_SELECT;
                TARGET_Delayms(1000, 1);
                HC595_WriteByte(0x80);        //6
                HC595_WriteByte(0xB6);
                HC595_WriteByte(0x86);
                HC595_SELECT;
                TARGET_Delayms(1000, 1);
                HC595_WriteByte(0xB0);        //5
                HC595_WriteByte(0xB6);
                HC595_WriteByte(0x86);
                HC595_SELECT;
                TARGET_Delayms(1000, 1);
                HC595_WriteByte(0xF0);        //4
                HC595_WriteByte(0xF7);
                HC595_WriteByte(0x80);
                HC595_SELECT;
                TARGET_Delayms(1000, 1);
                HC595_WriteByte(0xB6);        //3
                HC595_WriteByte(0xB6);
                HC595_WriteByte(0x80);
                HC595_SELECT;
                TARGET_Delayms(1000, 1);
                HC595_WriteByte(0x86);        //2
                HC595_WriteByte(0xB6);
                HC595_WriteByte(0xB0);
                HC595_SELECT;
                TARGET_Delayms(1000, 1);
                HC595_WriteByte(0xFF);        //1
                HC595_WriteByte(0x80);
                HC595_WriteByte(0xFF);
                HC595_SELECT;
                TARGET_Delayms(1000, 1);
                HC595_WriteByte(0x80);        //0
                HC595_WriteByte(0xBE);
                HC595_WriteByte(0x80);
                HC595_SELECT;
                TARGET_Delayms(1000, 1);                               
                /*
                **********************************
                喂狗语句,大部分工程项目都不应去除
                **********************************
                */       
                #if INTERNAL_PERIPHERAL_WDT_MODE != 0
                        TARGET_WatchDogReset();
                #endif
        }
        return 0;        //永不执行
}
三、程序的优化


#ifndef HAL_H_
#define HAL_H_

//引脚定义

//PortB
#define IO_PB_DIR         0b00000000
#define IO_PB_OUT         0b00000000                       



//PortC
#define IO_PC_DIR         0b00000000
#define IO_PC_OUT         0b00000000               




//PortD
#define IO_PD_DIR         0b00000000
#define IO_PD_OUT         0b00000000


       
//函数原型声明
void ShowNumber(uint8 u8_Number);

#endif /* HAL_H_ */

  任何问题,只需在此文章的评论处留言即可,我将尽力解答,不要试图采用其它的联系方式,我一概不理会。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分