




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、设计指标1.1 设计任务1设计一个4X4的16个按键矩阵,并且每个键对应一个音,显示对应音键号。2用AT89C51将键盘连接设计成为电子琴。3编写电子琴的程序,要达到可以随意弹奏想要表达的音乐的目的。4程序的分析与调试,显示波形。1.2 设计要求1用汇编语言编程实现程序设计。2利用查表,中断等方式实现目的。3系统的各各功能模块要清楚,有序。4程序运行时有友好的用户界面。二、设计方框图图2.1 系统主程序流程图图2.2三、元器件介绍该设计主要由以下几个部件组成:1:单片机AT89C51 : AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效的微控制器。引脚说明:P0口:P0口为一个8位双向三态I/O口,每脚可驱动8个TTL负载。P0既可作为通用I/O口,又可作为外部扩展时的数据总线及低8位地址总线的分时复用口。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,每个引脚可驱动4TTL负载。P1口管脚写入1后,被内部上拉为高,可用作输入, P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,驱动4个TTL门电流。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可驱动4个TTL负载。当P3口写入1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能,管脚备选功能:P3.0 RXD(串行数据接受口) P3.1 TXD(串行数据发送口) P3.2 /INT0(外部中断0请求输入)P3.3 /INT1(外部中断1请求输入) P3.4 T0(定时器/计数器0外部输入口) P3.5 T1(定时器/计数器1外部输入口)P3.6 /WR(外部数据存储器RAM写选通) P3.7 /RD(外部数据存储器RAM读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许ALE的输出电平用于锁存地址的地位字节。当不访问其时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。/PSEN:外部程序存储器ROM的选通信号。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:反向振荡放大器的出及内部时钟工作电路的输出。2:电源:电源部分有二部分组成。一部分是由220V的市电通过变压、整流稳压来得到+5V电压,维持系统的正常工作;另一部分是由3V的电池供电,以保证停电时正常走时。正常情况下电池是不提供电能的,以保证电池的寿命。3:4*4的16个按钮矩阵。4:模拟示波器:模拟产生的波形。5:LM386音频功率放大器,LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20。但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至 200。输入端以地位参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场 合。 6:74LS244锁存器:74LS244为3态8位地址锁存器,地址锁存器就是一个暂存器,它根据控制信号的状态,将总线上地址代码暂存起来首先由CPU发出存储器地址,同时发出允许锁存信号ALE给锁存器,当锁存器接到该信号后将地址/数据总线上的地址锁存在总线上,随后才能传输数据。四、设计原理4.1 电路原理主要分为二个部分:(1)4X4行列式键盘识别;(2)音乐产生的方法;一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。现在以单片机12MHZ晶振为例,列出高中低音符与单片机计数T0相关的计数值如表3.1所示.下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:低音019之间,中音在2039之间,高音在4059之间TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0DW 0,63731,63928,0,64185,64331,64463,0,0,0DW 0,64580,64684,64777,64820,64898,64968,65030,0,0DW 0,64633,64732,0,64860,64934,64994,0,0,0DW 0,65058,65110,65157,65178,65217,65252,65283,0,0DW 0,65085,65134,0,65198,65235,65268,0,0,0DW 0 表3.1 高中低音符与单片机计数T0相关的计数值表音符频率(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音乐的音拍,一个节拍为单位(C调)曲调值DELAY 曲调值DELAY调4/4125ms 调4/462ms调3/4187ms 调3/494ms调2/4250ms 调2/4125ms对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。在这个程序中用到了两个定时/计数器来完成的。其中T0用来产生音符频率,T1用来产生音拍。2、 各功能模块电路的设计(用Proteus仿真) 1、 晶体振荡电路 2、 上电自动复位电路 3、按键电路 4、 显示按键建号 5音频功率放大电路 6、模拟示波3、 整体电路图 四、电路安装与调试过程1 打开并设置MedWin打开MedWin设置仿真器设置工作目录设置编译器2 使用MedWin(1)新建项目 点击项目管理新建项目 命令,输入项目名称,点击确定按钮,出现“添加项目文件”对话框,输入源代码文件名,如DITISHIYAN.ASM,单击打开按钮,出现代码窗口,即可开始编程。(2)打开项目 点击项目管理打开项目 命令,点击项目文件名(项目文件后缀为.mpf),点击打开按钮,即可打开上次保存的项目。(3)编译 点击项目管理编译/汇编命令,启动编译器对源文件进行语法检查并编译,在消息窗口中显示编译结果。(3)模拟仿真 当源程序编译无误后,可进行模拟仿真调试。点击项目管理产生代码并装入命令,生成.hex文件。编译器对源程序进行重新编译并装入。这时,可使用调试菜单中的相关命令进行调试,如设置断点、单步及全速执行等。(4)生成目标代码 点击项目管理输出Binary文件命令,生成BIN文件,用下载工具将其下载到实验板的单片机中执行。3 Proteus的应用首先安装此软件,然后打开,打开之后在图形编辑窗口进行画图。硬件电路图画好之后,将刚在MedWin中已经编辑好的程序写入单片机中(AT89C51)中,然后进行整体仿真。五、电路测试与使用说明硬件部分 按照原理图连接电路,用PROTEUS模拟仿真测试电路,如果有问题就分块进行测试!软件部分如果硬件部分并无问题,那么就有可能是出现在软件部分。那么就需要一一查看程序是否有误,如若有误将其改正并编译并代码,而后加载进单片机内再次运行。 六、训练总结这次我主要的设计是一个简易电子琴,采用16个键分别代表16个音,通过对按键的随意按击从而产生不同的音乐,主要是通过每个按键所产生的频率不同来使得发出的各个音不同,从而产一音乐 。 程序也实在很长,对于现在的我来说肯定一个人肯定很难编出这么长的程序,幸好有给与我帮助的同学和老师。虽然这个程序还不是很简洁,但我们可以根据每个程序的功能各不相同来使程序简化。不过我对目前的程序已经很满意了,但是也存在存在的问题:(1)功能单调 ,我们可以通过增加元件、模块,扩展键盘,增加子程序程序增加其功能。 (2)程序太过冗长,我们可以用其他的方法如查询等方法来精简程序,加强它的可读性。最后,通过这次的自主完成单片机的应用系统设计,让我学会了如何去完成一个设计报告,让我更进一步了解了单片机,也让我感受到做出一个设计的开心,喜悦与担心。相信这对以后的毕业设计也会有很大的帮助。七、附录 KEYBUF EQU 30HSTH0 EQU 31HSTL0 EQU 32HTEMP EQU 33HORG 00H ; 开始地址LJMP STARTORG 0BH ; T0中断矢量地址LJMP INT_T0 START: MOV TMOD,#01H ; 写控制字SETB ET0 ; 允许T0中断SETB EA ; 开放CPU中断WAIT:MOV P3,#0FFH ; P3口输出CLR P3.4 ; 清零MOV A,P3ANL A,#0FHXRL A,#0FH ; 屏蔽高四位JZ NOKEY1 ; 判断LCALL DELY10MSMOV A,P3ANL A,#0FH ; 屏蔽高四位XRL A,#0FH ; 异或运算JZ NOKEY1MOV A,P3ANL A,#0FH ; 屏蔽高四位 CJNE A,#0EH,NK1 ; 判断A与#0eh是否相等MOV KEYBUF,#0 ; 赋初值#0LJMP DK1 ; 跳转NK1: CJNE A,#0DH,NK2MOV KEYBUF,#1LJMP DK1NK2: CJNE A,#0BH,NK3MOV KEYBUF,#2LJMP DK1NK3: CJNE A,#07H,NK4MOV KEYBUF,#3LJMP DK1 ; 调用DK1NK4: NOP ; 空指令延时一个周期DK1:MOV A,KEYBUFMOV DPTR,#TABLE ; 查表 赋首地址MOVC A,A+DPTRMOV P0,A MOV A,KEYBUFMOV B,#2MUL AB ; AB相乘MOV TEMP,AMOV DPTR,#TABLE1 ; 查表一MOVC A,A+DPTRMOV STH0,A ; 写定时常数MOV TH0,AINC TEMPMOV A,TEMPMOVC A,A+DPTRMOV STL0,AMOV TL0,ASETB TR0DK1A: MOV A,P3ANL A,#0FH ; 屏蔽高四位XRL A,#0FHJNZ DK1ACLR TR0NOKEY1: ; 键1子程序MOV P3,#0FFHCLR P3.5MOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY2 ; 判断跳转键2子程序LCALL DELY10MSMOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY2MOV A,P3ANL A,#0FHCJNE A,#0EH,NK5 ; 比较跳到键5MOV KEYBUF,#4LJMP DK2NK5: CJNE A,#0DH,NK6 ; 键5子程序MOV KEYBUF,#5LJMP DK2NK6: CJNE A,#0BH,NK7MOV KEYBUF,#6LJMP DK2NK7: CJNE A,#07H,NK8MOV KEYBUF,#7LJMP DK2NK8: NOPDK2:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,A+DPTRMOV P0,AMOV A,KEYBUFMOV B,#2MUL ABMOV TEMP,AMOV DPTR,#TABLE1 ; 查表扫描表一MOVC A,A+DPTRMOV STH0,AMOV TH0,AINC TEMP ; 移动TEMP,扫描键盘MOV A,TEMPMOVC A,A+DPTRMOV STL0,AMOV TL0,ASETB TR0 ; 启动定时DK2A: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ DK2ACLR TR0NOKEY2:MOV P3,#0FFHCLR P3.6MOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY3LCALL DELY10MSMOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY3MOV A,P3ANL A,#0FHCJNE A,#0EH,NK9MOV KEYBUF,#8LJMP DK3 ; 调用DK3NK9: CJNE A,#0DH,NK10MOV KEYBUF,#9LJMP DK3NK10: CJNE A,#0BH,NK11MOV KEYBUF,#10LJMP DK3NK11: CJNE A,#07H,NK12MOV KEYBUF,#11LJMP DK3NK12: NOPDK3:MOV A,KEYBUFMOV DPTR,#TABLE ; 查表MOVC A,A+DPTRMOV P0,AMOV A,KEYBUFMOV B,#2MUL ABMOV TEMP,AMOV DPTR,#TABLE1 ; 查表1MOVC A,A+DPTRMOV STH0,AMOV TH0,AINC TEMPMOV A,TEMPMOVC A,A+DPTRMOV STL0,AMOV TL0,ASETB TR0 ; 启动TR0 DK3A: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ DK3ACLR TR0NOKEY3:MOV P3,#0FFH ; P3输出CLR P3.7MOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY4 ; 判c=0转移LCALL DELY10MSMOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY4MOV A,P3ANL A,#0FHCJNE A,#0EH,NK13MOV KEYBUF,#12LJMP DK4 ; 调用DK4NK13: CJNE A,#0DH,NK14MOV KEYBUF,#13LJMP DK4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全防范工作总结(15篇)
- 2025年餐饮行业行业智能餐厅与外卖市场发展研究报告
- 2025年电影电视行业OTT平台内容生态研究报告
- 2025遴选会计面试题目及答案
- 2025年家电产业智能家居市场前景研究报告
- 2025年数字化零售行业零售数码转型报告
- 2025年社交媒体行业短视频内容生态研究报告
- 2025年农业科技行业智慧农业发展前景分析报告
- 2025年文化娱乐行业虚拟现实技术应用前景分析研究报告
- 注射用盐酸阿柔比星临床应用考核试题
- 2025年杭州上城区总工会公开招聘工会社会工作者9人笔试参考题库附答案解析
- 2025年互联网+特殊教育行业研究报告及未来发展趋势预测
- 医院信息安全保密培训课件
- 文化人类学课件完整版
- 碳达峰碳中和产业发展调研报告
- 《海洋学》第二章 地球及海洋概观
- GH/T 1091-2014代用茶
- GB/T 12642-2013工业机器人性能规范及其试验方法
- ESG专题研究报告
- 【初中历史】商鞅变法优秀课件31-川教版
- 食品质量与安全管理概述课件
评论
0/150
提交评论