デジタルチューブの主なコンセプト
参考文献:クリックして移動
ニキシー管分類
字形重叠数码管
:異なる数字、文字、記号を重ねて、使用する必要のあるものを表示
分段式数码管
: 最も一般的なデジタル管で、ストロークに従って表示されます。主に 7 セグメントと 8 セグメントのデジタル管があります。
点矩阵式数码显示
:その名の通り
8 セグメント デジタル チューブ
デジタル管の表示方式には、陰極接地と陽極接地の2種類があります
- コモンカソード:出力端子が接地され、常にロー、入力端子がハイレベルの場合、瞬時にオンになり、LEDがオン、入力端子がローレベルの場合、LEDがオフ
- コモンアノード:出力端子は電源に接続され、常にハイレベルであり、LEDの点灯方法はコモンカソードとは逆です
Puzhong A2 開発ボードのデジタル チューブは、コモン カソード デジタル チューブです。
下図のデジタル管のCOMポートが出力端子で残りのピンが入力端子です
名前が示すように、8 セグメントのデジタル チューブには、8 つのストロークを制御するための 8 つのピンがあり、そのうちの 1 つが小数点 DP です。
次に、下の図に対応して、共通カソードの性質に応じて、入力端子は として定義されます0x3F
。このとき、1111 1100
対応する、直接オンになります。オン.0
その他の数字や文字の表示も上記のルールに沿ったもので、とてもシンプル!
7 セグメント デジタル管
8セグデジタル管とは少し異なり、7セグタイプは小数点がありません
彼は 1 つのアウトプットと 3 つのインプットを持っている
3つの入力端子の入力結果(2進数)に従って、10進数に変換して対応する画数を表示します.例えば、
入力端子に101を入力すると5として2進数に変換されます. 5位が点灯!
完全な数を表示する方法については、周期的な方法を使用して、非常に短い時間で異なるストロークを循環させる必要があります.人間の目では区別できないため、通常の表示のように見えます.
デジタルチューブを剥がす
つまり、単位デジタル管を4つ組み合わせた4桁デジタル管です。
まず、デコーダーについて理解します。
デコーダーの原理は7セグデジタル管とほぼ同じP22 P23 P24
で 3つの
入力端子と8つの出力端子があります。
下の図はPuzhongの原理図です. 点灯できる8つのLEDはデコーダーの出力にマークされています, それぞれ点灯した数を示します. 以下は詳細な紹介です.
下の図に示すように、デジタル管の各桁は入力端子に対応しており、デコーダからの信号が接続されて、デジタル管の対応する桁が指向的に点灯します。
以下は、対応するストロークを照らすために使用される8セグメントデジタルチューブの入力端子です。これは非常に簡単です
ケース
静的照明デジタル管
デコーダ出力を「ビットコード出力」(つまりどのビットが点灯するか)、
STC出力を「セグメントコード出力」(つまりどのストロークが点灯するか)と呼びます。
下の図は、対応するデジタルデジタルチューブを点灯させ、指定された番号を表示する効果を示しています
#include <REGX52.H>
// 段码表,可以对照前面提到的表格,输出对应的数字/字母
unsigned char NixieTable[]={
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//数码管显示子函数
void Nixie(unsigned char Location,Number)
{
switch(Location) //位码输出
{
// 按照二进制转10进制,直接组合出8种情况,使用switch判断
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
// P0口输出二进制信号,点亮对应笔画
P0=NixieTable[Number]; //段码输出
}
void main()
{
Nixie(2,3); //在数码管的第2位置显示3
while(1)
{
}
}
動的照明デジタル管
いわゆるダイナミックとは、同時に複数の数字を表示するデジタル管を指します。
表示方法は非常に単純です. while ループでは, 各ビットのデジタル管が交互に表示されます. 各表示の後にゼロにリセットする必要があることに特に注意してください (つまり、0x00 を設定します), 残像が影響を与えるのを避けるためにLED切り替え時の視覚効果。
#include <REGX52.H>
//数码管段码表
unsigned char NixieTable[]={
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//延时子函数
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
//数码管显示子函数
void Nixie(unsigned char Location,Number)
{
switch(Location) //位码输出
{
case 1:P2_4=1;P2_3=1;P2_2=1;break;
case 2:P2_4=1;P2_3=1;P2_2=0;break;
case 3:P2_4=1;P2_3=0;P2_2=1;break;
case 4:P2_4=1;P2_3=0;P2_2=0;break;
case 5:P2_4=0;P2_3=1;P2_2=1;break;
case 6:P2_4=0;P2_3=1;P2_2=0;break;
case 7:P2_4=0;P2_3=0;P2_2=1;break;
case 8:P2_4=0;P2_3=0;P2_2=0;break;
}
P0=NixieTable[Number]; //段码输出
Delay(1); //显示一段时间
P0=0x00; //段码清0,消影
}
void main()
{
while(1)
{
Nixie(1,1); //在数码管的第1位置显示1
// Delay(20);
Nixie(2,2); //在数码管的第2位置显示2
// Delay(20);
Nixie(3,3); //在数码管的第3位置显示3
// Delay(20);
}
}