Advertisement

STM32版八位串行595数码管

  • 5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本项目是一款基于STM32微控制器的八位串行595驱动芯片控制数码管显示方案。通过高效编程实现复杂动态显示效果,适用于各种数字显示应用场景。 以下是重新编排后的STM32版八位串行595数码管的代码: ```c #include sys.h #include delay.h #include usart.h #include led.h #include key.h unsigned char fseg[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; unsigned char segbit[] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01}; unsigned char disbuf[8] = {0, 0, 0, 0, 0, 0, 0, 0}; #define uchar unsigned char #define DIO LED0 //串行数据输入 #define RCLK LED1 //时钟脉冲信号——上升沿有效 #define SCLK LED2 //打入信号————上升沿有效 void LED4_Display(void); //LED显示函数声明 void LED_OUT(uchar X); //LED单字节串行移位函数声明 unsigned char LED_0F[]; //LED字模表定义 //全局变量定义 uchar LED[8]; //用于LED的8位显示缓存 int main(void) { u8 t = 0; delay_init(); //延时初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); //串口初始化为9600 LED_Init(); KEY_Init(); LED[0] = 0; LED[1] = 2; LED[2] = 3; LED[3] = 4; LED[4] = 5; LED[5] = 6; LED[6] = 7; LED[7] = 8; while(1) { LED4_Display(); //调用LED显示函数 data_OUT(123456); //输出数字到数码管 } } void LED4_Display(void){ unsigned char *led_table; //查表指针定义 uchar i; led_table = LED_0F + LED[0]; i = *led_table; LED_OUT(i); LED_OUT(0x01); RCLK = 0, RCLK = 1; //重复上述过程,显示剩余的7位数码管 } void LED_OUT(uchar X){ uchar i; for (i=8; i>=1; i--) { if(X & 0x80) DIO = 1; else DIO = 0; X <<= 1; SCLK = 0, SCLK = 1; } } void data_OUT(int data){ LED[7] = (data / 10000); LED[6] = ((data % 10000) / 100); LED[5] = ((data % 100) / 1); } ``` 以上代码实现了基于STM32的八位串行595数码管显示功能,其中包含了初始化、延时函数调用以及主循环中的数字输出到LED。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • STM32595
    优质
    本项目是一款基于STM32微控制器的八位串行595驱动芯片控制数码管显示方案。通过高效编程实现复杂动态显示效果,适用于各种数字显示应用场景。 以下是重新编排后的STM32版八位串行595数码管的代码: ```c #include sys.h #include delay.h #include usart.h #include led.h #include key.h unsigned char fseg[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; unsigned char segbit[] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01}; unsigned char disbuf[8] = {0, 0, 0, 0, 0, 0, 0, 0}; #define uchar unsigned char #define DIO LED0 //串行数据输入 #define RCLK LED1 //时钟脉冲信号——上升沿有效 #define SCLK LED2 //打入信号————上升沿有效 void LED4_Display(void); //LED显示函数声明 void LED_OUT(uchar X); //LED单字节串行移位函数声明 unsigned char LED_0F[]; //LED字模表定义 //全局变量定义 uchar LED[8]; //用于LED的8位显示缓存 int main(void) { u8 t = 0; delay_init(); //延时初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); //串口初始化为9600 LED_Init(); KEY_Init(); LED[0] = 0; LED[1] = 2; LED[2] = 3; LED[3] = 4; LED[4] = 5; LED[5] = 6; LED[6] = 7; LED[7] = 8; while(1) { LED4_Display(); //调用LED显示函数 data_OUT(123456); //输出数字到数码管 } } void LED4_Display(void){ unsigned char *led_table; //查表指针定义 uchar i; led_table = LED_0F + LED[0]; i = *led_table; LED_OUT(i); LED_OUT(0x01); RCLK = 0, RCLK = 1; //重复上述过程,显示剩余的7位数码管 } void LED_OUT(uchar X){ uchar i; for (i=8; i>=1; i--) { if(X & 0x80) DIO = 1; else DIO = 0; X <<= 1; SCLK = 0, SCLK = 1; } } void data_OUT(int data){ LED[7] = (data / 10000); LED[6] = ((data % 10000) / 100); LED[5] = ((data % 100) / 1); } ``` 以上代码实现了基于STM32的八位串行595数码管显示功能,其中包含了初始化、延时函数调用以及主循环中的数字输出到LED。
  • 基于STM32595驱动三个(含标准库与HAL库本)
    优质
    本项目提供使用STM32微控制器通过74HC595芯片驱动三个共阳极数码管的代码,涵盖标准固件库和HAL库两种实现方式。 使用595芯片驱动数码管可以为单片机节省IO口资源。这种设计不仅稳定可靠,还能有效节约单片机的硬件资源,因此强烈推荐采用这种方法。
  • 字密与常见
    优质
    本文探讨了八位数字密码的安全性及人们常用的八位密码模式,分析其潜在风险并提供安全建议。 此资源包含00000000-99999999的纯数字记录,并附带Python字典生成代码。最后一个文件中包括32条常用WiFi密码。
  • STM32)TM1637四显示
    优质
    本项目介绍如何使用STM32微控制器驱动TM1637芯片控制四位数码管进行数字和自定义字符显示,适用于电子时钟、测量仪器等应用。 在主函数`int main(void)`里执行了一系列初始化操作后进入一个无限循环: 1. 首先调用 `delay_init()` 函数进行延时功能的初始化。 2. 使用 `NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);` 设置了中断管理器 NVIC 的优先级分组,具体设置为 2位抢占优先级和 2位响应优先级。 3. 调用 `uart_init(115200)` 函数初始化串口通信至波特率为115200bps。 4. 执行了 `LED_Init()` 来配置与 LED 相连的硬件接口。 5. 紧接着调用了 `TM1637_Init();` 初始化 TM1637 显示模块。 在循环中,每执行一次以下操作: - 延时 1 毫秒通过函数 `delay_ms(1);` - 执行显示功能:首先使用 `TM1637_NixieTubeDisplay()` 更新所有位的数值。 - 分别设置四位数管显示器上每一个位置要显示的具体数字: - 第一个位置(从左到右)显示 1,通过调用`TM1637_NixieTubeDisplayChar(1,0);` - 第二个位置显示 2, 由 `TM1637_NixieTubeDisplayChar(2,1);` 实现 - 第三个位置显示 3,使用了函数 `TM1637_NixieTubeDisplayChar(3,2);` - 最后一个(即第四个)位置则被设置为显示数字 “4”,通过调用 `TM1637_NixieTubeDisplayChar(4,3);` 完成。 以上描述的程序逻辑用于控制硬件设备,如LED和数显管显示器,并且以每毫秒一次的速度更新显示内容。
  • 的密
    优质
    《八位数的密码锁》是一部扣人心弦的故事,围绕一个神秘的八位数密码锁展开,牵扯出一系列复杂的谜团与人性考验。 基于Multisim的八位开关数字密码锁可以重新设置密码。
  • 基于Verilog的显示实现
    优质
    本项目采用Verilog硬件描述语言设计并实现了八位数码管显示系统,适用于数字电路和FPGA开发中的数值与字符展示需求。 用Verilog实现一个八位数码管显示模块,该模块输入BCD码即可进行显示。
  • 可调式的电子时钟
    优质
    这款可调式八位数码管电子时钟采用先进的数字技术,具备清晰的大尺寸显示屏幕,支持时间调节与校准功能。适用于多种场景,提供精准的时间管理解决方案。 按K1键、K2键和K3键分别可以将时钟的小时、分钟和秒钟各增加一;按K4键进行确认操作。