单片机电子琴的实验报告

合集下载

电子琴的实验报告

电子琴的实验报告

电子琴的实验报告 WTD standardization office【WTD 5AB- WTDK 08- WTD 2C】单片机课程设计设计题目电子琴指导老师:苏参与实验者: moxiaoxiao专业:统本电信0801地点:3#楼北楼605电子琴一.设计目的:(1).培养综合运用知识的能力(2).朋友查阅资料,使用工程设计标准及编写设计文档的能力.(3).掌握单片机应用系统的设计方法.(4).提高计算机绘图能力二.设计任务:利用DP51PROC实验系统上的定时器/计数器,按键和蜂鸣器单元。

用单片机I/O口线控制蜂鸣器发出不同的音调,程序检测按键状态,7个按键中某一键按下时,蜂鸣器对应标称音阶.三.设计与调试环境KEIL uVision2 是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的 MCS51 架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM ,汇编和 C 语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。

1:按下面的步骤建立一个项目:图 1-4 选取芯片图 1-5 新建程序文件(1)点击图1-5 中的 3 保存新建的程序,也可以用菜单 File-Save 或快捷键 Ctrl+S 进行保存。

因是新文件所以保存时会弹出类似图1-3 的文件操作窗口,我们把第一个程序命名为,保存在项目所在的目录中,这时程序单词有了不同的颜色,说明 KEIL 的 C 语法检查生效了。

如图1-6 鼠标在屏幕左边的 Source Group1 文件夹图标上右击弹出菜单,在这里可以做项目中增加减少文件等操作。

我们选“Add File to Group‘SourceGroup 1’”弹出文件窗口,选择刚刚保存的文件,按 ADD 按钮,关闭文件窗,程序文件已加到项目中了。

这时在 Source Group1 文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看。

北邮,单片机,实验报告,电子琴

北邮,单片机,实验报告,电子琴

北邮,单片机,实验报告,电子琴北邮单片机实验报告简易电子琴2014年小学期单片机设计实验报告题目:基于单片机的电子音乐发生器班级:班内序号:实验组号:学生姓名:指导教师:基于单片机的电子音乐发生器实验摘要此次本组制作的基于PIC单片机的电子音乐发生器是具有LCD显示屏提示的音乐简单演奏、播放、存储等功能的演示作品,拥有以下4种功能:1.按键演奏:即“电子琴”功能,可以用键盘上的“1”到“A”键演奏从低音sol到高音do等11个音;2.点歌功能:即按动“B”“C”键分别演奏两首乐曲(可以表现准确的音高和音长)。

3.存储音乐功能:即按右下角“F存储”键,然后按键演奏并存储,随后按“E”键结束,之后按“D键”就可以播放存储的乐曲了;4.液晶显示功能:即在开始时显示“hello!”,在点播时分别显示“song b”、“song c”,在存储时显示“saving”。

电子音乐发生器采用以Microchip公司的PIC16F877芯片为核心的简单控制系统,外部电路连接有喇叭、键盘、LCD液晶显示屏以及其他必要系统调节元件。

软件设计中涉及PORTB\PORTC\PORTD\PORTE用作普通数字I/O脚功能。

本实验用单片机PORTB\D接收来自键盘输入的指令信息,由此确定LCD液晶屏幕显示以及喇叭播放内容,再通过PORTC\D\E输出声音或字幕信息。

关键字单片机——microcontroller芯片——CMOS chip音乐发生器——music generator 分频——fractional frequency 一、实验论证与比较本设计的核心器件是单片机芯片和音频功放芯片。

单片机采用以Microchip公司的PIC16F87X系列中的PIC16F877芯片为核心构建简单控制系统,它完全可以满足本设计功能的需要。

此音乐发生器设计利用单片机的输入输出功能,当按下播放功能键时,单片机的输出功能使外部电路连接的喇叭和LCD液晶显示屏同时播放声音及显示文字,从而实现各种复杂音乐播放器的功能。

51单片机设计电子琴报告含代码

51单片机设计电子琴报告含代码

电子琴设计报告一、实验目的1.更深刻的了解、学习8051单片机的发声原理,利用定时器可以发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调。

2.其次,定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平,由于定时参数不同,所以发出不同频率的脉冲。

3.进一步熟悉定时器的编程方法和定时初值的计算,进一步熟悉键盘扫描电路的工作原理和编程方法,了解单片机芯片的接口技术。

二、实验要求1.能够通过键盘演奏音符。

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

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

4.自由发挥其他功能。

5.要求有单片机硬件系统框图,电路原理图,软件流程图。

三、实验基本原理简易电子琴有主控、蜂鸣器、键盘输入、电源四部分组成。

主控部分以AT89S52 为核心,用C 语言编程,充分运用AT89S52 的8k字节闪烁可编程可擦除只读存储器及其丰富的I/O 口,实现了对键盘数据的采集,和对蜂鸣器声音的控制;键盘输入部分采用4×4的键盘键盘输入,可以实现多个音调;供电部分可对整个电路进行供电。

经测试,整机基本实现预计功能,可以实现键盘演奏音符、调整音调、保存并回放的功能。

四、实验设计分析根据实验所要求实现的功能设计实现该项实验设计的软件电路及硬件电路。

五、实验要求实现A.电路设计1. 整体设计计划利用AT89S52 单片机的功能结合C 语言编程,实现电子琴播放音符等的简单功能,然后结合AT89S52 单片机的控制功能,利用蜂鸣器将输入表达出来,结合程序编制过程中,对各个I/O 的利用设置了键盘的扫描读入,结合电子琴需要多键位的现实,加入了4×4 键盘输入,达到了预期的效果。

2.分块设计1.控制模块AT89S52单片机是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含有8kb的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。

单片机小制作报告电子琴-5页精选文档

单片机小制作报告电子琴-5页精选文档

单片机电子琴制作报告这是一款采用89S52单片机控制的8键简易电子琴,用到了单片机定时器和键盘的知识。

一、功能说明:由单片机的P1.0口输出音频信号,在P1.0口接三极管以驱动扬声器喇叭。

P2口连接8个一端接地的按键做为输入,可以连接8只10K的电阻至电源做为上拉电阻(也可以不加)。

P2.0至P2.7依次为Do、Re、Mi、Fa、So、La、Si、Do(高音)。

二、软件仿真:1、先用proteus软件做出仿真电路原理图。

(带上拉电阻时原理图)(无上拉电阻,总线结构原理图)(运行中的原理图)2、再用keil软件编辑汇编代码,联机进行仿真功能的检验。

(keil与proteus联机仿真中)三、汇编代码:BUZZ EQU P1.0ORG 0000HLJMP MAINORG 000BHLJMP INT_T0ORG 0100HMOV 30H,#00MOV 31H,#00MOV P1,#0FFHMOV TMOD,#01HSETB ET0SETB EACLR TR0START: MOV R0,P2CJNE R0,#0FFH,KEY1CLR TR0SJMP STARTKEY1: CJNE R0,#0FEH,KEY2MOV 30H,#0FBHMOV 31H,#0E9HLJMP SET_TIMERKEY2: CJNE R0,#0FDH,KEY3MOV 30H,#0FCHMOV 31H,#5CHLJMP SET_TIMERKEY3: CJNE R0,#0FBH,KEY4MOV 30H,#0FCHLJMP SET_TIMERKEY4: CJNE R0,#0F7H,KEY5MOV 30H,#0FCHMOV 31H,#0EFHLJMP SET_TIMERKEY5: CJNE R0,#0EFH,KEY6MOV 30H,#0FDHMOV 31H,#045HLJMP SET_TIMERKEY6: CJNE R0,#0DFH,KEY7MOV 30H,#0FDHMOV 31H,#92HLJMP SET_TIMERKEY7: CJNE R0,#0BFH,KEY8MOV 30H,#0FDHMOV 31H,#0D6HLJMP SET_TIMERKEY8: CJNE R0,#7FH,NOKEY MOV 30H,#0FDHMOV 31H,#0FBHSET_TIMER:SETB TR0SJMP STARTNOKEY: CLR TR0SJMP STARTINT_T0: MOV TH0,30HMOV TL0,31HCPL BUZZRETIEND四、实物图希望以上资料对你有所帮助,附励志名言3条:1、生气,就是拿别人的过错来惩罚自己。

单片机电子琴实训报告

单片机电子琴实训报告

一、实训目的1. 熟悉单片机的基本原理和编程方法。

2. 学习电子琴的原理和结构。

3. 掌握基于单片机的电子琴设计方法。

4. 培养动手实践能力和创新意识。

二、实训内容1. 单片机原理与编程2. 电子琴原理与结构3. 单片机电子琴设计4. 单片机电子琴制作与调试三、实训过程1. 单片机原理与编程在实训初期,我们学习了单片机的基本原理和编程方法。

单片机是一种集成了CPU、存储器、输入/输出接口等功能的微型计算机,具有体积小、功耗低、成本低等特点。

我们学习了51系列单片机的结构、指令系统、程序设计方法等。

2. 电子琴原理与结构电子琴是一种通过电子电路发出不同音阶声音的乐器。

我们学习了电子琴的原理和结构,包括音源模块、键盘模块、音量控制模块等。

3. 单片机电子琴设计在设计阶段,我们根据所学知识,设计了基于单片机的电子琴。

具体如下:(1)硬件设计电子琴的硬件主要由单片机、键盘、蜂鸣器、音量控制模块等组成。

我们选择了STC89C51单片机作为核心控制单元,键盘采用矩阵键盘,蜂鸣器用于发出声音,音量控制模块用于调节音量。

(2)软件设计软件设计主要包括以下几个部分:1)初始化:设置单片机的工作模式、初始化定时器、初始化键盘扫描等。

2)键盘扫描:检测键盘是否被按下,并读取按键值。

3)音阶生成:根据按键值计算对应的频率,通过定时器产生PWM信号,驱动蜂鸣器发出声音。

4)音量控制:根据音量控制模块的输入,调节PWM信号的占空比,实现音量控制。

5)音乐播放:存储一首或多首歌曲,通过键盘控制播放、暂停、停止等操作。

4. 单片机电子琴制作与调试在制作阶段,我们根据设计方案,搭建了电子琴的硬件电路,并编写了相应的程序。

在调试过程中,我们遇到了以下问题:(1)键盘扫描不稳定:经过分析,发现是由于按键抖动引起的。

我们通过软件去抖动的方法解决了这个问题。

(2)音阶不准确:经过分析,发现是由于定时器设置不当引起的。

我们调整了定时器的计数值,使音阶更加准确。

电子琴实习报告

电子琴实习报告

电子琴实习报告篇一:电子琴设计实习报告单片机原理与应用技术课程设计报告基于单片机的电子琴控制系统专业班级:* 姓名:*时间:~指导教师:*XX年 1月 10日基于单片机的电子琴控制系统课程设计任务书1.设计目的与要求设计出一个基于单片机的电子琴控制系统。

准确地理解有关要求,独立完成系统设计,要求所设计的电路具有以下功能:(1)实现基本的音符1-7的弹奏和数码显示。

(2)自动弹奏播放一首简单的歌曲。

(3)随机弹奏曲子时,可以实时记忆,并可复读(重复播放)。

(扩展功能,可选择设计)2.设计内容(1)画出电路原理图,正确使用逻辑关系;(2)确定元器件及元件参数;(3)进行电路模拟仿真;(4)SCH 文件生成与打印输出。

3.编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。

4.答辩在规定时间内,完成叙述并回答问题。

基于单片机的电子琴控制系统班级:* 姓名:*摘要:电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器,采用半导体集成电路,对乐音信号进行放大,通过扬声器产生音响。

用户可以自己弹奏乐曲,也可以自动伴奏。

单片机具有强大的控制功能和灵活的编程实现特性,便于设计各种以单片机为核心的控制系统。

本课程设计是用AT89S51单片机为核心控制元件,用其他外围电路配合单片机组成一个简单的电子琴控制系统,能实现音乐弹奏,自动播放音乐等功能。

本系统功能由单片机控制实现,具有运行稳定,电路简单,软件功能完善,控制系统可靠等特点。

关键词:电子琴,单片机,外围电路,系统分析,汇编程序,仿真,PCB,调试1 引言本次设计的电子琴控制系统由单片机最小系统加上按键电路,数码显示电路,声音播放电路组成,通过单片机内烧写的汇编程序来输出控制信号控制外围电路的工作。

电子琴设计不同于其他设计,需要输出1到7七个不同音阶的声音,因此信号的输出有其特殊性,可以利用单片机定时计数器产生不同频率的方波信号来形成七个不同的音阶,不同音阶的组合就能输出我们想要的音乐了。

单片机实验报告_电子琴

单片机实验报告_电子琴

随着科技的飞速发展,单片机技术已成为现代电子技术的重要分支。

为了更好地学习和掌握单片机编程及应用,我们设计并实现了一款基于单片机的简易电子琴。

本实验旨在通过设计一个简易电子琴,让学生深入了解单片机的原理和应用,提高动手实践能力。

二、实验目的1. 掌握单片机的基本原理和编程方法。

2. 学会使用定时器、中断、键盘扫描等技术。

3. 了解电子琴的工作原理和制作方法。

4. 培养学生的创新意识和团队协作能力。

三、实验原理本实验采用STC12C5A32S2单片机作为核心控制单元,通过定时器产生方波信号,驱动蜂鸣器发出不同频率的声音,实现电子琴的演奏功能。

具体原理如下:1. 单片机原理:STC12C5A32S2单片机是一款高性能、低功耗的单片机,具有丰富的片上资源,如定时器、中断、串口等。

2. 定时器:定时器用于产生固定频率的方波信号,驱动蜂鸣器发出不同频率的声音。

通过调整定时器的计数值,可以改变方波信号的频率,从而改变音调。

3. 中断:中断技术用于实现按键扫描功能。

当按键被按下时,单片机响应中断,读取按键状态,并产生相应的音调。

4. 键盘扫描:键盘扫描技术用于检测按键状态。

通过扫描键盘矩阵,可以判断哪个按键被按下,并产生相应的音调。

四、实验内容1. 硬件设计:主要包括单片机、蜂鸣器、键盘、电阻、电容等元器件。

将元器件按照电路图连接,形成电子琴的硬件电路。

2. 软件设计:主要包括主程序、定时器中断服务程序、按键扫描程序等。

通过Keil C编程,实现电子琴的演奏功能。

3. 调试与测试:对电子琴进行调试和测试,确保其能够正常工作。

1. 搭建电路:按照电路图连接元器件,形成电子琴的硬件电路。

2. 编写程序:使用Keil C编写主程序、定时器中断服务程序、按键扫描程序等。

3. 编译程序:将编写好的程序编译成HEX文件。

4. 烧录程序:将编译好的HEX文件烧录到单片机中。

5. 调试与测试:使用万用表测试电路是否正常工作,并对程序进行调试,确保电子琴能够正常演奏。

实验一 多功能电子琴实验报告

实验一 多功能电子琴实验报告

题目: 多功能电子琴设计课程: 复杂电子线路综合设计专业: 电子信息科学与技术班级: 电子信息学号:姓名:指导老师:完成日期:目录1.引言************************************************************************12.设计要求*************************************************************1 2.1基本功能******************************************************12.2扩展功能******************************************************13.设计方案********************************** *************************13.1多功能电子琴的功能介绍*********************1 3.2 电子琴的主要硬件电路*************************13.2.1 矩阵键盘***********************************************13.2.2复位电路*************************************************23.2.3功放电路**************************************************23.2.3.1 386概述***************************************23.2.3.2 386特性*************************************** 23.3 软件系统设计**********************************************34.设计成本**************************************************************45.方案样品测试***************************************************45.1技术参数*********************************************************46.使用说明**************************************************************47.设计的最终结果***********************************************51.引言由于单片机有丰富的I/O口资源, 每个I/O口除了可以做普通的输出/输入功能外, 还具有第二功能。

电子琴报告

电子琴报告

单片机原理及应用实验报告实验名称:电子琴设计组员:实验成绩:实验日期: 2013年6月17日实验地点: 3#北604实验报告一、实验目的以51单片机最小系统为核心,通过键盘获取按键信息,运用单片机定时器等部件实现蜂鸣器发声同时用数码管同步显示,同时该系统具有播放歌曲及选取按键输入高、中、低音的功能。

二、实验原理1、利用蜂鸣器作为发声部件。

2、两个数码管作为显示部件。

3、设置10个按键,实现高音、中音、低音的1、2、3、4、5、6、7的发音。

4、大部分功能通过软件实现。

软件的结构图如下单片机键盘电路显示电路蜂鸣器电路复位电路程序流程图如下:三、系统仿真图整体仿真图:开始初始化检测中断按键音乐播放程序按键扫描程序结束Y 发声程序是否有按键按下键值判断Y动态显示放声部分按键四、心得体会看似简单的题目,实际操作中,仍旧存在很多问题,尤其是在程序中的数码管显示的模块中,和键值的计算容易出问题。

五、源码附录//*******初始化数据*****//void init(void){speaker=0;//关蜂鸣器LED1=1;//LED2=0;EA=1;//开总中断TCON=0x01;//外部中断0设置为边沿触发EX0=1;//开外部中断0ET0=1;//开定时器0中断ET1=1;//开定时器1中断TMOD=0x11;//定时器0,1工作在定时状态,均为方式1 }#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit P1_0=P1^0;sbit P1_1=P1^1;sbit P1_2=P1^2;sbit P1_3=P1^3;sbit P1_4=P1^4;sbit P1_5=P1^5;sbit P1_6=P1^6;sbit P1_7=P1^7;sbit LED1=P2^6;sbit LED2=P2^7;sbit change=P3^2;sbit high=P3^5;sbit normal=P3^4;sbit low=P3^3;sbit P2_0=P2^0;sbit P2_1=P2^1;sbit speaker=P2^2;unsigned char i;unsigned char key,yin=0;uchar m,n;bit a=0;//a为change键的键值uchar seg[]={ 0x3F,/*0*/0x06,/*1*/0x5B,/*2*/0x4F,/*3*/0x66,/*4*/0x6D,/*5*/0x7D,/*6*/0x07,/*7*/0x7F,/*8*/0x6F,/*9*/0x37,/*N*///中音0x38,/*L*///低音0x76,/*H*///高音0x79 /*E*/};//共阴极数码管code unsigned char FH[]={ 0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,//中音0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,//低音的高8位0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,};// 音阶频率表低八位code unsigned char FL[]={ 0x8E,0xED,0x44,0x6B,0xB4,0xF4,0x2D,//中音0x21,0xDB,0x87,0xD7,0x68,0xE8,0x5B,//低音的低8位0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};code uchar star[]={1,2,3,1, 1,2,3,1, 3,4,5, 3,4,5, 5,6,5,4,3,1, 5,6,5,4,3,1, 1,12/*低音5*/,1, 1,12,1};code uchar shijian[]={4,4,4,4, 4,4,4, 4, 4,4,8, 4,4,8, 2,1,2,1,4,4, 2,1,2,1,4,4, 4,4,6, 4,4,6};void init(void);void music();void play();void seg1();void yinjie();/*********主程序*****////void main(){init();while(1){if(a==0)music();elseplay();}}//*******1ms延迟********//void delay(uint x){uint i,j;for(i=x;i>0;i--)for(j=340;j>0;j--);}//*******初始化数据*****//void init(void){speaker=0;LED1=1;LED2=0;EA=1;//开总中断TCON=0x01;//外部中断0设置为边沿触发EX0=1;//开外部中断0ET0=1;ET1=1;TMOD=0x11;//定时器0,1工作在定时状态,均为方式1}///******数码管动态显示*******/////void seg1(){P2_0=1;//关数码管1P2_1=0;//开数码管2P0=seg[n+1];//送数码管2的数据delay(15);//延时15msP2_1=1;//关数码管2P2_0=0;//开数码管1P0=seg[yin];//yin为high,normal,low的判断结果送数码管1的数据delay(15);//延时15ms}//********高低音的选择*******//////void yinjie(){if(normal==0){delay(5);if(normal==0){ yin=10;m=0;//返回10为seg[10]显示C}}if(low==0){delay(5);if(low==0){ yin=11;m=1;//返回11为seg[11]显示L}}if(high==0){delay(5);if(high==0){ yin=12;m=2;//返回12为seg[12]显示H}}if(yin==0){yin=13;}}//********外部中断0********//void inter0() interrupt 0{if(change==0){delay(5);while(change==0);a=~a;LED1=~LED1;LED2=~LED2;}}/////*******播放音乐程序*****//// void music(){TH0=FH[star[i]-1];TL0=FL[star[i]-1];while(a==0){if(i<32){TR0=1;delay(57*shijian[i]);i++;}if(i==32){i=0;}}}////*******演奏模式*****//////void play(){TR0=0;TR1=0;yinjie();P2_1=1;//关数码管2P2_0=0;//开数码管1P0=seg[yin];if(yin!=13&&a==1){if(P1_0==0){TH1=FH[7*m+n];TL1=FL[7*m+n];TR1=1;while(P1_0==0){ n=0;seg1();}}if(P1_1==0){ TH1=FH[7*m+n];TL1=FL[7*m+n];TR1=1;while(P1_1==0){ n=1;seg1();}}if(P1_2==0){ TH1=FH[7*m+n];TL1=FL[7*m+n];TR1=1;while(P1_2==0){ n=2;seg1();}}if(P1_3==0){TH1=FH[7*m+n];TL1=FL[7*m+n];TR1=1;while(P1_3==0){ n=3;seg1();}}if(P1_4==0){ TH1=FH[7*m+n];TL1=FL[7*m+n];TR1=1;while(P1_4==0){ n=4;seg1();}}if(P1_5==0){ TH1=FH[7*m+n];TL1=FL[7*m+n];TR1=1;while(P1_5==0){ n=5;seg1();}}if(P1_6==0){ TH1=FH[7*m+n];TL1=FL[7*m+n];TR1=1;while(P1_6==0){ n=6;seg1();}}}}//******定时器0中断******//////void timer0() interrupt 1{ TR0=0;TH0=FH[star[i]-1];TL0=FL[star[i]-1];speaker=~speaker;TR0=1;}//******定时器1中断******//////void timer1() interrupt 3{ TR1=0;TH1=FH[7*m+n];TL1=FL[7*m+n];speaker=~speaker;TR1=1;}。

基于51单片机的简易电子琴汇编程序实验报告

基于51单片机的简易电子琴汇编程序实验报告

单片机应用课程设计报告——简易电子琴电子信息科学与技术2013-2xxx单片机应用课程设计报告——简易电子琴xxx摘要本设计是一个基于AT89C52系列单片机的简易电子琴,通过硬件电路制作以及软件编译,设计制作出一个由按键电路、复位电路、数码管显示电路,定时器及蜂鸣器组成简易的电子琴。

通过键盘按键确定键号送去显示以及产生对应的频率的方波。

本次实验的难点是键盘的扫描程序设计,因为本次实验实用的键盘是通过P3.4-P3.7端口输入测试信号,从P3.0-P3.3端口进行检测的,涉及到端口的读入写出原理等问题,后来通过先送出F0数值使低四位处于读入状态,高四位处于输出状态等方法实现。

还有一个问题是如何使单片机产生确定频率的波形,后来利用定时器计时结束后的溢出信号,控制信号反转实现。

关键词:电子琴扫描式键盘数码管1、设计任务和要求1.1设计任务利用AT89C52单片机以及各种元器件自行设计编程制作一个简易电子琴。

1.2任务要求基本要求:利用查询式键盘,数字键1、2、3、4、5、6、7作为电子琴的按键,按键按下时发出Do、Re、Mi、Fa、So、La、Xi的声音。

在弹奏音乐的同时将音符显示在数码管上。

扩展要求:具备存储播放所弹奏的音乐的功能,用三个功能键进行切换状态:按一下按键控制是否进入存储状态。

;按键二控制是否进入演奏状态;按键三为复位键。

1.3方案论证(1)如何产生一定频率的方波信号首先我们知道,每一个音符都有一个固定的频率,当蜂鸣器根据不同频率的方波信号便会震动产生对应的音符。

其次要产生音频脉冲,只要算出某一音频的周期(1/f),然后将此周期除以2,即为半周期的时间,由于使用的是12MHz的晶振,所以每一个计数的脉冲长度为1us,脉冲的个数用半周期时间除以1us,用65536减去脉冲的个数便可以得到计数初值。

利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。

基于单片机的电子琴课程设计报告书

基于单片机的电子琴课程设计报告书

本科课程设计课程名称:单片机原理与接口技术设计项目:简易电子琴设计实验地点:跨越机房专业班级:通信0901 学号: 2009001330 学生:田野同组人:刚瑛梁邦爽指导教师:武娟萍2012年 05月 26日一、设计目的本设计以AT89C51单片机为核心,采用常用电子器件设计。

要求最少8个按键,每个按键对应一种音调,按下按键发声,松开按键后声音延迟一段时间后停止,即带余音的电子琴,延时时间可以设置,要求最少8个不同音调,可以采用标准的音调设计。

本次课程设计主要研究基于AT89C51单片机的简易电子琴设计二、设计器材AT89C51,蜂鸣器,PNP型三极管,晶振,独立按键三、总体设计方案1.设计思路此次设计硬件电路分四大模块较为简单,主要由独立按键、单片机AT89C51、音频功放及扬声器构成。

以AT89C51为主控器件,对其进行编译,达到我们的设计要求。

对于软件部分下面有详细介绍。

2.电路总设计框图如图1:图1 电路总设计框图3.音频放大电路在一定频率围,具有固定频率的振动就能产生音乐,但是单片机产生的音频脉冲直接驱动扬声器并不能产生所要实现的音乐,因为他没有足够的驱动能力,需要音频功率放大电路。

这里选用PNP型三极管来驱动蜂鸣器,是音响效果更为理想,音频功放电路接口如图2所示:图2 音频放大电路4.音乐播放电路对于播放一首固定音乐,不仅要知道音符也要知道节拍,对应节拍延时时间设定表,对单片机进行编程就可以实现功能。

放歌产生电路如图3,其中单片机的P3.0口控制音乐开始播放控制端口,P3.2口是控制音乐停止播放的控制端口,当小按键S10按下时P3.0口获得低电平,音乐开始重复播放,当小按键S9按下时,P3.2口获得低电平,经过单片机的处理,音乐停止播放,单片机回到最初工作状态。

而P2口的每个端口都连接一个按键,分别控制1,2,3,4,5,6,7,˙1八个不同的音符。

图3 音乐播放电图5.总体电路图如下图:图4 总体电路图,四、设计原理分析1.产生声音的方法:只要让扬声器通过产生大小变化的电流(脉动电流或交流),就能使扬声器发出声音,因此若以程序不断的输出1—0—1—0—1……就可以令扬声器发出声音,由于MCS—51系列的输出端口输出电流不够大,所以必须加上晶体管把电流放大后再驱动扬声器,如图2所示。

单片机实验报告 电子琴

单片机实验报告 电子琴

单片机实验报告电子琴单片机实验报告电子琴引言:电子琴是一种流行的乐器,它通过电子元件产生声音,具有丰富的音色和音效。

在本次实验中,我们使用单片机来设计和制作一个简单的电子琴,通过按键触发不同的音调,实现基本的音乐演奏功能。

本文将介绍电子琴的原理、设计过程和实验结果。

一、原理电子琴的原理是基于音频合成技术,通过控制不同频率的声音波形来产生不同的音调。

而单片机作为电子琴的控制核心,负责接收按键信号,并通过输出引脚控制声音的发声。

具体来说,单片机通过读取按键的状态,判断按键是否按下,并根据按键的不同触发相应的音调发声。

二、设计过程1. 硬件设计在硬件设计方面,我们需要准备以下元件:单片机、按键、蜂鸣器、电阻、电容等。

首先,将按键连接到单片机的输入引脚上,以便检测按键的状态。

然后,将蜂鸣器连接到单片机的输出引脚上,以便通过控制引脚输出高低电平来实现声音的发声。

最后,根据需要添加电阻和电容等元件,以保证电路的稳定性和正确性。

2. 软件设计在软件设计方面,我们需要使用单片机的编程语言来实现电子琴的功能。

首先,我们需要设置单片机的输入引脚和输出引脚,并定义按键的状态和蜂鸣器的控制信号。

然后,我们需要编写程序来实现按键的检测和音调的控制。

具体来说,当按键按下时,单片机会读取按键的状态,并根据不同的按键触发不同的音调,同时控制蜂鸣器的输出信号,以实现声音的发声。

三、实验结果在实验过程中,我们成功地设计和制作了一个简单的电子琴。

通过按下不同的按键,我们可以听到不同的音调发声,从而演奏出简单的音乐。

实验结果表明,我们设计的电子琴具有良好的音效和音色,能够满足基本的音乐演奏需求。

结论:通过本次实验,我们深入了解了电子琴的原理和设计过程,并成功地制作了一个简单的电子琴。

通过单片机的控制,我们可以实现按键触发不同音调的发声,从而演奏出简单的音乐。

电子琴作为一种流行的乐器,具有广泛的应用和发展前景。

通过不断的学习和实践,我们相信可以设计出更加复杂和高级的电子琴,为音乐爱好者提供更多的乐器选择和音乐表达方式。

单片机实验- 电子琴模拟实验

单片机实验-  电子琴模拟实验

实验二十一电子琴模拟实验一、实验目的1、了解单片机系统发声原理2、进一步熟悉定时器编程方法3、进一步熟悉键盘扫描电路工作原理及编程方法二、实验说明1.利用定时器,可以发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同的音调。

2.定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平.由于定时参数不同,就发出了不同频率的脉冲. 本实验中当有键按下,会发出连续脉冲,直到按键松开,才停止发音。

发完后继续检测键盘,如果键还按下,继续发音。

三、实验步骤利用实验仪上提供的键盘,使数字键1、2、3、4、5、6、7作为电子琴按键,按下即发出相应的音调。

用P3.2 口发出音频脉冲,驱动喇叭。

1、用8P数据线连接单片机最小应用系统1模块的 P1口到查询式键盘模块KEY1-KEY8口,用二号导线连接单片机最小应用系统1模块INT0(P3.2)口到扬声器模块的输入口。

2、用串行数据通信线连接计算机与仿真器,把仿真器插到单片机最小应用系统1模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加“TH21_电子琴.ASM”源程序,进行编译,直到编译无误。

4、打开模块电源和总电源开关,点击开始调试按钮,点击RUN按钮运行程序。

5、实验现象:按查询式键盘的1~7键,扬声器发出高低不同的声音。

四、实验流程图及源程序1、源程序:PULSE EQU 10H ;脉冲PULSECNT EQU 50H ;脉冲计数TONEHIGH EQU 40H ;高音调TONELOW EQU 41H ;低音调TONE EQU 42H ;音调KEYBUF EQU 54HSPEAKER BIT P3.2ORG 0000HLJMP STARTORG 000BHLJMP TIMER0INTORG 0030HTIMER0INT: PUSH PSW ;定时中断CLR TR0MOV TH0, TONEHIGHMOV TL0, TONELOWSETB TR0MOV C, PULSEMOV SPEAKER,CCPL PULSEPOP PSWRETITONETABLE: DW 64578,64686,64778,64821DW 64898,64968,65029TESTKEY: MOV P1, #0FFHMOV A, P1CPL A ; 读入键状态RETKEYTABLE:DB 0FEH,0FDH,0FBH,0F7HDB 0EFH,0DFH,0BFH,07FH ; 键码定义GETKEY: MOV R6, #10ACALL DELAYMOV A,P1CJNE A, #0FFH, K01 ;确有键按下LJMP MLOOPK01: MOV R3, #8 ;8个键MOV R2, #0 ;键码MOV B, A ;暂存键值MOV DPTR, #KEYTABLEK02: MOV A, R2MOVC A, @A+DPTR ;从键值表中取键值CJNE A, B, K04 ;键值比较MOV A, R2 ;得键码INC ARETK04: INC R2 ;不相等,到继续访问键值表DJNZ R3, K02MOV A, #0FFH ;键值不在键值中,即多键同时按下 LJMP MLOOPDELAY: MOV R7, #0DELAYLOOP: DJNZ R7, DELAYLOOPDJNZ R6, DELAYRETSTART: MOV SP, #70HMOV TMOD, #01 ; TIMERMOV IE, #82H ; EA=1, IT0 = 1 MOV TONE, #0MLOOP: CALL TESTKEYJZ MLOOPCALL GETKEYMOV B, AJZ MLOOP ; = 0, < 1ANL A, #8JNZ MLOOP ; > 8DEC BMOV A, BRL A ; A = A*2MOV B, AMOV DPTR, #TONETABLEMOVC A, @A+DPTRMOV TONEHIGH, AMOV TH0, AMOV A, BINC AMOVC A, @A+DPTRMOV TONELOW, AMOV TL0, ASETB TR0MOV P1,#0FFHWAIT: MOV A, P1CJNE A, #0FFH, WAITMOV R6, #10ACALL DELAYCLR TR0LJMP MLOOPEND2.流程图五、实验思考题1、请思考实验是怎样在硬件与软件上实现发声的?2、本程序中断子程序的调用是怎样进行的?六、实验电路图本实验用到单片机最小应用系统1模块,查询式键盘模块, 扬声器模块。

单片机的简易电子琴设计报告..

单片机的简易电子琴设计报告..

设计摘要本设计主要研究基于AT89C52单片机的简易电子琴设计。

它是以单片机作为主控核心,设置键盘、蜂鸣器等外围器件;另外还用到一些简单器件如:两位数码管,和NPN型三极管及电阻等。

利用按键实现音符和音调的输入;两位的数码管进行被操作的按键显示;用NPN型三极管8550实现低音频功率放大;最后用蜂鸣器进行播放“送别”。

本设计硬件部分主要由最小系统,按键系统模块、数码管显示模块和蜂鸣器模块组成。

其软件部分主要有主程序模块、定时中断程序、定时计数程序、显示程序。

(1)最小系统:它是单片机应用系统的设计基础。

它包括单片机的选择、时钟系统设计、复位电路设计、简单的I/O口扩展、掉电保护等。

(2)按键系统模块:本设计采用10个按键,其中7个按键用来显示7个音调,其它3个按键可以进行高低中音的切换,并自动播放已存歌曲。

(3)数码管显示模块:SM420562段选端接在单片机的P0口,两个位选端分别接在P2^0和P2^1。

(4)蜂鸣器模块:此电子琴发音电路是通过三极管驱动蜂鸣器发音,经过上拉电阻提高驱动能力。

本次设计首先对单片机设计简易电子琴仔细分析,接着制作硬件电路和编写软件的程序,最后进行软硬件的调试运行。

并且从原理图,主要芯片,各模块的原理和各个模块的程序调试来阐述。

利用单片机产生不同频率来获得我们要求的音阶,实现高、中、低共21个音符的发音和显示和音乐播放时的控制显示,并且能自动播放程序中编排的音乐。

系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比高等,具有一定的使用和参考价值。

目录1.概述 (4)1.1设计背景 (4)1.2设计意义 (4)1.3设计任务 (4)2.系统总体方案及硬件设计 (5)2.1总体设计 (5)2.2单片机选型 (6)2.3单片机的最小工作系统 (6)2.3.1 时钟电路 (6)2.3.2复位电路 (7)2.4原理框图 (7)2.5显示部分设计 (8)2.5.1数码显示方式 (8)2.5.2八位数码管的结构 (8)2.6按键部分设计 (9)2.6.1操作键设计 (9)2.6.2键盘设计 (9)2.6.3去抖动 (10)2.7发音部分设计 (11)3.系统软件设计 (12)3.1系统分析 (12)3.1.1系统软件的组成 (12)3.1.2 系统总体功能流程图 (13)3.2参数计算 (14)3.2.1发音原理 (14)3.2.2 计算举例 (14)3.2.3 计算结果 (14)3.3程序设计 (16)3.3.1 判断音阶(高中低音)子程序 (16)3.3.2 播放子程序(包括自动播放存储音乐和按键发音) (17)4. PROTEUS软件仿真 (19)4.1硬件调试 (19)4.2软件调试 (19)4.3仿真结果(任举一例) (20)4.4结果分析 (20)5. 课程设计体会 (21)参考文献 (22)附1 源程序代码 (23)附2 系统原理图 (32)1.概述1.1设计背景随着电子科学技术的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们带来更多的生活乐趣。

北邮小学期AVR单片机电子琴实验报告

北邮小学期AVR单片机电子琴实验报告

小学期AVR单片机实验报告实验题目:基于ATmega16L单片机的电子琴设计学生姓名:学渣班级:2012XXXXXX班内序号:XX学号:2012XXXXXX日期:2014年9月30日同组同学:学渣目录:一、实验介绍 (3)1.1实验课题名称 (3)1.2实验平台 (3)1.3实验课题关键字..............................31.4实验摘要 (3)二、小组分工 (3)三、基本题目训练——流水灯与数码管秒表计时器 (3)3.1实现功能 (3)3.2程序代码分析 (4)3.3实验结果图片 (7)四、有关发声的基础知识 (7)五、电子琴的设计与测试 (9)5.1设计过程 (9)5.2实验所需元器件 (9)5.3实验程序主要流程图 (10)5.4实验原理及原理图 (10)5.4.1实验原理 (10)5.4.2原理图 (11)5.5各个模块的设计与讲解 (11)5.6程序源代码及程序分析 (14)5.7实验结果..................................... ..24六、排错过程............................ . (26)七、心得体会 (29)八、参考文献 (32)九、意见与建议 (33)一、实验介绍:1.1实验课题名称:基于ATmega16L单片机的电子琴设计1.2实验平台:本实验所用平台为AVR Studio 41.3实验课题关键字:ATmega16L型单片机电子琴键盘按键 LCD液晶显示屏1.4实验摘要:本实验设计的电子琴拥有可视化操作界面,能实现即时弹奏音乐、音乐播放、音乐变速、音乐变调,并可以进行任意长度录音(通过按键记录音阶)等功能二、小组分工:●XXX负责电路硬件的连接和报告的撰写●XXX负责程序代码的编写●XXX负责资料的收集整理和查阅三、基本题目训练——流水灯与数码管秒表计时器3.1功能:八盏LED二极管按顺序依次循环点亮,实现流水灯的效果,同时两只数码管分别代表秒和十分之一秒,进行秒表计时,配有两个按键,实现计时过程中的暂停和继续,同时在按下暂停键的时候蜂鸣器会响一声。

单片机电子琴实验报告

单片机电子琴实验报告

单片机及DSP课程设计报告专业:通信工程班级:姓名:学号:指导教师:李贺时间:2015-06-22~2015-07-03通信与电子工程学院基于单片机的电子琴设计一、课设的目的及内容本设计主要是用单片机为核心控制元件,设计一台电子琴。

以单片机作为主控核心,与键盘、蜂鸣器、数码管等模块组成核心主控制模块,在主控模块上设有7个按键和1个复位按键。

本系统主要是完成的功能:电子琴弹奏并显示所按的按键对应音的唱名。

关于声音的处理,使用单片机C语言,利用定时器来控制频率,而每个音符的符号只是存在自定义的表中。

总之,本设计的电子琴有以下要求:(1)用键盘作出电子琴的按键,共7个,每键代表1个音符。

各音符按照符合电子琴的按键顺序排列;(2)达到电子琴的基本功能,可以用弹奏出简单的乐曲;(3)在按下按键发出音符的同时显示出音符所对应的唱名即1(dao)、2(ruai)、3(mi)、4(fa)、5(sao)、6(la)、7(xi)。

二、问题分析、解决思路及原理图本系统采用STC89C52RC为主控芯片,因其精度较高,操作比较灵活,输入电路和输出电路由芯片来进行处理,电路的系统的稳定性高,功耗小。

其中,输入电路有7个独立按键,通过按键随意按下所要表达的音符,作为电平送给主体电路,中央处理器通过识别,解码输出音符,在蜂鸣器中发出有效的声音。

由于需要显示的信息不多,显示电路未采用液晶屏显示,而是使用数码管显示电路负责显示按下的琴键所对应音符的唱名,这样既节省了成本,又降低了编程难度。

图1如图1所示基于单片机STC89C52RC的电子琴电路,它主要由琴键控制电路、数码管显示电路、音频功放电路和时钟-复位电路四部分所构成。

三、硬件设计(一)琴键控制电路琴键控制电路作为人机联系的输入部分,也是间接控制数码显示和音频功放的重要组成部分。

本设计采用独立式键盘的思路。

独立式键盘的特点是一键一线,各键相互独立,每个键各接一条I/O口线,通过检测I/O输入线的电平状态,可判断出被按下的按键。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名:班级:学号:小班学号:同组姓名:电子邮件:实验课题:基于AVR单片机电子琴的制作实验日期:2013.09.02—2013.09.15目录:一、实验简介1.1实验目的 (4)1.2实验关键词 (4)1.3基础知识 (4)二、实验器材2.1核心部件:ATmega16单片机 (5)2.2电路元件 (6)2.3管脚说明 (6)三、实验原理3.1实验原理图 (7)3.2实验流程图 (8)3.3实物效果图 (8)四、操作过程与运行结果4.1操作过程示意图 (9)4.2电子琴系统主要部分 (11)4.3具体操作过程 (11)4.4运行结果 (12)五、实验中的排错、体会与建议5.1调试与排错过程 (12)5.2体会与建议 (14)5.3小组分工 (15)5.4参考文献 (15)六、附录6.1流水灯实验 (16)6.2蜂鸣器实验 (17)6.3秒表实验 (18)6.4简易交通灯实验 (25)6.5电子琴源代码 (30)一、实验简介1.1实验目的通过设计一个模拟电子琴系统熟悉ATmega16单片机的使用及其基本功能。

使其能够通过键盘控制实现播放预存音乐,弹奏、储存弹奏音乐,变速播放,暂停及继续播放,停止播放功能。

1.2实验关键词按键检测预存播放弹奏储存变速暂停停止1.3基础知识声波是振动产生的。

频率即表示每秒钟振动的次数,采用CTC方式时avr 单片机通过特定的端口(PD4及PD5)输出一定频率的方波,TCCR1A设为比较匹配时OC1A/OC1B电平取反,TCCR1B的计数上限为OC1A,根据公式OCnA=f/2N(1+OCRnA)计算出7个频率音阶所需的OCR1A,则只需将喇叭接在PD4或PD5,通过程序控制端口输出特定频率的方波波形(发声使用正弦波最好,方波效果稍次但影响不大),喇叭就会发出七种不同的声音,依照人听觉分辨7个音阶分为三组,分别为高,中,低音阶频率,经计算可得,当OCR1A=(8000000/musicmem[i]-1)时,{131,147,165,175,196,220,247}存放低音阶频率,{262,294,330,349,392,440,494}存放中音阶频率,{524,588,660,698,784,880,988}则存放高音阶频率,所以需要定义三个数组存放各音阶的频率值。

除了音符频率以外还需要音长,所以定义两个数组表示一段音乐,第一个表示频率,第二个表示音长,播放时先访问频率数组,使喇叭发声,之后访问音长数组,确定喇叭发声时间。

而有了音符频率数组,只要再得到任意一首歌的简谱,就可以将其转化为两个数组的形式,由音符对应的频率得出频率数组,然后再根据每个音符的音长,将其通过乐曲的节拍和音符的拍数计算出音符持续时间即可得出音长数组。

下面我们举例来看《两只老虎》的简谱:图一《两只老虎》简谱图①音符数组为:uint sound[32] = {262,294,330,262,262,294,330,262,330,349,392,330,349,392,392,440,392, 349,330,262,392,440,392,349,330,262,294,196,262,294,196,262};②音长数组为:uint time[32] = {500,500,500,500,500,500,500,500,500,500,1000,500,500,1000,375,125,375,125,500,500,375,125,375,125,500,500,500,500,1000,500,500, 1000};二、实验器材2.1核心部件:ATmega16单片机图二 ATmega16单片机外观图图三 ATmega16单片机引脚图2.2电路元件2.3管脚说明(1)4*4键盘:接PA0~PA7端口。

(2)LED灯:黄灯(接PC1端口),绿灯(接PC0端口),红灯(接PD7端口)。

(3)数码管:接PB0~PB3端口,PB5~PB7端口。

(4)扬声器:“+”接PD5端口,“—”接AGND。

三、实验原理3.1实验原理图红绿黄3.1.1原理简单说明单片机输出频率CTC不同的信号来产生各种音符,将歌曲各个音符转化成相应的数字信号,存放在单片机程序寄存器中,当播放音乐时,程序从该寄存器里读取数据,然后以CTC信号的模式实现放音乐的功能。

3.2实验流程图3.3实物效果图int main()程序入口init()初始化 8段数码管发声、播放速度、按键PORTB = 0b11111111;数码管初始化为8 PORTD |=(1<<7); 红灯亮player(&sound,&time,15); 播放《一千年以后》Keyscan();C:play()弹奏和储存B:播放《倔强》四、操作过程与运行结果4.1操作过程示意图4.1.1子程序操作过程分别演示(1)按键操作原理(2)弹奏模式(3)播放模式4.2电子琴系统主要部分共分为五大部分:(1)ATmega16单片机(2)4*4键盘(3)LED显示灯(4)数码管(5)扬声器4.3具体操作过程(1)键盘区:数字1~7代表7个音符,8代表曲子加速播放,9代表曲子减速播放,0代表曲子恢复原速播放。

另外,B、F可以进入演奏模式:按B可以播放我们预存的曲子一,按F可以播放预存曲子二。

C、D、E分别代表L大调、C大调、H大调。

按键C还有另一个功能:按下它可以进入弹奏模式,可以自己弹奏一曲(音符默认为L大调),弹奏完后按F可以播放自己先前弹奏的音符,有存储的功能。

除此之外,2键有暂停的功能,3键有继续的功能,实现曲子的暂停与继续播放。

1键有停止的功能,实现模式之间的转换,如从演奏模式转入弹奏模式。

最后,在我们按1~7七个音符时,数码管会给予相应的数字显示,按下A键有清屏的功能。

(2)LED灯显示区:共有红、黄、绿三个灯。

红:电子琴整个开启的过程中,红灯一直保持亮的状态,代表电子琴处于工作状态。

红、绿:代表电子琴进入演奏模式,可以播放预存曲子。

红、黄:代表电子琴进入弹奏模式,可以任意弹奏音符。

(3)数码管:在播放预存曲子时,显示为数字8。

起到预先测定电子琴工作状态是否正常的作用。

既不是演奏模式又不是弹奏模式时,显示为数字0,等待下一步按键。

进入弹奏模式后,显示按下音符所代表的数字。

(4)整体操作过程(如视频中):通电后,红灯亮,代表电子琴进入工作模式;同时自动播放储存音乐,数码管显示为8,代表工作正常。

按下B键进入演奏模式,此时红绿灯亮;电子琴播放预存曲子一,按下2键曲子暂停,再按下3键曲子继续播放;按下1键就跳出了演奏模式,等待下一步指示。

然后我们再次按下B键播放曲子,以测试8、9、0键的作用。

如视频中所示,8键曲子播放速度加快,9键速度变慢,0键回到正常速度。

紧接着我们按下C键进入弹奏模式,此时红黄灯亮;在弹奏了一串音符后,按下F键可以播放我们刚才弹的音乐,同时数码管显示相应音符。

在弹奏音符时,按下A键有数码管清屏的作用。

在键盘未接收到任何指示时,数码管显示为0。

以上为电子琴的整个工作过程。

4.4运行结果图四电子琴工作状态图如视频中所示,一切运行正常。

五、实验中的排错、体会与建议5.1调试与排错过程(1)在此次实验过程中,我尝试过采用ICC AVR 7作为编译软件。

同样在AVRStudio 4软件(GCC环境)中编译成功的代码在ICC环境下却不能编译成功。

出现了cannot include source file”avr/io.h”;file not found的error。

在问过老师后,将头文件中的<avr/io.h>换成<iom16v.h>后编译成功。

原来<avr/io.h>是GCC环境下的头文件,<iom16v.h>是ICC环境下的头文件,二者发挥同等作用。

(2)实验开始前期有点无从下手,在设计好了大的框架后开始着手分块写程序。

最初的问题是4*4键盘的使用,首先通过资料等学习了4*4键盘的原理和内部结构,接下来写了单段的键盘测试代码。

如下:switch(key){case 0XEE : key=0; break;case 0XDE : key=1; break;case 0XBE : key=2; break;case 0X7E : key=3; break;case 0XED : key=4; break;case 0XDD : key=5; break;case 0XBD : key=6; break;case 0X7D : key=7; break;case 0XEB : key=8; break;case 0XDB : key=9; break;case 0XBB : key=10; break;case 0X7B : key=11; break;case 0XE7 : key=12; break;case 0XD7 : key=13; break;case 0XB7 : key=14; break;case 0X77 : key=15; break;default : key=16; break;}(3)在用8段数码管做秒表和交通灯实验时,我们首先对数码管各段控制显示的部分进行了测试,依此完成了0~9数字的代码表示。

在组内成员分别进行代码的编写时,我们统一了数字表示代码和端口的使用,这样在实验板交替下载时,保证不用更改端口设置,节省了时间。

(4)在进行代码的编写时,我们注意了除循环变量i、j外,其他变量都尽量不重名,以防调用的函数里面的局部变量和主函数的局部变量名相同下载后有时会有BUG。

同时,编写单个功能时是直接调用主函数的,但是多功能共同实现时需要将单个功能的部分封装起来,使主函数简短,执行过程明确,同时减少可能的逻辑错误。

通过观看老师给我们的视频资料,决定采用CTC模式产生方波作为音频信号输出。

(5)在基本完成代码的整个部分时,编译没有错误,下载到实验板上出现了扬声器一直无规律振动不停止,发声不正常的现象,发出了类似于蜜蜂“嗡嗡”的声音,而非预存的音乐。

开始我们认为是代码中频率设置不合理,在把L、C、H 大调都提高频率设置后,依然出现上述现象。

之后我们怀疑是硬件的问题,我们借来其他组的实验板重新进行下载,结果扬声器发音正常了,播放出了预存的音乐,而且还能进行弹奏。

于是我们跟老师反映了情况,换了一个实验板,这才运行正常。

5.2体会与建议在之前的实验中,我们从来没有接触过AVR单片机。

通过老师给我们的学习资料,我了解了单片机的原理及应用,其中比较重要的部分包括AVR单片机IO口的配置、延时函数、扫描频率、键盘的作用和检测原理以及如何消抖、中断与定时器的原理和应用等等。

相关文档
最新文档