|
发表于 2012-5-22 23:09:59
|
显示全部楼层
如果完全驱动数码管的话有点悬,电流太大,考虑用595芯片吧。
u8 Num_Display_char[4];
const unsigned char Num_Code[18]={
0x11, // 0
0x7d, // 1
0x89, // 2
0x29, // 3
0x65, // 4
0x23, // 5
0x03, // 6
0x79, // 7
0x01, // 8
0x21, // 9
0x41, // A
0x07, // B
0x8f, // C
0x0d, // D
0x83, // E
0xc3, // F
0x00,
0xFF,
};
void _74HC595_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//初始化八段管端口;
GPIO_InitStructure.GPIO_Pin = NUM_CLK|NUM_OE|NUM_SDA|NUM_ST;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(NUM_PORT, &GPIO_InitStructure);
//初始化DIG端口;
DIG0_DISABLE;
DIG1_DISABLE;
DIG2_DISABLE;
DIG3_DISABLE;
GPIO_InitStructure.GPIO_Pin = DIG0_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(DIG0_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = DIG1_Pin|DIG2_Pin|DIG3_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(DIG1_PORT, &GPIO_InitStructure);
}
void _74HC595_SPI_Write(unsigned char Num)
{
unsigned char dat_tmp1=Num,num;
NUM_OE_H;
//delayus(1);
NUM_ST_L;
//delayus(1);
//_1STCK=0;
for(num=0;num<8;num++)
{
NUM_CLK_L;
//delayus(1);
//_1SHCK=0;
if(dat_tmp1&0x80)
{
NUM_SDA_H;//_1SDA=1;
}
else
{
NUM_SDA_L;//_1SDA=0;
}
dat_tmp1<<=1;
//delayus(1);
NUM_CLK_H;
//delayus(1);//_1SHCK=1;
}
NUM_ST_L;
//delayus(1);
//_1STCK=0;
NUM_ST_H;
//delayus(1);
//_1STCK=1;
NUM_ST_L;
//delayus(1);//_1STCK=0;
NUM_OE_L;
} |
|