ImageVerifierCode 换一换
格式:DOCX , 页数:44 ,大小:87.57KB ,
资源ID:21688129      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21688129.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(应用软件课程设计论文文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

应用软件课程设计论文文档格式.docx

1、认真完成每一个步骤,总体设计,运用8086汇编语言编写程序,掌握接口电路设计思路,反复调试与测试,在有精力与时间的情况下,对系统功能稍作扩展,但不画蛇添足,用心完成设计论文的撰写。以严谨认真的态度来对待课程设计,并有所收获。二、 综合训练任务利用STAR ES598PCI实验箱设计一个具有时、分、秒显示的电子钟,并定义一个启动键,当开启改建时时钟从当前设定值开始走时,时间数据可用数码管显示,同时按下语音播报键,可以准确清晰地报出显示的北京时间,并且可以设置时间。三、 总体设计语音播报电子钟大致可以分三个大方向来完成,其功能模块图如图1所示。一是主体电子钟的设计,需要完成的是将时间按时、分、秒显

2、示在数码管上,并且可以走时及设置时间,需要用到的模块主要有8253计数器、8259A可编程中断处理芯片,还有8279;二是录音部分,需要用语音模块对所用到的声音进行处理,把所要用到的声音片段按地址存放在ISD1420中;三是将两者有机的结合起来,在电子钟程序中添加功能,调用放音程序后可以播报当前显示的时间。系统流程图如图2所示。四、 详细设计说明在明确总体设计思路的情况下,需要分块将功能实现,最后将几个部分结合起来,就可以完成整个语音播报电子钟系统。各分块的功能详细介绍如下。(1) 电子钟设计电子钟的实现主要用到的芯片有8253计数器和8259中断处理器还有显示时间的数码管。8253采用的是方

3、式二分频计数器,设计过程中需要用到三个计数器,即秒计数器、分计数器和时计数器,分别记录秒、时、分。将CLK端接62.5K型号,并在8259初始化时设置初值为31.25K,也就是没半秒产生一次中断,将中断信号送到8259的IR0(中断向量号为8H,存放中断向量的起始地址是20H),8259的INT向CPU发出中断请求信号,紧接着CPU的INTA会向8259发出响应中断请求信号。当累计两次中断,即一秒会产生一次脉冲作为秒计数器的时钟脉冲,秒计数器会加一,秒计数器采用六十进制计数,当秒计数器计数六十次会发出一个“分脉冲”信号,此信号作为分计数器的时钟脉冲,使分计数器加一,分计数器同样采用六十进制计数

4、,当分计数器计数六十次后会发出一个“时脉冲”信号,该信号将作为时计数器的时钟信号,是时计数器加一,时计数器采用二十四进制计数,计数满二十四次,重新计数。电子钟还需要实现的功能是设置时间。显示在数码管上的时间都先要存在buffer中,buffer+7和buffer+6存放的是小时,buffer+4和buffer+3存放的是分钟,buffer+1和buffer中存放的是秒,当设置时间时还会用buffer1。设置按键F,当按下时开始设置时间,预设置时间位添加闪烁效果作为提示,设置时间的规则如下,设置小时是,其十位不能高于2,当小时的十位为1或0时,个位为09任意一个数,当十位为2时,个位不能高于4;

5、设置分钟和秒的情况类似,十位数不能高于5,个位数可设置为09任意一个数。十位乘以十加个位便可算出时、分、秒的具体值。无论是buffer或者是buffer1中的数都不能直接转化为可显示在数码管上,要用其表示时间必须转化为可显示格式。将hour、min、sec分别除以10,将除数和余数分别显示在不同位置的数码管上,数码管的接法是并联的,要显示的数据会送到每个数码管上,但是为何数码管上显示的数据不同?若给小时的十位数码管送一个数据,要将小时十位的数码管选通而将其它数码管全部关闭,一段时间后给个位数码管以同样的方式发送显示的数据,依次类推显示其它位,由于这个时间是非常短促的,人眼无法识别它的变化,因此

6、看到数码管可以显示不同的数。(2) 录音录音需要用到语音模块中的ISD1420芯片。ISD1420可直接模拟存储,能提供真实的音乐、语音或音频,内有160个可寻址段,总共能录放20秒的声音。根据报时的需要,应录入十五段声音,分别是:现在时刻、十、分、点、整和0、1、2、3、4、5、6、7、8、9。其中现在时刻需要用1秒的时间来播放,而其它则用0.5秒的时间播放。地址从00H开始,到08H存放1秒的录音,往后到0CH,存放0.5秒的录音,依次类推。语音模块的REC是输入低电平有效的录音信号,用作录音控制,PLAYE是电平放音控制,PLAYL是下降沿触发放音。8255的A0和A1均为0,用方式0,

7、选择了PA端口。PA端口控制G6区的按键,程序中控制14键为录音键,相应的录音用58键播放,由此可知需要用到四个录音程序来完成十五段声音的录入,程序内容基本一致,只是在定义录放音起始地址时有所区别。(3) 报时声音片段已经存到ISD1420,只需要在时钟程序中添加相应的子程序便可以播放声音。当按键扫描确定输入的键值为E时,调用报时子程序,先报“现在时刻”,再报小时,判断hour的值,将其除以十,将除数与零比较,若等于零则直接报余数的值,再报“点”,否则要先报除数和“十”,再报余数和“点”,最后报分钟,将min的值除以十,若十位为零,则顺序播报除数和余数,接着报分,若十位不为零,先报十位,再报“

8、十”和余数,最后报“分”。播报声音的过程中,每次调用放音程序后紧接着都要调用显示时间的子程序,以免报时造成时间显示异常。(4) 扩展完成以上功能后可以对语音播报电子钟可以作两方面简单的扩展。一是整点报时,在完成报时子程序后,整点报时便可轻而易举的实现,只要在扫描按键之前添加一段程序,判断分、秒是否为零,若都为零则直接调用报时子程序,报时子程序中在添加报“整”的部分即可。二是将时间同步显示在液晶显示屏上,预计在显示屏上显示两行内容,第一行显示“北京时间”,只要将四个字用字模软件取模,显示在相应的位置,第二行显示时间有一定的困难,要将buffer中的数取出存在buffer2中,按照时间显示的顺序排

9、列,时、分、秒中间用冒号隔开,因此还需要对“:”取模,将时间调整到合适的位置,并同数码管上的数据一样刷新显示,如此一来,显示屏上的时间也会走时。五、 调试与测试根据详细设计,将语音播报电子钟的设计模块化,在实现功能及调试与测试的过程也是采用各个击破的策略,最后再逐一整合。(1) 电子钟电子钟主要实现的功能是显示时间和设置时间,时间走时的原理在上一节有介绍,每隔0.5秒产生一次中断,累计两次中断计时一次。这部分内容有范例,所以调试与测试均顺利,两个功能都完全实现。(2) 语音部分调试与测试在整个系统功能的模块化实现过程中,语音部分可以算是一个难点,原因在于对ISD1420芯片一无所知,因而语音部

10、分的调试与测试花费大量时间。一开始主要测试ISD1420的能存储录音的时间,理论上ISD1420能录放20秒的声音,但实际情况并非如此,经过多次测试,最长的录放时间是12秒。ISD1420内部有160个可寻址段,也就是说,录音是按地址存放在ISD1420中的,但是实验箱上的ISD1420并不是160段都能够用上,50H以后的地址都不可用。经过反复测试,最合理的录音方案是从00H到08H开始录第一段音,录放时间为1秒,之后的则是每四个可寻址段存放一段声音,即录放音时间为0.5秒,总共将录音分为15段。分配好存储空间之后,用编写的录音程序将声音录入,每个程序能录4个声音片段,每个程序段都是用G6去

11、的14键控制录音,58键播放录音,0.5秒的时间比较短促,不能很好的掌握录音时间,按键播放声音,对放音效果不好的声音片段要重新录入。(3) 报时功能调试依照详细设计中报时部分的思路,在电子钟程序中加入了报时子程序,调试修改后的程序,没有严重的错误,但是报时发生错误,分钟为两位数时,个位所播报的数一直与小时的个位一致,多次修改和研究程序,没能发现其中的错误,只能换个思路对这部分的程序重新编写。新的程序解决了报时出现的问题,可是也带出了其它问题,在整点报时后,时间的显示出现异常回到初值,估计入栈出栈操作过多而引起,就这个问题,调试了很长时间,最后在报“整”的部分程序上添加了强行JMP至显示时间的子

12、程序上,该问题才得以解决,报时功能实现。至此语音播报电子钟的设计所要求的任务已全部完成。(4) 扩展功能将时间显示在液晶显示屏上是语音播报电子钟的一个扩展功能,功能实现并不困难,仅在走时部分遇到问题,并能很快解决。将程序段加到电子钟程序中,获取buffer中的数据显示在显示屏上,并同数码管上的时间一起刷新显示,另外需要注意的是在屏幕显示文字和字符所调用的子程序是不一样的,显示文字调用的是WordDISL,显示字符调用的是ByteDISL。综合上述调试过程,一个带有扩展功能的语音播报电子钟便完成了,实现了详细设计中所涉及到的所有功能,系统的整体效果差强人意。六、实习日志略七、 实习总结锲而不舍的

13、努力,终于完成语音播报电子钟的设计,虽然在验收成果和答辩的过程中表现不尽如人意,但是在理论知识掌握得不扎实的情况下,取得这样的成果会有一种大喜过望的感觉。整个课程设计过程中,每个环节都会有所收获。实习中用到两块大的理论知识是接口技术和汇编语言,大量的实践,需要特别多的相关知识,对于不清楚或已经淡忘的内容,要查阅课本或资料,再将其运用到实践中,因此,整个实习下来,两门课程的知识都较大范围的复习到了,尤其是课程学习中没有掌握好的内容在实践过程中得以理解,诸如在运用8253、8255和8259几个芯片的过程中,对其功能、结构、控制字到最终的应用都建立起更新更全面的认知。与此同时,较长的代码编写提高了

14、运用汇编语言编程的能力。课程设计是一次系统而完整的综合训练,整个过程都必须事必躬亲,独立思考,仔细分析,得出总体设计方案,再逐步深入,将每一模块的功能实现,脚踏实地一步一步地接近目标,提高了将理论知识转化为实践应用的能力。当然,实现的过程并非是一帆风顺的,其间会不断涌现出意料之外的问题,要不断地思考问题出现的原因,想办法解决问题,这方面的能力也有所提高。同学间会有做相似题目的或是用到相同模块的,每个人想问题的角度不一样,会有不一样的见地,三人行必有我师,常常在一起讨论,能了解到同一个问题的不同看法,让自己的想法不拘泥于狭小的范围,也常常会有醍醐灌顶的感觉。由此可见,合作与交流也是非常重要的。虽

15、然,语音播报电子钟的功能已全部实现,但仍然有可以扩展的地方,比如,除了现实十、分、秒之外,还可以按键设置显示年、月、日,也可以设定闹钟,有了上述功能,系统将会更加的完善和强大。这些都是可以继续努力完成的内容。为期十天的接口技术课程设计已经画上了句点,然而学习没有终点,完成了任务并不代表已经掌握好知识,没有完成也并非一无所获,在往后还要以严谨认真的态度不断学习。八、 核心代码清单(1) 录音程序这部分有四个程序,内容基本一致,只是定义的起始地址不一样,其中除第一个声音片段是1秒之外,其余都为0.5秒。#Voice1.asm .MODEL TINY .STACK 100 ;堆栈段ISD1420_A

16、D1 EQU 00H ;1号键录放音起始地址ISD1420_AD2 EQU 08H ;2号键录放音起始地址ISD1420_AD3 EQU 0CH ;3号键录放音起始地址ISD1420_AD4 EQU 10H ;4号键录放音起始地址ISDCOMM EQU 0C000H ;录放音地址/操作模式输入地址,0F000H是接到CS1上的地址I8255_Ctr EQU 0D003H ;8255控制端口地址 I8255_PA EQU 0D000H ;键盘数据输入口I8255_PC EQU 0D002H ;ISD1420控制输出口 .DATAKeepMode DB 7 ;保存REC、PLAYE、PLAYL当前

17、值bNewKey DB 0 ;有键按下标志位,清0-无键按下KEYno DB 0 ;按键缓存KeyTab DW KEY1,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8 ;录音键、放音键子程序入口地址 .CODE ;程序段START: MOV AX,DATA MOV DS,AX NOP CALL MainInit ;主程序初始化Main: CALL ScanKey ;扫描按键 JNB Main Main1: CALL KeyRun ;按键处理 CMP bNewKey,0 ;是否有新的键按下 JZ Main MOV bNewKey,0 ;清按键标志 JMP Main1 ;循

18、环进行实验内容介绍与ISD1420功能测试;主程序初始化 MainInit PROC NEAR MOV DX,I8255_Ctr ;8255初始化 MOV AL,90H ;PA为输入,PC的低四位为输出 OUT DX,AL CALL ISD_INIT ;ISD1420初始化 RETMainInit ENDP*录放音子程序 KEY1 PROC NEAR MOV AL,ISD1420_AD1 ;1号键录音首地址 CALL KEY_REC1 KEY1 ENDP KEY2 PROC NEAR MOV AL,ISD1420_AD2 ;2号键录音首地址 CALL KEY_REC2KEY2 ENDP KEY

19、3 PROC NEAR MOV AL,ISD1420_AD3 ;3号键录音首地址KEY3 ENDPKEY4 PROC NEAR MOV AL,ISD1420_AD4 ;4号键录音首地址KEY4 ENDP录音子程序 KEY_REC1 PROC NEAR MOV CX,4 ;录音时间长度,1s CALL ISD_REC ;调用录音子程序KEY_REC11: CALL Delay_025S ;延时 CMP bNewKey,0 ;检测按键是否有键按下 JNZ KEY_REC12 LOOP KEY_REC11 ;录音时间,根据CX的值决定KEY_REC12: CALL ISD_STOP ;停止录音KEY

20、_REC1 ENDPKEY_REC2 PROC NEAR MOV CX,2 ;录音时间长度,0.5sKEY_REC21: JNZ KEY_REC22 LOOP KEY_REC21 ;KEY_REC22:KEY_REC2 ENDP放音子程序KEY5 PROC NEAR5号键放音首地址 CALL KEY_PLAY1KEY5 ENDPKEY6 PROC NEAR6号键放音首地址 CALL KEY_PLAY2KEY6 ENDPKEY7 PROC NEAR MOV AL, ISD1420_AD3 ;7号键放音首地址KEY7 ENDPKEY8 PROC NEAR8号键放音首地址KEY8 ENDPKEY_P

21、LAY1 PROC NEAR MOV CX,4 CALL ISD_PLAY ;KEY_PLAY11:用于进度显示的时间参照 JNZ KEY_PLAY12 LOOP KEY_PLAY11KEY_PLAY12: CALL ISD_STOP KEY_PLAY1 ENDPKEY_PLAY2 PROC NEAR MOV CX,2 KEY_PLAY21: JNZ KEY_PLAY22 LOOP KEY_PLAY21KEY_PLAY22:KEY_PLAY2 ENDPKeyRun PROC NEAR LEA BX,KeyTab ;有键按下,跳到相应处理程序 MOV AL,KEYno ;KEYno-按键值 SH

22、L AL,1 ;2倍 XOR AH,AH ADD BX,AX CALL BX ;BX=对应按键子程序入口地址 RET KeyRun ENDP按键扫描ScanKey PROC NEAR MOV DX,I8255_PA ;8255.PA-检测按键输入 IN AL,DX ;键扫描 CMP AL,0FFH JNZ ScanKey1ScanKey4: CLC ;无按键按下ScanKey1: CALL ScanKey2 ;有按键,取抖动处理 JNB ScanKey4ScanKey3: MOV BL,KEYno CALL Delay20ms ;消抖动 CALL Delay20ms CALL ScanKey2

23、 CMP BL,KEYno JNZ ScanKey3ScanKey5: MOV DX,I8255_PAScanKey6: IN AL,DX CMP AL,0FFH JNZ ScanKey6 STC RET ScanKey ENDP按下的键(18)转化为对应的键值(07),便于多分支程序处理ScanKey2 PROC NEAR PUSH BX XOR BL,BL MOV DX,I8255_PA IN AL,DX TEST AL,01H JZ ScanKey21 INC BL TEST AL,02H TEST AL,04H TEST AL,08H TEST AL,10H TEST AL,20H TEST AL,40H TEST AL,80H CLC JMP ScanKey22ScanKey21: STC ;有键按下,置有键按下标志 MOV KEYno,BL ;获得键值ScanKey22: POP BXScanKey2 ENDPDelay20

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1