前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一些必备的电路知识

一些必备的电路知识

作者头像
caoqi95
发布2019-03-28 11:15:53
4520
发布2019-03-28 11:15:53
举报

学过 STM,51单片机 ,嵌入式系统开发,但还是记不住一些必备的电路知识,每次应用的时候都得东查西查一遍。目前正在学 Arduino 简单的硬件开发,趁此机会,把一些必备的电路知识汇总记录一下。

上拉电阻的作用

什么是上拉电阻?上拉电阻就是将一个不稳定的(高或低电平)信号,通过一个电阻与电源 VCC 相接,将其固定在高电平。通常用于有按键的场景。上拉电阻的作用是让不稳定的高电平保持稳定,从而可以正确的读取状态并控制电路的其他部分。 与上拉电阻对应的还有下拉电阻。相反地,下拉电阻的一端接的是 GND ,使信号固定在低电平。

共阳极与共阴极数码管

如下动图所示,总共有 7 段 LED 用于显示数字或字母的电子元件称为 7 段数码管,有时候右下角会包含显示小数点的一点 LED ,所以通常也称为 8 段数码管。

来自维基百科摘录的动图

8 段数码管分为共阴极和共阳极数码管。共阳极数码管的正极为所有发光二极管的共有正极,其他接点接负极。从下图中可以看出,当引脚为 0 时,二极管点亮;当引脚为 1 时,二极管不亮。

共阳极数码管

共阴极数码管的阴极为所有发光二极管的共有阴极,其他接点接正极。从下图可以看出,当引脚为 1 时,二极管点亮;当引脚为 0 时,二极管不亮。

共阴极数码管

下图是关于数码管各引脚的定义,需要显示什么数字只要把对应的引脚定义好就可以。但需要注意的是,共阳极与共阴极数码管的段码是不一样的。

摘自维基百科

  • 示例代码
代码语言:javascript
复制
/*
 * 驱动一个共阳极的数码管,显示数字 0~9 
 */

// 设定控制各段的数字引脚
int pin_a = 7;
int pin_b = 6;
int pin_c = 5;
int pin_d = 10;
int pin_e = 11;
int pin_f = 8;
int pin_g = 9;
int pin_p = 4;

// 根据共阳极/共阴极数码管段码表,定义 0~9 显示的各段开关状态
int numTable[10][8]={
  // 共阳极数码管段码,将共极接 Vcc(5v/3.3v)
  // 0 为点亮,1 为关闭
  // a  b  c  d  e  f  g  dp
  {0, 0, 0, 0, 0, 0, 1, 1},     // 0
  {1, 0, 0, 1, 1, 1, 1, 1},     // 1
  {0, 0, 1, 0, 0, 1, 0, 1},     // 2
  {0, 0, 0, 0, 1, 1, 0, 1},     // 3
  {1, 0, 0, 1, 1, 0, 0, 1},     // 4
  {0, 1, 0, 0, 1, 0, 0, 1},     // 5
  {0, 1, 0, 0, 0, 0, 0, 1},     // 6
  {0, 0, 0, 1, 1, 1, 1, 1},     // 7
  {0, 0, 0, 0, 0, 0, 0, 1},     // 8
  {0, 0, 0, 0, 1, 0, 0, 1},     // 9

  
  // 共阴极数码管段码,将共极接 GND 
  // 1 为点亮,0 为关闭
  // a  b  c  d  e  f  g  dp
  //{1, 1, 1, 1, 1, 1, 0, 0},     // 0
  //{0, 1, 1, 0, 0, 0, 0, 0},     // 1
  //{1, 1, 0, 1, 1, 0, 1, 0},     // 2
  //{1, 1, 1, 1, 0, 0, 1, 0},     // 3
  //{0, 1, 1, 0, 0, 1, 1, 0},     // 4
  //{1, 0, 1, 1, 0, 1, 1, 0},     // 5
  //{1, 0, 1, 1, 1, 1, 1, 0},     // 6
  //{1, 1, 1, 0, 0, 0, 0, 0},     // 7
  //{1, 1, 1, 1, 1, 1, 1, 0},     // 8
  //{1, 1, 1, 1, 0, 1, 1, 0},     // 9
};

  
void setup() {
  // 设置 4~11 引脚为输出模式
  for (int i=4; i<=11; i++){
    pinMode(i, OUTPUT);
    }
}

void loop() {
  // 依次显示 0~9 
  for(int i=0; i < 10; i++){
    digitalWrite(pin_a, numTable[i][0]);
    digitalWrite(pin_b, numTable[i][1]);
    digitalWrite(pin_c, numTable[i][2]);
    digitalWrite(pin_d, numTable[i][3]);
    digitalWrite(pin_e, numTable[i][4]);
    digitalWrite(pin_f, numTable[i][5]);
    digitalWrite(pin_g, numTable[i][6]);
    digitalWrite(pin_p, numTable[i][7]);
    delay(500);
    }
   delay(200);
  // 依次显示 9~0
  for(int i=9; i > 0; i--){
    digitalWrite(pin_a, numTable[i][0]);
    digitalWrite(pin_b, numTable[i][1]);
    digitalWrite(pin_c, numTable[i][2]);
    digitalWrite(pin_d, numTable[i][3]);
    digitalWrite(pin_e, numTable[i][4]);
    digitalWrite(pin_f, numTable[i][5]);
    digitalWrite(pin_g, numTable[i][6]);
    digitalWrite(pin_p, numTable[i][7]);
    delay(500);
    }
    
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.10.03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 上拉电阻的作用
  • 共阳极与共阴极数码管
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档