SPI实验 LED数码管

LED数码管(LED Segment Displays)是由8个发光二极管构成,并按照一定的图形及排列封装在一起的显示器件。其中7个LED构成7笔字形,1个LED构成小数点(固有时成为八段数码管)。

LED数码管有两大类,一类是共阴极接法,另一类是共阳极接法,共阴极就是7段的显示字码共用一个电源的负极,是高电平点亮 ,共阳极就是7段的显示字码共用一个电源的正极,是低电平点亮。

我们对数码管所要显示的每个数字和字母进行编码,然后在编程时,将编码放在一个数组上,需要显示什么数字或者字母,从数组里面提取相应的编码就可显示所要显示的字符了。

如图,要显示数字"5"时,编码为0x6D。如果数码管为共阳极,只需要对共阴极的编码做一个取反操作即可。


1、 原理图分析

视觉暂留

级联

(注:图中SPI4对应的即为SPI2)

由于数码管所需的管脚较多,我们使用SPI总线+74HC595芯片实现对数码管的控制。

74HC595是一款8位串行输入、并行输出的位移寄存器,在本次项目中,使用其将SPI串行传递过来的数据并行发送给对应数码管与显示位。SER为数据输入引脚。

我们本次所使用的是一款四段共阴极八位数码管,每个数码管的使能相对独立,各个数码管使用对应的三极管(NPN)进行使能控制。


2、手册分析

查看sn74hc595芯片手册可以得知,我们在SPI设置时需要设置的模式为极性0相位0。


3、STM32CubeMX配置


代码:

cpp 复制代码
void nixie_tube(){
	const uint8_t num1[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 0-9
	const uint8_t num2[] = {0x01,0x02,0x04,0x08}; // 对应4位数码管
	int i = 0,j = 0;
	uint8_t temp[2] = {0};

	for(i = 3;i >= 0;i--){ // 0-4位数码管
        temp[0] = num2[i];
		for(j = 0;j < 10;j++){ // 数字0-9
			HAL_GPIO_WritePin(spi2_ss_GPIO_Port,spi2_ss_Pin,GPIO_PIN_RESET);
			temp[1] = num1[j];
			HAL_SPI_Transmit(&hspi2,temp,2,200);
			HAL_GPIO_WritePin(spi2_ss_GPIO_Port,spi2_ss_Pin,GPIO_PIN_SET);
			HAL_Delay(1000); // delay
		}
	}
}
cpp 复制代码
/* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		nixie_tube();
  }
  /* USER CODE END 3 */

实现0-9循环,4位数码管循环


效果:

1

相关推荐
深圳老胡1 分钟前
STM32C5 系列 MCU 的 FreeRTOS 软件架构搭建指南:外设配置与应用实践
笔记·stm32·单片机·代码规范
霖霖71421 分钟前
【ESP32笔记】I2S的音频录制与播放
笔记·单片机·mcu·音视频
深圳市恒锐丰科技杨生29 分钟前
SS6200 半桥栅极驱动芯片|LeadPower 率能半导体
嵌入式硬件·硬件工程
HQB202630 分钟前
EG11732|屹晶微电子 30V 内置 80A 功率管大电流同步降压 DC‑DC
嵌入式硬件·硬件工程
LCG米31 分钟前
STM32 HardFault故障定位实测:压栈帧寄存器解析、CFSR故障源判读与出错地址回溯
前端·javascript·stm32·单片机·嵌入式
yuehuaxin011 小时前
LP3717BSL 芯茂微|SOP8L 自供电 PSR,SEL 电阻调峰值电流,12W 充电器物料替代评估笔记
嵌入式硬件·适配器模式·智能硬件
G***技12 小时前
杰和科技亮相中国工博会:嵌入式边缘AI驱动自动化场景落地
嵌入式硬件·边缘ai·工博会
QYR-分析14 小时前
汽车碳刷市场深度解析:存量维保支撑需求,电动化重塑行业格局
单片机·嵌入式硬件·汽车
沐欣工作室_lvyiyi14 小时前
基于单片机的升降式立体车库系统设计(论文+源码)
单片机·嵌入式硬件·毕业设计·rfid·单片机毕业设计·数据库设计·物联网毕业设计
碧海银沙音频科技研究院15 小时前
基于炬芯ATS3089X的BLE opus音频传输系统设计
stm32·单片机·嵌入式硬件