【proteus经典项目实战】51单片机用计数器中断实现100以内的按键计数并播放音乐

一、简介

一个基于8051微控制器的计数器系统,该系统能够通过按键输入递增计数,并且能够在达到100时归零。该系统将使用计数器中断和外部中断来实现其功能。
51单片机因其简单易用和成本效益高,成为电子爱好者和学生的首选平台。通过编程单片机播放音乐,不仅可以锻炼编程技能,还能增加对电子项目的兴趣。本文将通过Proteus仿真,指导你如何使用51单片机播放三首经典歌曲。
设计一个基于8051微控制器的100以内按键计数器,涉及到硬件选择、软件编程、以及系统集成等多个方面。

二、环境与工具

Proteus 8.9 SP2 或更高版本:用于电路设计和仿真。
Keil uVision:用于编写和编译51单片机的C语言程序。
51单片机开发板:如STC89C52。
蜂鸣器:用于发声。
电阻:用于限流保护。
面包板及跳线:用于搭建电路。

三、项目目标与设计思路

1.利用51单片机通过蜂鸣器播放三首歌曲:《挥着翅膀的女孩》、《同一首歌》、《两只蝴蝶 》
2.设计一个基于8051微控制器的100以内按键计数器,涉及到硬件选择、软件编程、以及系统集成等多个方面。

3.1微控制器选择:

使用AT89C51微控制器,因为它是8051系列中广泛使用的一种,具有足够的I/O端口和内存来实现基本的计数器功能。

3.2显示设计:

使用七段数码管来显示计数值。数码管通过微控制器的P0和P2端口连接。
P0端口用于显示十位数字,P2端口用于显示个位数字。

3.3按键输入:

通过外部中断INT0(P3.2)来实现按键输入功能。当按键被按下时,触发外部中断,增加计数值。

3.4晶振配置:

使用XTAL1和XTAL2作为系统时钟的晶振输入,提供稳定的时钟信号,以确保定时器的准确性。

3.5定时器中断:

利用定时器0的溢出中断来实现定时清零功能,通过设置定时器0的初值(TH0和TL0)来控制溢出的时间。

3.6复位电路:

RST引脚连接复位电路,确保系统在上电或需要时能够正确复位。

3.7电源和去耦:

为微控制器和外围电路提供稳定的电源,并在关键位置放置去耦电容(如22pF),以减少电源噪声。

3.8串行通信:

P3.0/RXD和P3.1/TXD引脚用于串行通信,可用于与PC或其他设备进行数据交换。

3.9外部存储器接口:

ALE(地址锁存允许)引脚、PSEN(外部存储器允许)引脚和地址线(如P2.0/A8到P2.7/A15)用于连接外部存储器,如EPROM或SRAM。

3.10其他控制引脚:

P3.3/INT1和P3.4/T0等引脚预留为可能的扩展功能,如第二个外部中断或额外的定时器输入。

3.11调试和测试:

K1和K2可能是用于调试目的的开关,如K1用于计数,K2用于清零。

四、硬件设计

1. 电路搭建

将蜂鸣器的正极连接到51单片机的P1.0端口。
将蜂鸣器的负极连接到单片机的GND端口。
使用10KΩ电阻串联在蜂鸣器与P1.0端口之间,以限制电流。

2. Proteus仿真设置_**_

在Proteus中创建新的项目,并将51单片机和蜂鸣器添加到设计中。
1、X1 和 X2:这些通常表示晶振,用于为单片机提供时钟信号。晶振频率为12MHz,这是单片机运行的时钟频率。
2、XTAL1 和 XTAL2:这两个标识通常用于表示单片机的晶振输入和输出引脚。
3、P0.0 至 P0.7:这些标识代表单片机的端口0(Port 0)的8个I/O(输入/输出)引脚。在51单片机中,P0端口的引脚可以被配置为通用I/O或者特殊的功能,如外部数据存储器的地址或数据引脚。
4、P1.0 至 P1.7:这些是端口1(Port 1)的引脚,通常用于通用I/O,但在某些配置下也可能用于外部存储器的地址线。
5、P2.0 至 P2.7:端口2(Port 2)的引脚,同样可以作为通用I/O使用,或者在某些51单片机中作为第二组地址线。
6、P3.0 至 P3.7:端口3(Port 3)的引脚,这些引脚在51单片机中通常有特定的功能,如串行通信(RXD/TXD)、外部中断(INT0/INT1)、定时器(T0/T1)、写(WR)、读(RD)等。
6、RST:复位引脚,用于将单片机重置到初始状态。
7、ALE:地址锁存器使能(Address Latch Enable),用于锁存外部存储器的地址。
8、EA:外部访问允许(External Access Enable),通常用于启用或禁用外部存储器。
9、PSEN:编程存储器使能(Program Store Enable),用于访问外部程序存储器。
10、LS1:逻辑选择1,可能用于选择不同的存储器配置。
11、SOUNDER:这可能是一个自定义的标识,用于表示与蜂鸣器或扬声器连接的引脚。
12、P1.3:根据标识,这个引脚可能用于外部中断(INT1)或定时器(T1)的功能。
13、P3.0/RXD 和 P3.1/TXD:这些引脚用于单片机的串行通信,RXD是接收数据,TXD是发送数据。

点击【proteus经典项目实战】51单片机用计数器中断实现100以内的按键计数并播放音乐——古月居可查看全文

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

大数据学习之Flink基础

Flink基础 1、系统时间与时间时间 系统时间(处理时间) 在Sparksreaming的任务计算时,使用的是系统时间。 假设所用窗口为滚动窗口,大小为5分钟。那么每五分钟,都会对接收的数据进行提交任务. 但是,这里有…

项目都做完了,领导要求国际化????--JAVA后端篇

springboot项目国际化相信各位小伙伴都会,很简单,但是怎么项目都做完了,领导却要求国际化文件就很头疼了 国际化的SpringBoot代码: 第一步:创建工具类 /*** 获取i18n资源文件** author bims*/ public class Message…

循环队列的实现【C语言】

用数组实现循环队列 题目:622. 设计循环队列 - 力扣(LeetCode) 分析 循环队列,队列满则不能再插入数据,队列为空则不能再出数据。 多开一个空间方便区分队列为空和队列为满的情况。 如果要存K个数据只开K个空间&a…

IEC104转BACnet网关:实现电力监控与楼宇自动化的无缝对接

在电力监控和楼宇自控领域,IEC104和BACnet作为两种重要的通信协议扮演着重要的角色。随着不同系统之间的数据交换与集成需求的不断增长,深圳市钡铼技术有限公司推出IEC104转BACnet网关来实现这两种协议之间的无缝转换,助力电力监控和楼宇自控…

leetcode日记(47)螺旋矩阵Ⅱ

这题思路不难,就是找规律太难了。 我首先的思路是一行一行来,根据规律填入下一行的数组,第i行是由前i个数字(n-2*i)个增序数列后i个数字组成,后来觉得太难找规律了就换了一种思路。 思路大致是先计算出需…

C#、Net6、WebApi报表方案

目录 1 Pdf表单方案 1.1出现如下错误提示: 1.2 字体路径使用 2 Docx报表模板方案 2.1 pdf方案缺陷 2.2 解决方案 3 Spire.Doc报表方案 3.1 Docx方案缺陷 3.2 解决方案 4 插入复选框 5 WebApi文件流下载接口 6 软件获取方式 1 Pdf表单方案 使用【Adobe Acrobat P…

MongoDB教程(二十三):关于MongoDB自增机制

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、MongoD…

raise JSONDecodeError(“Expecting value”, s, err.value) from None

raise JSONDecodeError(“Expecting value”, s, err.value) from None 目录 raise JSONDecodeError(“Expecting value”, s, err.value) from None 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是…

ISO 50001能源管理体系:企业可持续发展的新引擎

在全球范围内,能源管理正成为企业战略规划的重要组成部分。ISO 50001能源管理体系(EnMS)作为一项国际标准,为企业提供了一套系统的方法,帮助其提高能源绩效,降低能源消耗,减少碳排放。通过有效实…

Feign-微服务通信(Feign远程调⽤ Feign简介 基本使⽤ ⾃定义配置 Feign使⽤优化)

目录 一、Feign远程调⽤ 二、Feign简介 三、基本使⽤ 1. 加⼊Fegin的依赖 2. 在主类上添加Fegin的注解 3. 创建⼀个service, 并使⽤Fegin实现微服务调⽤ 4. 修改controller代码,并启动验证 5. 重启order微服务,查看效果 四、⾃定义配置…

oncoPredict:根据细胞系筛选数据预测体内或癌症患者药物反应和生物标志物

在14年的时候,oncoPredict函数的开发团队在Genome Biology上发了一篇文章。 这篇文章的核心目的是阐释了使用治疗前基线肿瘤基因表达数据去预测患者化疗反应。开发团队发现使用细胞系去预测临床样本的药物反应是可行的。 鉴于之前的理论,该研究团队首先…

C语言开关迷宫

目录 注意事项开头程序程序的流程图程序的效果结尾 注意事项 程序里有关字符’\033’的输出都关于Sunshine-Linux的其中一篇博客——《printf函数高级用法设置打印字体颜色和背景色等》 开头 大家好,我叫这是我58。今天,我们来看一下我用C语言编译的开…

昇思25天学习打卡营第23天|munger85

FCN图像语义分割 FCN-8s表示从8倍下采样的特征图通过上采样恢复到原图尺寸的网络结构。现在下载数据集,这种8倍的比较好。 from download import download url “https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/dataset_fcn8s.t…

2024年用户口碑超佳的硬U盘数据恢复工具榜

U盘一个体积小小却能携带大量文件、视频的日常存储好物,你肯定也有吧。不知道你有没有遇到过U盘里数据丢失的情况,这时候U盘数据恢复工具就能帮我们走出这种困境。 1.U盘F0XIT数据恢复大师 一键直达>>https://www.pdf365.cn/foxit-restore/ 这…

自动驾驶-机器人-slam-定位面经和面试知识系列05之常考公式推导(02)

这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新,基本涵盖了自己秋招历程被问过的面试内容(除了实习和学校项目相关的具体细节)。在知乎和牛客(牛客上某些文章上会附上内推码)也会同步…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《面向东北地区调频指标两段式火储联合调频策略》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

浅谈断言之XML断言

浅谈断言之XML断言 XML断言是JMeter的一个组件,用于验证请求的响应数据是否符合XML结构。这对于测试返回XML格式数据的Web服务特别有用。 如何添加XML断言? 要在JMeter测试计划中添加XML断言,遵循以下步骤: 打开测试计划&…

C#知识|账号管理系统:将修改账号信息提交到数据库

哈喽,你好啊,我是雷工! 昨天练习了账号管理系统-修改账号按钮功能的实现: 《修改账号按钮功能的实现》; 接下来继续学习,如何将修改完的信息提交到数据库, 以下为学习笔记。 01 实现功能 ①:当修改完信息,点击【提交修改】按钮时,将修改完的信息保存到SQLServer数…

Qt调用谷歌拼音输入插件

要在Qt中调用谷歌拼音输入插件 编译谷歌拼音输入法源码: 可以通过编译谷歌拼音输入法的源码来实现在Qt中的应用。以下是一些步骤: 下载QtInputMethod_GooglePinyin源码,例如从Gitee获取。 使用MinGW64或MSVC2019_64构建套件编译源码。 编译完…

Cyberchef基础概念之-循环语句操作-Jump/Label

在本专栏的前面的文章介绍了fork,merge,subsection,register等多种概念来解决实际场景的问题。本文将介绍的Jump/Label的操作类似于编程语言中的for和while的功能,相信在学会使用jump操作后,将有助于解决更为复杂的数据处理问题。 本文将详细的介绍该操…