欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    汽车动画程序课程设计.doc

    • 资源ID:853078       资源大小:199.66KB        全文页数:20页
    • 资源格式: DOC        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汽车动画程序课程设计.doc

    1、目录摘要IAbstractII1.计算机显示动画的基本原理12.设计任务分析23.汽车动画程序流程图34调试程序记录及演示结果屏幕截图75.课程设计的心得与体会9参考文献10附录 总程序代码11摘要 本课程设计是按照点像素图形的动画显示方式而设计的一个汽车动画。首先提示键入字符1和Q,来选择演示动画或者退出。按下“1”,则动画开始,屏幕第九行零列的地方出现一辆汽车图像,并且在屏幕上从左向右移动,到达屏幕最右侧后,返回提示界面,按“Q”则退出程序。通过读取汽车字符表来显示字符组合,从而画出一个汽车图像,延时后擦除屏幕上的汽车图像,在被擦除图像的X轴递减方向重画一次,如此循环来实现汽车在屏幕上由左

    2、向右的平移变换。关键字:汽车字符表 延时 擦除 重画Abstract This course is designed in accordance with the point-pixel display animated graphics and animation design a car. Prompt, type the first characters 1 and Q, to select the animation demo or quit. Press 1, the animation to start, the screen out in the ninth line of ze

    3、ro places a car image, and on the screen from left to right movement, arrived at the far right of the screen, return prompted interface, according to Q is withdraw from the program. Automotive characters by reading table to show the character combinations, which painted a car image, delay after the

    4、erasure of the car on the screen image, erase the image in the X-axis direction descending redraw once, so cycle the operation to achieve。Keyword: Automotive character table erase redraw delayII 武汉理工大学微机原理与接口技术课程设计说明书1.计算机显示动画的基本原理在计算机图形设计中,汇编语言具有潜在的优点,因为显示屏幕上的一个图像由几十万个元素组成,处理这些图像元素需要大量的指令,就速度而言,汇编语

    5、言程序远比高级语言快得多。最高级的图形级数,例如动画软件,只有以汇编语言设计才能产生更加逼真,更有效的动态画面效果。屏幕物体的动画效果,经常通过几何变换来产生,最简单的几何变换有平移、旋转、和比例变换。在所有情况下,变换都是以一个新的图像代替先前的图像来实现。在简单得平移变换中,如果在连续递增的X坐标上不断得重画物体,就会在屏幕上出现物体从左向右水平移动的画面。在动画软件中,不仅要能画出一系列连续的图像,而且要能从屏幕上擦除先前的图像,否则,运动得物体就会在屏幕上留下痕迹。擦除和重画屏幕物体的周期有几种实现得方法,最直接得一种方法是在显示图形之前,把图形将要占据的屏幕部分的背景图像保存下来,当

    6、要擦除图形时,再把保存得背景图像重新显示出来。通过BIOS设置可以来确定计算机的显示方式,这些显示方式决定着显示分辨率,可同时显示的颜色数,每个像素占用的位数,默认字符集,显存的组织以及显存的起始地址此类信息。显示方式又分为两类:文本方式和图形方式。文本方式主要用于字符文本处理,图形方式又称为所有点可寻址方式。在图形方式下,可通过读写屏幕上各个点的映像显示出单色或彩色图形。BIOS显示例程提供了设置各种文本和图像显示方式的功能,程序只要给出调用参数,使用BIOS INT 10H即可建立某种显示方式。图形适配器有两种操作方式:文本和图形方式,文本方式是图形适配器的默认方式。利用BIOS INT1

    7、0H的功能00可为当前的执行程序初始化显示方式或在文本方式和图形方式之间切换。显示器一旦设置成图形方式,光标即消失。2.设计任务分析本次课设任务是设计在屏幕上显示汽车由左至右驶过的程序,要求程序按Q退出。首先要想到要再屏幕上显示一个小车,然后再让它移动起来。在前面一章中提到了显示方式的问题,就显示一辆小车来说,很显然,图形方式更为适合。 确定了显示方式,我们再考虑怎么把小车在屏幕上画出来,可以给小车列一个字符图形表,然后确定其起始位置,在自己定义的起始位置上, 通过调用事先定义好得汽车图像字符表中字符,编写循环调用程序,使其依次在屏幕上显示,所有的字符都显示出来后,在屏幕上就得到了一个小车的图

    8、像。下一步是考虑怎样让小车在水平上移动起来。在前一章中已经提到,屏幕物体的动画效果的实现方法。在特定起始位置画出一个小车后,加以一定的延时,然后用原来保存的背景(上一步画出的小车占据的屏幕原来的背景信息)去覆盖上这个小车的图像,实现擦除。移动指针的方法在右边(行号增1)重复刚才的画小车操作,就可以在屏幕上显示出小车由左至右驶过的感觉。对于方案的选择,存在于两个地方,首先是显示方式的选择,因为文本方式适用于处理字符文本,对于显示一个图像不易实现。在图形方式下,可通过读写屏幕上各个点的映像显示出单色或彩色图形。可以通过BIOS设置INT 10的00功能调用参数AL=04设置显示方式为320*200

    9、图形四色。另外一个就是擦除屏幕的方法选择,一种就是前面提到的保存背景信息然后覆盖来实现擦除,这种方法比较直接。另外就是基于XOR的操作方法,因为对于一个数值XOR两次就能恢复原来的内容,这样的方法虽然对于单个数值来说操作简单快速,但是对于屏幕信息一次XOR后的结果,很难控制其结果为显示一个小车。故选择第一个方案。3.汽车动画程序流程图第二章中进行了设计任务的分析,设计方案的选择和总体的概略设计,由此我们可以画出总程序流程图。首先是主程序流程图的设计, 在程序开始后,希望屏幕上出现一条提示信息,是选择演示汽车动画,还是退出。然后读取键盘上键入得字符,确定是转入汽车动画子程序,还是结束程序。按照这

    10、样思路的设计出如图3.1所示的主程序流程图。图3.1 主程序流程图接下来就是汽车子程序的设计了,为了保护断点,先要将数据寄存器推入堆栈。然后设置显示方式为图形方式,为显示汽车动画做准备,要清屏,可以预先进行清屏宏定义,运行汽车子程序的时候直接调用就可以了。以上准备就绪,接下来就要显示汽车动画了。要指向汽车字符表,才能进行读取和显示字符操作,设置了汽车的起始位置后,就可以从此处开始读取字符表信息。显示出汽车字符表的所有字符信息也就画出一个汽车了。而具体的如何画出这个汽车并且让它水平移动起来,可以定义另外一个子程序MOVE_SHAPE。汽车子程序的流程图如图3.2所示。图3.2 汽车子程序流程图

    11、在汽车子程序中调用了一个清屏宏定义,宏定义内容是在设置了显示方式后,调用10号中断的6号功能,进行屏幕初始化,取AL=0,即进行设置全屏幕为空白这个操作。窗口左上角和右下角的行列号以及卷入行属性,在宏调用的时候由实参给定。综上,即可使当前窗口屏幕显示全白。具体的宏定义和宏调用程序见附录1。而整个设计的核心就在MOVE_SHAPE这个子程序中了。这个子程序将实现汽车图像的显示和擦除重画。真正显示出动画效果。设计思路如下:首先保护断点,然后要依次读出字符表中的每个字符并且分别显示出来,是否已经把一个完整的汽车图像显示在了屏幕上,还要判断字符表中的字符是否全部读取完毕,若没有读取完则返回去读取下一个

    12、字符,读取完毕了,就按照第二章中设计的方法,延时,然后擦除已经画出来的汽车图像,在行号加一的地方重画汽车。其中,为了使程序结构化,定义一个延时子程序DLY和一个擦除重画子程序ERASE。MOVE_SHAPE子程序流程图如图3.3所示。 图3.3 MOVE_SHAPE子程序流程图对于延时子程序,只需设计一个循环程序,置其循环次数即可控制延时时间具体程序设计见附录1。DLY子程序流程图如图3.4所示。在显示图形之前,把图形将要占据的屏幕部分的背景图像保存下来,当要擦除图形时,再把保存得背景图像重新显示出来。这是擦除子程序的设计原理。每画一个小车之前,将绘图起始位置的信息保存在变量中,调用擦除子程序

    13、的时候读取出来,然后变化指针,使其能读遍字符表的每一个字符,每读一个字符,便将原来保存的,被当前图像占据的屏幕部分的背景图像,重新显示出来。对每一个字符都这样操作后,整个汽车图像也就擦除完毕了。计算机执行这整个过程是很快速的,所以在程序运行的时候应该是很快就擦除,并且显示出下一位置的汽车图像。从而实现动画效果。擦除子程序的流程图见图3.5。 图3.4 DLY子程序流程图 图3.5 擦除子程序的流程图4调试程序记录及演示结果屏幕截图运行可执行程序CAR.exe,选择1汽车开过;选择Q,退出。调试过程:1.对于堆栈段的定义,不能用stack命名,显示出错:Reserved word used as

    14、 a symbol: STACK于是将堆栈命名为DUIZHAN。错误解除。2.在设计显示提示语句程序的时候,想到的是用中断21H的09号功能显示字符串,但是没有注意这个功能调用的一些要求,要求字符串以“$”结束。运行后提示语句出现但是随之渐渐出现了很多乱七八糟的字符占据整个屏幕,而且不能退出程序。运行情况如图4.1所示。在字符串结尾处加上“$”,错误解除。 图4.1 提示语句没有以“$”结尾的运行结果3.运行程序后对于键盘输入的字符,屏幕上没有响应,考虑到;老师在课堂上讲的,中断调用要先保护断点。于是在调用中断前将下面会使用到的通用寄存器推入堆栈,保护断点,在程序结束或者返回处,执行出栈,错误

    15、解除。4.查ASCII表Q对应的值为81转换为16进制为51H,但是写入程序运行后按Q无效,原来是没有将键盘转换到大写输入。错误解除。5. 要为一句程序代码写注释,中文输入下的逗号不行。显示出错: Extra charactors online,应该将输入法改成英文,然后打出逗号。错误解除。程序调试完毕,运行结果如下:1.运行可执行文件屏幕上出现提示性语句。提示语句屏幕copy图如图4.2所示。 图4.2 提示语句屏幕copy图2,在键盘上按下“1”后,出现图4.3所示的汽车动画屏幕copy图。 图4.3汽车动画屏幕copy图5.课程设计的心得与体会在本次课程设计中,我巩固了微机原理与接口技术

    16、这门课中学习到的汇编语言相关知识。并且通过查找资料,学到了不少新的知识,比如BIOS中断和DOS中断如何调用,不同中断号的功能。在汽车动画程序中,就用到了 BIOS INT 10来进行显示相关的设置;还用到DOS INT21的9号功能来显示提示字符串;以及BIOS类型16的中断的00号功能用于从键盘读取一个字符。综合了所学汇编语言基本编程知识和新的中断调用知识,经过不断的调试程序,终于运行出任务要求的结果,解决了问题。我觉得经过这次课程设计,让我对本门课程知识的运用得到系统性的训练。锻炼了我利用计算机软技术解决问题的初步能力.在进行课程设计的过程中我体会到一些小技巧,比如,多使用子程序使程序细

    17、分,结构化,模块化更加易于编辑管理,当程序汇编和生成没有出错而运行出错的时候,就可以通过判断程序运行的错误,找到相关的模块进行再调试和修改。还有就是标号的灵活使用带来很多好处,不仅可以起到标志说明一个程序段中某部分的作用,还可以运用于循环结构中,便于控制程序的运行。还有就是程序的注释就无须赘言了,一个详细注释的程序,不仅可以大大减少设计时间,而且便于自己和他人调用和修改。总而言之,通过此次课程设计,收获颇丰。拓展了微机和汇编语言的知识,同时也锻炼了自己的编程能力,令我受益匪浅。参考文献1彭虎.微机原理与接口技术(第二版).北京:电子工业出版社,20082周佩玲.微机原理与接口技术(第二版).北

    18、京:电子工业出版社,2008.33王永山.微型计算机原理与应用(以IBM-PC系列机为例).西安:西安电子科技大学出版社,20064Peter Abel.IBM-PC汇编语言程序设计(第五版).北京:人民邮电出版社,20025沈美明,温冬婵.IBM-PC汇编语言程序设计(第二版).北京:清华大学出版社,2001.86余朝琨.IBM-PC汇编语言程序设.北京:计机械工业出版社,2008.17 Abel.P.IBM-PC汇编语言程序设计(第五版).北京:人民邮电出版社,2002.98吕杨.微型计算机原理接口及应用.重庆:重庆大学出版社,2000.19苏广州 沈瑛.高级微型计算机系统及接口技术.北京

    19、:北京理工大学出版社,2001附录 总程序代码DATA SEGMENT GUIDEW DB 0DH,0AH,please input 1 or Q:(1:car,Q:exit) $ BUFA DB 200 DUP(?) ;预留缓冲区 CAR DB 7 DB 49H,7,0,3 ;小汽车的字符图形表 DB 0B1H,7,0,1 DB 0DBH,7,0,1 DB 0DBH,7,0,1 DB 4FH,7,1,0 DB 4FH,7,0,-2 DB 2,7,-2,1 CHAR_CNT DW ? POINTER DW ? LINE_ON DB ? COL_ON DB ? DATA ENDS DUIZHAN

    20、 SEGMENT STACK DB 200 DUP(0) DUIZHAN ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:DUIZHAN START: MOV AX,DATA MOV DS,AX MOV AH,0 ;为当前得执行程序初始化显示方式 MOV AL;调用参数AL=4,设置显示方式为320*200图形四色 INT 10H ;使用BIOS INT10 建立某种显示方式 LEA DX,GUIDEW ;在显示器上显示字符串提示信息DS:DX= 串地址 MOV AH,9 ;AH=9的功能是显示字符串 INT 21H ;与键盘输入有关的DOS 21H功能

    21、调用 MOV AH,0 ;从键盘读取字符到AL寄存器 AH=0 功能是从键盘读一字符,得到得字符码存入AL INT 16H ;类型16的中断提供了基本的键盘操作 A: CMP AL,31H ;比较AL是否等于1 JNE B CALL QICHE B: CMP AL,51H ;比较AL是否等于Q的ASCII码 JNE START MOV AH,4CH ;终止当前程序并返回调用程序 INT 21H CLEAR MACRO PCH,PCL,PDH,PDL,PBH ;清屏宏定义 MOV AH,0 MOV AL,4 INT 10H MOV AH,6 ;调用6号功能 屏幕初始化或上卷 MOV AL,0 ;

    22、AL=上卷行数,AL=0表示全屏幕为空白 MOV CH,PCH ; 左上角行号 MOV CL,PCL ;窗口左上角列号(0行,0列) MOV DH,PDH ;右下角行号 MOV DL,PDL ;窗口右下角列号(24行,79列) MOV BH,PBH ;正常属性显示 INT 10H ENDM DLY PROC NEAR ;延时子程序 PUSH CX PUSH DX MOV DX,10000 DL1: MOV CX,3401 DL2: LOOP DL2 DEC DX ;执行10000次,达到延时目的 JNZ DL1 POP DX POP CX RET DLY ENDP QICHE PROC NEA

    23、R ;汽车子程序 PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,0 MOV AL,4 INT 10H CLEAR 0,0,24,79,7 ;清屏宏调用 LEA DI,CAR ;DI指向字符图形表 MOV DH,9 ;从第9行0列位置开始显示汽车 MOV DL,0 CALL MOVE_SHAPE RET QICHE ENDP MOVE_SHAPE PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI MOV AH,0FH ;取当前显示方式 INT 10H SUB CH,CH ;清空CH高八位 MOV CL,DI ;CL

    24、放字符个数 INC DI ;DI指向字符图形表中的第一个字符 MOV CHAR_CNT,CX ;字符计数器CHAR_cnt MOV POINTER,DI ;INC增一指针 MOV LINE_ON,DH ; 右下角行号(24) MOV COL_ON,DL ; 右下角列号(39) PLOT_NEXT: ADD DH,DI+2 ;计算下一个字符的行列号 ADD DL,DI+3 CMP DL,40 ;列号是否到了40,最右侧。出屏否? JB MOV_CRSR ;当行指针未扫描到最右侧时转移 POP DI POP DX POP CX POP BX POP AX JMP EXIT2 MOV_CRSR: M

    25、OV AH,2 INT 10H ;设置光标位置(2号功能) MOV AL,DI ;取字符值 MOV BL,DI+1 ;取字符属性字符表的第二列为字符属性 PUSH CX MOV CX,1 MOV AH,09 ;显示字符 INT 10H POP CX ADD DI,4 ;DI指向下一个字符 LOOP PLOT_NEXT ;总字符个数已经存在CX中 CALL DLY CALL ERASE JMP SHORT PLOT_NEXT ;段内直接短转移 EXIT2: RET MOVE_SHAPE ENDP ERASE PROC NEAR ; MOV CX,CHAR_CNT MOV DI,POINTER M

    26、OV DH,LINE_ON MOV DL,COL_ON ERASE_NEXT: ADD DH,DI+2 ;下一步 ADD DL,DI+3 MOV AH,2 ;确定光标位置 INT 10H MOV AL,DI MOV BL,0 PUSH CX MOV CX,1 MOV AH,9 INT 10H POP CX ADD DI,4 LOOP ERASE_NEXT MOV CX,CHAR_CNT MOV DI,POINTER MOV DH,LINE_ON INC COL_ON ;X轴正向方向移动小车,增列号 MOV DL,COL_ON RET ;子程序的返回 ERASE ENDP CODE ENDS END START15 本科生课程设计成绩评定表姓 名性 别女专业、班级课程设计题目:汽车动画程序课程设计答辩或质疑记录:成绩评定依据最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日评定项目表评 定 项 目评分成绩1考勤、态度(10分)2. 查阅资料能力(10分)3. 系统设计(20分)包括系统实现原理、框图、方案的说明4编写程序,调试结果(25分)5设计说明书质量及规范化、参考文献充分(不少于5篇)(15分)6答辩(20分)总分: 总评: 指导老师签字:


    注意事项

    本文(汽车动画程序课程设计.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922