原理图和程序,都是参考了论坛里各位老师的帖子拼凑而来。SPI驱动2片74hc595静态显示数码管。预想是2位数码管分别显示1和b,现在分别显示不对。不知道是什么原因。 /*****定义部分******/ 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); } /****************/ |
STM32F407 定时器触发DMA 求助大神
【MCU实战经验】基于STM32F407的音频播放器设计
盘古UE-STM32F407工控板原理图
【STM32F429心得\疑问】+STM32F4之FSMC和FMC
STM32F429读取IO口传输的数据速率
STM32F407ZGT6 手摸芯片背部重启
STM32F4 SPI 动作时,软件片选信号被拉高,IO口程序逻辑失控
STM32F401RE NUCLEO求助,串口一直不能进中断
读取STM32F407内部温度传感器值错误
STM32F429多路内部ADC独立采集的办法
万分感谢,已解决,原因是数码管取模不对。特此记录,以防止下次遗忘。
//共阴数码管段选表,有小数点:(8位共阴)
unsigned char code distab[16] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1};