ReCclay
认证:VIP会员
所在专题目录 查看专题
【蓝桥杯单片机组模块】1、硬件电路基础知识 与 蜂鸣器模块上手
【蓝桥杯单片机组】两种外设访问方式:IO编程和MM编程
【蓝桥杯单片机组模块】2、以 LED 流水灯为例,熟悉 CT107D 外设驱动套路
【蓝桥杯单片机组模块】3、上手 CT107D 外设驱动之数码管模块
【蓝桥杯单片机组模块】4、按键模块
【蓝桥杯单片机组模块】5、EEPROM模块
作者动态 更多
【FPGA基础】基于 Pango Design Suite(PDS) 的FPGA开发流程
2021-05-14 11:22
【FPGA基础】基于Quartus Prime 17.1 的FPGA开发流程
2021-05-08 17:49
【AD快速入门】8051最小系统绘制
2021-04-22 10:03
蓝桥嵌入式之 ADC电压采集与显示
2021-04-14 11:48
蓝桥嵌入式之 实时时钟RTC
2021-04-13 14:50

【蓝桥杯单片机组模块】1、硬件电路基础知识 与 蜂鸣器模块上手

导读:《蓝桥杯单片机组》专栏文章是博主2018年参加蓝桥杯的单片机组比赛所做的学习笔记,在当年的比赛中,博主是获得了省赛一等奖,国赛二等奖的成绩。成绩虽谈不上最好,但至少问心无愧。如今2021年回头再看该系列文章,仍然感触颇多。为了能更好地帮助到单片机初学者,今年特地抽出时间对当年的文章逻辑和结构进行重构,以达到初学者快速上手的目的。需要指出的是,由于本人水平有限,如有错误还请读者指出,非常感谢。那么,接下来让我们一起开始愉快的学习吧。

一、硬件电路基础知识

工欲善其事必先利其器,阅读电路原理图是单片机开发的基础,正式开始写程序之前,我们先来补充一下蓝桥单片机组这个原理图的基础知识吧。硬件电路总体来说并不太难,这里仅拿74HC573和ULN2003组成的电路做重点介绍。

1.1、74HC573 电路

蓝桥的这块板子主要靠74HC573 电路和74HC138撑起外设的门面,74HC138数电常讲(详情看这里),这里不再重复。74HC573可能有点陌生,其实也没啥,记住一点它是个锁存器,存状态的器件就行了。

非得深入了解的话,可以看看这里,了解完之后对付这个比赛也完全够用了。

如果程序中使用完573后,记得及时的禁止使能!在程序中,可以这样写:

注:看到后面会发现这样写不太好,因为容易影响IO的其他位,这里仅仅为了方便入门!

P2 = P2 & 0x1F;

1.2、ULN2003 电路

这个可得好好说说,感觉挺好使的,其内部电路示意图如下所示。

主要记住几个信息:

  • 特点①、它是个驱动芯片,可以驱动诸如继电器和电机此类感性负载
  • 特点②、输出端可达500mA/50V.

注:感性负载的缘故,输出端具有的二极管学名续流二极管

ULN2003的9脚是COM口,为内部7个续流二极管负极的公共端,各二极管的正极分别接各达林顿管的集电极。

用于感性负载时,该脚接负载电源正极,实现续流作用。如果该脚接地,实际上就是达林顿管的集电极对地接通。所以最好接上VCC!

注:达林顿管是两个三极管接在一起,极性只认前面的三极管

  • 特点③、ULN2003是一个非门电路

若要深入了解ULN2003的具体参数信息,可以看这里,但是还是那句话,上面介绍的足矣应付这个比赛。

1.3、了解IO控制原理 - 以驱动蜂鸣器为例

干说的话,有点不直观,先来看看怎么驱动蜂鸣器吧。板载蜂鸣器为有源蜂鸣器,只要两端有压差就会响!板载电路原理图如下所示:

通过电路图,不难看出,也就是说我们只需要控制 N_BUZZ 是低电平就OK了,那么再顺藤摸瓜就可以找到N_BUZZ是连接到那个IO引脚。

听起来那岂不是so easy的事么,确实如此...

继续往下走咯~

顺藤摸瓜的原理图见上。

再提醒一下 ULN2003 驱动芯片是个非门

故顺藤摸瓜可得:想要OUT7=0,那么只能IN7=1了;IN7对应到锁存器573,不改变状态,再对应到IO口就是P06了,也就是我们让 P0^6=1 , 这时候蜂鸣器就会响了。

确实是这样的,但是别忘了573上面的LE,是需要使能的。也就是Y5C=1 开启使能,再根据上面的思路,顺藤摸瓜就来到了74HC02这个或非

WR是J13上的,当我们是IO编程的时候,J13的2、3脚是相连的。

关于IO编程这个概念,后面会继续深入的。

J13是个3脚排针,它的3脚连接的是GND。那么2、3脚是相连,也即是说WR是接地的。

74HC02同时还是个非门,想要Y5C=1,那么Y5=0即可,Y5又是38译码器的输出,Y5等于0就是38译码器选中对应的引脚,因为它是低电平输出(数电有讲)。

也即是让C/B/A=1/0/1C/B/A又分别对应P2口的P27/P26/P25,如下图所示。

那么一切就理清楚了,若想驱动有源蜂鸣器,只需要让P2 = (P2&0x1F|0xA0)即可。

二、实验写代码

代码如下

#include <stc15.h>

sbit Buzz=P0^6;

void main()
{

	P2 = ((P2&0x1F)|0xA0); 
	Buzz = 1;	
	P2 = P2 & 0x1F;
	while(1);
}

关于继电器,它和蜂鸣器一样都是Y5C所在寄存器使能控制,只需改变相应的IO口,就可以实现控制继电器,直接上代码。

#include <stc15.h>

sbit Buzz = P0^6;
sbit Relay = P0^4;

void main()
{

	P2 = ((P2&0x1F)|0xA0); //使能573
	Buzz = 0;	//关闭蜂鸣器
	Relay = 0; //关闭继电器
	P2 = P2 & 0x1F;	//禁止573
	while(1);
}

LED灯不过是换成了Y4C,对应选中Y4就可以操作LED了,上代码。

#include <stc15.h>

sbit Buzz = P0^6;
sbit Relay = P0^4;

void main()
{

	P2 = ((P2&0x1F)|0xA0); //使能573
	Buzz = 0;	//关闭蜂鸣器
	Relay = 0; //关闭继电器
	P2 = P2 & 0x1F;	//禁止573
	
	P2 = ((P2&0x1F)|0x80);
	P0 = 0x00; //点亮所有LED
	P2 = P2 & 0x1F;
	while(1);
}

三、总结

后期当不使用 LED、继电器和蜂鸣器 的时候,记得直接关闭,乱响的话很容易影响心情的!(╭(╯^╰)╮)

关闭代码模板如下:

void CloseFucker()
{
	P2 = (P2 & 0x1F) | 0x80;//关闭LED
	P0 = 0xFF;
	P2 = 0x00;
	
	P2 = (P2 & 0x1F) | 0xA0;//关闭蜂鸣器继电器
	P0 = P0 & 0xAF;
	P2 = 0x00;
}

小结:本篇文章从蓝桥单片机板子的硬件电路入手,详细介绍了74HC573和ULN2003这两个不那么熟悉的器件电路功能及作用。接着以驱动蜂鸣器为例,介绍了单片机IO的控制方式。最后举一反三,介绍了单片机IO控制LED和继电器的方式。

希望大家多多支持我的原创文章。如有错误,请大家及时指正,非常感谢。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
本篇所含全部资料,点击此处留下邮箱我会发给你
资料明细:该资料包含本篇文章介绍到的蜂鸣器、LED和继电器控制代码以及蓝桥单片机板子的原理图。
觉得内容不错的朋友,别忘了一键三连哦!
赞 352
收藏 342
关注 431
成为作者 赚取收益
全部留言
0/200
  • dy-i2UfRuvP 2021-05-19 13:23
    精彩,很多东西还没接触到
    回复
  • dy-iipPZRPN 2021-05-13 22:45
    思路清晰,受益匪浅
    回复
  • dy-3EbVR6Ei 2021-05-13 22:37
    讲的真好!
    回复
  • dy-Xq2JxpfN 2021-05-13 22:19
    不亚于看了一篇高质量论文
    回复
  • dy-9g42stbW 2021-05-13 22:11
    对我很有帮助
    回复
  • dy-mLj7kl5v 2021-05-13 20:44
    请教一下
    回复
  • dy-apcih3c1 2021-05-13 20:27
    围观学习
    回复
  • dy-k78ZHtFD 2021-05-13 20:09
    讲的真好!
    回复
  • dy-nAWdnPGS 2021-05-13 18:57
    围观学习
    回复
  • dy-prSX6RBY 2021-05-13 18:48
    对我很有帮助
    回复
  • dy-jqGVYqsF 2021-05-13 16:53
    比论文强一万倍
    回复
  • dy-VIQ9auhf 2021-05-13 15:07
    精彩,很多东西还没接触到
    回复
  • dy-VIQ9auhf 2021-05-13 15:07
    大开眼界,真是好文
    回复
  • dy-7mura2gg 2021-05-13 14:50
    围观学习
    回复
  • dy-YN3DYTeH 2021-05-13 14:42
    讲的真好!
    回复
  • dy-9hjGevyn 2021-05-13 13:59
    感谢分享
    回复
  • dy-H1WY5jXH 2021-05-13 13:27
    讲的真好!
    回复
  • dy-wVQjSHHX 2021-05-13 13:10
    讲的真好!
    回复
  • dy-88VlYaFf 2021-05-12 15:54
    对我很有帮助
    回复
  • dy-9QTV6UZW 2021-05-12 15:30
    讲的真好!
    回复