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 ライトの交互の明暗の変化を観察します。