#include "seg.h"
#include "delay.h"
unsigned char dis_code[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void seg7_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_10|GPIO_Pin_9|GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_4|GPIO_Pin_3|GPIO_Pin_2|GPIO_Pin_1|GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
SEG0=1;SEG1=1;SEG2=1;SEG3=1;
}
void seg7_display(unsigned char data)
{
SEG0=0;SEG1=0;SEG2=0;SEG3=0;
GPIOC->ODR&=0xFF00;
GPIOC->ODR |=dis_code[data];
//delay_ms(2);
}
void seg7_display_single(unsigned char data,unsigned char index)
{
switch(index)
{
case 1: SEG0=0;SEG1=1;SEG2=1;SEG3=1; break;
case 2: SEG0=1;SEG1=0;SEG2=1;SEG3=1; break;
case 3: SEG0=1;SEG1=1;SEG2=0;SEG3=1; break;
case 4: SEG0=1;SEG1=1;SEG2=1;SEG3=0; break;
default: SEG0=1;SEG1=1;SEG2=1;SEG3=1; break;
}
GPIOC->ODR&=0xFF00;
GPIOC->ODR |=dis_code[data];
// delay_ms(200);
}
void seg7_display_mulit(unsigned int data)
{
if(data<9999)
{
unsigned int temp;
temp = data % 10;
seg7_display_single(temp,4);
delay_ms(2);
temp = (data / 10) % 10;
seg7_display_single(temp,3);
delay_ms(2);
temp = (data / 100) % 10;
seg7_display_single(temp,2);
delay_ms(2);
temp = (data / 1000) % 10;
seg7_display_single(temp,1);
delay_ms(2);
}
}
#include "delay.h"
unsigned char dis_code[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void seg7_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_10|GPIO_Pin_9|GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_4|GPIO_Pin_3|GPIO_Pin_2|GPIO_Pin_1|GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
SEG0=1;SEG1=1;SEG2=1;SEG3=1;
}
void seg7_display(unsigned char data)
{
SEG0=0;SEG1=0;SEG2=0;SEG3=0;
GPIOC->ODR&=0xFF00;
GPIOC->ODR |=dis_code[data];
//delay_ms(2);
}
void seg7_display_single(unsigned char data,unsigned char index)
{
switch(index)
{
case 1: SEG0=0;SEG1=1;SEG2=1;SEG3=1; break;
case 2: SEG0=1;SEG1=0;SEG2=1;SEG3=1; break;
case 3: SEG0=1;SEG1=1;SEG2=0;SEG3=1; break;
case 4: SEG0=1;SEG1=1;SEG2=1;SEG3=0; break;
default: SEG0=1;SEG1=1;SEG2=1;SEG3=1; break;
}
GPIOC->ODR&=0xFF00;
GPIOC->ODR |=dis_code[data];
// delay_ms(200);
}
void seg7_display_mulit(unsigned int data)
{
if(data<9999)
{
unsigned int temp;
temp = data % 10;
seg7_display_single(temp,4);
delay_ms(2);
temp = (data / 10) % 10;
seg7_display_single(temp,3);
delay_ms(2);
temp = (data / 100) % 10;
seg7_display_single(temp,2);
delay_ms(2);
temp = (data / 1000) % 10;
seg7_display_single(temp,1);
delay_ms(2);
}
}