单片机电子琴设计报告(编辑修改稿)内容摘要:

PICE)各种模拟器件和集成电路,该软件的特点是: 它实现了单片机仿真和 SPICE 电路仿真相结合。 具有模拟电路仿真、数字电路仿真、单片机及 其外围电路组成的系统的仿真、 RS232 动态仿真、 I2C 调试器、SPI 调试器、键盘和 LCD 系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 它支持主流单片机系统的仿真。 目前支持的单片机类型有: 68000 系列、 8051系列、 AVR 系列、 PIC12 系列、 PIC16 系列、 PIC18 系列、 Z80 系列、 HC11 系列以及各种外围芯片。 它提供软件调试功能。 在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第 三方的软件编译和调试环境,如 KeiC51 u Vision2 等软件。 另外,它具有强大的原理图绘制功能。 仿真图 本设计系统的仿真图如下所示 : 河南理工大学本科课程设计报告 14 5 系统调试 硬件调试 硬件调试主要是针对单片机部分进行调试。 在上电前,先确保电路中不在断路或短路情况,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。 在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况等。 注意焊点之间,确保焊点没有短接在一起,同时注意焊点的美观, 确保没有开路以及短路的现象出现。 在确保硬件电路正常,无异常情况 (断路或短路 )方可上电调试,上电调试的目的是检验电路是否接错,同时还要检验原理是否正确,在本次设计中,上电调试主要键盘单片机控制部分、数码管点亮部分、和音频转换电路硬件调试。 数码管 LED电路调试:接通电源,随机按下按钮可以看到数码管显示数字。 键盘单片机控制部分调试:上电后,随机按动键盘可以发现各个按键对应的音正确。 软件调试 调试主要方法和技巧: 通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。 整个程序是一个主程序 调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。 河南理工大学本科课程设计报告 15 6 课程设计体会 通过各方面 的 努力,本次设计任务 顺利 完成,系统部分功能已 完全 实现 课程的要求。 可以按要求 演奏一首喜欢的曲子,并 能显示在数码管上;而且还能通过切换功能键实现弹奏和播放音乐功能的切换,进入播放功能时, 由于导入的是四首歌曲,因此 可以通过按 设定的四个键任意选择这四 首音乐,并能通过数码管进行显示,因而 基本达到预定的 要求和良好 的 效果。 通过这次比较系统的项目设计提高了我 们 运用所学的专业基础知识来解决面临实际问题的能力 及动手能力 , 还有加强了同学们的沟通能力和团队精神, 同时也提高了我 们 查阅各种文献资料、设计手册、设计规范以及软件编程的水平。 我们的能力还不够,需要进一步的加强,未来的日子里我们还需要不断地充实自己,提升自己的专业素养,使自己在快速发展的今天不落于人后。 参考文献 [1] 余发山 ,王福忠 ,杨凌霄 . 单片机原理及应用技术 . 中国矿业大学出版社 . [2] 王守中 . 51单片机开发入门与典型实例 . 北京:人民邮电 出版社, [3] 胡辉 . 单片机应用系统设计与训练 . 北京:中国水利水电出版社, 河南理工大学本科课程设计报告 16 附 1 源程序代码 KEYBUF EQU 30H。 列号保存单元 STH0 EQU 31H。 定时器 T0 初值高 8 位存放单元 STL0 EQU 32H。 定时器 T0 初值低 8 位存放单元 TEMP EQU 33H。 定时器初 值偏移地址存放单元 SPK EQU。 发声器所在端口 ORG 0000H LJMP START。 上电转向主程序 ORG 000BH。 定时器 T0 中断向量地址 LJMP INT_T0。 转向定时器 T0 中断服务子程序 START: MOV DPTR,TABLE2。 默认为中音模式 MOV TMOD,11H。 设置定时器的工作方式 ,定时器 T0 和 T1 都是 方式 1,作为 16 为定时 计数器使用 (定时方式 ) SETB ET0。 开各中断开关 SETB EA。 开放中断总允许和源允许 ZAICI: ACALL SAOMIAO。 进入 手动弹奏程序 SJMP ZAICI。 ********手动弹奏程序 ******** SAOMIAO:。 ********高中低音模式选择 ******* MOV P3,0FFH。 判断 P3 口模式键是否有键按下 MOV A,P3 XRL A,0FFH CJNE A,00H,MOSHI。 有键按下,转向模式转换子程序 AJMP TANZOU。 没有按下模式不变 MOSHI:LCALL DELY10MS。 延时消抖 JB ,ZHONGYIN。 高音键没有按下,转向中音 MOV DPTR,TABLE1。 高音键按下将模式设定为高音 LJMP TANZOU。 转向扫描音符键 ZHONGYIN: JB ,DIYIN。 中音键没有按下,转向低音 MOV DPTR,TABLE2。 中音键按下将模式设定为中音 LJMP TANZOU。 转向扫描音符键 DIYIN: 河南理工大学本科课程设计报告 17 JB ,TANZOU。 低音键没有按下,转向扫描音符键 MOV DPTR,TABLE3。 低音键按下将模式设定为低音 LJMP TANZOU。 转向扫描音符键。 手动弹奏程序。 *******音符键扫描 ******** TANZOU:MOV P2,0FFH。 先将键盘的列全部置为高电平 MOV A,P2 XRL A,0FFH CJNE A,00H,NEQ。 有键按下转向 NEQ CLR。 没有键按下,蜂鸣器不发声 LJMP NOKEYS。 没有按键按下即跳转到 NOKEYS NEQ: LCALL DELY10MS。 延时 10ms 消抖 MOV A,P2。 消除扰动和干扰 XRL A,0FFH CJNE A,00H,NK1 LJMP NOKEYS。 为扰动信号没有键按下转 NOKEYS NK1: MOV A,P2。 判断是否按下 1 键 CJNE A,0FEH,NK2。 按下 1 键即顺序执行程序,否则跳到 NK2 检查 下一键位 MOV KEYBUF,0。 保存列号 0 MOV P0,06H。 让 LED 显示为 1 LJMP DK1 NK2: CJNE A,0FDH,NK3。 判断是否按下 2 键 MOV KEYBUF,1。 保存列号 1 MOV P0,5BH。 让 LED 显示为 2 LJMP DK1 NK3: CJNE A,0FBH,NK4。 判断是否按下 3 键 MOV KEYBUF,2。 保存列号 2 MOV P0,4FH。 让 LED 显示为 3 LJMP DK1 NK4: CJNE A,0F7H,NK5。 判断是否按下 4 键 MOV KEYBUF,3。 保存列号 3 MOV P0,66H。 让 LED 显示为 4 河南理工大学本科课程设计报告 18 LJMP DK1 NK5: CJNE A,0EFH,NK6。 判断是否按下 5 键 MOV KEYBUF,4。 保存列号 4 MOV P0,6DH。 让 LED 显示为 5 LJMP DK1 NK6: CJNE A,0DFH,NK7。 判断是否按。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。