首页 > 其他分享 >02-蜂鸣器与继电器的基本控制

02-蜂鸣器与继电器的基本控制

时间:2023-10-03 15:34:53浏览次数:27  
标签:02 P2 蜂鸣器 void 继电器 74HC138 break case 0x1f

20231003151351

20231003151616

由原理图可知:

#include <REGX52.H>

void Delay(unsigned int t) {
	while(t--);
	while(t--);

}

// 74HC138
void _74HC138(unsigned char n) {
	
	switch(n) {   // 0001 1111
		case 4:     // LED使能
			P2 = (P2 & 0x1f) | 0x80;       // Y4 == 1000 0000
			break;
		case 5:   // 蜂鸣器和继电器     // Y5 == 1010 0000
			P2 = (P2 & 0x1f) | 0xa0;
			break;
		case 6:    // 数码管位选       Y6 == 1100 0000
			P2 = (P2 & 0x1f) | 0xc0;
			break;
		case 7:		// 数码管段选  
			P2 = (P2 & 0x1f) | 0xe0;     // Y7 == 1110 0000
			break;
		case 0:
			P2 = (P2 & 0x1f) | 0x00; 
			break;
	
	}

}

void SystemInit(void) {
	// 关闭蜂鸣器和继电器
	_74HC138(5);
	P0 = 0x00;
	// 保持LED为初始状态
	_74HC138(4);
	P0 = 0xff;    // LED低电平点亮
	_74HC138(0);

}
void check_Led(void) {
	unsigned char i;
	_74HC138(4);
	
	
	for(i = 0; i < 8;i++) {  // 1111 1111 << i  1111 1110
		P0 = 0xff << i;
		Delay(10000);
	
	}
	
	for(i = 0; i < 8;i++) { // ~(1111 1111) << i  ===> 1111 1110
		P0 = ~(0xff << i);
		Delay(10000);
	}
	
	_74HC138(0);
}
void cleak_Display(void) {
	unsigned char i;
	_74HC138(7);
	P0 = 0x00;
	for(i =0;i<8;i++) {
		_74HC138(6);         // 1111 1110
		P0 = ~(0xfe << i);  //   0000 0001  0000 0011
		Delay(60000);
	}
	
	for(i = 0; i<8;i++) {
		_74HC138(6);         // 
		P0 = 0xfe << i;  //   1111 1110 
		Delay(60000);
	}
		_74HC138(0);
}

// chanel 为74HC138 使能端   dat 为接收的数据
void OutputP0(unsigned char chanel,unsigned char dat) {
	_74HC138(chanel);
	P0 = dat;

}

void main() {
	unsigned char i;
	//SystemInit();
	//check_Led();
	//cleak_Display();
	SystemInit();
	
	// LED闪烁三遍熄灭
	//_74HC138(4);
	for(i=0;i<3;i++) {
		OutputP0(4,0x00);
		Delay(60000);	
		OutputP0(4,0xff);
		Delay(60000);
	}

	
	//依次点亮LED
	//_74HC138(4);
	for(i = 0;i<8;i++) { 
		OutputP0(4,(0xfe<<i));		
		//P0 = 0Xfe << i; //
		Delay(60000);
	}
	
	
	
	
	// 继电器吸合
	OutputP0(5,0x10); 
	Delay(20000);
	//P0 = 0x00;  
	//Delay(20000);
	
	
	
	// 一次循环熄灭LED
	//_74HC138(4);
	for(i = 0;i<8;i++) {
		OutputP0(4,~(0xfe<<i));			
		//P0 = ~(0Xfe << i); 
		Delay(60000);
	}
	
	
	// 蜂鸣器鸣叫
	OutputP0(5,0x40);
	Delay(20000);
	//P0 = 0x00;  
	//Delay(20000);
	//_74HC138(0); 
	
	
	
	
	
	
}

标签:02,P2,蜂鸣器,void,继电器,74HC138,break,case,0x1f
From: https://www.cnblogs.com/bky111/p/17741174.html

相关文章

  • BUUOJ[ACTF2020 新生赛]Include 1
    原理文件包含伪协议的利用解题过程靶场进入发现一个超链接,点了一下发现跳转到了flag.php文件传递了参数file=flag.php。猜测应该是文件包含。文件包含读取文件源码要想到伪协议了。--要多补补了payload:?file=php://filter/read=convert.base64-encode/resource=flag.php......
  • 【Citrix篇】1-Citrix ADC/Gateway 远程代码执行漏洞CVE-2023-3519和升级方法
    一、前言近期我们收到Citrix发布关于NetScalerADC、NetScalerGateway的风险通告,漏洞编号为CVE-2023-3519,漏洞等级:严重,漏洞评分:9.8漏洞影响:Hack可根据该漏洞,在配置了网关(VPN虚拟服务器、ICA代理、CVPN、RDP代理)或AAA虚拟服务器的Netscaler上可绕开任何认证直接进入到shell......
  • 题解 [CSP-S 2021] 括号序列
    题目链接对于括号题,基本是栈匹配没有匹配的左括号和区间\(dp\)两个方向。这道题括号序列并不确定,只能用区间\(dp\)搞。如果直接设\(f_{l,r}\)表示\(l\simr\)的合法括号序列,那么由区间\(dp\)的套路可知,需要枚举中间点进行合并,那么\(()()()\)的情况就会出问题,原因是......
  • 20231002
    23/10/02NOIP模拟赛总结时间安排1:50-2:40先看了T1和T2,直接过样例。2:40-3:00T3没想到正解,先把40%打了。3:00-3:50上了个厕所,发现T3正解直接枚举,写完和自己的暴力对拍。3:50-4:00看了看后3题,感觉都不好做。4:00-4:50感觉T4是DP,但不会设状态,去打T5,T6暴力。4:50-5:40......
  • Abaqus2022下载|Abaqus2022(工程模拟分析软件) 安装包下载方式
    Abaqus是一款广泛应用于工程和科学领域的有限元分析(FEA)软件。它由达索系统(DassaultSystèmes)的Simulia品牌开发,用于模拟和分析各种工程问题。其支持多物理场耦合、材料建模、大型装配体分析等特点,使其成为工程领域的首选工具之一。软件地址:看置顶贴abaqus和ansys哪个好由于Ansys产......
  • Abaqus 2022最新版下载-Abaqus 2022软件安装包下载 安装包下载
    abaqus电脑版软件能够帮助你在电脑上面进行各种有限元结构的分析与模拟测试,而且可以做到多数据一起分析,提高了计算的效率,而且使用起来非常简单,让使用者非常舒心!被广泛地认为是功能最强的有限元软件,可以分析复杂的固体力学结构力学系统,特别是能够驾驭非常庞大复杂的问题和模拟高度......
  • abaqus下载 - abaqus(有限元软件)v2021免费版 安装包下载方式
    Abaqus2019是一款广泛使用的有限元分析软件,它提供了强大的建模和分析工具,可以帮助用户进行各种复杂结构的力学仿真分析。以下是Abaqus2019的主要特点:软件地址:看置顶贴软件特色一、接触和约束1.接触和约束概览2.Abaqus/Standard中的边-边接触二、材料1.材料概览2.并行流变框架(PRF......
  • .NET周刊【9月第4期 2023-09-24】
    国内文章有趣的“可扩展近似计数”算法https://zhuanlan.zhihu.com/p/656817283在编程的世界里看见数学的身影,会让我充满好奇和兴奋。这不,在一年一度介绍.NET新版本的官方开发博客《PerformanceImprovementsin.NET8》中,我看到了这样一个有趣的算法:可扩展近似计数(ScalableA......
  • TX002-XAF特性属性使用方法
    1.[XafDisplayName("名称")](1)在类上面表示修改左侧菜单的名称(2)在字段属性上使用表示修改字段名称2.[ImageName("Actions_Forbid")](1)设置XAF内置图标,里面参数是图标ID3.[ModelDefault("AllowEdit","False")](1)设置不允许编辑,默认允许(2)也可以更改默认格式[ModelDefau......
  • 2023/10/3软件工程日报
    今天继续vue的学习,今天完成了对组件插槽的学习,贴出代码    ......