博客
关于我
C51蜂鸣器
阅读量:460 次
发布时间:2019-03-06

本文共 987 字,大约阅读时间需要 3 分钟。

C51蜂鸣器设计与实现

电路原理

本设计采用PNP结三极管Q1作为开关三极管,利用I/O口P2.3输出的高电平控制蜂鸣器的工作状态。具体来说,当P2.3输出高电平时,基极电位接近Vcc,三极管处于截止状态,蜂鸣器不响。当P2.3输出低电平时,Q1通过Vcc-Q1eb-R13-P2.3到地的回路获得基极电流,三极管导通并饱和,蜂鸣器随即发出鸣响。

工程目录

  • 硬件设计

    • 采用PNP结三极管Q1作为开关电路
    • 蜂鸣器驱动电路采用简单的双极管结构
    • I/O口P2.3用于控制蜂鸣器工作状态
  • 软件设计

    • 主程序fm_1实现蜂鸣器交替工作
    • 功能模块fm_deng实现流水灯报警功能
  • 主函数

    #include 
    #include "fm.h"int main() { fm_1(); //流水灯报警 while(1); return 0;}

    delay.h(C51流水灯三种操作)

    #ifndef __DELAY_H__#define __DELAY_H__#include "common.h"#define delay_xms(x)  delay_ms(x)#endif

    fm.h

    #ifndef __FM_H__#define __FM_H__#include "delay.h"#define on 0#define off 1sbit fm = P2^3;void fm_1(void);void fm_deng(void);void fm_1(void) {    while(1) {        fm = on; //P2^3 = 0;蜂鸣器响        delay_xms(100);        fm = off;        delay_xms(100);    }}void fm_deng(void) {    P1 = 0xfe; //1111 1110    //初始化流水灯    while(1) {        delay_xms(100);        P1 = _crol_(P1,1); //将P1循环左移1位        fm = on;        delay_xms(100);        fm = off;    }}#endif

    (以下内容与原文无关,已按照用户要求清理)

    转载地址:http://rhzbz.baihongyu.com/

    你可能感兴趣的文章
    UBUNTU 添加删除用户
    查看>>
    Oracle数据库备份与还原
    查看>>
    Ubuntu Seata开机自启动服务
    查看>>
    uart 驱动架构
    查看>>
    Oracle数据库学习(三)
    查看>>
    Oracle数据库安装成功后,忘记解锁账户和设置密码
    查看>>
    TypeError: create_purple() 接受 0 个位置参数,但给出了 2 个
    查看>>
    Oracle数据库异常--- oracle_10g_登录em后,提示java.lang.Exception_Exception_in_sending_Request__null或Connection
    查看>>
    Oracle数据库异常---OracleDBConsoleorcl无法启动
    查看>>
    oracle数据库异常---SP2-1503: 无法初始化 Oracle 调用界面 SP2-1503: 无法初始化 Oracle 问题的解决办法
    查看>>
    Oracle数据库性能调优
    查看>>
    oracle数据库核心笔记
    查看>>
    oracle数据库笔记---oracleweb视图使用流程,及plsql安装
    查看>>
    oracle数据库笔记---pl/sql的基础使用方法
    查看>>
    Transformer 架构解释
    查看>>
    Oracle数据库表空间 数据文件 用户 以及表创建的SQL代码
    查看>>