【51单片机】蜂鸣器实验和动态数码管实验

目录

  • 蜂鸣器实验
    • 蜂鸣器介绍
    • 硬件设计
    • 软件设计
  • 动态数码管实验
    • 多位数码管简介
      • 74HC245 芯片简介
      • 74HC138 芯片简介
    • 硬件设计
    • 软件设计

橙色

蜂鸣器实验

蜂鸣器介绍

蜂鸣器采用直流电压供电,分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

无论是压电式蜂鸣器还是电磁式蜂鸣器,都有有源和无源的区分。有源是指蜂鸣器本身内含振荡电路,直接给它一定的电压就可以响;无源是需要靠外部提供一定频率的脉冲信号才可以响的。这里的“源”不是指电源,而是指蜂鸣器内部是否含有振荡电路

硬件设计

对于本章要实现蜂鸣器的控制, 我们能否直接使用 STC89CXX 的 IO 口驱动呢? 答案是否定的, 因为 51 单片机 IO 口的驱动能力较弱(即使外接上拉电阻) , 而蜂鸣器驱动需要约 30mA, 所以非常困难,即使可以驱动, 那对于整个芯片的其 IO 剩下驱动能力就更加弱甚至无法工作。所以我们不会直接使用 IO 口驱动蜂鸣器, 而是通过三极管把电流放大后再驱动蜂鸣器, 这样 51 单片机的 IO 口只需要提供不到 1mA 的电流就可控制蜂鸣器。所以我们也经常说到 51 单片机芯片是用来做控制的, 而不是驱动。

我们普中 51-单核-A3&A4 开发板上的蜂鸣器模块电路如下图所示:
在这里插入图片描述
从上图中可以看出, 该电路是集成的, 蜂鸣器控制管脚直接连接到 51 单片机的 P1^5 IO 口上。

开发板上使用的是无源蜂鸣器, 它需要一定频率的脉冲(高低电平) 才会发声, 图中 TP1 PNP 三极管起到一个电流放大作用, 从而可以驱动蜂鸣器。 当 J7 端子有一个高电平进来时, PNP 三极管 TP1 截止, 蜂鸣器不得电,当 J7 端子有一个低电平进来时, PNP 三极管 TP1 导通, 蜂鸣器得电, 如果 J7 端子有一个一定频率的脉冲信号(高低电平不断翻转) 时, 无源蜂鸣器发出声音。
在这里插入图片描述
通过电阻 R2 和 PNP 三极管 TP1 进行电流放大, 从而驱动蜂鸣器。 电阻 R1是一个上拉电阻, 用来防止蜂鸣器误发声。 当 BEEP 引脚输出低电平时, PNP 三极管导通, 蜂鸣器发声; 当 BEEP 引脚输出高电平时, PNP 三极管截止, 蜂鸣器停止发声。对其中原理不清楚的可以参考该篇文章:PNP与NPN两种三极管使用方法

如果要想 51 单片机控制蜂鸣器, 就必须将单片机管脚通过导线连接到 J7 端子上。 本章所要实现的功能是: 让蜂鸣器发出声音。 由于蜂模块电路是集成的,所以直接使用单片机管脚即可。

软件设计

本章所要实现的功能是: 让蜂鸣器发出声音, 即让 P1.5 管脚输出一个低电平, 完成后可再让 P1.5 输出一定频率的脉冲控制有源蜂鸣器。

#include "reg52.h"
#include<intrins.h>

typedef unsigned int u16;
typedef unsigned char u8;

sbit beep=P1^5;

void delay(u16 i)
{
	while(i--);
}

void main()	
{
	while(1)
	{
		beep=~beep;
		delay(100);//通过修改此延时时间达到不同的发声效果	
	}

}

使用 sbit 关键字来定义 P1.5 管脚, 定义好后即可使用 beep 来替代 P1.5口的操作。 主函数功能非常简单, 直接进入 while 循环, 在循环内不断对 beep取反, 然后延时一定时间, 即 P1.5 间隔一定时间输出高低电平, 这样就会产生脉冲信号。

动态数码管实验

多位数码管简介

多位数码管, 即是两个或两个以上单个数码管并列集中在一起形成一体的数码管。 当多位一体时, 它们内部的公共端是独立的, 独立的公共端可以控制多位一体中的哪一位数码管点亮,通常叫做“位选线” 。本开发板中在公共端处连接了74HC138芯片。只需单片机 3 个 IO 口就可以实现 8 个位选管脚的控制, 大大节省了芯片的 IO 资源。

而负责显示什么数字的段线全部是连接在一起的,连接在一起的段线可以控制这个能点亮数码管亮什么数字, 通常叫做“段选线” , 有了这两个线后, 通过单片机及外部驱动电路就可以控制任意的数码管显示任意的数字了。本开发板中在段选线处连接了74HC245芯片

位选线控制多位一体中的哪一位数码管点亮,段选线控制这个能点亮数码管亮什么数字

74HC245 芯片简介

74HC245 是一种三态输出、 八路信号收发器, 主要应用于大屏显示, 以及其它的消费类电子产品中增加驱动。

三态输出,也称为三态门或三态电路,是一种特殊的数字电路,其输出可以有三种状态:逻辑“0”、逻辑“1”和高阻态。高阻态是一种特殊的输出状态,它既不是高电平也不是低电平,而是处于一种"高阻抗"或"悬浮"状态,也就是说,它不对电路中的其他部分产生任何影响。当输出处于高阻态时,外部电路可以控制其状态,而不会影响其他与该输出连接的电路。三态电路的输出逻辑状态的控制,是通过一个输入引脚实现的。当输入引脚为低电平时,三态电路呈现正常的“0”或“1”的输出;当输入引脚为高电平时,三态电路给出高阻态输出。

管脚功能定义
在这里插入图片描述
在这里插入图片描述
从上面的管脚功能定义说明及真值表可以知道该芯片使用方法非常简单, 给 OE 使能管脚 低电平, DIR 管脚为高电平,其传输方向是 A->B 输出;DIR 管脚为低电平,其传输方向是 B->A, 至于输出高电平还是输出低电平取决于输入端的状态, 如果输入为低电平, 输出即为低; 输入为高电平, 输出即为高。 如果 OE 使能管脚为高电平,不论 DIR 管脚是高还是低, 输出是高组态。

通常我们使用 74HC245 芯片用作驱动只会让其在一个方向输出, 即 DIR 管脚为高电平, 传输方向是 A->B。

74HC138 芯片简介

74HC138D 是一种三通道输入、 八通道输出译码器

管脚功能定义
在这里插入图片描述

管脚说明
在这里插入图片描述
真值表
在这里插入图片描述

从上面的管脚功能定义说明及真值表可以知道该芯片使用方法非常简单, 给E1、 E2 使能管脚低电平, E3 管脚为高电平, 至于哪个管脚输出有效电平(低电平),要看 A0, A1, A2 输入管脚的电平状态。

A0、 A1、 A3&A4 输入就相当于 3 位 2 进制数, A0是低位, A1 是次高位, A2 是高位。 而 Y0-Y7 具体哪一个输出有效电平, 就看输入二进制对应的十进制数值。 比如输入是 101(A32, A1, A0) , 其对应的十进制数是 5, 所以 Y5 输出有效电平(低电平) 。

硬件设计

  • 动态数码管模块电路
  • 74HC138 电路
    在这里插入图片描述
    在这里插入图片描述
    从上图中可以看出, 该电路是集成的, 动态数码管的控制管脚直接连接到 51单片机的 IO 上, 段选端连接到 P0 上, 位选端连接到 LED P2 口上。 段选端通过74HC245 芯片驱动这两个共阴数码管的 a-dp 段。

软件设计

本实验的目的是: 控制动态数码管从左至右显示数字 0-7。

#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //显示0~F的值

void delay(u16 i)
{
	while(i--);
}

void DigDisplay(){
	u8 i;
	for(i=0;i<8;i++)
	{
		switch(i)
		{
			case(0):
				LSA=1;LSB=1;LSC=1;break;  //从左往右数第一个管亮
			case(1):
				LSA=0;LSB=1;LSC=1;break;
			case(2):
				LSA=1;LSB=0;LSC=1;break;
			case(3):
				LSA=0;LSB=0;LSC=1;break;
			case(4):
				LSA=1;LSB=1;LSC=0;break;
			case(5):
				LSA=0;LSB=1;LSC=0;break;
			case(6):
				LSA=1;LSB=0;LSC=0;break;
			case(7):
				LSA=0;LSB=0;LSC=0;break;
		}
		P0=smgduan[i];//发送端码
		delay(100);//间隔一段时间扫描
		P0=0x00;//消隐		 

	}

}

void main()	
{
	while(1)
	{
		DigDisplay();	
	}

}

第6、7、8行定义单片机控制 38 译码器的制引脚, 并将共阴数码管 0-F 段码数据使用数组定义好。DigDisplay()数码管动态显示函数是根据前面介绍动态数码管工作原理所编写, 即选中所要显示的那位数码管, 然后发送在该位数码管上所要显示的段码数据, 延时一定时间后在将段选口清零即消隐(消除之前的显示),如此循环8 次即可实现 8 位数码管显示。 在动态显示中, 要注意延时时间, 只要保证在人肉眼所能感觉时间之内即可让我们看到所要显示的内容就像是同时显示一样。 如果时间过长或者过短都可能会影响数码管的显示效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/351537.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

huggingface高速下载模型的实战代码

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

windows版java版本管理器

概述&#xff1a;大家都知道&#xff0c;身为搞java的&#xff0c;肯定不止一个java版本&#xff0c;这里我将讲解用一个工具来解决切换版本问题。至于linux管理java版本的&#xff0c;我也有一篇文章专门讲这个的。 用sdkman在linux上管理多个java版本-CSDN博客 官网&#x…

搭建nginx图片服务器

&#xff08;1&#xff09;将图片存储于/home/data/images目录&#xff1b; &#xff08;2&#xff09;配置nginx.conf user nginx; worker_processes 4;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connections 10000; }ht…

【Deeplabv3+】Ubutu18.04中使用pytorch复现Deeplabv3+第三步)-----CityscapesScripts生成自己的标签

本文是在前面两篇文章的基础上&#xff0c;讲解如何更改训练数据集颜色&#xff0c;需要与前面两篇文章连起来看。 本文用于修改cityscapes数据集的标签颜色与Semankitti数据集的标签一致&#xff0c;对修改后的数据集进行训练。需要下载两个开发工具包和一个数据集&#xff0…

【项目日记(五)】第二层: 中心缓存的具体实现(上)

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你做项目   &#x1f51d;&#x1f51d; 开发环境: Visual Studio 2022 项目日…

K8S搭建(centos)十、Dashboard配置(主节点)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

为什么 FPGA 比 CPU 和 GPU 快?

FPGA、GPU 与 CPU——AI 应用的硬件选择 现场可编程门阵列 (FPGA) 为人工智能 (AI) 应用带来许多优势。图形处理单元 (GPU) 和传统中央处理单元 (CPU) 相比如何&#xff1f; 人工智能&#xff08;AI&#xff09;一词是指能够以类似于人类的方式做出决策的非人类机器智能。这包…

秋招实习,刷题网站推荐

codefun2000.com 优点1: 题目全部改编自公司笔试真题&#xff0c;可以做做往年真题练手。 优点2: 该平台和公司笔试模式一样&#xff0c;都是Acm输入输出&#xff0c;更有利于准备秋招。 优点3: 平台主页有博客&#xff0c;以及各大公司真题知识点思维导图&#xff0c;讲…

第十五回 杨志押送金银担 吴用智取生辰纲-Ubuntu下wifi 无线网络的配置

晁盖等七人排了座次&#xff0c;大家商定在黄泥冈附近动手&#xff0c;正好邀请白胜参与&#xff0c;这样七人对应七星聚义&#xff0c;白胜对应北斗上的白光。 却说大名府梁中书收买了十万贯庆贺生日礼物&#xff0c;准备派杨志去押送。梁中书本意派军士押送&#xff0c;杨志说…

【重点】【DP】123.买卖股票的最佳时机III

题目 法1&#xff1a;单次遍历&#xff0c;Best! class Solution {public int maxProfit(int[] prices) {int f1 -prices[0], f2 0, f3 -prices[0], f4 0;for (int i 1; i < prices.length; i) {f1 Math.max(f1, -prices[i]);f2 Math.max(f2, f1 prices[i]);f3 Ma…

机器学习工程师在人工智能时代的角色

机器学习工程师在人工智能时代的角色 在当今的数字时代&#xff0c;人工智能&#xff08;AI&#xff09;已成为许多行业不可或缺的一部分。从流程自动化到增强客户体验&#xff0c;人工智能具有改变企业的巨大潜力。这一变革性技术的核心是机器学习&#xff0c;该领域专注于开…

从云计算到物联网:虚拟化技术的演变与嵌入式系统的融合

文章目录 一、硬件性能提升&#xff1a;摩尔定律与嵌入式虚拟化二、CPU多核技术&#xff1a;为嵌入式虚拟化提供支持三、业务负载整合&#xff1a;嵌入式虚拟化的核心需求四、降低硬件成本&#xff1a;虚拟化技术的经济效益五、软件重用与移植&#xff1a;虚拟化技术的优势六、…

近期孩子燃放烟花已引发多起火灾 富维图像烟火识别防止悲剧发生

近期&#xff0c;孩子们燃放烟花造成的火灾事件频发&#xff0c;这不仅威胁到社区的安全&#xff0c;更触动了每个家庭的心。在这样的背景下&#xff0c;“预防胜于治疗”显得尤为重要。北京富维图像公司的FIS智能图像识别系统&#xff0c;就是这样一款能够及时防止悲剧发生的创…

旷视low-level系列(一):Bayer Pattern Unification and Bayer Preserving Au

文章目录 1. Motivation2. Contribution3. Methods3.1 BayerUnify3.2 BayerAug 4. CommentsReference 1. Motivation 对于RAW域去噪&#xff0c;通常会将单通道bayer格式的RAW图打包成4通道&#xff0c;然后送入神经网络。不同厂家生产的sensor出的RAW图可能具有不同的bayer模…

QtRVSim(二)一个 RISC-V 程序的解码流程

继上一篇文章简单代码分析后&#xff0c;本文主要调研如何实现对指令的解析运行。 调试配置 使用 gdb 工具跟踪调试运行。 c_cpp_properties.json 项目配置&#xff1a; {"name": "QtRvSim","includePath": ["${workspaceFolder}/**&quo…

21.云原生之GitLab pipline语法实战(CI基础)

云原生专栏大纲 文章目录 gitlab-ci.yml 介绍GitLab中语法检测gitlab-ci.yml 语法job定义作业before_script和after_scriptstages定义阶段tages指定runnerallow_failure运行失败when控制作业运行retry重试timeout超时parallel并行作业only & exceptrulescache 缓存cache:p…

ETL能实现什么流程控制方式?

随着大数据时代的到来&#xff0c;数据处理工具成为各个行业中不可或缺的一部分。运用数据处理工具&#xff0c;能够大幅度帮助开发人员进行数据处理等工作&#xff0c;以及能够更好的为企业创造出有价值的数据。那在使用ETL工具时&#xff0c;我们往往会通过ETL平台所携带的组…

萝卜大杂烩 | 一篇文章扫盲Python、NumPy 和 Pandas,建议收藏!(适合初学者、python入门)

本文来源公众号“萝卜大杂烩”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;长文预警&#xff0c;一篇文章扫盲Python、NumPy 和 Pandas&#xff0c;建议收藏慢慢看 Python作为简单易学的编程语言&#xff0c;想要入门还是比较容…

2、鼠标事件、键盘事件、浏览器事件、监听事件、冒泡事件、默认事件、属性操作

一、鼠标事件 1、单击事件&#xff1a;onclick <body><header id"head">我是头部标签</header> </body> <script> var head document.getElementById("head")head.onclick function () {console.log("我是鼠标单击…

单片机设计_智能蓝牙电子秤(51单片机、HX711AD)

想要更多项目私wo!!! 一、电路设计 智能蓝牙电子称由51单片机、HX711AD称重模块、HC-05蓝牙模块、LCD1602等电路组成硬件部分,然后上传至APP。 二、运行结果 三、部分代码 #include "main.h" #include "HX711.h" #include "uart.h" #include …