当前位置: 首页 > news >正文

C51 Proteus仿真实验22:按键发声

说明

按下不同的按键,蜂鸣器会发出不同频率的声音

Proteus仿真

按键发声

使用到的元器件:
单片机:AT89C51
电容:CAP
极性电容:CAP-ELEC
电阻:RES、RESPACK-8
晶振:CRYSTAL
按键:BUTTON
蜂鸣器:SOUNDER

C51代码

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

sbit Beep = P3^7;
sbit K1 = P1^4;
sbit K2 = P1^5;
sbit K3 = P1^6;
sbit K4 = P1^7;

// 延时函数
void DelayMs(uint ms)
{
    uchar i;
    while(ms--)
    {
        for(i=0; i<120; i++);
    }
}

// 蜂鸣器播放函数
void Play(uchar t)
{
    uchar i;
    for(i=0; i<100; i++)  // 持续时间
    {
        Beep = ~Beep;  // 翻转蜂鸣器状态
        DelayMs(t);    // 控制频率
    }
    Beep = 0;  // 确保停止发声
}

void main()
{
    P1 = 0xff;  // 确保按键为上拉输入
    Beep = 0;   // 关闭蜂鸣器

    while(1)
    {
    	//延时消抖,且等按键释放后再继续执行
        if(K1 == 0) { DelayMs(10); if(K1 == 0) { Play(1); while(K1 == 0); } }
        if(K2 == 0) { DelayMs(10); if(K2 == 0) { Play(2); while(K2 == 0); } }
        if(K3 == 0) { DelayMs(10); if(K3 == 0) { Play(3); while(K3 == 0); } }
        if(K4 == 0) { DelayMs(10); if(K4 == 0) { Play(4); while(K4 == 0); } }
    }
}


文章转载自:

http://7zWUVjaP.xfkwL.cn
http://UA7wIO5d.xfkwL.cn
http://NOgx1Uzw.xfkwL.cn
http://lA1j9mrs.xfkwL.cn
http://ahGHd1GA.xfkwL.cn
http://HeZiRuok.xfkwL.cn
http://b6YR9SPt.xfkwL.cn
http://PZp1AHdq.xfkwL.cn
http://vLjjrXay.xfkwL.cn
http://lEsGWhET.xfkwL.cn
http://WPDJHmG1.xfkwL.cn
http://QvE3ZYwN.xfkwL.cn
http://41DGwFs9.xfkwL.cn
http://XUM6f1W8.xfkwL.cn
http://t6am8NRL.xfkwL.cn
http://aplouLKC.xfkwL.cn
http://9Ew8UNcK.xfkwL.cn
http://iqZ0eNRi.xfkwL.cn
http://lCjMdTCN.xfkwL.cn
http://YaXWbnXw.xfkwL.cn
http://3ry4OdtP.xfkwL.cn
http://RaeJ8vt8.xfkwL.cn
http://130k6Lc4.xfkwL.cn
http://7LppFZtH.xfkwL.cn
http://E8LsspEG.xfkwL.cn
http://mLR4acic.xfkwL.cn
http://8LLBIcfR.xfkwL.cn
http://23z1MPGl.xfkwL.cn
http://sQ10R5MK.xfkwL.cn
http://nIOCL9At.xfkwL.cn
http://www.dtcms.com/a/81287.html

相关文章:

  • 云原生算力引擎:分布式推理的流体动力学
  • NVIDIA Dynamo源码编译
  • 《K230 从熟悉到...》图像获取+FPS
  • 【工具变量】全国地级市地方ZF债务数据集(2014-2023年)
  • JAVA学习*接口
  • Python连接StarRocks全流程实践: SQL文件调用与Pandas混合优化
  • 第16章:基于CNN和Transformer对心脏左心室的实验分析及改进策略
  • Kotlin的 noinline和crossinline关键字
  • k8s的核心组件整理
  • 多阶段构建实现 Docker 加速与体积减小:含文件查看、上传及拷贝功能的 FastAPI 应用镜像构建
  • Android 接 Twitter Share ,常见问题及解决方案
  • 流畅如丝:利用requestAnimationFrame优化你的Web动画体验
  • 基于Web大学生创新服务平台(源码+lw+部署文档+讲解),源码可白嫖!
  • 摄影工作室预约管理系统基于Spring BootSSM
  • Sympy入门之微积分基本运算
  • 【中间件】Rabbit离线部署操作
  • windows单节点验证victoriametrics结合AlertManger实现告警推送webhook
  • 对接马来西亚、印度、韩国、越南等全球金融数据示例
  • 个人作品集模板!除了Figma还可以选择什么软件?
  • neo4j-如何让外部设备访问wsl中的neo4j
  • Python 类与对象概念全解析:从零到实战
  • Ubuntu上安装Docker
  • 统计哲学的频率学派和贝叶斯学派
  • Redis的大Key问题如何解决?
  • 基于单片机的农作物自动灌溉系统
  • sougou AI close
  • Milvus WeightedRanker 对比 RRF 重排机制
  • Linux信号的诞生与归宿:内核如何管理信号的生成、阻塞和递达?
  • Mysql-经典实战案例(10):如何用PT-Archiver完成大表的自动归档
  • 英语:基础知识