《单片机》实验——实验7 8255并行口实验

《单片机》实验——实验7 8255并行口实验

一、实验目的

(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++;
		}
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_44652589/article/details/114904729