0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于51单片机的简易电子琴设计

CHANBAEK 来源:逗比小憨憨 作者:逗比小憨憨 2023-06-16 16:26 次阅读

题目:

基于51单片机的简易电子琴的设计与制作(Proteus仿真部分)

单片机介绍:

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括来讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。从二十世纪九十年代开始,单片机技术就已经发展起来,随着时代的进步与科技的发展,目前该技术的实践应用日渐成熟,单片机被广泛应用于各个领域。

单片机(Microcontrollers)作为计算机发展的一个重要分支领域,根据发展情况,从不同角度,单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。

通用型

这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路

总线型

这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接,另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。

控制型

这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型,通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。

现如今,人们越来越重视单片机在智能电子技术方面的开发和应用,单片机的发展进入到新的时期,无论是自动测量还是智能仪表的实践,都能看到单片机技术的身影。当前工业发展进程中,电子行业属于新兴产业,工业生产中人们将电子信息技术成功运用,让电子信息技术与单片机技术相融合,有效提高了单片机应用效果。作为计算机技术中的一个分支,单片机技术在电子产品领域的应用,丰富了电子产品的功能,也为智能化电子设备的开发和应用提供了新的出路,实现了智能化电子设备的创新与发展。单片机也被称为单片微控器,属于一种集成式电路芯片。在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。由此可见,单片机凭借着强大的数据处理技术和计算功能可以在智能电子设备中充分应用。简单地说,单片机就是一块芯片,这块芯片组成了一个系统,通过集成电路技术的应用,将数据运算与处理能力集成到芯片中,实现对数据的高速化处理。

(以上内容摘自百度百科)

仿真图:

图片

Proteus仿真连线图

程序源代码:

/*
*@brief: 基于单片机的简易电子琴设计与制作
*@author:逗比小憨憨
*@website:https://space.bilibili.com/314404732
*/
#include "reg51.h"

#define uint unsigned int
#define uchar unsigned char

#define KEYPORT P1
#define SMGPORT P0
#define delayValue 10
sbit buzzer=P2^3;
uint value=0;
uchar code dis[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint  code tone[8]={0xfc44,0xfcac,0xfd09,0xfd34,0xfd82,0xfdc8,0xfe06,0xfe22};
uchar code button_Sel[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void Button_Scan(void);
void Handler(void);
void delay_ms(uint k);

void delay_ms(uint k)
{
	uint j=0,i=0;
	for(j=0;j< k;j++)
		for(i=0;i< 118;i++);
}

void Button_Scan(void)
{	
	KEYPORT=0xff;
	if(KEYPORT==button_Sel[0]) 
	{
		delay_ms(delayValue);
		if(KEYPORT==button_Sel[0]) 
		{
			value=tone[0];
			SMGPORT=dis[1];
		}
	}
	if(KEYPORT==button_Sel[1]) 
	{
		delay_ms(delayValue);
		if(KEYPORT==button_Sel[1])
		{
			value=tone[1];
			SMGPORT=dis[2];
		}
	}
 	if(KEYPORT==button_Sel[2]) 
	{
		delay_ms(delayValue);
		if(KEYPORT==button_Sel[2])
		{
			value=tone[2];
			SMGPORT=dis[3];
		}
	}
	if(KEYPORT==button_Sel[3]) 
	{
		delay_ms(delayValue);
		if(KEYPORT==button_Sel[3])
		{
			value=tone[3];
			SMGPORT=dis[4];
		}
	}
	if(KEYPORT==button_Sel[4])
	{
		delay_ms(delayValue);
		if(KEYPORT==button_Sel[4])
		{
			value=tone[4];
			SMGPORT=dis[5];
		}
	}
 	if(KEYPORT==button_Sel[5]) 
	{
		delay_ms(delayValue);
		if(KEYPORT==button_Sel[5])
		{
			value=tone[5];
			SMGPORT=dis[6];
		}
	}
	if(KEYPORT==button_Sel[6]) 
	{
		delay_ms(delayValue);
		if(KEYPORT==button_Sel[6])
		{
			value=tone[6];
			SMGPORT=dis[7];
		}
	}
	if(KEYPORT ==button_Sel[7]) 
	{
		delay_ms(delayValue);
		if(KEYPORT==button_Sel[7])
		{
			value=tone[7];
			SMGPORT=dis[8];
		}
	}
}

void Handler(void)
{
	if(KEYPORT==0xff)
	{
		P2=0xff;
		TR1=0;
		buzzer=1;
	}
	else	  
	{
		TR1=1;
	}
}

void main(void)
{
	ET1=1;
	TMOD |=0x10;//使用定时器T1的模式1
	TH1=(65536-500)/256;
	TL1=(65536-500)%256;
	P0=0x00;
	EA=1;
	while(1)
	{
	
	  Button_Scan();//按键扫描函数
	  Handler();
	 	 
	}

}

void Time1_Handler(void) interrupt 3 using 1
{
	buzzer=~buzzer; 
	TH1=value/256;
	TL1=value%256;
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6812

    浏览量

    147653
  • 单片机
    +关注

    关注

    6001

    文章

    43978

    浏览量

    620875
  • Proteus
    +关注

    关注

    76

    文章

    1688

    浏览量

    105598
  • 51单片机
    +关注

    关注

    269

    文章

    5649

    浏览量

    120717
  • 电子琴
    +关注

    关注

    4

    文章

    148

    浏览量

    30104
收藏 人收藏

    评论

    相关推荐

    #造物大赏 51单片机简易电子琴

    单片机
    Mr_haohao
    发布于 :2022年07月28日 21:54:39

    51单片机简易电子琴

    单片机51单片机
    jf_95215556
    发布于 :2022年09月28日 19:50:07

    基于AT89C51单片机简易电子琴

    基于AT89C51单片机简易电子琴
    发表于 08-14 18:53

    基于51单片机简易电子琴制作

    大家能提供一些参考和建议,怎样用单片机和八个按键设计出发出哆啦咪发梭拉西哆吗?
    发表于 11-07 10:57

    电子琴

    我想做个基于51单片机简易电子琴,能不能提供电路图和源程序啊?拜托拜托了
    发表于 07-29 09:26

    基于51单片机简易电子琴设计

    请大佬们帮帮忙,很快就要交了..
    发表于 12-29 15:56

    基于51单片机简易电子琴设计

    基于51单片机设计的简易电子琴
    发表于 07-21 06:37

    如何去实现一种基于51单片机简易电子琴设计

    系统由STC89C52单片机+数码管+电源电路+音符按键+乐曲切换按键+蜂鸣器构成。具体功能:1、数码管显示所按的音符2、从左到右的按键实现的音符分别是:do、re、mi、fa、so、la、si
    发表于 11-09 08:30

    基于51单片机简易电子琴的设计

    发表于 12-26 14:31 56次下载

    基于51单片机简易电子琴设计

    发表于 06-08 13:54 8次下载

    51 单片机简易电子琴

    51单片机设计16键简易电子琴
    发表于 02-01 13:19 39次下载

    基于AT89C51单片机简易电子琴设计

    产生中断,由于定时参数不同,就会发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同音调。 简易电子琴基本原理及其框图 简易电子琴系统主要是采用AT89C
    发表于 12-04 13:45 110次下载
    基于AT89C<b class='flag-5'>51</b><b class='flag-5'>单片机</b>的<b class='flag-5'>简易</b><b class='flag-5'>电子琴</b>设计

    使用51单片机设计简易电子琴的电路图和代码免费下载

    本文档的主要内容详细介绍的是使用51单片机设计简易电子琴的电路图和代码免费下载。
    发表于 06-18 17:44 31次下载
    使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b>设计<b class='flag-5'>简易</b><b class='flag-5'>电子琴</b>的电路图和代码免费下载

    基于51单片机简易电子琴设计

    系统使用的模块有AT89C51单片机+8位共阳数码管+矩阵键盘+小灯+按键+蜂鸣器。
    的头像 发表于 09-29 10:13 5124次阅读