应用——基于51单片机的按键控制蜂鸣器

项目概述

这是一个基于51单片机的按键控制蜂鸣器,包含按键控制、定时器中断、外部中断。

项目文件结构

1. 主程序文件 (main.c)

#include <reg51.h> #include "timer.h" #include "key.h" // 频率常数定义 #define HZ_200 63231 #define HZ_400 64383 #define HZ_600 64767 #define HZ_800 64959 #define HZ_1000 65074 int main() { timer0_init(); // 初始化定时器0 while(1) { int ret = key_press(); // 检测按键按下 if (ret == 1) g_i = HZ_200; // 按键1: 200Hz if (ret == 2) g_i = HZ_400; // 按键2: 400Hz if (ret == 3) g_i = HZ_600; // 按键3: 600Hz if (ret == 4) g_i = HZ_800; // 按键4: 800Hz } return 0; }

2. 按键控制模块

key.h 头文件
#ifndef _KEY_H_ #define _KEY_H_ extern unsigned int g_n; // 外部中断计数变量 // 函数声明 extern void key_init(void); extern int key_press(void); extern void int0_init(void); #endif
key.c 实现文件
#include <reg51.h> #include "key.h" unsigned int g_n = 0; // 全局中断计数变量 // 外部中断0处理函数 void int0_headler(void) interrupt 0 { g_n++; // 中断计数加1 } // 外部中断0初始化 void int0_init(void) { P3 |= (1 << 2); // 设置INT0引脚 IE |= (1 << 7); // 开启总中断允许 IE |= (1 << 0); // 开启外部中断0 TCON |= (1 << 0); // 设置中断触发方式 } // 按键初始化 void key_init(void) { P1 |= (0x0F << 4); // 设置P1.4-P1.7为输入 P3 |= (1 << 5); // 设置P3.5为输入 } // 按键检测函数 int key_press(void) { int ret = 0; if((P1 & (1 << 4)) == 0) ret = 1; // 按键1: P1.4 else if((P1 & (1 << 5)) == 0) ret = 2; // 按键2: P1.5 else if((P1 & (1 << 6)) == 0) ret = 3; // 按键3: P1.6 else if((P1 & (1 << 7)) == 0) ret = 4; // 按键4: P1.7 // else if ((P3 & (1 << 5)) == 0) ret = 5; // 按键5: P3.5(注释状态) return ret; }

3. 定时器模块

timer.h 头文件
#ifndef __TIMER_H_ #define __TIMER_H_ extern unsigned int g_i; // 定时器重载值变量 extern void timer0_init(void); #endif
timer.c 实现文件
#include <reg51.h> #include "timer.h" unsigned int g_i = 0; // 定时器重载值 // 定时器0中断处理函数 void timer0_handler(void) interrupt 1 { TH0 = g_i >> 8; // 重载高8位 TL0 = g_i; // 重载低8位 P2 ^= (1 << 1); // P2.1引脚取反,产生方波 // 注释掉的LED控制代码 // g_i++; // if(g_i >= 500) // { // led_nor(); // g_i = 0; // } } // 定时器0初始化 void timer0_init(void) { TMOD &= ~(0x0F << 0); // 清除定时器0模式位 TMOD |= (1 << 0); // 设置定时器0为模式1(16位定时器) TH0 = g_i >> 8; // 初始化定时器高8位 TL0 = g_i; // 初始化定时器低8位 TCON |= (1 << 4); // 启动定时器0 IE |= (1 << 7); // 开启总中断允许 IE |= (1 << 1); // 开启定时器0中断 }

系统功能说明

1. 按键功能

  • 4个独立按键:P1.4-P1.7引脚

  • 按键检测:轮询方式检测按键状态

  • 功能分配:每个按键对应不同的输出频率

2. 定时器功能

  • 工作模式:定时器0,模式1(16位定时器)

  • 中断功能:定时产生方波信号

  • 频率控制:通过改变重载值g_i实现不同频率输出

3. 中断系统

  • 外部中断0:用于计数功能

  • 定时器中断0:用于精确时序控制

使用说明

  1. 系统初始化后,定时器开始工作

  2. 按下不同按键可以改变输出方波的频率

  3. P2.1引脚输出可变频率的方波信号

逻辑分析仪PWM显示

实物演示

这个系统展示了51单片机的中断处理、定时器应用和IO控制等核心功能。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

罗宾康备件260A功率单元LDZ10500494.260

好的&#xff0c;这是一份关于罗宾康&#xff08;Robicon&#xff09;备件型号 LDZ10500494.260 &#xff08;260A功率单元&#xff09;的详细介绍&#xff0c;力求达到您要求的2000字篇幅。罗宾康 (Robicon) 备件&#xff1a;260A功率单元 LDZ10500494.260 详细介绍一、 概述与…

CTF 必看!SQL 注入绕过滤的骚操作全在这_ 数据库中有个特殊的表,flag就在这个

正文 无过滤带回显的情况 手工注入 bugku的环境 在这一环境中的主要是通过post方式传入一个参数id来查询数据库内容。 首先判断sql语句闭合方式 当在id的值后面加上时&#xff0c;界面无回显&#xff0c;可以判断后端的sql语句应该是 select xxxx from xxxx where id in…

CANOE零基础入门:从安装到第一个测试项目

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个CANOE入门教学项目&#xff0c;包含&#xff1a;1.简单的汽车灯光控制系统仿真(远光/近光/转向灯) 2.基础CAPL脚本示例 3.分步骤的教程注释 4.测试验证环节。要求界面简洁…

比传统快3倍!Docker离线安装效率优化技巧

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Docker离线安装效率优化工具包&#xff0c;包含&#xff1a;1) 依赖包智能下载器&#xff08;支持断点续传&#xff09;&#xff1b;2) 并行安装脚本&#xff1b;3) 安装过…

5分钟快速验证Docker daemon.json配置变更

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个daemon.json配置快速验证工具。功能&#xff1a;1. 实时编辑配置文件&#xff1b;2. 模拟配置加载过程&#xff1b;3. 检测潜在问题&#xff1b;4. 显示配置变更影响&…

宝塔 服务器一个端口页面访问另外一个服务器的端口页面

提醒&#xff1a;https的ssl中只能设置 服务器的地址&#xff0c;不能是 页面跳转页面。比如https://www.happy.com/sad_api不能设置跳转到www.sad.com:8054。如果要页面跳转页面&#xff0c;需要另外处理&#xff1a;在宝塔的-安全中&#xff0c;开通某一个端口&#xff1a;点…

Docker新手必看:国内镜像源配置全指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个交互式Docker镜像源配置向导&#xff0c;面向新手用户。要求&#xff1a;1) 图文并茂的步骤指引 2) 自动检测系统环境(Docker是否安装等) 3) 提供阿里云、腾讯云等主流源的…

Z-Image商业应用指南:免显卡云端生成合规素材

Z-Image商业应用指南&#xff1a;免显卡云端生成合规素材 引言&#xff1a;为什么选择Z-Image生成商业配图&#xff1f; 作为自媒体创作者&#xff0c;你是否经常为文章配图发愁&#xff1f;自己拍摄质量不稳定&#xff0c;购买图库又成本高昂&#xff0c;而本地运行AI生成工…

远程协助标准化操作指南:从工具到平台的最佳实践

当财务同事的报表软件在居家办公时突然崩溃&#xff0c;当销售团队急需在客户现场演示却无法连接打印机&#xff0c;这些跨空间的IT求助场景&#xff0c;正成为混合办公时代的日常挑战。许多企业发现&#xff0c;过去临时凑合的远程协助方式——微信指导、个人版远程软件、电话…

STC15W104单片机8脚4路2262 1527解码输出程序,带学习功能,掉电储存

STC15W104单片机8脚4路2262 1527解码输出程序&#xff0c;带学习功能&#xff0c;掉电储存。老铁们今天咱们搞点硬核的&#xff01;最近在玩STC15W104这个8脚小钢炮&#xff0c;折腾出个支持1527/2262编码的万能遥控解码器。核心功能就三点&#xff1a;自动学习遥控器、掉电记忆…

1.2.3 新兴与特色AI模型测评:Kimi AI与DeepSeek深度解析

1.2.3 新兴与特色AI模型测评:Kimi AI与DeepSeek深度解析 引言 在前两节中,我们了解了国际主流模型(ChatGPT、Claude、Gemini)和国内主流模型(通义千问、文心一言、讯飞星火)。但AI领域日新月异,一些新兴模型在特定领域展现出了令人惊艳的能力。本节将深入测评两个极具…

Sheet-to-Doc二维码生成功能:让文档自动化更智能

在数字化办公时代&#xff0c;二维码已经成为连接物理世界和数字世界的重要桥梁。从产品标签到会议胸卡&#xff0c;从设备标识到文档防伪&#xff0c;二维码的应用场景越来越广泛。你是否遇到过需要批量生成二维码并插入到Word文档中的需求&#xff1f;今天&#xff0c;我将为…

VS Code Copilot新手指南:5分钟上手AI编程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 编写一个面向新手的VS Code Copilot教程&#xff0c;包含安装步骤、基本功能介绍和简单示例。示例包括生成一个Hello World程序、一个计算器和一个小型待办事项应用。教程要求步骤…

AI助力NGROK内网穿透:自动配置与智能优化

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个Python脚本&#xff0c;使用NGROK实现内网穿透功能。要求&#xff1a;1.自动检测本地网络环境 2.根据网络类型(家庭/企业)智能选择最佳穿透协议 3.生成可执行的NGROK配置命…

AI人脸隐私卫士适合个人开发者吗?免费镜像使用指南

AI人脸隐私卫士适合个人开发者吗&#xff1f;免费镜像使用指南 1. 引言&#xff1a;AI 人脸隐私卫士 —— 智能自动打码的轻量级解决方案 在社交媒体、内容创作和数据共享日益频繁的今天&#xff0c;人脸隐私泄露已成为不可忽视的安全隐患。尤其对于个人开发者、摄影爱好者或…

传统vsAI:SWEEZY CURSORS开发效率对比

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个对比展示工具&#xff0c;左侧显示传统手写代码实现SWEEZY CURSORS的过程&#xff0c;右侧展示使用AI工具自动生成的相同效果。功能包括&#xff1a;1) 代码量对比&#x…

交通运输行业的信创情况

交通运输信息化发展情况从1989年发布的《交通运输经济信息系统“八五”发展计划》到2021年发布的《数字交通“十四五”发展规划》&#xff0c;我国已经编制了“八五”、“九五”、“十五”、“十一五”、“十二五”、“十三五”、“十四五”等7个五年发展规划以及相关战略规划政…

小白必看:谷歌账号注册图文详解

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个交互式谷歌账号注册指导应用&#xff0c;包含&#xff1a;1)分步骤可视化引导界面 2)实时表单填写示范 3)常见错误动画演示 4)多语言支持 5)注册成功庆祝页面。要求使用Re…

冠珠瓷砖100个名人的家,走进郭培北京玫瑰坊,探寻中国高定美学原点

“玫瑰坊能走到今天&#xff0c;靠的就是‘较真’&#xff0c;对工艺不舍&#xff0c;对细节不让&#xff0c;对空间不敷衍。高定不是商品&#xff0c;而是有温度、有生命的载体&#xff1b;正如冠珠岩板&#xff0c;不只是建材&#xff0c;更是可触摸的东方美学语言。”——郭…

论文分享与解析|基于自监督学习的产前超声图像囊肿性水囊瘤检测方法解析与分享

引言&#xff1a;产前超声检测的挑战与人工智能的机遇 产前超声检查是现代围产医学中不可或缺的筛查与诊断工具&#xff0c;具有实时、无辐射、可重复等优点。然而&#xff0c;超声图像本身存在噪声高、对比度低、视野小、操作者依赖性强等问题&#xff0c;导致图像解读存在较…