
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)


