“(SKU:)八位数码管”的版本间的差异

来自DFRobot Product Wiki
跳转至: 导航搜索
地址修改说明
地址修改说明
第86行: 第86行:
 
|align="center"|0xE6
 
|align="center"|0xE6
 
|}
 
|}
<br><br><br><br>
+
<br><br><br><br>br><br>br><br>
 
硬件地址如上表所示,而软件控制地址为上述地址右移一位后的地址,这是由Wire通信协议决定的,详情见[https://www.arduino.cc/en/Reference/Wire 官方Wire库]
 
硬件地址如上表所示,而软件控制地址为上述地址右移一位后的地址,这是由Wire通信协议决定的,详情见[https://www.arduino.cc/en/Reference/Wire 官方Wire库]
 
<br><br><br><br>
 
<br><br><br><br>

2019年7月5日 (五) 16:46的版本

thumb|300px|right|八位数码管

目录

简介

这款8位数码管是所采用的是一款存储器映射和多功能 LED控制驱动芯片。该芯片支持最大128点的显示模式(16SEGs×8COMs)以及最大13×3的按键矩阵扫描电路。HT16K33的软件配置特性使其适用于多种 LED 应用,包括LED模块和显示子系统。采用IIC接口只需要2个普通IO即可驱动,不需要mcu扫描,节省mcu资源。

性能描述

  • 工作电压:4.5V~5.5V
  • 工作电流:2mA
  • 待机电流:10uA
  • I2C总线接口
  • 16x8位RAM用于存储显示数据
  • 内部 RC 振荡器

引脚说明

八位数码管



引脚说明
名称 功能描述
SDA 数据线
SCL 控制线
GND 电源负极
VCC 电源正极








地址修改说明

该数码管支持四种从机地址驱动,可以通过硬件A0,A1的不同组合来实现。
地址控制器格式:

MSB D6 D5 D4 D3 D2 D1 LSB
1 1 1 0 0 A1 A0 R/W





其中:写地址R/W=0,则:

A1 A0 地址
0 0 0xE0
0 1 0xE2
1 0 0xE4
1 1 0xE6





br>
br>
硬件地址如上表所示,而软件控制地址为上述地址右移一位后的地址,这是由Wire通信协议决定的,详情见官方Wire库



Arduino平台应用

Arduino 连接图

Arduino八位数码管接线图

引脚图

八位数码管背面.jpg

示例代码

//该数码管有两种地址显示模式,该程序先用地址一显示,在关闭显示之后用地址二显示,为了与地址一显示区分开,地址二显示中设置了闪烁频率
#include <Wire.h>
/***************************地址定义***************************/
#define address     0x70  //控制寄存器地址
/***************************功能定义***************************/
#define OSC_OFF     0x20  //时钟关
#define OSC_ON      0x21  //时钟开
#define DISP_OFF    0x80  //显示关
#define DISP_ON     0x81  //显示开
#define Flash_TwoS  0x87  //闪烁频率:0.5Hz
#define Flash_OneS  0x85  //闪烁频率:1Hz
#define Flash_HalfS 0x83  //闪烁频率:2Hz
#define BRIGHTNESS  15    //亮度设置:16级亮度调节,由暗至亮:0~15
/***************************数码管位码***************************/
unsigned char TAB[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//显示数据(从左至右):0~9,a~f
/*****************************写命令****************************/
void I2C_Write_CMD(unsigned char CMD)
{
  Wire.beginTransmission(address);
  Wire.write(CMD);
  Wire.endTransmission();
}

/***************************写显示数据***************************/
                /*************地址一*************/
void I2C_Write_DATA1(unsigned char reg,unsigned char DATA)
{
  Wire.beginTransmission(address);
  Wire.write(reg*2); //显示寄存器地址为(从左至右):0x00,0x02,0x04,0x06,0x08,0x0a,0x0c,0x0e
  Wire.write(DATA);
  Wire.endTransmission();  
}
                /*************地址二*************/
void I2C_Write_DATA2(unsigned char reg,unsigned char DATA)
{
  Wire.write(reg); //显示寄存器地址为(从左至右):0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07
  Wire.write(DATA);
}

//------------------------------------------------------------------------------------------------------------------------------/
void setup() 
{
  Wire.begin();
  I2C_Write_CMD(OSC_ON);          //开启时钟  
  I2C_Write_CMD(DISP_ON);         //开启显示
  I2C_Write_CMD(0xE0|BRIGHTNESS); //设置亮度
}

void loop()
{
  unsigned char i,j;
/***************************地址一显示***************************/
  for(i=0;i<16;i++)
    {
      for(j=0;j<8;j++)
        {
          I2C_Write_DATA1(j,TAB[i]|0x80); //j为显示寄存器地址变量,TAB取值为显示数据变量,TAB值与0x80相或即将最高位置1,用于点亮小数点
        }
        delay(500);
    }
  I2C_Write_CMD(DISP_OFF);  //关闭显示
  delay(1000);
  I2C_Write_CMD(DISP_ON);   //开启显示
   
/***************************地址二显示***************************/ 
  I2C_Write_CMD(Flash_HalfS);     //设置闪烁频率
  for(i=0;i<16;i++)
    {
      Wire.beginTransmission(address);  
      for(j=0;j<8;j++)
        {
          I2C_Write_DATA2(j,TAB[i]|0x80); //j为显示寄存器地址变量,TAB取值为显示数据变量,TAB值与0x80相或即将最高位置1,用于点亮小数点
        }
      Wire.endTransmission();      
      delay(500);
    }
  I2C_Write_CMD(DISP_OFF);  //关闭显示
  delay(1000);
  I2C_Write_CMD(DISP_ON);   //开启显示  
}

相关文档



Nextredirectltr.png购买 [ SPI LED模块(SKU:DFR0090)]

个人工具
名字空间

变换
操作
导航
工具箱