




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理与接口技术课程设计报告 (选择多功能程序设计软件开发方向)班级:_计算机1001 _ 学号: _ _姓名: _指导教师: _ 日期:_2012年6月20日_一、设计题目:1设置一个主菜单界面,通过按键选择进入以下其中一项功能(按键自己设置,可以是数字键或字母),按esc返回主菜单;按q键退出系统;要求界面简洁明了,易于操作。2时间显示功能。在屏幕上以hh:mm:ss的格式显示系统时间、并以一定时间间隔随机改变显示位置;3日期显示功能。在屏幕上以yyyy-mm-dd的格式显示系统日期、并以一定时间间隔随机改变显示位置;4闰年判断功能。提示输入闰年,对输入内容具有容错处理,计算是否闰年,然后输出结果;5代码转换功能。实现不同数制的输入并转换成另一种数制输出,如将十进制数转换为其对应的二进制数、将二进制数转换为其对应的十进制数、将十进制数转换为其对应的十六进制数、将十六进制数转换为其对应的十进制数等。选一种或多种转换实现;6音乐播放功能。利用计算机中的8253控制扬声器发音来实现;能选择多首乐曲中的一首演奏,乐曲自选;定义14个键,对应低音区和中音的17,模仿电子琴能随意演奏乐曲;二、设计目的:1加深对课程理论知识的理解; 2通过编写一定规模和难度的程序,进行一次较全面的汇编编程训练,提高分析问题和解决问题的能力;提高调试程序的能力。3熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,作为微机开发应用方面的初步训练。三、设计实现功能1. 设置有一个可以进行选择执行不同功能不同功能的主菜单,按对应功能的按键便可执行相应的功能;若有按到出选项外的其他键则提示退出标示,输入y/y则退出,输入n/n返回主菜单界面。2. 将时间显示和日期显示功能统一到第一个功能中,进入该功能后程序获取到系统时间然后间隔一段时间按照数据段中定义的table 中的坐标换显示的位置。程序中也会有闪烁的提示,按任意键则可以返回主菜单3. 闰年判断功能,在此功能功能中有输入数据的容错处理,若有输入符号、字母等信息则会跳出提示。在执行过后将会跳出提示信息询问是否要返回主菜单,使用者可根据需要选择。4. 数制转化功能,进入此功能选项后可看到一个数制转换的子菜单,按相应选项分别将十六进制转化为二进制、十进制、八进制界面,在此有对输入数据做容错处理,数制转化完会跳出提示信息是否要退出在此根据需要选择。5. 音乐播放功能 ,进入此功能后有选择实现电子琴功能和乐曲播放功能的子菜单。选择电子琴功能进入电子琴界面这里可以实现按1-8键响出不同频率的声音,可以实现弹奏功能;选择乐曲播放功能,进入选择乐曲界面,用键盘键a、b、c选择对应生日快乐歌,蜗牛与黄鹂鸟、美丽的神话歌曲,按q键则可以正常返回值上一级界面,播放过程允许中断。可以在没有听完整首歌曲时人为中断听下一首歌曲,或退出。四、设计内容与具体过程(分功能模块说明) 1.总体结构模块设计: 设计一个主菜单界面,在此界面我们可以选择调用要执行的相应的功能,也可以退出系统。在制作菜单等显示字符串的过程中主要使用bios中断调用,主要使用到的bios中断如下:中断号为10h:功能号ah=00h 置显示方式 入口参数:al=显示方式代码(00h13h) ah=02h 置光标位置 入口参数: dh/dl=行/列 bh=显示页 ah=03h 取光标位置 入口参数:bh=显示页 出口参数: dh/dl=光标起始行/列 ah=06h 当前显示页上卷 入口参数: al=上卷行数,0 为清屏bh=填充字符属性ch/cl=上卷窗口左上角坐标dh/dl=上卷窗口右下角坐标 ah=13h 从指定位置起显示字符串 入口参数: bh/bl=显示页/属性cx=字符串长度dh/dl=行/列es:bp=字符串起始逻辑地址al=0,用 bl 属性,光标不动1,用 bl 属性,光标移动2,字符,属性,光标不动3,字符,属性,光标移动中断号为16h:功能号ah=01h 检测键盘缓冲区是否空 出口参数:zf=1,缓冲区空zf=0,缓冲区不空ah=扫描码al=ascii ah=10h 清除缓冲区并读键 出口参数:ah/al=扫描码/ascii中断号为1ah:功能号ah=02h 读实时时钟时间 出口参数:ch=小时数cl=分钟数dh=秒数 ah=04h 读实时时钟日期 出口参数:ch/cl=世纪/年dh/dl=月/日主要用到的dos调用如下: ah=01h :表示带回显的键盘输入,将字符的键值(ascii码)送入al寄存器中,并在屏幕上显示该字符 使用格式:mov ah,01h int 21h ah=02h: 表示从显示器上输出单个字符,被显示字符的ascii码送入dl寄存器 使用格式:mov dl,$ mov ah,02h int 21h ah=09h:表示在显示器上输出字符串,将指定字符串送到显示器显示,字符串事先存放在内存的数据缓冲区中,字符串的首地址送入指定位置,并要求字符串必须以“$”结束,入口参数dx指向缓冲区中字符串的首单元。 使用格式:lea dx,mesg1 mov ah,09h int 21h结构图如下:主菜单闰年判断数制转换十六进制到二进制日期、时间动态显示音乐播放器十六进制到八进制乐曲播放功能退出电子琴功能十六进制到十进制2.日期、时间动态显示功能:(1).设计思路: 时间显示模块:通过bios功能调用读取系统日期、时钟数据,再转化为相应数字字符的ascii码存放于内存缓冲区,再调用bios功能显示内存缓冲区的内容,为显示停留一段时间,需要延时,时长为近似一秒,然后调用编写好的清屏过程段,将原来位置清楚,在新位置显示时间。如此过程反复、循环实现日期、时间的动态显示。为显示能改变位置的目的,需改变显示位置的参数,这些参数事先存放于内存缓冲区中,采用查表法读取。(2).程序流程图: 是否开始从系统中读取当前的日期和时间信息将数字字符从高位到地位依次转化为ascii码通过执行延时和清屏过程段以及查表实现动态显示调用bios中断号为16h,功能号为01h,检测是否有按键输入结束,返回主菜单3.闰年判断功能(1).设计思路说明:通过dos 0a号功能从键盘输入年份字符,在每输入一个数字时就将其转化为数字,从千位开始输入,在输入数字的过程中先对输入的正确性进行判断,(即不能为字母或符号),完成整个年份的输入后,同时转化为了数字的年份再做被除数去除4、100、400判断是否为闰年或者平年,并调用bios 中断号为10h,功能号为13h号的功能显示判断结果。(2).程序流程图: ynynynyn开始打印输入年份信息输入年份数字字符数据提示输入错误转化为年份数字被4整除被100整除被400整除结束提示所输入的年份不是闰年提示所输入的年份不是闰年提示所输入的年份不是闰年提示为闰年4.数制转化功能: 4.1.十六进制转化为二进制: 1).设计思路:输入一个四位十六进制数,当输入不是0 f之间的数时,则显示出错提示“input error”,将输入的十六进制数存放在bx中。输出二进制,将bx中数据循环左移1位,再将bl中数据送给dl,将dl中数据转换为ascii码30h或31h,调用dos功能,输出0或1,即输出二进制。 2).设计流程图: a.十六进制数的输入:流程图为输入一个四位十六进制的数,显示操作提示,并对输入的四位十六进制数进行判断,十六进制数的各位上要是出现超出0-9、a-f,就出现错误提示,程序将不会执行,返回重新输入。 显示输入提示bx清零输入一个字符给alal=0dh?al30h?al10?al减7,转为字母al10?al16?al-20h送给alal16?出错提示nnyyybx循环左移4位al与bl相或返回nynynyyn开始nb.二进制数的转化: 显示输出提示cx16bx循环左移一位dlbldl最低位取反,其余位清零转换成ascii码输出数据并显示返回开始 4.2十六进制转化为十进制: (1).设计思路: 输入一个四位十六进制数,当输入不是0 f之间的数时,则显示出错提示“input error”,将输入的十六进制数存放在bx中。输出十进制,将各位的权送给cx,调用除权子程序,余数送入bx,将商送给dl输出,dec2为除权子程序,除以各位十进制的权数,然后依次输出结果。 (2).设计流程图(十六进制数的输入流程部分同上) adec2除权子程序流程图cx置10000d调用子程序cx置1000d调用子程序cx置100d调用子程序cx置10d调用子程序cx置1d调用子程序结束开始b转换成十进制子程序流程图把二进制数转入axdx清零除法运算余数移入bx商移入dl商转为ascii显示商结束开始4.3十六进制转化为八进制: (1).设计思路:输入一个四位十六进制数,当输入不是0 f之间的数时,则显示出错提示“input error”,将输入的十六进制数存放在bx中。输出八进制,因为输入的是四位十六进制数,将bx送入ax,循环左移1位,将al中高7位屏蔽,再将al转换为ascii码显示输出;将循环计数值置为5,bx循环左移3位,将bl送入al,将高5位屏蔽,转换为ascii码,显示输出,直到循环计数值减为0(即循环5次,一次转换3位,共转换15位)。(2).设计流程图:(十六进制数的输入同上,直接画出想八进制数的转化流程)bx左移1位把最右面的1位转为ascii码显示一个字符循环计数值置为5bx循环左移3位把最右面的3位转为ascii码显示一个字符结束y循环计数值=0?n开始5.音乐播放器: (1).设计思路:8255的地址范围为208h20fh给定时/计数器8253片选信号连接 200h207h端口并提供一个为2mhz固定频率的时钟信号,通过给8253输入计数值,以输出对应c调dou、ruai、mi、fa、sou、la、xi 、dou(高)的不同频率。在通过延时下一计数值的输入,控制节拍时间。最后输入扬声器就会有对应音乐播放。pc机中8253、8255发声原理:a、提供8253的clock2端2mhz的时钟信号, b、定时/计数器8253的gate2接pb0,提供高电平; c、定时/计数器8253的out2与pb1相与后接扬声器扬声器 驱动clk 2out2 2mhz out2 pb0 pb182538255a 8253的计数值n=其中fc=2mhz,即1e8180h对应的 c调的dou、ruai、mi、fa、sou、la、xi 、dou(高)频率为264、297、330、352、396、440、495、528;8253的控制字端口为43h,0、1、2计时器输入端口地址分别为40h、41h、42h 。 (2)程序流程图: 五、程序结果测试运行结果: 1.主菜单界面: 2. 按1键,进入日期、时间动态显示界面:(蓝色的日期时间显示条可以随机改变位置) 说明:蓝色的时间、日期的位置实现变化着显示3.当按下任意键后返回主菜单:4.当按下2键时进入闰年判断界面: 测试数据2000,结果为:输入n后,继续测试,测试数据1990:输入n后,继续测试,输入a:5. 输入y,返回主菜单后,按下键3,进入数制转化功能选项界面:6. 按下键1,进入十六进制到二进制的转化: 输入数据abcd进行测试,此处不区分大小写: 说明:得出的结果刚好为1010101111001101,为abcd对应的二进制数,结果正确。7. 按下键2进入十六进制到二进制的转换:输入数据1b8d进行测试,此处不区分大小写:说明:得出的结果刚为07053,为1b8d对应的二进制数,结果正确。8 .按下键2进入十六进制到八进制的转换:输入数据ffff进行测试,此处不区分大小写:说明:得出的结果刚为177777,为ffff对应的八进制数,结果正确。8. 按下键4进入音乐播放功能: 9. 此时,继续按下键1,进入电子琴功能: 说明:按照界面提示分别按下18号键进行音乐演奏按下esc键则可退出电子琴界面,返回上一级界面10. 返回主菜单后按下键2,进入乐曲播放功能选择界面: 11. 按照提示按下abc(此处输入必须为大写字母),选择相应的歌曲播放出来;在允许中断。可以在没有听完整首歌曲时人为中断听下一首歌曲,或退出;输入错误时要有适当提示,并允许重新输入。在选择过程中课自动清屏。(1)当按键超出所选范围时,提示:(2)输入c,界面: (3).当按下q,退出乐曲播放界面,返回上一级界面,此时扬声器关闭 12. 接上面按下键3,返回到主菜单界面后,再按下键5,再按一个任意键直接退出:六、设计总结:本次课程设计选择多功能程序的设计,设计题目中我提出要求已全部实现。在每个功能的实现都有很多收获。 首先,我是先从闰年判断程序开始编写的,这个程序编写的关键之处是要把我们输入的年份(在pc机中以压缩bcd码的形式)转化成实际的数值,才能开始进行闰年的判断,我采取的方法是每输入一个数字就给它减去30,从高位开始输入,下一位再输入是对原来的数据乘10。然后我做了数制的转换,在这个题目的编写中先从十六进制到二进制的转化下手,这次输入数制同闰年判断处理类似,然后再进行转化至二进制的处理,从最高位开始转换,将保存在bx中的药进行转化的数字循环左移1位,在与上01h,将其它位屏蔽掉,再转化成对应的acsii码输出。向十进制的转化是用对应的位除以相应的权,从而得出其对应的十进制数值,向八进制的转换是将要转化的数制分割成6块,最高位独
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025新购房贷款合同
- 酒业供货合同范本
- 水库整体出租合同范本
- 2025关于专业安全托管服务合同范本
- 销售人员人事合同范本
- 租用移动餐车合同范本
- 2025农产品交易合同模板
- 窗帘改造加工合同范本
- 物流公司销售合同范本
- 挂钩安装服务合同范本
- 2025年职业病诊断医师资格考试(职业性化学中毒)历年参考题库含答案详解(5卷)
- 2025年安徽高考生物试题及答案
- 2025年国际汉语教师资格考试(对外汉语教学理论)历年参考题库含答案详解(5套)
- 2025年高校机房管理试题及答案
- ESG基础知识培训课件
- 泌尿系统常见疾病科普讲座
- 2025年中国南海研究院招聘事业编制人员考试笔试试题
- 疼痛健康教育
- 《儿童肺功能检测临床应用常见问题专家共识(2024)》解读
- 中小学安全管理课件
- 军训安全教育主题班会
评论
0/150
提交评论