【51单片机】【protues仿真】基于51单片机简易电子琴系统(8键)

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、八个音符电子琴

2、八个按键对应不同音符​

二、使用步骤

本项目使用Proteus8仿真采用51或52单片机作为控制核心‌,通过蜂鸣器或扬声器(需驱动电路)输出音频信号,8个独立按键分别对应8个不同音调(如中音DO~高音DO),通过定时器中断控制蜂鸣器输出方波频率实现发音‌。

三、硬件资源

1、51单片机核心模块

2、按键模块

2、蜂鸣器模块

四、软件设计

#include<reg52.h> //头文件

#define uint unsigned int //宏定义

#define uchar unsigned char //宏定义

sbit speaker=P1^4;//喇叭接口

uchar a,b; //定义ab变量

void main()

{

TMOD=0x01; //定时器0工作方式

TH0=a;

TL0=b; //赋初值

ET0=1;//打开定时器,但是未允许中断

TR0=1;//打开定时器0

while(1) //主循环

{

check_key(); //扫描按键函数

}

}

/*--------------------------------------------------------------------------

Header file for generic 80C52 and 80C32 microcontroller.

Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.

All rights reserved.

--------------------------------------------------------------------------*/

#ifndef REG52_H

#define REG52_H

sfr P0 = 0x80;

sfr P1 = 0x90;

sfr P2 = 0xA0;

sfr P3 = 0xB0;

sfr PSW = 0xD0;

sfr ACC = 0xE0;

sfr B = 0xF0;

sfr SP = 0x81;

sfr DPL = 0x82;

sfr DPH = 0x83;

sfr PCON = 0x87;

sfr TCON = 0x88;

sfr TMOD = 0x89;

sfr TL0 = 0x8A;

sfr TL1 = 0x8B;

sfr TH0 = 0x8C;

sfr TH1 = 0x8D;

sfr IE = 0xA8;

sfr IP = 0xB8;

sfr SCON = 0x98;

sfr SBUF = 0x99;

sfr T2CON = 0xC8;

sfr RCAP2L = 0xCA;

sfr RCAP2H = 0xCB;

sfr TL2 = 0xCC;

sfr TH2 = 0xCD;

/* PSW */

sbit CY = PSW^7;

sbit AC = PSW^6;

sbit F0 = PSW^5;

sbit RS1 = PSW^4;

sbit RS0 = PSW^3;

sbit OV = PSW^2;

sbit P = PSW^0; //8052 only

sbit TF1 = TCON^7;

sbit TR1 = TCON^6;

sbit TF0 = TCON^5;

sbit TR0 = TCON^4;

sbit IE1 = TCON^3;

sbit IT1 = TCON^2;

sbit IE0 = TCON^1;

sbit IT0 = TCON^0;

sbit EA = IE^7;

sbit ET2 = IE^5; //8052 only

sbit ES = IE^4;

sbit ET1 = IE^3;

sbit EX1 = IE^2;

sbit ET0 = IE^1;

sbit EX0 = IE^0;

sbit PT2 = IP^5;

sbit PS = IP^4;

sbit PT1 = IP^3;

sbit PX1 = IP^2;

sbit PT0 = IP^1;

sbit PX0 = IP^0;

sbit RD = P3^7;

sbit WR = P3^6;

sbit T1 = P3^5;

sbit T0 = P3^4;

sbit INT1 = P3^3;

sbit INT0 = P3^2;

sbit TXD = P3^1;

sbit RXD = P3^0;

sbit SM0 = SCON^7;

sbit SM1 = SCON^6;

sbit SM2 = SCON^5;

sbit REN = SCON^4;

sbit TB8 = SCON^3;

sbit RB8 = SCON^2;

sbit TI = SCON^1;

sbit RI = SCON^0;

sbit T2EX = P1^1; // 8052 only

sbit T2 = P1^0; // 8052 onl

sbit TF2 = T2CON^7;

sbit EXF2 = T2CON^6;

sbit RCLK = T2CON^5;

sbit TCLK = T2CON^4;

sbit EXEN2 = T2CON^3;

sbit TR2 = T2CON^2;

sbit C_T2 = T2CON^1;

sbit CP_RL2 = T2CON^0;

#endif

五、实验现象

演示视频:

https://www.bilibili.com/video/BV1hYYyz5Egb/https://www.bilibili.com/video/BV1hYYyz5Egb/

相关推荐
学术小白人12 分钟前
会议第一轮投稿!2026年物联网、数据科学与先进计算国际学术会议(IDSAC2026)
人工智能·物联网·数据分析·能源·制造·教育·rdlink研发家
磨十三21 分钟前
ARM Cortex-M 系列 MCU:内核、指令、异常与中断解析
arm开发·单片机·嵌入式硬件
星轨初途30 分钟前
数据结构排序算法详解(2)——选择排序(附动图)
c语言·数据结构·经验分享·笔记·b树·算法·排序算法
合作小小程序员小小店33 分钟前
游戏开发,桌面%小游戏,俄罗斯方块%demo,基于vs2022,c语言,背景音乐,easyX,无数据库,
c语言·开发语言
罗汉松(山水白河)1 小时前
关于串口与UDP通讯的实验
单片机·嵌入式硬件·网络协议·udp·tcp·串口、
0***142 小时前
C在物联网中的Azure Sphere
物联网·microsoft·azure
EXtreme352 小时前
【C 语言专栏收官】预处理完全攻略:宏、条件编译与代码安全的最后一道防线
c语言·预处理·
yuuki2332333 小时前
【C++】初识C++基础
c语言·c++·后端
小年糕是糕手3 小时前
【C++】类和对象(二) -- 构造函数、析构函数
java·c语言·开发语言·数据结构·c++·算法·leetcode
d111111111d3 小时前
STM32外设--SPI读取W25Q64(学习笔记)硬件SPI
笔记·stm32·单片机·嵌入式硬件·学习