目的:
アウトプット、
ディレイ
、
LED 、デジタルチューブ
の使い方をマスターしましょう。
実験装置とソフトウェア:
コンピューター;
Keil
、
Proteus
、MCU Elf。
実験内容:
信号機は人々の生活に欠かすことのできない重要なものであり、大きな意味を持っています。シングルチップマイコンを使い始めてからわずか数日で、ほとんどの
シンプルな制御技術により、シンプルな信号機の設計も可能です。
実験要件:
1.
LEDは
東西南北に
赤・黄・緑の
3個ずつあります
。
2.
最初に赤色のライト
が 10 秒間
、次に緑色のライト
が 7 秒間
、最後に黄色のライトが
3 秒間点滅します
。
3.
BCDデジタル チューブ
を介して、
20 秒の全サイクルのカウントダウンが表示されます。
4.ソフトウェア
遅延
によってのみ遅延でき
、ハードウェアタイマーは使用できません。
関連情報:
1. Keil
と
Proteus
の使い方。
2.
マイクロコントローラーの出力。
3. LED
制御。
4.
ニキシー管制御。
5.
遅延ソフトウェア遅延。
予備知識:
1. Keil
と
Proteus
の使い方。
2. C
言語、マイコンピン出力、
遅延
ソフトウェア遅延。
実験手順:
1.
Proteusの回路図
を描き
、51 個のシングルチップ マイコン、LED 、デジタル チューブを追加します。
2.新しい
Keilプロジェクトを
作成し
、プログラムを作成し、Hexを生成し、信号機を制御します。
3. Hex を
回路にロードして実行します。
コード表示:
#include <reg51.h>
#include <stdio.h>
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
sbit led5=P2^4;
sbit led6=P2^5;
char led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(int ms) //ÑÓʱ³ÌÐò
{
int j,k;
for(j=0;j<ms;j++) //ÑÓʱms
for(k=0;k<124;k++); //´óÔ¼1ºÁÃëµÄÑÓʱ
}
void display(int num) {
P3 = led_mod[num / 10]; // ʮλÊý
P1 = led_mod[num % 10]; // ¸öλÊý
}
void main(void)
{
int seconds = 20;
int p,k;
led1=0;led2=0;led3=0;
P1=led_mod[7];
P3=led_mod[7];
led1=1;led2=1;led3=1;
led4=1;led5=1;led6=1;//³õʼ»¯
while (1)
{
seconds = 20;
for(p=20;p>10;p--)
{
led1=1;led2=1;led3=0;
led4=0;led5=1;led6=1; //ºìÁÁ
display(seconds);
seconds--;
delay(1000);
}
for(k=0;k<3;k++)//»ÆÉÁ
{
led1=1;led2=0;led3=1;
led4=1;led5=0;led6=1;
delay(500);
led1=1;led2=1;led3=1;
led4=1;led5=1;led6=1;
seconds--;
display(seconds);
delay(500);
}
for(p=7;p>1;p--)
{
led1=0;led2=1;led3=1;
led4=1;led5=1;led6=0;//ÂÌÁÁ
seconds--;
display(seconds);
delay(1000);
}
//ÓÒ±ßÒ»ÅŵÆ
seconds = 20;
led1=1;led2=1;led3=1;
led4=1;led5=1;led6=1;//³õʼ»¯
for(p=20;p>10;p--)
{
led1=0;led2=1;led3=1;
led4=1;led5=1;led6=0; //ºìÁÁ
display(seconds);
seconds--;
delay(1000);
}
for(k=0;k<3;k++)//»ÆÉÁ
{
led1=1;led2=0;led3=1;
led4=1;led5=0;led6=1;
delay(500);
led1=1;led2=1;led3=1;
led4=1;led5=1;led6=1;
seconds--;
display(seconds);
delay(500);
}
for(p=7;p>1;p--)
{
led1=1;led2=1;led3=0;
led4=0;led5=1;led6=1;//ÂÌÁÁ
seconds--;
display(seconds);
delay(1000);
}
}
}