蓝桥杯单片机组经验分享之(三)各模块用法(3)继电器、蜂鸣器

2023-10-30

继电器和(有源)蜂鸣器用法类似LED,挂载在锁存器U9上,因为继电器和蜂鸣器需要提供较大的驱动电流,锁存器驱动能力不够,因此锁存器后加入了ULN2003提高带负载能力,驱动电流型设备,连接如下图

         

继电器、蜂鸣器分别接于QUT5、OUT7,锁存器的操作方式同与前篇所讲相同

ULN2003中,公共端COM接VCC,当INx中输入高(低)电平,OUTx输出为低(高)电平,从电路图可以看到,要驱动继电器、蜂鸣器,对应输入INx位需要置1,使对应电路形成回路

 

因此操作过程同LED一样:

1、给P0置数(默认在此操作前,138上挂载所有设备失能,如果没有失能会误操作已使能设备)

2、通过138使能U9,控制生效

2、通过138失能U9,状态锁存

 

 

 

代码如下:

void SetUnl(unsigned char pos,bit sta){
 	static bit relay=ON,buzz=ON;

	P0=0;
	if(relay==ON)	P0|=1<<RELAY;
	if(buzz==ON)	P0|=1<<BUZZ;

	if(sta==ON){
	 	if(pos==RELAY&&relay==OFF){
		 	relay=ON;
			Set138(UNL,ON);
			P0|=1<<RELAY;
			Set138(UNL,OFF);
		}else if(pos==BUZZ&&buzz==OFF){
			buzz=ON;
			Set138(UNL,ON);
			P0|=1<<BUZZ;
			Set138(UNL,OFF);
		}
	}else{
		if(pos==RELAY&&relay==ON){
		 	relay=OFF;
			Set138(UNL,ON);
			P0&=~(1<<RELAY);
			Set138(UNL,OFF);
		}else if(pos==BUZZ&&buzz==ON){
			buzz=OFF;
			Set138(UNL,ON);
			P0&=~(1<<BUZZ);
			Set138(UNL,OFF);
		}
	}
}

pos:操作位(这里只用到继电器、蜂鸣器所在两位)

sta:置数0/1(1驱动,0阻断)

1、通过宏定义将继电器、蜂鸣器的位置定义好,以后调用的时候直接写RELAY、BUZZ等而不需要再记住具体设备的位置

2、因为P0口被复用,类似LED,在操作继电器、蜂鸣器之前最好先将P0口数据清除,然后通过标志位将他们的状态还原到P0口中(否则可能会出现一次继电器、蜂鸣器误通断,影响实验效果)

3、根据标志位以及输入信息,确定是否需要操作、需要执行什么操作

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯单片机组经验分享之(三)各模块用法(3)继电器、蜂鸣器 的相关文章

  • 【蓝桥杯 和与乘积】

    题目描述 解题思路 首先想想可以组成答案的区间有什么性质 很直观可以想到排除长度为1的和长度为2的 构成答案的区间肯定是由几个非1的数加上一堆1构成的 那么可以很容易的想到区间长度k有下面这个等式 k mul sm tot mul为区间非1
  • 蓝桥杯跑步锻炼

    问题描述 小蓝每天都锻炼身体 正常情况下 小蓝每天跑 1 千米 如果某天是周一或者月初 1 日 为了 激励自己 小蓝要跑 2 千米 如果同时是周一或月初 小蓝也是跑 2 千米 小蓝跑步已经坚持了很长时间 从 2000 年 1 月 1 日周六
  • 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。并排序[c实现]

    void merge int nums1 int nums1Size int m int nums2 int nums2Size int n int end1 m 1 int end2 n 1 int end n m 1 while end
  • Acwing 842. 排列数字

    dfs int u 搜索第u个位置上可以放哪个数字 include
  • 蓝桥杯 c/c++ 算法提高 最长滑雪道

    算法提高 最长滑雪道 资源限制 时间限制 1 0s 内存限制 256 0MB 问题描述 小袁非常喜欢滑雪 因为滑雪很刺激 为了获得速度 滑的区域必须向下倾斜 而且当你滑到坡底 你不得不再次走上坡或者等待升降机来载你 小袁想知道在某个区域中最
  • 洛谷-【入门4】数组

    1 小鱼比可爱 题目描述 人比人 气死人 鱼比鱼 难死鱼 小鱼最近参加了一个 比可爱 比赛 比的是每只鱼的可爱程度 参赛的鱼被从左到右排成一排 头都朝向左边 然后每只鱼会得到一个整数数值 表示这只鱼的可爱程度 很显然整数越大 表示这只鱼越可
  • openGL之API学习(一九四)glGenTextures glActiveTexture

    glGenTextures产生的是一个比较小的整数id 纹理单元名 glActiveTexture激活的是纹理单元号 GL TEXTUREi 它们二者的关系为GL TEXTUREi GL TEXTURE0 id glBindTexture使
  • 青少年ptyhon可以参加的主流比赛大全

    青少年python教学视频ppt源码 青少年python系列目录 老程序员115的博客 CSDN博客 一 全国青少年软件编程等级考试 主办单位 中国电子学会 全国青少年电子信息科普创新联盟 网址 http www qceit org cn
  • C++11 删除 字符串中的空格

    include
  • C语言实现顺序表

    线性表是数据结构中的逻辑结构 线性表采用顺序存储的方式存储就称之为顺序表 数组是顺序表在实际编程中的具体实现方式之一 本篇主要介绍顺序表 顺序表的创建 添加元素 删除元素 遍历输出等操作 1 创建顺序表 1 1定义顺序表结构体 结构体包含三
  • 对象的初始化和清理(构造和析构函数)

    对象的初始化和清理 1 1 构造函数 1 1 1 没有返回值 没有void 类名相同 可以发生重载 1 2 构析函数 1 2 1 没有返回值 没有void 函数名称 类名 不可以发生重载 不可以有参数 1 3 系统会默认调用 构造函数和析构
  • c1048: [编程入门]自定义函数之字符串拷贝

    题目描述 有一字符串 包含n个字符 写一函数 将此字符串中从第m个字符开始的全部字符复制成为另一个字符串 输入 数字n 一行字符串 数字m 输出 从m开始的子串 样例输入复制 6 abcdef 3 样例输出复制 cdef 思路 两种方法 一
  • xml转义字符

    在mybatis在编写sql时不能在XML里直接使用 lt 或者是 gt 在这里需要使用转义字符替换 下面列举常用的xml转义对应 1 lt lt 小于号 2 gt gt 大于号 3 amp 和 4 apos 单引号 5 quot 双引号
  • 2018年第九届蓝桥杯C/C++A组省赛 题面&部分题解

    首先 原题 链接 https pan baidu com s 1UzRN6Mf2Dwp0263F MMESg 密码 2ryh 第一题 标题 分数 1 1 1 2 1 4 1 8 1 16 每项是前一项的一半 如果一共有20项 求这个和是多少
  • Java语言 ASCII to Hex 互转(IOT-示例)

    概述 最近想起之前做的IOT项目 使用JAVA写了一个
  • 蓝桥杯 成绩统计

    目录 问题描述 思路分析及代码实现 问题描述 小蓝给学生们组织了一场考试 卷面总分为 100 分 每个学生的得分都是一个 0 到 100 的整数 如果得分至少是 60 分 则称为及格 如果得分至少为 85 分 则称为优秀 请计算及格率和优秀
  • 1141 二维数组的输入和输出

    题目描述 输入m行n列的二维数组的值 再按行列形式输出 输入要求 第一行输入m n代表行数和列数 接着输入具体的m n个元素 输出要求 按行列形式换行输出 每一个数据后面都有空格 一行输出完毕后换行 输入样例 2 5 1 4 6 23 1
  • G - Ginger的NB数(二分)

    G Ginger的NB数 SDUT OnlineJudge include
  • 2021年12月-电子学会青少年等级考试C语言(一级)真题与解析

    2021年12月软件编程 C语言 等级考试 一级 分数 100 题数 5 时间限制 1000 ms 内存限制 65536 kB 1 输出整数部分 题目描述 输入一个双精度浮点数 输出其整数部分 输入 一个双精度浮点数f 0 lt f lt
  • 如何查看崩溃日志

    目录 描述 思路 查看ipa包崩溃日志 简单查看手机崩溃信息几种方式 方式1 手机设置查看崩溃日志 方式2 Xocde工具 方式3 第三方软件克魔助手 环境配置 实时日志 奔溃日志分析 方式四 控制台资源库 线上崩溃日志 线上监听crash

随机推荐