51個のマイクロコントローラーLEDライトが徐々に明るくなったり暗くなったりする実験

51個のマイクロコントローラーLEDライトが徐々に明るくなったり暗くなったりする実験

1。概要

この記事では、シングルチップ マイコンを使用して 2 つの LED ライトの明るさとフェード効果を制御する方法を紹介し、操作手順と完全なプログラム コードを詳細に紹介し、小規模な実験を手動で作成できます。

2. 操作手順

2.1.ハードウェアのセットアップ

1.ハードウェアの準備
名前 モデル
マイクロコントローラー STC12C2052AD 1
LEDランタン なし 2
水晶発振器 12MHz 1
キャパシタンス 30pf 2
抵抗 100オーム 2
ブレッドボード なし 1
接続線 なし 5
2.ハードウェアリンク回路図

以下の回路図に従ってコンポーネントとマイコンを接続します。LED ライトのみをピン 19 と 18 に接続する必要があり、その他は接続する必要はありません。
ここに画像の説明を挿入します

2.2.プログラムコード

/*************************************************************
* 程序名: 两个LED灯亮度渐亮渐暗
* 编写人: bruce
* 硬件支持:TC12C2052 外部12MHZ晶振
* 日  期: 2023-11-14
* 修改日志: 通过控制LED灯亮和灭的时间实现亮度渐变效果,可修改a变量值观察LED灯变化效果
/*************************************************************/

#include<STC12C2052AD.H>

sbit LED1 = P1 ^ 7;
sbit LED2 = P1 ^ 6;

/*********************************************************************************************
函数名:毫秒级CPU延时函数
调  用:DELAY_MS (?);
参  数:1~65535(参数不可为0)
返回值:无
结  果:占用CPU方式延时与参数数值相同的毫秒时间
备  注:应用于1T单片机时i<600,应用于12T单片机时i<125
/*********************************************************************************************/
void DELAY_MS (unsigned int a){
    
    
	unsigned int i;
	while( --a != 0){
    
    
		for(i = 0; i < 600; i++);
	}
}

void main(void){
    
    
	while(1){
    
    
		unsigned char a;
		for(a=1;a<20;a++){
    
    
			LED1 = 0;
			LED2 = 1;
			// 通过修改延迟值改变灯亮灭的时间,达到渐亮渐暗效果
			DELAY_MS(a);
			LED1 = 1;
			LED2 = 0;
			DELAY_MS(20-a);
		}
		for(a=19;a>0;a--){
    
    
			LED1 = 0;
			LED2 = 1;
			DELAY_MS(a);
			LED1 = 1;
			LED2 = 0;
			DELAY_MS(20-a);
		}
		
	}

}

2.3. 書き込みプログラム

Keil ツールを使用してプログラムをコンパイルし、STC-ISP ソフトウェアを開き、コンパイルされた 16 進数ファイルを選択し、外部水晶発振器を設定して、プログラムをダウンロードします。プログラムをマイクロコントローラーに焼き付けた後、マイクロコントローラーをコールドスタートし (5V 電源を遮断してから電源をオン)、マイクロコントローラーを外部水晶発振器に切り替え、2 つの LED ライトの交互の明暗の変化を観察します。

おすすめ

転載: blog.csdn.net/m0_38039437/article/details/134546374