基于at89c52单片机的简易电子琴设计毕业设计论文(编辑修改稿)内容摘要:
来实现系统的复位操作。 上电复位要求是,接通电源后,系统能够自动实现复位操作。 手动复位要求是,在电源接通的条件下,在单片机运行期间内,用按钮开关操作使单片机复位。 它的结构见下图。 图 34 复位电路 10 键盘设计 在设计的过程中由于 键盘 中按键数量 比 较多,为了减少 I/O 口的占用, 一般 将按键排列成 矩阵 形式。 在 矩阵 式 键盘 里 , 各个 水平线和垂直线在交叉处 是 不直接连通 的 ,而是通过一个按键 将它们 加以连接的。 所以 一个端口就可以构成 4*4=16 个按键, 与 直接将端口线用于 键盘 相比之下 多出了一倍,而且 在 线数 更 多 的情况下 ,区别 就会 越明显, 或者 再多加一条线就 能够 构成 20 键的 键盘 ,而直接用端口线 就 只能多出一键( 9 键)。 综上所述 ,在需要的键数比较多 的情况时 , 使用 矩阵 法来做键盘是 很 合理的。 在单片机的系统中,假如按键比较多,一般就会采用矩阵式(也称行列式) 键盘,此次毕业设计就采用了此种键盘。 矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上。 很明显,在按键数量比较多的时候,矩阵式键盘要节省很多 I/O 口。 虽然矩阵键盘在硬件电路上相比其他键盘比较复杂,而且在程序算法上还比较麻烦,不过它在节省端口资源上非常具有优势,因所以它比较适合于多按键电路。 采用矩阵式键盘电路,可以大大的节省单片机 I/O 的开销。 图 35 键盘 软件主要由初始化程序、键盘扫描程序、音调发生程序、延时程序和曲调播放程序组成。 程序框图如 11 图 41 所示。 主程序流程图 本设计共两种播放模式,包括自动播放存储音乐和按键发音。 上电之后,首第一先开中断,设置定时器 0 为工作方式 1,当自动播放键按下的时候,进入中断,根据乐谱在音频数组中查找相应的音律,给定时器赋上初值,最后开始播放音乐。 当 DO、 RE、 MI、 FA、 SO、 LA、 SI、 DO(高音)八种音符键按下时,根据音阶值和音符值在定义的音频数组中查找相应音律,然后给定时器赋初值,即按键发音。 下为主程序流程图。 【播放程序见附录】 12 图 41 程序流程图 程序设计内容 ( 1) 44 矩阵 键盘识别处理 之中 每个按键有它 们自己 的行值和列值, 它们 的组合就是 能够 识别这个按键的编码。 在 矩阵 中,它的 的行线和列线分别通过两并行接口和 CPU 通信。 每个按键的状态 都需要 变成数字量 “0” 和 “1” ,开关的一端(列线)通过电阻接 VCC,而接地 就 是通过程序输出数字 “0” 所 实现的。 ( 2) 键盘处理程序的 目的 是:确定有 没有 键按下, 再 判断 是 哪一个键按下 的 , 这个键所展示的功能是什么 ; 而且 还要消除按键在闭合或断开 的状态 时的抖动。 两个并行口中,一个输出扫描码,另一个并行口 开始 开中断并设置工作式寄存器 有键按下 自动播放键按下 进入中断 查找相应音律 给定时器赋值 播放音乐 进入中断 查找相应音律 给定时器赋值 播放键值对应音符 13 随之 输入按键状态, 将 按键逐行动态接地,行扫描值和回馈信号共同形成键 编码而识别按键, 该键功能可以通过软件查表来看到。 下为主函数键盘处理部分 void main (void) { uchar num,k,i。 lcd_init()。 lcd_string(0,10,dis1[0])。 // 开机画面 lcd_string(11,5,dis1[1])。 //开机画面 Init_Timer0()。 //初始化定时器 0,主要用于数码管动态扫描 SPK=0。 //在未按键时,喇叭低电平,防止长期高电平损坏喇叭 lcd_string(0x40+0,5,NOTE:)。 while (1) { switch(KeyPort) { case 0xfe:num= 1。 break。 case 0xfd:num= 2。 break。 case 0xfb:num= 3。 break。 case 0xf7:num= 4。 break。 case 0xef:num= 5。 break。 case 0xdf:num= 6。 break。 case 0xbf:num= 7。 break。 case 0x7f:num= 8。 break。 default:num= 0。 break。 } lcd_string(0x40+7,1,YINFU[num])。 14 if(num==0) { TR0=0。 SPK=0。 //在未按键时,喇叭低电平,防止长期高电平损坏喇叭 } else { High=freq[num1][1]。 Low =freq[num1][0]。 TR0=1。 } if(tab==0) { delayms(10)。 if(tab==0) { i=0。 while(i100) { k=MUSIC[i]+7*MUSIC[i+1]1。 //去音符振荡频率所需数据 High=FREQH[k]。 Low=FREQL[k]。 Time=MUSIC[i+2]。 //节拍时长 i=i+3。 if(P1!=0xff)//长按任意 8 音键退出播放 { 15 delayms(10)。 if(P1!=0xff) i=101。 } Song()。 } TR0=0。 } } } } ( 3) 音乐播放设计: 一首 曲子 是 很多种 不同的音阶 所 组成的,而每个音阶对应着 各不相 同的频率, 所以就可以 利用不同的频率 之间的 组合构成 人们 所想要的音乐了,我们可以利用单片机的定时 /计数器 T0 发出 这样方波频率信号, 所以 , 本设计中 只 需 要把一首 曲子 的音阶对应频率关系 弄清楚就行了。 想要 产生音频脉冲 的话 , 一般 算出某一音频的周期( 1/频率),再将此 它 除以 2, 就是所谓的 半周期的时间。 使 用定时器计时半 个 周期 时长 , 反相 的时间是每次计时结束之后 , 然后不断重复上面的过程,这个 频率的脉冲 就能够在 引脚上得到。 利用 AT89C52 单片机 的内部定时器 让它的 工作计数器模式( MODE1)下,改变计数值 TH0 及 TL0 以产生不同频率的方法产生不同 的 音阶, 比如 ,频率为 523Hz,其周期 T= 1/523=1912μs , 所以 只要 让 计数器计时 956μs/1μs = 956,每计数 956次时将 I/O反相,就可得到中音 DO( 523Hz)。 下为歌曲处理函数部分 void Song() { TH0=High。 //赋值定时器时间,决定频率 TL0=Low。 TR0=1。 //打开定时器 delayjie(Time)。 //延时所需要的节拍 } 另, 计数脉冲值与频率的关系式 为 : 16 N= fi247。 2247。 fr 在上 式中, N 是计数值; fi 是机器频率(晶体振荡器为 12MHz 时,其频率为 1MHz); fr就 是想要产生的频率。 其计数初值 T 的求法如下: T= 65536- N= 65536- fi247。 2247。 fr 5.调试 Proteus 简介 Proteus 是英国 Labcenter 公司嵌入式系统仿真开发平台。 Proteus 由两个主要程序系统构成 ( 电路原理图设计系统 )和 (印刷电路版设计系统)。 本论文设计主要是运用 ( 电路原理图设计系统 )仿真单片机控制 1616LED 点阵,下面将简单介绍 Proteus 的 电路原理图设计系统。 Proteus 的元件库:有分离元件、集成器件、还有多种带 CPU 的可编程序器件。 既有理想元件模型。 还有各种不同厂家及时更新的实际元件模型。 Proteus 的电路原理图设计系统的仿真实验 功能:电路不仅能做电路基础实验、模拟电路实验与数字电路实验,而且能做单片机与接口实验。 为课程设计与毕业设计提供综合系统仿真。 它的仿真要求为: ,检测数字电路模型是否连通,有无连接错误。 2. Keil 软件编译 C 语言,要求最终编译结果程序 0 错误,将其导入到 Proteus 仿真软件中。 3. Proteus 仿真电路最终能成功显示 C 语言程序编译后的结果。 keil 简介 单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为 CPU 可以执行的机器码有两种方法,一种是手工汇 编,另一种是机器汇编,目前已极少使用手工汇编的方法了。 机器汇编是通过汇编软件将源程序变为机器码,用于 MCS51 单片机的汇编软件有早期的 A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展, Keil 软件是目前最流行开发 MCS51 系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持 Keil 即可看出。 Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发 17 方案,通过一个集成开发环境( uVision)将这些部份组合在 一起。 运行 Keil 软件需要 Pentium 或以上的CPU, 16MB 或更多 RAM、 20M 以上空闲的硬盘空间、 WIN9 NT、 WIN20xx、 WINXP 等操作系统。 掌握这一软件的使用对于使用 51 系列单片机的爱好者来说是十分必要的,如果使用 C 语言编程,那么 Keil几乎就是不二之选 , 即使不使用 C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会 使工作 事半功倍。 该软件的优点为: ( 1) Keil C51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。 在开发大型软件时更能体现高 级语言的优势。 ( 2) 与汇编相比, C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。 用过汇编语言后再使用 C 来开发,体会更加深刻。 注意事项 : ( 1) 仿真器 标配 的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。 ( 2) 仿真器 上的复位按钮只复位仿真芯片, 不复位目标系统。 ( 3) 仿真芯片的 31 脚( /EA)已接至高电平,所以仿真时只能使用片内 ROM,不能使用片外 ROM;但 仿真器 外引插针中的 31 脚并不与仿真芯片的 31 脚相连,故该仿真器仍可插入到扩展有外部 ROM(其CPU 的 /EA 引脚接至低电平)的目标系统中使用。 18 仿真步骤 首先用 Protel99se 软件绘制电路原理图,如图 51 1 2 3 4 5 6ABCD654321DCBAT i t l eN um b e r R e vi s i o nS i z eBD a t e : 19 M a y 20 13 S h e e t o f F i l e : C : \ D oc um e n t s a nd S e t t i ng s \ A dm i ni s t r a t or \桌面 \电子琴资料 \电子琴 出售资料 \电子琴 .d d bD r a w n B y:123456789R P 110 3V C Cabcdefghb c d e f g hY112 M H Z。基于at89c52单片机的简易电子琴设计毕业设计论文(编辑修改稿)
相关推荐
波诊断、超声波治疗等。 超声波在工业中可用来对材料进行检测和探伤,可以测量气体、液体和固体的物理参数,可以测量厚度、液面高度、流量、粘度和 硬度等,还可以对材料的焊缝、粘接等进行检查。 超声波清洗和加工处理可以应用于切割、焊接、喷雾、乳化、电镀等工艺过程中。 超声波清洗是一种高效率的方法,已经用于尖端和精密工业。 大功率超声可用于机械加工,使超声波在拉管、拉丝、挤压和铆接等工艺中得到应用。
RAM),器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS51 指令系统,片内置通用 8 位中央处理器和 Flash 存储单元,功能强大的 AT89C52 单片机可为您提供许多较复杂系统控制应用场合。 AT89C52 有 40个引脚, 32个外部双向输入 /输出( I/O)端口,同时内含 2 个外中断口, 3 个 16位可编程定时计数器 ,2 个全双工串行通信口, 2
C 将清除所有标志。 第 9 页 共 23 页 寄存器 D中仅 D7有 定义,读时应若寄存器 D中仅 D7 有定义,读时应总为 1,若为 0 则说明内部锂电池已耗尽。 为防止锂电池在芯片装入系统前被耗尽,DS12887 在出厂时先关掉了其内部的晶振,编程时必须首先给寄存器 A 的DV2DV1DV0 位写入 010 以打开晶振,然后 ,读寄存器 D 以检查内部锂电池是否有效;接着根据需要对寄存器
6 此一个状态周期包含 2 个振荡周期。 机器周期: 1 个机器周期由 6 个状态周期 12 个振荡周期组成,是计算 机执行一种基本操作的时间单位。 指令周期:执行一条指令所需的时间。 一个指令周期由 14 个机器周期组成,依据指令不同而不同 . 复位电路 当 MCS51 系列 单片机的复位引脚 RST(全称 RESET)出现 2 个机器周期以上的高电平时,根据应用要求
觉惰性可以理解为光线对人眼视觉的作用、传输、处理等过程都需要时间,因而使视觉具有一定的低通性。 实验表明,当外界光源突然消失时,人眼的亮度感觉是按指数规律逐渐减小的。 这样当一个光源反复通断,在通断频率较低时,人眼可以发现亮度的变化;而通断频率增高时,视觉就逐渐不能发现相应的亮度变化了。 不致于引起闪烁感觉的最低反复通断频率称为临界闪烁频率。 通过实验证明临界闪烁频率大约为 24Hz。
大,不可预测性,能量高,频谱宽等。 因此如何抑制干扰 ,提高通信的可靠性是首要考虑的。 再次,不同地方的线路特性可能完全不同,使用线路的种类及线路上的负荷情况都回对高频信号在电力线上的传输特性产生很大的影响。 即使是同一段电力 线路 ,其传输特性也会随着各种电力负荷的投切而改变,所以通信设备的稳定性和适应不同线路的能力也很重要。 输入阻抗是电力线传输特性的一个重要参数,它关系着传输信号的频率