STM32CubeMX_SPI驱动数码管
来源:互联网 发布:mysql结构化查询语言 编辑:程序博客网 时间:2024/05/17 01:41
驱动4位共阳数码管 基于STM32F030C8T6
Cube设置
(RCC默认使用内部晶体,SYS使用WKUP2,和Serial_Debug,TimeBase选择Systick).
SPI1设置为半双工通讯,红线圈起来的是SPI通讯使用的3条线,MCU为主机,数码管为从机,蓝线圈起来的为驱动595使用的。
上面这个对话框的NVIC和DMA都无需设置.
现在可以生成代码了,对了,595_CS需要接地,MCU_NSS需要悬空。
//数码管位选
void SEG_BitSelect(u8 bit_number)
{
if(bit_number == 1)
{
DISP_REAL_H_OPEN;
}
else
{
DISP_REAL_H_CLOSE;
}
if(bit_number == 2)
{
DISP_REAL_L_OPEN;
}
else
{
DISP_REAL_L_CLOSE;
}
if(bit_number == 3)
{
DISP_SET_H_OPEN;
}
else
{
DISP_SET_H_CLOSE;
}
if(bit_number == 4)
{
DISP_SET_L_OPEN;
}
else
{
DISP_SET_L_CLOSE;
}
}
数码管段选
void SEG_Real_Display(u8 real,u8 set){ // u8 real_units_digit; //ʵ¼Êζȸöλ u8 real_tens_digit; //ʵ¼ÊζÈʮλ u8 set_units_digit; //ÉèÖÃζȸöλ u8 set_tens_digit; //ÉèÖÃζÈʮλ u16 j; real_tens_digit = real / 10; real_units_digit = real % 10; real_tens_digit = SEG_TAB[real_tens_digit]; real_units_digit = SEG_TAB[real_units_digit]; //========ÏÔʾʮλ================================================ DISP_RCLK_L; //ÖõÍRCLK HAL_SPI_Transmit(&hspi1,&real_tens_digit,1,SPI1_TX_TIMEOUT); //·¢ËÍʮλµÄÊý¾Ý DISP_RCLK_H; //À¸ßRCLK SEG_BitSelect(1); //Ñ¡Ôñ»ØˮζȵÄʮλÏÔʾ for(j = 0;j < 500;j ++); HAL_Delay(1);// while(1); SEG_BitSelect(0); //========ÏÔʾ¸öλ================================================ DISP_RCLK_L; //ÖõÍRCLK HAL_SPI_Transmit(&hspi1,&real_units_digit,1,SPI1_TX_TIMEOUT); //·¢Ë͸öλµÄÊý¾Ý DISP_RCLK_H; //À¸real_units_digit SEG_BitSelect(2); //Ñ¡Ôñ»ØˮζȵĸöλÏÔʾ for(j = 0;j < 500;j ++); HAL_Delay(1); SEG_BitSelect(0); set_tens_digit = real / 10; set_units_digit = real % 10; set_tens_digit = SEG_TAB[set_tens_digit]; set_units_digit = SEG_TAB[set_units_digit]; //========ÏÔʾʮλ================================================ DISP_RCLK_L; //ÖõÍRCLK HAL_SPI_Transmit(&hspi1,&set_tens_digit,1,SPI1_TX_TIMEOUT); //·¢ËÍʮλµÄÊý¾Ý DISP_RCLK_H; //À¸ßRCLK SEG_BitSelect(3); //Ñ¡Ôñ»ØˮζȵÄʮλÏÔʾ for(j = 0;j < 500;j ++); HAL_Delay(1);// while(1); SEG_BitSelect(0); //========ÏÔʾ¸öλ================================================ DISP_RCLK_L; //ÖõÍRCLK HAL_SPI_Transmit(&hspi1,&set_units_digit,1,SPI1_TX_TIMEOUT); //·¢Ë͸öλµÄÊý¾Ý DISP_RCLK_H; //À¸real_units_digit SEG_BitSelect(4); //Ñ¡Ôñ»ØˮζȵĸöλÏÔʾ for(j = 0;j < 500;j ++); HAL_Delay(1); SEG_BitSelect(0);}
u8 const SEG_TAB[13]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x79,0x40,0x00};//数码管字符码
主函数内引用:
SEG_Real_Display(i,i);具体细节不在此描述了!
阅读全文
0 0
- STM32CubeMX_SPI驱动数码管
- 74HC595驱动数码管
- TM1637驱动数码管
- 驱动数码管的实验
- lpc2131 arm 驱动数码管 程序
- Arduino 数码管LED屏驱动
- 595输出驱动数码管闪烁
- 第三节 FPGA驱动数码管
- LED数码管的驱动方式:静态驱动和动态驱动
- 74ls164驱动数码管(共阳)
- C51驱动数码管显示0~99
- 数码管的几种驱动方式汇总
- Arduino 数码管LED驱动 数组法
- Arduino 数码管LED驱动 读位法 16进制
- 51单片机数码管驱动(汇编版)
- 51单片机利用74HC595驱动数码管
- 大尺寸共阴数码管驱动电路
- 573锁存器驱动8段数码管
- spring 框架说明文档学习记录(3.5)
- rex run
- Oracle中保留两位小数
- #pragma warning(disable:4996)
- redis使用之操作(针对开发)
- STM32CubeMX_SPI驱动数码管
- C#中使用checked和unchecked整数运算
- Eclipse开发C/C++ 安装配置图文详解 [记录]
- Rails中的image_tag 辅助方法
- 工作这么久,该记录一下了
- AsyncTask
- jQuery是如何处理缓存的?
- Linux各个目录介绍
- opencv基础用法