您现在的位置是:主页 > news > wordpress tag导入/seo服务商

wordpress tag导入/seo服务商

admin2025/5/3 3:20:15news

简介wordpress tag导入,seo服务商,网站长图怎么做,林芝seo电子琴实验报告电子琴实验报告电子琴实验报告一, 实验目的1.进一步巩固和加深理论课基本知识的理解,提高综合运用所学知识的能力。 2.能根据需要选择参考书,查阅资料,通过独立思考,深入钻研有关问题。3.学会自己独立分…

wordpress tag导入,seo服务商,网站长图怎么做,林芝seo电子琴实验报告电子琴实验报告电子琴实验报告一, 实验目的1.进一步巩固和加深理论课基本知识的理解,提高综合运用所学知识的能力。 2.能根据需要选择参考书,查阅资料,通过独立思考,深入钻研有关问题。3.学会自己独立分…

电子琴实验报告电子琴实验报告

电子琴实验报告

一, 实验目的

1.进一步巩固和加深理论课基本知识的理解,提高综合运用所学知识的能力。 2.能根据需要选择参考书,查阅资料,通过独立思考,深入钻研有关问题。3.学会自己独立分析问题、解决问题。

4.学习按键扫描及蜂鸣器应用和单片机设计方法。

5. 设计任务及要求 利用实验平台上矩阵键盘和蜂鸣器及单片机设计实现要求的电子琴。

二,实验要求

A.基本要求:

1:能够通过键盘演奏音符。

2:能够保存演奏的音乐,并实现回放。

3:有音调调整功能(如:C调,G调)。

三,实验基本原理

1.键盘接口必须具有去抖动、按键识别基本功能。(1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为5—20mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。()被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口AT89S52 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 52指令系统及80C52引脚结构。这样,既能做到经济合理又能实现预期的功能。

在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。程序可分为键盘演奏程序程序

2. 分块设计

模块电路主要分为:键盘输入部分、播放部分、复位电路。

2.1键盘输入模块

键盘接入单片机P3接口,

2.2播放模块

播放模块是成

图2-3 发声模块电路图

电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子

设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。而且由于所需驱动功率较

AT89S52晶振模块

各模块拼接组合,电路总体设计图如下:

B.程序设计

B.1 程序总体设计

本实验用C程序完成.

流程图如下:

结合电路图,程序设计的整体思路为:

电子琴按键方式:

1. 按1键——发声音符为‘1’。

2. 按2键——发声音符为‘2’。

3. 按3键——发声音符为‘3’。

4. 按4键——发声音符为‘4’。

5. 按5键——发声音符为‘5’。

6. 按6键——发声音符为‘6’。

7. 按7键——发声音符为‘7’。

8. 按8键——播放保存的音乐。

按9键——开始录音。

按10键——播放录音。

按11键——调整音调。

B.2 程序主要模块

主程序:

#include

#define uchar unsigned char

#define uint unsigned int

uchar i,j,x=0,y=0,temp=0,u=0;

uchar code c[]={3,3,4,5,5,4,3,2,1,1,2,3,3,2,2,0,3,3,4,5,5,4,3,2,1,1,2,3,2,1,1,0,2,2,3,1,2,3,4,3,1,2,3,4,3,1,1,2,5,0,3,3,4,5,5,4,3,2,1,1,2,3,2,1,1};

uchar m[100];

void delay(uint a)

{while(a--);}

void music(uchar b)

{

switch(b){

case(1):for(i=0;i<66;i++){P2=0xff;delay(140);P2=0x00;delay(140);}break;

case(2):for(i=0;i<74;i++){P2=0xff;delay(123);P2=0x00;delay(123);}break;

case(3):for(i=0;i<82;i++){P2=0xff;delay(111);P