蓝桥杯实验2

内容比较简单直接上代码!!!

#include <STC89C5xRC.H>
#include <intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;

void delay(u16 ms)
{
	u16 i ,j;
	for(i = ms; i > 0; i --)
		for(j  =114; j > 0; j --);
}
void close()
{
	P2 = (P2 & 0X1F) | 0XA0; //1开启使能
	P0 = P0 & 0XAF; //2输入信号
	P2 = P2 & 0X1F; //3禁止使能
}
/*
这是一个解释,不是注释,请原谅我这种不规范的写法。
查看原理图可以知道控制继电器、蜂鸣器,电机,步进电机等器件是有一
个网络标号为Y5C的管脚控制的。所以,我们要关闭继电器,蜂鸣器这两个
器件,我就得先把这个芯片使能(原理图是U9)就是先把U9使能,让他的
数据通,然后输入数据也就是用P0口控制,蜂鸣器和继电器受P0.6,P0.4
控制根据之前的实验我们知道,这两个设备低电平触发,所以把这个两个
端口拉低就行,即P0 = 0xaf;为了安全我们这样写P0 = P0 & 0XAF;接下
来便是如何使U9的le(网络标号Y5C)使能,查原理图可以知道Y5C对应的
是一个74HC02或非门,想让这个门输出高电平,它的两个输入就得为低电
平,而开发板以默认将一个引脚置为低电平,那么我们只需要将另一个拉
低就行了,另一个对应的网络号是Y5,所以我们只要把Y5置低就OK了,Y5
对应的是一个38译码器,是译码器的5号输出,根据上一章我们需要输出
HHHHHLHH这样的编码对应的输入是HLH高到低,对应的单片机就是P2.7-P2.5
位101,我们可以这样写,P2 = 0XA0,为安全起见,这样写
P2 = (P2 & 0X1F) | 0XA0;
第三步上一章就解释了,不赘述。
这样我们就愉快的关闭了这两个烦人的东西了
LED的操作也是一样的,不解释
*/

void main()
{
	u8 tmp = 0xaa;
	close();
	while(1)
	{
		P2 = (P2 & 0X1F) | 0X90;
		P0 = tmp;
		tmp = _crol_(tmp, 1);
		delay(500);
		P2 = 0X1F; //这里禁不禁的无所谓了,反正我只控制一个流水灯而已
	}
}
发布了25 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/little_engineer/article/details/86554165
今日推荐