资讯详情

【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题

??目录

  • ??蜂鸣器实验
    • ??实现项目代码
    • ??刨根问底环节
      • ??蜂鸣器介绍
        • 蜂鸣器的分类
        • 蜂鸣器的有源无源可分
        • 放大引入电路
      • ??代码设计
      • ??项目代码
  • ??静态数码管实验
    • ??实现项目代码
    • ??刨根问底环节
      • ??浅识数码管
        • 1.数字管的分类
        • 2.了解共阳极数码管和共阴极数码管
      • ??代码设计
      • ??项目代码
  • ??动态数码管实验
    • ??实现项目代码
    • ??刨根问底环节
      • ??多数码管简介
        • 数字管静态显示说明
        • 动态显示和阐述数码管
        • 74HC245 和74HC138 芯片介绍
          • ① 74HC245 芯片简介
          • ②74HC138 芯片简介
      • ??代码设计
      • ??项目代码
  • ??总结

??蜂鸣器实验

在这里插入图片描述


??实现项目代码

??刨根问底环节

??蜂鸣器介绍

蜂鸣器的分类

振荡器、压电蜂鸣器、阻抗匹配器和共振箱组成 等等。多谐振荡器由晶体管或集成电路组成.5~15V 直流工 多谐振荡器振动,输出1.5~5kHZ 阻抗匹配器推动压电 蜂鸣片发声。

蜂鸣器的有源无源可分

开发板上使用的蜂鸣器是无源蜂鸣器属于压电蜂鸣器类型。这里提到的有源和无源不是指电源,而是蜂鸣器是否含有电源振荡电路

放大电路引入

🍏代码设计

📌项目代码

#include "reg52.h"
typedef unsigned int u16; 
typedef unsigned char u8;

sbit BEEP = P2^5;//操作和蜂鸣器相连的P2.5引脚
//延时函数
void delay_10us(u16 ten_us)
{ 
        
	  while(ten_us--);
}
void main()
{ 
        
	u16 i=1,j=2000;
	while(i)
	{ 
        
		 while(j--)
		 { 
        
			 //通过反转赋值,产生一定频率的脉冲信号
			 BEEP=1;
			delay_10us(190);
			BEEP=0;
			delay_10us(10);
		 	BEEP = !BEEP;
			delay_10us(100);//延时鸣响一段时间
		 }	
		i = 0;//结束循环
		BEEP = 0;//关闭蜂鸣器
	}
}

💓静态数码管实验

在这里插入图片描述

📁项目实现代码

🔖刨根问底环节

🍪浅识数码管

基本单元仍旧是发光二极管。数码管有时候也称LED数码管

1、数码管的分类

2、共阳极数码管和共阴极数码管的认识


🍏代码设计

📌项目代码

/******************************************************************** ****************** 实验名称:静态数码管实验 接线说明: 实验现象:下载程序后“数码管模块”最左边数码管显示数字0 注意事项: ********************************************************************* ******************/
#include "reg52.h"
typedef unsigned int u16; //对系统默认数据类型进行重定义
typedef unsigned char u8;

#define SMG_A_DP_PORT P0 //使用宏定义数码管段码口

//共阴极数码管显示0 ~F 的段码数据
u8 gsmg_code[17]={ 
        0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

/******************************************************************** *********** * 函数名: main * 函数功能: 主函数 * 输入: 无 * 输出: 无 ********************************************************************* **********/
void main()
{ 
        
	SMG_A_DP_PORT=gsmg_code[0];//将数组第1 个数据赋值给数码管段选口
}

💓动态数码管实验

在这里插入图片描述

📁项目实现代码

🔖刨根问底环节

🍪多位数码管简介

数码管静态显示阐述

数码管动态显示阐述

74HC245 和74HC138 芯片介绍

① 74HC245 芯片简介

开关的作用。

②74HC138 芯片简介

🍏代码设计

📌项目代码

/******************************************************************** ****************** 实验名称:动态数码管实验 接线说明: 实验现象:下载程序后“数码管模块”显示01234567 注意事项: ********************************************************************* ******************/
#include "reg52.h"
typedef unsigned int u16; //对系统默认数据类型进行重定义
typedef unsigned char u8;

#define SMG_A_DP_PORT P0 //使用宏定义数码管段选所依赖的P0端口

//定义数码管位选信号控制脚
sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;


//提前打表共阴极数码管显示0 ~ F 的段码数据
u8 gsmg_code[17]={ 
        0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

/******************************************************************** *********** * 函数名: delay_10us * 函数功能: 延时函数,ten_us=1 时,大约延时10us * 输入: ten_us * 输出: 无 ********************************************************************* **********/
void delay_10us(u16 ten_us)
{ 
        
	while(ten_us--);
}


/******************************************************************************* * 函数名: smg_display * 函数功能: 动态数码管显示 * 输入: 无 * 输出: 无 *******************************************************************************/
void smg_display(void)
{ 
        
	  u16 i;
	  for(i=0;i < 8;i++)
	  { 
        
	  		//模拟位选的过程
			switch(i)
			{ 
        
				//注意这里写P22、P23、P24的时候, 按照P22是最低位,P24是最高位的思维走
				//才能对应上74HC138译码器中二进制理解法
				case 0: LSC = 1,LSB = 1,LSA = 1;break;
				case 1: LSC = 1,LSB = 1,LSA = 0;break;
				case 2: LSC = 1,LSB = 0,LSA = 1;break;
				case 3: LSC = 1,LSB = 0,LSA = 0;break;
				case 4: LSC = 0,LSB = 1,LSA = 1;break;
				case 5: LSC = 0,LSB = 1,LSA = 0;break;
				case 6: LSC = 0,LSB = 0,LSA = 1;break;
				case 7: LSC = 0,LSB = 0,LSA = 0;break;
			}
			SMG_A_DP_PORT =  gsmg_code[i];	//确定P0端口具体的段选
			delay_10us(100);//放置延时,让其稳定显示
			SMG_A_DP_PORT =  0x00;//将段选口清零即消隐(消除之前的显示)
	  }
}

/******************************************************************** *********** * 函数名: main * 函数功能: 主函数 * 输入: 无 * 输出: 无 ********************************************************************* **********/
void main()
{ 
        
	while(1)
	{ 
        
		//调用这个函数
		smg_display();
	}
}

💓总结

标签: 单片机高低边驱动引脚控制继电器三极管dp3080y1三极管电流正规的大电流混装连接器d6020d固态继电器1114p固体继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台