??目录
??蜂鸣器实验
![]()
??实现项目代码
??刨根问底环节
??蜂鸣器介绍
蜂鸣器的分类
。 振荡器、压电蜂鸣器、阻抗匹配器和共振箱组成 等等。多谐振荡器由晶体管或集成电路组成.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();
}
}
💓总结