stm32版八位串行595数码管.rar
(3.22 MB, 下载次数: 338)
- #include "sys.h" //点击魔术棒加入对应的文件夹地址,FWLIB里加入相应的头文件
- #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单字节串行移位函数
- void data_OUT(int data);
- 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 ();//串口数码管
- data_OUT(123456);
- // printf("love");
- }
- }
- /////////////////////////////////////////////////////////////////
- void LED4_Display (void)
- {
- unsigned char *led_table; // 查表指针
- uchar i;
- //显示第1位
- led_table = LED_0F + LED[0];
- i = *led_table;
- LED_OUT(i);
- LED_OUT(0x01);
- RCLK = 0;
- RCLK = 1;
- //显示第2位
- led_table = LED_0F + LED[1];
- i = *led_table;
- LED_OUT(i);
- LED_OUT(0x02);
- RCLK = 0;
- RCLK = 1;
- //显示第3位
- led_table = LED_0F + LED[2];
- i = *led_table;
- LED_OUT(i);
- LED_OUT(0x04);
- RCLK = 0;
- RCLK = 1;
- //显示第4位
- led_table = LED_0F + LED[3];
- i = *led_table;
- LED_OUT(i);
- LED_OUT(0x08);
- RCLK = 0;
- RCLK = 1;
- //显示第5位
- led_table = LED_0F + LED[4];
- i = *led_table;
- LED_OUT(i);
- LED_OUT(0x10);
- RCLK = 0;
- RCLK = 1;
- //显示第6位
- led_table = LED_0F + LED[5];
- i = *led_table;
- LED_OUT(i);
- LED_OUT(0x20);
- RCLK = 0;
- RCLK = 1;
- //显示第7位
- led_table = LED_0F + LED[6];
- i = *led_table;
- LED_OUT(i);
- LED_OUT(0x40);
- RCLK = 0;
- RCLK = 1;
- //显示第8位
- led_table = LED_0F + LED[7];
- i = *led_table;
- LED_OUT(i);
- LED_OUT(0x80);
- RCLK = 0;
- RCLK = 1;
- }
- 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] = 0;
- LED[6] = 0;
- LED[5] = data % 1000000 / 100000;
- LED[4] = data % 100000 / 10000;
- //
- LED[3] = data % 10000 / 1000;
- LED[2] = data % 1000 / 100;
- LED[1] = data % 100 / 10;
- LED[0] = data % 10;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- }
- unsigned char LED_0F[] =
- {// 0 1 2 3 4 5 6 7 8 9 A b C d E F -
- 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0xbf
- };
- ///////////////////////////////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
复制代码
|