一、实验目的
(1)进一步掌握定时器的使用和编程方法
(2)掌握七段数码显示数字的原理及其应用
二、实验内容
(1)设计电路,使用8255A实现开关控制发光二极管的亮灭。(并行口工作于方式0)
(2)数码秒表设计。要求用两个数码管分别显示秒表的十位和个位。显示时间为0~59s。满60s时,秒表自动清零并重新从0开始显示。
注:
往片外存储器中写数据时使用格式为:XBYTE[地址]=数据;
说明:
(1)六位数码管均为共阴极,其中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++;
}
}
}