1.実験の目的
(1)タイマーの使用方法とプログラミング方法をさらに習得する
(2)7セグメントデジタル表示番号の原理と応用を習得する
2.実験内容
(1)回路を設計し、8255Aを使用して、発光ダイオードのオンとオフを制御するスイッチを実現します。(パラレルポートはモード0で動作します)
(2)デジタルストップウォッチの設計。ストップウォッチの10と1をそれぞれ表示するには、2つのデジタルチューブが必要です。表示時間は0〜59秒です。60秒が経過すると、ストップウォッチは自動的にクリアされ、0から再び表示を開始します。
注:
オフチップメモリにデータを書き込むときに使用される形式は次のとおりです。XBYTE[address] = data;
注:
(1)6桁のデジタルチューブはすべて共通のカソードであり、その中でLED1〜LED6は共通の端子です。ビット選択には選択が必要です。低レベルに接続します。LEDA〜LEDGとLED-DPは8セグメントのデジタルチューブです。高レベルに接続すると、各セグメントを点灯させることができます。
(2)使用する場合は、基板上のデジタルチューブ右側のジャンパーを外してください。
#include<reg51.h>
#include<absacc.h>
#define pa8255 0x7cff
#define pb8255 0x7dff
#define pc8255 0x7eff
#define con8255 0x7fff
char led[]={
0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f};
int i=0;
int j=0;
int num=0;
void main(){
XBYTE[con8255]=0x80;
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
TR0=1;
EA=1;
ET0=1;
XBYTE[pa8255]=led[9];
XBYTE[pb8255]=led[9];
while(1){
while(TF0==0);
TF0=0;
TH0=0x3c;
TL0=0xb0;
}
}
shuma() interrupt 1{
num++;
if(num%20==0){
XBYTE[pb8255]=led[j%10];
j++;
if(num%200==0){
XBYTE[pa8255]=led[i%10];
i++;
}
}
}