历史上的今天
返回首页

历史上的今天

今天是:2025年08月14日(星期四)

正在发生

2018年08月14日 | 基于STM32的常用数码管芯片TM1637驱动

2018-08-14 来源:eefocus

IIC协议这里就不多说了;

使用模拟IIC口 定义B14 B15


#define AnalonSDA_Pin GPIO_PIN_12
#define AnalonSDA_GPIO_Port GPIOB
#define AnalonSCL_Pin GPIO_PIN_13
#define AnalonSCL_GPIO_Port GPIOB

IO配置为输出


  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOB, AnalonSDA_Pin|AnalonSCL_Pin|BIG_SDA_Pin|BIG_SCL_Pin, GPIO_PIN_RESET);

  /*Configure GPIO pins : PBPin PBPin */
  GPIO_InitStruct.Pin = AnalonSDA_Pin|AnalonSCL_Pin|BIG_SDA_Pin|BIG_SCL_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

驱动程序如下

void TM1637_start(void)
{
 SCLK_H;
 Delay_us(1);
 DIO_H;
 Delay_us(1);
 DIO_L;
 Delay_us(1);
 SCLK_L;
 Delay_us(1);
}
void TM1637_stop(void)
{
 SCLK_L;
 Delay_us(1);
 DIO_L;
 Delay_us(1);
 SCLK_H;
 Delay_us(1);
 DIO_H;
 Delay_us(1);
}

void TM1637_ack(void)
{
 SCLK_L;
 DIO_H;    
 while(HAL_GPIO_ReadPin(GPIOB, BIG_SDA_Pin));
 SCLK_H;     
 DIO_IN;
  
}

void TM1637_Write(unsigned char DATA)   //写数据函数
{
 unsigned char i;   
 for(i=0;i<8;i++)        
  {
   SCLK_L;     
   if(DATA & 0x01)DIO_H;  //SDA
   else DIO_L;
   DATA >>= 1;      
   SCLK_H;
  }  
 TM1637_ack();
}

unsigned char READ_KEY(void)
{
 unsigned char i,temp=0;
 TM1637_start();
 TM1637_Write(READ_COMMAND);
 DIO_IN;
 for(i=0;i<8;i++)
  {
   SCLK_L;
   Delay_us(1);
   temp<<=1;
   SCLK_H;
   if(HAL_GPIO_ReadPin(GPIOB, BIG_SDA_Pin))temp+=1;
   Delay_us(1);
  }
 TM1637_ack();
 TM1637_stop();
 return temp;
}
void display_fix(unsigned char add,unsigned char DispData)  //指定地址写入数据
{
 TM1637_start();          //start signal sent to TM1637 from MCU
 TM1637_Write(ADD_FIX);//
 TM1637_stop();           //
 TM1637_start();          //
 TM1637_Write(ADDR_COMMAND|add);//
 TM1637_Write(DispData);//
 TM1637_stop();            //
}
void display_char(unsigned char add,unsigned char dis_char)
{
 unsigned char point_flag,char_code;
 point_flag=dis_char&0x80;
 dis_char&=0x7f;
 if(dis_char<16)
  char_code=tab[dis_char];
 else switch(dis_char)
  {
   case 'L':char_code=0x38;break;
   case 'H':char_code=0x76;break;
   case 'U':char_code=0x3e;break;
   case 'N':char_code=0x37;break;
   case 'P':char_code=0x73;break;
   case 'J':char_code=0x0e;break;
   case 'O':char_code=0x3f;break;
   case 'o':char_code=0x5c;break;
   case 'n':char_code=0x54;break;
   case 'Y':char_code=0x6e;break;
   case ' ':char_code=0;break;
   default:char_code=dis_char;break;
  }
 display_fix(add,char_code|point_flag);
}
void init_TM1637(void)
{
 unsigned char i;
 TM1637_start();
 TM1637_Write(ADD_AUTO);
 TM1637_stop(); 
 TM1637_start();
 TM1637_Write(ADDR_COMMAND);
 for(i=0;i<6;i++)
 TM1637_Write(0);
 TM1637_stop(); 
 TM1637_start();
 TM1637_Write(BRIGHT);
 TM1637_stop();
}

void Delay_us(unsigned  int i)
{
  for(;i>0;i--);
}

最后在任务中调用

void StartDefaultTask(void const * argument)
{
 unsigned char i,j; 
 init_TM1637();
  for(;;)
  {
   for(i=0;i<16;i++)
  {
   for(j=0;j<4;j++)
   {
    display_char(j,((j+i)%16)|0x80);
   }
   HAL_Delay(500);
  }  
  HAL_Delay(1);
  }
}


推荐阅读

史海拾趣

意华(CZT)公司的发展小趣事

自1995年成立以来,意华(CZT)始终秉持“诚信”的合作态度和“创新”的发展思路。在公司初创阶段,面对激烈的市场竞争,意华坚持高质量的产品和服务,赢得了客户的信赖。同时,公司不断投入研发,推出了一系列具有创新性的电子产品和连接器,迅速在市场上树立了良好的口碑。

Advanced Linear Devices公司的发展小趣事

为了进一步扩大规模和提升竞争力,意华先后成立了多家子公司,包括苏州意华电工有限公司、东莞意兆电子科技有限公司等。这些子公司的成立,不仅实现了公司在不同地域的资源整合和优势互补,也加速了公司的集团化发展进程。通过集团化管理,意华能够更好地协调各子公司之间的业务和资源,提高整体运营效率。

Dover Corporation公司的发展小趣事

Dover Corporation自上市以来,一直保持着持续盈利和向投资者发放红利的记录。公司凭借其强大的业务能力和稳健的财务状况,赢得了投资者的信任和支持。这一成绩的取得不仅彰显了Dover在业务运营方面的实力,也为其未来的发展奠定了坚实的基础。

请注意,以上故事框架仅为概述性质,具体细节和数据可能需要根据Dover Corporation的实际情况进行调整和补充。

Connection One公司的发展小趣事

随着技术的不断成熟,Connection One公司开始寻求与其他企业的战略合作。通过与全球知名的电子设备制造商合作,公司的芯片产品得以广泛应用于各类电子设备中。这种合作不仅拓展了公司的市场份额,还提升了其品牌知名度。

E-Z-HOOK公司的发展小趣事

随着全球化进程的加速推进,E-Z-HOOK公司开始积极拓展国际市场。他们通过参加国际展会、建立海外销售网络等方式,将产品推向全球各地。同时,公司还积极寻求与国际知名企业的合作机会,共同开发新技术和新产品。这些努力使得E-Z-HOOK公司的品牌影响力逐渐扩大,在全球范围内树立了良好的声誉和形象。

德力西(DELIXI)公司的发展小趣事

德力西非常重视品牌建设,通过全方位的品牌建设及宣传,不断提高品牌知名度和美誉度。同时,公司也加快了国际化步伐。2007年,德力西低压电器业务迈向企业国际化的新阶段,在全国范围内进行资本大重组、产品大联合、市场大拓展和技术大提高。这些努力使德力西在国际市场上也取得了一席之地。

问答坊 | AI 解惑

PCB设计中可能遇到的问题及解答

问题: Query:在从原理图更新到PCB的时候,如何保持原有器件的布局? 在Protel中,通常都会遇到需要修改原理图时,如何保持原有PCB板中器件的布局的问题。下面讲述一种有效的方式就是在PCB编辑窗口中使用菜单命令Project » Component Links来完成 ...…

查看全部问答>

创建Windows CE操作系统(二)

之前介绍过如何创建一个基本的Windows CE的平台,现在咱就上一次没有提到的部分进行一下补充定制并build OS。 首先,在VS2005 IDE中的View -> Other Windows -> Catalog Items中,添加或者删除相应的模块来完成OS定制,选项如下: 然后配置buil ...…

查看全部问答>

模拟乘法器(checked)

本帖最后由 辛昕 于 2018-4-8 22:59 编辑 关于这个东西,我后来其实从来没捡起过。 但是,也就没有必要惦记着了。 当然了,每次说到这个东西,都会想起,故人已去~ 在做运放的过程中,知道了一个叫做模拟乘法器的东西。 但是想上网看看这个东 ...…

查看全部问答>

calibrate_delay 的头文件是什么

嵌入式开发,Linux系统,是可以在驱动里面调用calibrate_delay 这个函数的吧 不知道需要包含什么头文件…

查看全部问答>

我的移动硬盘使用时,怎么显示:"本地磁盘"啊?

求救:     我的移动硬盘使用时,怎么显示:\"本地磁盘\"啊?     而且打不开! 谁知道 怎么解决? 谢谢!!!…

查看全部问答>

Windows CE 5.0的ARMV4I补丁求种

Windows CE 5.0的ARMV4I补丁,名称如下:    WinCEPB50-051231-Product-Update-Rollup-Armv4I.msi    WinCEPB50-060131-2006M01-Armv4I.msi    WinCEPB50-060228-2006M02-Armv4I.msi    WinCEPB50-06 ...…

查看全部问答>

wince下的CMMB播放程序

谁有这样的程序,急求,可以和我联系. email:gcgaoxj@yahoo.com [ 本帖最后由 dreaming123 于 2011-3-16 21:42 编辑 ]…

查看全部问答>

刚刚看到可以用:用社区芯币兑换51开发板PCB板!

刚刚看到可以用:用社区芯币兑换51开发板PCB板!早知道在这里换了,自己花了150快大洋买了一个 能不能用社区芯币兑换ARM的开发板呢…

查看全部问答>

microblaze的一些问题探讨下

请问有没有建立工程的教程,我按照官方网站的教程建立,(用的是ise13.1), 各种无奈啊,遇到的问题: 1、头文件的处理,我把用到的头文件拷到板级包的include文件夹,开始时可以,但是后面工程关闭,又出现 没找到头文件,那不是又得拷贝一次, ...…

查看全部问答>

【信号处理】一种雷达通用信号处理系统的实现与应用

摘要:鉴于FPGA和DSP各自的优势,FPGA+DSP信号处理架构,已成为信号处理系统的常用结构。但目前此结构处理平台功能固定、通用性差,或对平台的介绍缺乏具体实现。文中针对以上两点提出一种通用信号处理系统。该系统不仅将两种处理器的优点集于一身 ...…

查看全部问答>