词典存销管理系统数据库课设.doc_第1页
词典存销管理系统数据库课设.doc_第2页
词典存销管理系统数据库课设.doc_第3页
词典存销管理系统数据库课设.doc_第4页
词典存销管理系统数据库课设.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈阳理工大学专用纸 成 绩 评 定 表学生姓名班级学号专 业电子信息科学与技术课程设计题目基于单片机的16键电子琴设计评语组长签字:成绩日期 年 月 日课程设计任务书学 院学院专 业学生姓名班级学号课程设计题目基于单片机的16电子琴设计实践教学要求与任务:使用4*4矩阵式键盘设计出16个音符,通过控制单片机定时器的定时时间产生不同频率的音频脉冲,经放大后驱动喇叭发出相应16种不同音节的声音。用软件延时来控制发音时间的长短,控制节拍。工作计划与进度安排:2013年3月4-5日 布置任务画电路原理图、焊接硬件2013年3月6-7日 编写程序并调试2013年3月8-9日 软硬件联调2013年3月10日 撰写报告、验收答辩指导教师: 年 月 日专业负责人: 年 月 日学院教学副院长: 年 月 日目录1.概述32.课程设与任务与要求42.1设计课题42.2设计目的43.设计原理44.软件流程54.1主要芯片介绍AT89S51简介54.2实现过程64.3音乐产生的原理75.Proteus模拟仿真96.单片机源程序107.硬件实物图128.实验结果139.结束语1310.心得体会1411.参考文献141.概述随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。我们都会抽空欣赏世界名曲,作为对精神的洗礼。本课程设计一个基于单片机的简易电子琴。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,这已经溶入现代人们的生活中,成为不可替代的一部分。本系统是51系列单片机AT89C51为主控制器,附有矩阵键盘、扬声器组成。系统完成播放相应音符等基本功能。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。2.课程设与任务与要求2.1设计课题基于单片机的16电子琴设计2.2设计目的培养和锻炼在校学生综合应用所学理论知识解决实际问题的能力。为了巩固和运用所学课程,理论联系实际、提高分析、解决实际问题及团队的合作能力,旨在培养大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题的一种较好方法。电子琴能够弹奏出美妙的音符,对我们充满了吸引的同时也让我们充满了好奇,通过此次的课程设计让我们亲手来揭开电子琴神秘的面纱。让我们知道我们也是有能力来制作出一个简易电子琴的。3.设计原理单片机P3为输入端口,接有*矩阵式键盘,键盘上设计有16个音符。键盘的条行线的一端与单片机P3端口的P3.0、P3.1、P3.2、P3.3口相接,另一端通过上拉电阻接到+5V上;条列线的一端与P3端口的P3.4、P3.5、P3.6、P3.7口相接。单片机的P2.4端口为输出端,通过限流电阻R与三极管基极相连,三极管的集电极接有喇叭。然后利用三级管放大的原理使声音放大,通过16个按钮组成16种不同的音节。本文的主要内容是用AT89S51单片机为核心控元件,设计一个电子琴,以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块。在主控模块上高有16个按键和场声器。4.软件流程4.1主要芯片介绍AT89S51简介AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S51具有如下特点:40个引脚(引脚图如图1-2所示),4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。 此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。4.2实现过程组成键盘的按键有机械式、电容式、导电橡胶式、薄膜式多种,但不管什么形式,其作用都是一个使电路接通与断开的开关。目前微机系统中使用的键盘按其功能不同,通常可分为编码键盘和非编码键盘两种基本类型。 编码键盘:键盘本身带有实现接口主要功能所需的硬件电路。不仅能自动检测被按下的键,并完成去抖动、防串键等功能,而且能提供与被按键功能对应的键码(如ASCII码)送往CPU。所以,编码键盘接口简单、使用方便。但由于硬件电路较复杂,因而价格较贵。 非编码键盘:键盘只简单地提供按键开关的行列矩阵。有关按键的识别、键码的确定与输入、去抖动等功能均由软件完成。目前微机系统中,一般为了降低成本大多数采用非编码键盘。 键盘接口必须具有去抖动、防串键、按键识别和键码产生4个基本功能。 (1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为520mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。 (2)防串键:防串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。常用的方法有双键锁定和N键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。 (3)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。 (4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。4.3音乐产生的原理一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系正确即可。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。 利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。 计数脉冲值与频率的关系式(如式2-1所示)是: Nfi2fr 2-1式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下: T65536N65536fi2fr 例如:设K65536,fi1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。 T65536N65536fi2fr6553610000002fr65536500000/fr 低音DO的T65536500000/26263627 中音DO的T65536500000/52364580 高音DO的T65536500000/104665059单片机12MHZ晶振,高中低音符与计数T0相关的计数值如表2-2所示表4-1 音符频率表音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1DO26263628# 4 FA#74064860#1DO#27763731中 5 SO78464898低2RE29463835# 5 SO#83164934#2 RE#31163928中 6 LA88064968低 3 M33064021# 693264994低 4 FA34964103中 7 SI98865030# 4 FA#37064185高 1 DO104665058低 5 SO39264260# 1 DO#110965085# 5 SO#41564331高 2 RE117565110低 6 LA44064400# 2 RE#124565134# 646664463高 3 M131865157低 7 SI49464524高 4 FA139765178中 1 DO52364580# 4 FA#148065198# 1 DO#55464633高 5 SO156865217中 2 RE58764684# 5 SO#166165235# 2 RE#62264732高 6 LA176065252中 3 M65964777# 6186565268中 4 FA69864820高 7 SI196765283我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据 低音019之间,中音在2039之间,高音在4059之间TABLE: DW 0, 63628, 63835, 64021, 64103, 64260, 64400, 64524, 0, 0 DW 0, 63731, 63928, 0, 64185, 64331, 64463, 0, 0, 0 DW 0, 64580, 64684, 64777, 64820, 64898, 64968, 65030, 0, 0 DW 0, 64633, 64732, 0, 64860, 64934, 64994, 0, 0, 0 DW 0, 65058, 65110,65157, 65178, 65217, 65252, 65283, 0, 0DW 0, 65085, 65134, 0, 65198, 65235, 65268, 0, 0, 0DW 0音乐的音拍,一个节拍为单位(C调)(如表2-3所示)表4-2 曲调值表曲调值DELAY曲调值DELAY调4/4125ms调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。琴键处理程序,根据检测到得按键值,查询音律表,给计时器赋值,发出相应频率的声音。对音调的控制:根据不同的按键,对定时器T1送入不同的初值,调节T1的溢出时间,这样就可以输出不同音调频率的方波。不同音调下各个音阶的定时器。在这个程序中用到了两个定时/计数器来完成的。其中T0用来产生音符频率,T1用来产生音拍。5.Proteus模拟仿真 图5.16.单片机源程序ORG 00H ;主程序起始地址JMP START;跳转至主程序ORG 0BH;T0起始中断地址JMP TIM0;跳转至T0中断子程序START:MOV TMOD,#00000001B;主程序设T0在MODE1 MOV IE,#10000010B;开通中断 SETB TR0;启动定时器T0L1:ACALL KEY;调用KEY,判断是否有键按下 CLR EA;中断屏蔽 JB F0,L1;没按下则F0=1,否则F0=0 MOV A,22H;将取码指址暂存地址载入A RL A;左移一位 MOV DPTR,#TABLE;存表 MOVC A,A+DPTR;读表,取T的值 MOV TH0,A;取到的高位字节存入21H MOV 21H,A;取到的高位字节存入21H MOV A,22H ;载入取码指针值 RL A;向左移一位 INC A;加1 MOVC A,A+DPTR;到表TABLE取低位字节计数值 MOV TL0,A;取到的低位字节存入T0 MOV 20H,A;取到的低位字节存入20HL2:ACALL KEY;调用KEY,判断是否有键按下 SETB EA;开通中断 JB F0,L1;是否有键按下,没有则跳转至L1 JMP L2 ;没有则跳转到L2KEY:SETB F0;设F0=1 MOV R3,#0F7H ;扫描初值(P3.3=0)MOV R1,#00H ;取码指针初值L3:MOV A,R3;载入扫描指针 MOV P3,A;输出到P3,开始扫描 MOV A,P3;读入P3 SETB C ;令C=1 MOV R5,#04H;检测P3-7P3.4L4:RLC A ;左移一位 JNC KEYIN;检测行C=0,代表有键按下 INC R1;无键按下则取码指针加1 DJNZ R5,L4;四行检测完毕? MOV A,R3;载入扫描指针 SETB C;令C=1 RRC A;扫描下一行 MOV R3,A;存回R3扫描针寄存器 JC L3;C=0,表示行扫描完毕 RET;子程序返回KEYIN:MOV 22H,R1;将A的值暂存入地址22H CLR F0;令F0=0 RET ;子程序返回TIM0:PUSH ACC;将A的值暂存于堆栈 PUSH PSW;将PSW的值暂存于堆栈 MOV TL0,20H;重设计数值 MOV TH0,21H CPL P2.4;将P2.4位反相 POP PSW;从堆栈取回PSW的值 POP ACC;从堆栈取回A的值 RETI;返回到主程序TABLE:DW 64021,64103,64260,64400;编码表 DW 64524,64580,64684,64777 DW 64820,64898,64968,65030 DW 65058,65110,65157,65178 END;程序结束7.硬件实物图 图7.18.实验结果将写入程序的单片机插入实验板插座内,并检查实验板上喇叭接口是否与程序中声音输出端口一致,当检查无误后接通电源,按图4所示进行音乐弹奏。9.结束语电子琴程序从功能设计上可分为两大部分:(1) 利用单片机内定时器T0产生16个音符,16个音符代码在表中的排列顺序与16个按键上所标出的音符是对应的。(2) 通过对键盘不断进行扫描,当确定有按键操作后,将所按下的键转换成相对应的音符,并通过输出端口使喇叭发出相对应的声音,声音的长短由按键的时间决定。10.心得体会 这次实验总共经历了两周的时间,从功能需求分析到功能分析,从程序的设计到程序的调试,下载,从购买所需硬件到焊接实物硬件,检查问题并解决直到最终合电子琴发出相对应的16种音阶,完成了这次具有实际使用价值的实验。在设计中我运用自己平时学到的一些知识,以及自己在课下所查找的进行设计,刚开始遇到很多困难,包括结合用汇编语语环境语言的不熟悉,后来和同组的人一起研究,最终对一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论