接上文,首先程序也是参考了论坛里各位前辈改的。我用的芯片是stm32f410RB,自己画的板子。也是STM32CubeMX配置的,HAL库编写,SPI驱动2片74HC595显示2位数码管。 /*****定义部分******/ uint8_t TX_data[2]={ }; uint8_t data[]={ 0xFC,/*0*/ 0x60,/*1*/ 0xDA,/*2*/ 0xF2,/*3*/ 0x66,/*4*/ 0xB6,/*5*/ 0xBE,/*6*/ 0xE0,/*7*/ 0xFE,/*8*/ 0xF6,/*9*/ 0xEE,/*A*/ 0x3E,/*b*/ 0x9C,/*C*/ 0x7A,/*d*/ 0x9E,/*E*/ 0x8E,/*F*/ 0x6E,/*H*/ 0xBC,/*G*/ 0x2E,/*h*/ 0x1A,/*c*/ 0x70,/*J*/ 0x1C,/*L*/ 0x2A,/*n*/ 0xEC,/*N*/ 0x3A,/*c*/ 0xCE,/*P*/ 0xE6,/*q*/ 0x0A,/*r*/ 0x1E,/*t*/ 0x7C,/*U*/ 0x02,/*-*/ 0x10,/*_*/ 0x00,/*空*/ }; uint16_t num = 0; /****************/ /******主程序*********/ int main(void) { TX_data[0]=data[1];//显示1 TX_data[1]=data[11];显示b HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_SPI1_Init(); while (1) { hc74959_display(num); } } /****************/ /*****595控制部分*****/ void hc74959_display(uint16_t num) { { HAL_SPI_MspInit(&hspi1);//使能SPI1 HAL_SPI_Transmit(&hspi1,TX_Data,2,100); } /* 让锁存输出一个高电平脉冲 */ HAL_GPIO_WritePin(LAT_GPIO_Port, LAT_Pin ,GPIO_PIN_SET); HAL_Delay(100); HAL_GPIO_WritePin(LAT_GPIO_Port, LAT_Pin , GPIO_PIN_RESET); HAL_Delay(100); HAL_GPIO_WritePin(LAT_GPIO_Port,LAT_Pin , GPIO_PIN_SET); } /****************/ 结果只显示1位字母b,另1位数码管灭,如图1 但是把主程序里改为 int main(void) { //TX_data[0]=data[1];//显示1 屏蔽 TX_data[1]=data[11];显示b HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_SPI1_Init(); while (1) { hc74959_display(num); } },结果2位数码管同时显示字母b,如图2 ,请问有明白的大佬吗? |
STM32 Bootloader提问
最近又没有stm32开发板申请了,什么时候安排?
目前新项目,MCU采用STM32F407VGT6,文件存在TF卡(SDIO),请问能否通过F4的USB把TF卡里面的txt和excel文件拷贝到U盘?哪个USB可以实现?
STM32F407ZGT6假死现象,看门狗不起作用
STM32F407VGT6使用PLL倍频后芯片会反复重启
CAN接收丢包
使用Cubeprogrammer无法连接、连接G431和一块H750的板子可以连上但是连另外一块H750的板子和F407的板子就直接报错,这个应该如何解决。
SPI 通信,既有单字节数据传输,又有多字节数据传输,该如正确使用 DMA?
SD卡log存储
STM32F413ZGT6的NRST需要接上拉电阻吗
原理是分时复用动态扫描显示数码管,程序却是独立显示的程序。
把原理图改了一下,现在可以了。多谢!
多谢参与讨论!
今天改了原理图,把程序烧进去,显示又不对了,过了2个月,居然忘了当时是怎么弄好的了,请帮忙救急!看是不是原理图哪错了,程序应该是没有问题。万分感谢!
没看出来有什么问题,595的12脚接哪去了?不要悬空,这个是锁存位,要么单接个时钟,要么与移位时钟连上。
12脚接的是stm32的一个普通IO,当时钟信号用。
好歹看看手册,把串行移位时钟和锁存时钟分清楚。
串行移位时钟的作用下,在时钟上升沿时将输入的串口数据位打入芯片。
如果有锁存时钟,将把内部移位寄存器数据,发送到Q0--Q7锁住。
已解决,原因是数码管取模不对。特此记录,以防止下次遗忘。
//共阴数码管段选表,有小数点:(8位共阴)
unsigned char code distab[16] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1};