蓝桥杯单片机 赛后资料整理(一)——573锁存器


本文适用于 CT107D竞赛板+ IAP15转接板

控制原理

CT107D竞赛板中共有4块74HC537D锁存器,它们使P0成为控制总线,控制LED灯、四相步进电机、继电器、直流马达、蜂鸣器、LM386及数码管显示(或8x8LED矩阵)。另外,138编码器及02或非门,用来选择锁存器,即P27 P26 P25三个I\O口,用于选择锁存器。

138编码器及02或非门

pic1
先是P27 P26 P25组成三位二进制数,先由138编码器将对应管脚拉低其余管脚拉高,再接入或非门。一般情况下,J13短接的是WRGND脚,即IO模式。其作用是将Y4 Y5 Y6 Y7四个管脚取反,原先被拉低的管脚,变成唯一被拉高的管脚,达到片选的目的。

关于138编码器,其特性如下:

CBA被拉低管脚锁存器编号对应可控元件
HLLY4U6LED灯
HLHY5U9继电器、蜂鸣器等
HHLY6U8数码管位选
HHHY7U7数码管段选

Y0 Y1 Y2管脚是空闲的,所以控制完成后P27 P26 P25全部拉低即可。

控制LED灯

pic2
P27 P26 P25设置成H L L,选择U6锁存器,以控制LED灯。

注意:拉低为点亮,拉高为熄灭。

控制继电器和蜂鸣器

pic3
P27 P26 P25设置成H L H,选择U9锁存器,以控制继电器和蜂鸣器。

实际操作中,将P04拉高,通过ULN2003取反,继电器打开,同时L10点亮;将P07拉高,通过ULN2003取反,蜂鸣器响(无需调制方波信号)。

ULN2003是一个高电压、高电流的驱动器,其逻辑上相当于非门。

数码管显示

pic4
P27 P26 P25设置成H H L,选择U8锁存器,即数码管位选。
P27 P26 P25设置成H H H,选择U7锁存器,即数码管段选。

注意:竞赛板为共阳数码管

代码模板

#include<reg52.h>

#ifndef u8
#define u8 unsigned char
#endif

sbit L1 = P0^0;
sbit L2 = P0^1;
sbit RELAY = P0^4;
sbit BUZZ = P0^6;

u8 code font[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//"共阳数码管"的字模
u8 code y4=0x80;y5=0xa0;y6=0xc0;y7=0xe0;
//用于锁存器片选
u8 dis[8],val1=123,val2=234;
//用于数码管显示
bit relay=1,buzz=1,l1=0,l2=0;

void display();			
void delay100us();		//延时

void delay100us()		//@12.000MHz
{
	unsigned char i, j;

	i = 2;
	j = 39;
	do
	{
		while (--j);
	} while (--i);
}

void display(){
	u8 i;

	//将val1,val2的值,调整成想要的格式
	dis[0]=0xbf;
	dis[1]=font[val1/100];
	dis[2]=font[val1/10%10];
	dis[3]=font[val1%10];
	dis[4]=0xbf;
	dis[5]=font[val2/100];
	dis[6]=font[val2/10%10];
	dis[7]=font[val2%10];

	for(i=0;i<8;i++){
		//数码管位选
		P2&=0x1f;	   
		P0=1<<i;	  
		P2|=y6;		   
		//数码管段选
		P2&=0x1f;	  
		P0=dis[i];	  
		P2|=y7;		  
		delay100us();  
		P0=0xff;	   //消隐
	}
	//控制继电器和蜂鸣器
	P2&=0x1f;
	P0=0x00;RELAY=relay;BUZZ=buzz;
	P2|=y5;
	//控制LED灯
	P2&=0x1f;
	P0=0xff;L1=l1;L2=l2;
	P2|=y4;
	//将P27 P26 P25管脚拉低
	P2&=0x1f;
}
int main(){
	while(1){
		display();	
	}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值