“实验三十:四位串行数码管实验”的版本间的差异

来自丢石头百科
 
(未显示同一用户的3个中间版本)
第1行: 第1行:
[[Basic Experiment Kits For Arduino|首页]]
+
*[[Basic Experiment Kits For Arduino]]
 +
*[[Basic Experiment Kits For Raspberry Pi]]
  
 
== 显示原理 ==
 
== 显示原理 ==
 
{{Digital Tube Display Principle}}
 
{{Digital Tube Display Principle}}
  
== 产品说明 ==
 
 
== 引脚说明 ==
 
== 引脚说明 ==
[[File:Nixie Tube Display Module(三极管)_引脚说明1.png|800px]]
+
*[[File:Nixie Tube Display Module(三极管)_引脚说明1.png|800px]]
  
 
== Arduino ==
 
== Arduino ==
第52行: 第52行:
  
 
== 树莓派 ==
 
== 树莓派 ==
=== 实验现象 ===
 
*
 
 
=== 电路连接 ===
 
=== 电路连接 ===
*
+
*[[File:实验三十:四位串行数码管实验_接线1.png|600px]]
 +
 
 
=== 程序运行 ===
 
=== 程序运行 ===
==== C语言 ====
 
 
==== Python ====
 
==== Python ====
 +
* 安装gpiozero库
 +
**可以使下面命令来安装该库
 +
<pre>
 +
sudo apt update
 +
sudo apt install python3-gpiozero
 +
</pre>
 +
:*其它树莓派上的系统可以使下面命令来安装该库:
 +
<pre>
 +
sudo pip3 install gpiozero
 +
</pre>
 +
:*运行以下语句可以查看树莓派GPIO口定义
 +
<pre>
 +
pinout
 +
</pre>
 +
*下载树莓派参考例程,将文件解压后拷贝放在用户名目录下,运行
 +
<pre>
 +
cd raspberrypi/30/python_gpiozero
 +
python 74HC595.py
 +
</pre>
 +
*此时可看见树莓派在正确运行程序,若想退出,按ctrl+C即可
 +
*指令说明:'''gpiozero.OutputDevice(pin, active_high, initial_value)'''
 +
**主要参数:
 +
***pin: GPIO口编号,
 +
*** active_high: 内部上下拉电阻设置,
 +
****设置为True(默认)时,on()将引脚设置为High,off()将引脚设置为LOW。
 +
****设置为Flase时,on()将引脚设置为LOW,off()将引脚设置为High。
 +
***initial_value:
 +
****如果为False(默认值),则所有LED初始状态为关闭。
 +
****如果为None,则所有LED初始状态不稳定。
 +
****如果为True,则所有LED初始状态为关闭打开。
 +
*更多指令请查看[https://gpiozero.readthedocs.io/en/latest/installing.html gpiozero文档]
  
=== 例程下载 ===
+
== 例程下载 ==
 +
*[[:File:Basic Experiment Kits For Arduino.zip|Arduino例程]]
 +
* [[:File:Basic Experiment Kits For Raspberry Pi.zip|树莓派5例程 python]]
  
 
== 相关例程 ==
 
== 相关例程 ==
 
{{Arduino and Raspberry Pi Case}}
 
{{Arduino and Raspberry Pi Case}}

2024年12月6日 (五) 12:05的最新版本

显示原理

内部构造

数码管是一种可以显示数字和其他信息的电子设备,可以看成是多个发光二极管的组成。数码管有多种分类方式,具体如下:

Digital Tube Display Principle duan.png Digital Tube Display Principle ying.png

  • 按照数码管的段数可分为七段数码管和八段数码管。a、b、c、d、e、f、g为七段数码管的显示段数,八段数码管比七段数码管多一个发光二极管单元(多一个小数点dp显示)。
  • 按照数码管能显示多少个“8”,可分为1位、2位、3位、4位、5位、6位、7位等数码管。
  • 按照数码管的发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。其中,共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管;共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。

显示原理

要使数码管显示数字需要满足两个条件:一是要在公共端加合适的电源(一般的每一段二极管还需串上合适的电阻,起限流作用,保护数码管);二是要使(a,b,c,d,e,f,g,dp)端接低电平或高电平。这样才能显示的。因此在实际应用中,共阴数码管与共阳数码管的接线方式会稍有不同,具体如下:

  • 共阳数码管:将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。
  • 共阴数码管:将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。

真值表

Digital Tube Display Principle 真值表.png

驱动方式

LED数码管的驱动方式共有两种:静态驱动方式和动态显示方式. 注:位选指的是选择多位数码管中的某一位数码管;段选指的选择是一个数码管中的某一段。

1.静态驱动方式

静态驱动也称直流驱动。指的每个数码管的段选都需要连接一个8位数据线来保持显示的字形码,这8位数据线可通过单片机的I/O口进行驱动,也可使用如BCD码二-十进位转换器进行驱动。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O口多,当使用单片机控制n位数码管显示时,需要使用的I/O口则为8*n个。故实际应用时常增加驱动器进行驱动,也因此增加了硬体电路的复杂性。

2.动态驱动方式

动态驱动是指将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。例如当单片机输出字形码时,所有数码管都接收到相同的字形码,然后将需要显示的数码管的位选打开,该位数码管就可将字形显示出来,而没有选中的数码管则不会亮。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,只要扫描速度够快,就会使人的感觉好像显示的是稳定的字符,且选中的数码管都在正常显示。与静态驱动相比,动态驱动可节省大量的I/O口,而且功耗更低。但动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

引脚说明

  • Nixie Tube Display Module(三极管) 引脚说明1.png

Arduino

实验现象

  • 数码管上电,4位循环显示0-9

电路连接

  • 实验三十:四位串行数码管实验 接线.png

主要程序

int SCLK=2;
int PCLK=3;
int DO=4;
unsigned char num[]={0xC0, //"0"
                     0xF9, //"1"
                     0xA4, //"2"
                     0xB0, //"3"
                     0x99, //"4"
                     0x92, //"5"
                     0x82, //"6"
                     0xF8, //"7"
                     0x80, //"8"
                     0x90  //"9"
};
void setup()
{
  pinMode(PCLK,OUTPUT);
  pinMode(SCLK,OUTPUT);
  pinMode(DO,OUTPUT);
}

void loop()
{
  for(int i=0;i<10;i++)
  {
    shiftOut(DO,SCLK,MSBFIRST,num[i]);  
    shiftOut(DO,SCLK,MSBFIRST,0x0F); 
    digitalWrite(PCLK, HIGH);
    digitalWrite(PCLK,LOW);
    delay(500);
  }
}

树莓派

电路连接

  • 实验三十:四位串行数码管实验 接线1.png

程序运行

Python

  • 安装gpiozero库
    • 可以使下面命令来安装该库
sudo apt update
sudo apt install python3-gpiozero
  • 其它树莓派上的系统可以使下面命令来安装该库:
sudo pip3 install gpiozero
  • 运行以下语句可以查看树莓派GPIO口定义
pinout
  • 下载树莓派参考例程,将文件解压后拷贝放在用户名目录下,运行
cd raspberrypi/30/python_gpiozero
python 74HC595.py
  • 此时可看见树莓派在正确运行程序,若想退出,按ctrl+C即可
  • 指令说明:gpiozero.OutputDevice(pin, active_high, initial_value)
    • 主要参数:
      • pin: GPIO口编号,
      • active_high: 内部上下拉电阻设置,
        • 设置为True(默认)时,on()将引脚设置为High,off()将引脚设置为LOW。
        • 设置为Flase时,on()将引脚设置为LOW,off()将引脚设置为High。
      • initial_value:
        • 如果为False(默认值),则所有LED初始状态为关闭。
        • 如果为None,则所有LED初始状态不稳定。
        • 如果为True,则所有LED初始状态为关闭打开。
  • 更多指令请查看gpiozero文档

例程下载

相关例程

Arduino和树莓派基础实验套件例程
教程名2
  • 列表2
教程名3
  • 列表3
教程名4
  • 列表4
教程名5
  • 列表5
教程名6
  • 列表6