学習メモ | LED 照明の原理 | デジタル回路におけるトランジスタの応用 | Keil のタブ設定 | C51 の双方向ポートの配置 | STC32G マイクロコントローラーのビデオ開発チュートリアル (Brother Chong) | エピソード 4 - パート 1: LED の照明

1. LEDの点灯原理

ここに画像の説明を挿入
なぜ LED が点灯するのでしょうか?
出力電圧 = VCC がハイレベル、出力電圧 = GND (通常は OV) がローレベルという概念があり
、それぞれ 1 と 0 で表され、これらは理想的な値です。
ここに画像の説明を挿入

STC32G12K128LQFP64QFN64 ピン図:

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

ヒント: USB-ISP ダウンロードプロセス

ハードウェア USB を備えた STC の MCU は、USB-HID 通信プロトコルを使用し、ドライバーのインストールを必要としないため、ハードウェア USB ダウンロードをサポートするようになりました。D-/P3.0.D+/の場合、STC犬打ち棒、竜討伐棒、天開斧、竜殺しナイフコアボード、STCオープンソースオシロスコープ、STC実験箱をPC-USBポートに接続P3.1 は正常に接続されています
USB-ISP ダウンロード プログラムの手順;
1. ボード上の P3.2/INTO ボタンを押します (P3.2 が接地されていることを意味します)
2. 電力が供給されているかどうかに関係なく、ターゲット チップに電力を再投入します前に。
—==電子スイッチを押して放すと電源がオフになるか、電源がオンになって
「STC USB Writer (HID1)」が STC-ISP ダウンロード ソフトウェアで自動的に認識されるのを待ちます。このとき、P3.2 ボタンを緩めることができます
=== 従来の機械式セルフロック スイッチは、押し上げると電源が切れ、押し下げると電源が入ります
。ダウンロードソフトウェアの「プログラミング」ボタン (注: USB ダウンロードとシリアルポートダウンロードの操作の順序は異なります)
ダウンロードは成功しました!
—== さらに、ユーザー領域からシステム領域へのソフトリセットも USB の接続を待っています。ダウンロード。

GPIO(汎用入出力)

ユニバーサル入出力ポートの略称で、入力レベルをソフトウェアで読み出したり、出力のハイレベル、ローレベルを制御したりできます。
P5.0 は GPIO ポート
PO は GPIO ポートのグループ
PO.0 はグループ内の GPIO ポートの 1 つ PO.0 から P0.7 まで合計 8 つあります。
一度に 1 つの IO ポートを操作することも
、グループを同時に操作することもできます
LED4 の点灯方法は? P6.0 のポートに接続されています。
回路図によれば、点灯を完了するには、P40がローレベルを出力し、P60がローレベルを出力する必要があります。
ここに画像の説明を挿入

ヒント: デジタル回路におけるトランジスタの応用

参考:三極管の動作原理と使い方

  • 1. トランジスタの原理 トランジスタには遮断、増幅、飽和の 3 つの動作状態があります。増幅状態は主にアナログ回路で使用され、使い方や計算方法が比較的複雑なので、今回は使用しません。デジタル回路は主に三極管のスイッチング特性を使用し、カットオフと飽和の 2 つの状態のみを使用します。
    NPN と PNP は主に電流の方向と電圧の符号が異なります。
    ここではNPNトランジスタを例に挙げてその動作原理を説明します。 
    ここに画像の説明を挿入
    これは、b (ベース) 電流 Ib を使用して ce に流れる電流 Ic を駆動するデバイスで、その動作原理は制御可能なバルブによく似ています。
    左側の細いパイプ内の小さな青い水の流れがレバーを動かして大きな水道パイプのバルブを開き、大きな赤い水の流れがバルブを通過できるようにします。青い水の流れが大きくなると、大きなパイプ内の赤い水の流れも大きくなります。倍率が 100 の場合、小さな青い水の流れが 1 kg/時間の場合、大きなパイプには 100 kg/時間の水を流すことができます。同様に、トランジスタの増幅率が100の場合、Ib(ベース電流)が1mAのとき、Iceには100mAの電流が流れます。
    ここに画像の説明を挿入
    ここに画像の説明を挿入

2 つのトランジスタの動作原理は次のように要約されます。NPN
のエミッタ (e) はグランドに接続され、コレクタ © はハイレベルに接続され、ベース (b) は制御信号に接続され、NPN の電流は(Ib) は ce の電流 (Ic) を制御するもので、通常増幅時は e 電極が最も低く、c 電極が最も高い電位となります (Vc > Vb > Ve)。トランジスタがオンになり、電流が極 C から極 E に流れます。
PNP のエミッタ (e) はハイレベル、コレクタ © はローレベル、ベース (b) は制御信号に接続されており、eb (Ib) の電流は電流 (Ic) を制御するために使用されます。 ) ec の e の電位が最も高く、通常の増幅時には c 電極の電位が最も低くなります (Vc < Vb < Ve)。トランジスタがオン、つまりe極からc極に電流が流れます。
ここに画像の説明を挿入

  • 2. 三極管の使い方 三極
    管の使用特性のポイントはb極(ベース)とe極(エミッタ)間の電圧です PNPの場合はe極電圧が0.7V高くなれば十分ですbレベルよりもこのトランジスタのEレベルとCレベルをスムーズに接続できます。つまり、制御端は b と e の間にあり、制御端は e と c の間にあります。同様に、NPNトランジスタの導通電圧はb極がe極より0.7v高いことになります、つまり矢印の始点が終点より0.7v高い場合、e極とc極は三極管の電源を入れることができます。これが「矢印の方向に通電電圧が流れて電圧が導通する」という説明です。
    以下では、一般的な LED 制御回路を例として、カットオフと飽和の動作状態を説明します。以下の図に示すように、三極管のベースは 10K の抵抗を介してマイクロコントローラーの IO ポートに接続されています。これを P1 とすると、エミッターは 5V 電源に直接接続され、コレクターは LED に接続されます。と 1K 電流リミッターが直列に接続されます。抵抗は最終的に電源のマイナス端子 (GND) に接続されます。プログラムによって P1 にハイレベルの 1 が与えられた場合、ベース b とエミッタ e は両方とも 5V になります。これは、e から b への 0.7V の電圧降下が存在しないことを意味します。このとき、エミッタとコレクタは導通もなくなるので、回路を縦に見るとトランジスタの部分で切断され、電流が流れなくなり、LEDは点灯しません。プログラムが P1 にローレベル 0 を与えると、e 極はまだ 5V であるため、e と b の間に電圧差が発生し、トランジスタ e と b がオンになります。トランジスタ e と b の間には約 0.7V があります。 .電圧降下が発生すると、抵抗 R47 の両端には (5-0.7) V の電圧が発生します。
    [注意] ここでの P1 ポートのハイレベル出力は 5V です。各マイコンの IO ポートのハイレベル出力電圧は異なります。一部のマイコンの IO 出力は 1.2V であり、LED などを駆動するにはトランジスタ増幅が必要です。仕事。
    この時、eとcも接続することになりますので、LED自体の電圧降下は2V、トランジスタ自体のe-c間の電圧降下は0.2V程度ありますが無視します。次に、R41 で約 3V の電圧降下が発生し、この分岐の電流は約 3mA であると計算でき、LED を正常に点灯できます。
    前述したように、三極管には遮断、増幅、飽和の3つの状態がありますが、e-b間が導通していなければ遮断は必要ないことは言うまでもありません。この三極管は飽和状態、いわゆるスイッチング特性にある必要があり、条件が満たされなければなりません。三極管には倍率βがあり、飽和状態になるためにはb極電流がe-c間の電流値をβで割った値より大きくなければなりません。このβは、一般的に使用されるトランジスタではおおよそ 100 と考えられます。
    次に、上記の R47 の抵抗を計算する必要があります。e と c の間の電流が 3mA であると計算したところ、b 電極の最小電流は 3mA 割った 100、つまり 30uA となります。約 4.3V の電圧がベース抵抗器にかかるため、ベース抵抗器の最大値は次のようになります。 4.3V/30uA = 143K。抵抗値はこの値より小さければ良いのですが、小さすぎてもダメです、小さすぎるとマイコンのIOポート電流が大きくなりすぎてトランジスタやマイコンが焼損してしまいます。 IO ポートの入力電流は 25mA です。6mA を超えないことをお勧めします。電圧と電流の計算を使用して、最小抵抗値を計算できます。
    +3 概要: 矢印は PNP の内側を指し、伝導電圧が矢印に沿って通過し、電圧がオンになり、電流が制御されます。

2 新築

マニュアル「STC32G12K128 実験ボックス V9.4 取扱説明書」に従って、新しいプロジェクトを作成し、段階的に照明を実現してください。

  • 1. 新しい Keil プロジェクトを作成します
    (Keil には多くのバージョンがあるため、このマニュアルでは導入例として Keil の uVersion5 のみを使用します。Keil の他のバージョンも同様です> まず Keil ソフトウェアを開き、「New uVersion」を開き
    ます「プロジェクト」メニュー 「プロジェクト...」プロジェクトを選択します。

STC チップ ライブラリは前のセクションで追加されています。ここで、ドロップダウン メニューから STC MCU データベースを選択します。
ここに画像の説明を挿入
新しいファイル Demo.c を作成します (拡張子は小文字を推奨します)。

コードを書きます:

sfr P0 = 0x80; //关键字sfr以红色显示
sfr P0M1  = 0x93;
sfr P0M0  = 0x94;

void main()
{
    
    
    P0M0 = 0x00;
    P0M1 = 0x00;

    while(1)
    {
    
    
        P0++;
    }
}

コンパイルして合格しました。「.\Objects\Demo」 - エラー 0 件、警告 0 件
ただし、ファイルを生成するためのプロンプトは表示されません。

ヒント:タブの設定

GB2312+4 スペース:
ここに画像の説明を挿入

  • 出力を設定する 2 オプション、HEX386 を選択します。

再コンパイル:
ここに画像の説明を挿入
ヒント: 「.\Objects\Demo」から hex ファイルを作成…

  • 3 ダウンロード
    チュートリアルの方法に従い、手動でダウンロードします。プロンプトは成功しましたが、ライトが点灯しません。
    原因分析: ピンが間違っています。
    ここで sbit 関数を導入する必要があります。
sbit P00 = P0^0;    //选择P0.0引脚

TIPS: sbit C 言語の特殊関数レジスタのビット変数

sbit は特殊関数レジスタを定義するビット変数です。bit と sbit はどちらも C51 によって拡張された変数型です。一般的なアプリケーションは次のとおりです: sbit P0_0=P0^0;//P0_0 をビット操作の P0 ポートの最初のビットとして定義します。bit は、char=8 ビット、bit=1 ビットである点を除いて、int char などと似ています。これらはすべて変数であり、コンパイラはコンパイル中にアドレスを割り当てます。
マニュアル 9.2.12 STC32G シリーズ マイクロコントローラ内のビット アドレス可能なデータ メモリ: STC32G シリーズ マイクロコントローラ内のビット
アドレス可能なデータ メモリは 2 つの部分で構成されます。最初の部分のアドレス範囲はDATA 領域の 20H 7FH で、もう 1 つはアドレス範囲です。 2 番目の部分は特殊機能レジスタ SFR:8OH FFH です。
特殊機能レジスタ(SFR)領域
ここに画像の説明を挿入
ここに画像の説明を挿入

SFR全エリアの80H~-FFH。合計128バイト。各バイトはビットアドレス指定可能です。パスに対応する名前を指定します。マイクロコントローラーは、アドレスの値に基づいて必要な機能を実装します。

11.2 IOポートの設定

各 IO の構成には 2 つのレジスタを設定する必要があります。
P0 ポートを例に挙げると、次の図に示すように、P0 ポートを設定するには、P0M0 と P0M1 の 2 つのレジスタを使用する必要があります。 P0M0 の 0 番目のビットと P0M1 の 0 番目のビットを組み合わせて、P0 のモードを設定します
。 .0 ポート、
これは P0M0 の 0 番目のビットです。ビット 1 は P0M1 の最初のビットと組み合わされて P0.1 ポートのモードを設定し、他のすべての IO の設定もこれと同様です。
ここに画像の説明を挿入

ここに画像の説明を挿入

知らせ:

各 IO ポートは、弱いプルアップ (準双方向ポート)/強いプッシュプル出力/オープン ドレイン モードで 20mA のシンク電流に耐えることができます (1K、560Q2、472Q2 などの電流制限抵抗を追加する必要があります)。プッシュプル出力は20mAのプル電流を出力できますが(電流制限抵抗も追加する必要があります)、チップ全体の動作電流が90mAを超えることは推奨されません。 VCC からの流入電流は 90mA、GND からの流出電流は 90mA を超えないよう、入出力電流の合計が 90mA を超えないようにすることを推奨します。
ここに画像の説明を挿入
ここに画像の説明を挿入

ここでは、疑似双方向ポートとして構成されており、外部にハイレベルとローレベルを出力でき、外部からハイレベルとローレベルを読み取ることもできます。

ヒント: C51 の双方向ポートの配置の説明

出典: Baidu百科事典
準双方向ポート: 固定内部プルアップ抵抗があります。
準双方向ポートとは、P1、2、および 3 に固定内部プルアップ抵抗があることを意味します。入力として使用される場合、これらは High にプルされ、外部から Low (ロー レベル) にプルされると、電流が供給されます (ソース電流)。ここでのソース電流は電流のソースです。MCU が停止します)、P0 は入力として使用されるときにサスペンドされるため、真の双方向ポートです。
準双方向ポートの中国語名は内部プルアップを備えているため、ハイレベルは内部的に与えられ、実際の外部信号ではありません。C51 のマニュアルには、「ポート 1、2、および 3 には固定内部プルアップがあるため」と記載されてい
ます
。 , これらは、準双方向ポートと呼ばれることもあります。入力として構成されている場合、これらはハイにプルされ、外部からローにプルされると電流 (IIL) を供給します。一方、ポート 0 は、入力として構成されている場合はフローティングであるため、真の双方向とみなされます。 . " 「正確」
とは「基本的に」、つまり「準双方向ポート」は実際の双方向ポートではありません。
実際、焦点は P0 ポートにあります。
P0 ポートは双方向であるため、アドレス/データ ポートとして使用される場合、このときのみ P0 ポートは 2 つのスイッチ チューブのプッシュプル状態になります。インピーダンス状態が発生します。P0 ポートを汎用入出力ポートとして使用する場合、内部で Vcc に接続されているスイッチ管がピン(ポート)から切り離され、グランドを引いているスイッチ管のみが動作し、P0 ポートはポートとして使用されます。外部プルアップ抵抗がなければ、ハイレベルを出力できません。
P0 ポートを入力として使用する場合は、まずポートに 1 を書き込んでグランドスイッチを切断する必要がありますが、このときプルアップ抵抗が接続されていないとハイインピーダンス状態になります。双方向ポートです。プルアップ抵抗が接続されている場合、ハイレベルを出力し、入力信号の論理には影響しません(論理には影響しませんので注意してください。影響があるかどうかはわかりません)実際のパラメータでは異なりますが、実際にはそうなると思います)。
双方向と準双方向の基本原理は、双方向には高抵抗の状態が含まれるということであり、最初に 1 を書き込む必要があるかどうかではありません。P1 ポートと P3 ポートには内部プルアップ抵抗があるため、いずれにしても双方向ではありません。 P0 ポートに内部プルアップがない場合、データ/アドレス機能の場合、抵抗は双方向のトライステート変換を自動的に完了します 汎用 I/O ポートにある場合、外部プルアップがない場合が接続され、最初にポートに 1 が書き込まれると、ポートはハイ インピーダンス状態になります。このとき、アドレス/データ機能の場合の自動双方向とは異なり、擬似双方向ポートでもあります。 P1 と P3 が入力にあるときに出力ラッチが 1 になることや、I2C バス上のリークとは異なります。極度のオープン回路またはオープンコレクタ構造も同様です。レベル ドライブはプルアップ抵抗 (または入力
として使用する場合、スイッチはオフになり、プルアップ (またはプルダウン) 抵抗のみが残るため、インピーダンスが比較的高く、IO ポートを駆動できます
。他のデバイスで。擬似双方向ポートが入力として使用される場合、実際には出力状態になります。
この出力状態の内部抵抗が比較的大きいだけです。真の双方向 IO ポートには、方向制御レジスタと出力部があります
。入力として使用される場合、接続は切断されます
。双方向ポートと準双方向ポートの違いは、双方向ポートはハイ インピーダンス状態であり、入力は実際の外部信号であることです。準双方向ポートには内部プルがあります。 -up なので、高レベルは実際の外部信号ではなく内部信号です! ソフトウェアが処理して
P0 ポートは真の双方向ポートで、残りは準双方向ポートです。P0 には内部プルアップ (オープンドレイン出力) がないため、外部 NMOS 回路をプルアップに接続する必要があります。入力はハイインピーダンスサスペンド状態です。P0 の駆動能力は、残りの 1 つのポートの 2 倍です。

学習内容の概要:

  • 1. LED が点灯しない理由を考えてください。
    ピンが間違っています。
  • 2. 単一のピンを制御するにはどうすればよいですか?
    sbit P00 = P0^0; //P0.0ピンを選択
  • 3. このピンの出力レベルを制御するにはどうすればよいですか?
    P00 = 1; //ローレベルを出力
  • 4. 記述仕様
    1行1文、中括弧1つインデント(設定必須)、スペース4つインデント、完全コメント
  • 5. コメント記号
    // 単一行コメント
    /* */ 複数行コメント
  • 6.
    CTRL+Fの検索方法を学ぶ

3. 最初の LED (コード) を点灯します。

//sfr P0    = 0x80; 	//原始例程,关键字sfr以红色显示,第一次下载不亮,需修改
//sfr P0M1  = 0x93;
//sfr P0M0  = 0x94;

sfr P2    = 0xA0;	//P2端口操作完成(屠龙刀三板载led)
sfr P2M1  = 0x95;
sfr P2M0  = 0x96;

//sfr P4    = 0xC0;	//P4端口操作完成(STC32G12K128实验箱-V9.6)
//sfr P4M1  = 0xB3;
//sfr P4M0  = 0xB4;

//sfr P6    = 0xE8;	//P6端口操作完成(STC32G12K128实验箱-V9.6)
//sfr P6M1  = 0xCB;
//sfr P6M0  = 0xCC;

//sbit P40 = P4^0;    //选择P4.0引脚(三极管控制)
//sbit P60 = P6^0;    //选择P6.0引脚(LED控制)

sbit P21 = P2^1;    //选择P2.1引脚(LED控制)(屠龙刀三板载led)

void main()
{
//    P0M0 = 0x00; //原始例程,
//    P0M1 = 0x00; //原始例程,

//    P4M0 = 0x00; //配置P4为准双向口
//    P4M1 = 0x00;
//    P6M0 = 0x00; //配置P6为准双向口
//    P6M1 = 0x00;
	P2M0 = 0x00; //配置P2为准双向口(屠龙刀三板载led)
	P2M1 = 0x00;
//
    while(1) //死循环
    {
        //P0++; //原始例程,
//		 P40 = 0; //三极管引脚输出低电平(STC32G12K128实验箱-V9.6)
//		 P60 = 0; //LED引脚输出低电平(STC32G12K128实验箱-V9.6)
		 P21 = 0; //设置低电平	(屠龙刀三板载led)
    }
}

4. 自動ダウンロードプロジェクトを実装する

以下を参照してください:研究ノート | LED 照明原理 | 最小限のプロジェクト実装とバグのトラブルシューティングのアイデアを自動的にダウンロード | USB-HID | USB-CDC 実装 | STC32G マイクロコントローラーのビデオ開発チュートリアル (Brother Chong) | エピソード 4-パート 2: 照明導かれた

ヒント: EA = 1 の説明

EA は明らかにレジスターであり、再コンパイルし、ヘッダー ファイル定義を開いてジャンプし、「stc.h」 --> 「stc32g.h」を確認します。検索して
ここに画像の説明を挿入
EA を見つけます。「sbit EA = IE^7;」と定義されています。 " (IE レジスタの A ビット)、マニュアルを開くと、対応する定義もあります。

ここに画像の説明を挿入
IE^7 はマニュアルのこの場所にしか登場しません。情報が少なすぎます。IE の検索を続ける必要があります。IE は特殊レジスタにあります:

ここに画像の説明を挿入
ここに画像の説明を挿入
私たちが必要とする詳細な紹介の間には、まだ一定のギャップがあります。次に、順番に検索して割り込みイネーブル レジスタ (割り込みイネーブル ビット) を見つけます。ここに画像の説明を挿入
EA: 合計割り込みイネーブル制御ビット。EA の機能は、割り込みを有効にしてマルチレベル制御を形成することです。つまり、各割り込みソースは、最初に EA によって制御され、次に、
各割り込みソース自体の割り込みイネーブル制御ビットによっても制御されます。
0: CPU はすべての割り込み要求をブロックします。
1: CPU は割り込みをオープンします。

5. まとめ

1.了解新工程的一个基本流程
2.了解IO口的高低电平的含义
3.务必牢记端口的几个寄存器 PxM0,PxM1,Px
4.务必牢记 sbit 的 作用,牢记#include的作用
5.了解USB_cDc不停电下载的用法USB_HID不停电下载

授業後の演習: すべての LED ライトを点灯します。

おすすめ

転載: blog.csdn.net/Medlar_CN/article/details/132167619