- 博客(0)
- 资源 (1)
空空如也
stm32版八位串行595数码管
stm32版八位串行595数码管
#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
};
///////////////////////////////////////////////////////////////////////////////////////////////
2015-03-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人