OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4166|回复: 3

TM1638 与STM32F103通讯

[复制链接]

12

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2015-11-2
在线时间
4 小时
发表于 2015-12-23 11:39:01 | 显示全部楼层 |阅读模式
5金钱
参照网上程序所学的程序。输出LED显示正常,但读取键盘值不对,
请大家给指导一下。
问题出地哪里?

void TM1638_Init()  
{   int i=0;
RCC->APB2ENR|=1<<2;    //使能PORTA时钟      
    GPIOA->CRL&=0XFFFFF000; 
    GPIOA->CRL|=0X00000333;//PA8 推挽输出    
GPIOB->ODR|=7;     
STB=0;  
Write_Byte(0x8a); 
STB=1;  
STB=0;  
Write_Byte(0X40);  
    for(i=0;i<16;i++)  
    {   Write_Byte(0x00);  
    }
STB=1;  
}
//=======================================================================================
//=======================================================================================
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)             //?áè?°′?ü?μμ?oˉêy 
{ unsigned char c[4],i=0;
STB=0;             //????
Write_Byte(0x42);
RCC->APB2ENR|=1<<2;    //使能PORTA时钟      
    GPIOA->CRL&=0XFFFFF000; 
    GPIOA->CRL|=0X00000833;//PA8 推挽输出    
GPIOB->ODR|=7;                  
for(i=0;i<4;i++) 
c=TM1638_Read();

RCC->APB2ENR|=1<<2;    //使能PORTA时钟      
    GPIOA->CRL&=0XFFFFF000; 
    GPIOA->CRL|=0X00000333;//PA8 推挽输出    
GPIOB->ODR|=7;                
STB=1;                       
return i;             
}
//?????????????????????????????????????????????????????????????????????
u8 V[10]= {0,9,8,7,6,5,6,7,8,9} ;
u8 const H[10]= {0XEB,0X28,0X73,0X7A,0XB8,0XDA,0XDB,0X68,0XFB,0XFA} ;
void HH_L(void)
{   u8 P,M;
    u8 Q,U;
STB=0; 
Write_Byte(0X40); 
STB=1; 
STB=0; 
Write_Byte(0Xc0); 
  for(Q=0;Q<8;Q++)
{ U=128;M=0;
  for(P=0<8++)
{ M= ((H[V[2+P]]>>Q)&0x01)*U+M;
  U=U/2;
}
Write_Byte(M); 
U=2;M=0;
  for(P=0<2++)
{ M= ((H[V[P]]>>Q)&0x01)*U+M;
  U=U/2;
}
Write_Byte(M);
}
    STB=1; 
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-12-24 22:24:22 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

22

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2013-12-19
在线时间
111 小时
发表于 2016-11-24 11:36:37 | 显示全部楼层
TM1638可以用3.3V供电吗?
回复

使用道具 举报

28

主题

218

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2013-11-19
在线时间
92 小时
发表于 2016-11-24 16:59:12 | 显示全部楼层
帮顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 11:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表