初级会员

- 积分
- 100
- 金钱
- 100
- 注册时间
- 2015-11-2
- 在线时间
- 4 小时
|
5金钱
显示的程序一切正常,也就输入的程序正确,但读取数据没有一直为零
高人给指点一下。
//=======================================================================================
void TM1638_Init()
{ int i=0;
RCC->APB2ENR|=1<<2; //使能PORTA时钟
GPIOA->CRL&=0XFFFFF000;
GPIOA->CRL|=0X00000333;//PA8 推挽输出
GPIOA->ODR|=7; //PA8 输出高 Write_Cmd(0x8a);
Write_Cmd(0x8a);
Write_Cmd(0x40);
for(i=0;i<16;i++){
Write_Byte(0x00);
}
}
//=======================================================================================
void Write_Cmd(u8 cmd)
{ STB=1;
STB=0;
Write_Byte(cmd);
}
//=======================================================================================
void Write_Byte(u8 byte)
{ u8 i=0;
for(i=0;i<8;i++){
CLK=0;
if(byte&0x01){
DI=1;
}else{
DI=0;
}
CLK=1;
byte>>=1;
}
}
//=======================================================================================
unsigned char TM1638_Read(void)
{
unsigned char i=0;
unsigned char temp=0x00;
for(i=0;i<8;i++)
{ CLK=1;
temp>>=1;
if(DO)
{ temp|=0x80;
}
CLK=0;
}
return temp;
}
unsigned char Read_key(void)
{
unsigned char c[4],i;
STB=1;
STB=0;
Write_Byte(0x42);
RCC->APB2ENR|=1<<2; //使能PORTA时钟
GPIOA->CRL&=0XFFFFF000;
GPIOA->CRL|=0X00000833;//PA8 推挽输出
GPIOA->ODR|=3; //PA8 输出高 Write_Cmd(0x8a);
for(i=0;i<4;i++)
{ c=TM1638_Read();
}
// STB=1;
return i;
}
//=======================================================================================
void Write_Dat(u8 addr,u8 dat)
{ Write_Cmd(0x44);
Write_Cmd(0xc0|addr);
Write_Byte(dat);
}
//=======================================================================================
u8 dat[10]= {0,1,2,3,4,5,6,7,8,9} ;
u8 const tm_dat[10]= {0xEB,0x28,0x73,0x7A,0xB8,0xDA,0XDB,0x68,0XFB,0XFA} ;
void H_L(void)
{
u8 P=0;
u8 C=0,b;
for (C=0;C<8;C++)
{ for (b=0;b<8;b++)
{ P=((tm_dat[dat[9]]>>C)&0x01)+((tm_dat[dat[8]]>>C)&0x01)*2+((tm_dat[dat[7]]>>C)&0x01)*4+((tm_dat[dat[6]]>>C)&0x01)*8;
P=P+((tm_dat[dat[5]]>>C)&0x01)*16+((tm_dat[dat[4]]>>C)&0x01)*32+((tm_dat[dat[3]]>>C)&0x01)*64+((tm_dat[dat[2]]>>C)&0x01)*128;
}
Write_Dat(C*2,P) ;
}
for (C=0;C<8;C++)
{ for (b=0;b<2;b++)
{ P=((tm_dat[dat[1]]>>C)&0x01)+((tm_dat[dat[0]]>>C)&0x01)*2;
}
Write_Dat(C*2+1,P) ;
}
}
//=======================================================================================
|
|