首页 微机原理课程设计--显示任意波形曲线

微机原理课程设计--显示任意波形曲线

举报
开通vip

微机原理课程设计--显示任意波形曲线微机原理课程设计--显示任意波形曲线 武汉理工大学《微机原理与接口技术》课程设计说明书 目录 摘要 ........................................................................................................................................... 1 1设计任务及要求 ..........................................................

微机原理课程设计--显示任意波形曲线
微机原理课程 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 --显示任意波形曲线 武汉理工大学《微机原理与接口技术》课程设计 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 书 目录 摘要 ........................................................................................................................................... 1 1设计任务及要求 ..................................................................................................................... 2 1.1初始条件 ....................................................................................................................... 2 1.2要求完成的主要任务 .................................................................................................... 2 2总设计方案说明 ..................................................................................................................... 3 2.1设计思路 ....................................................................................................................... 3 2.2程序设计及程序实现的功能 ........................................................................................ 3 2.2.1程序设计 ............................................................................................................. 3 2.2.2总程序实现的功能 .............................................................................................. 7 3程序的调试 ............................................................................................................................. 8 4小结与体会 ........................................................................................................................... 11 参考文献 ................................................................................................................................. 12 附录 ......................................................................................................................................... 13 武汉理工大学《微机原理与接口技术》课程设计说明书 摘要 微机原理与接口技术作为计算机科学领域的基础知识,尽管计算机科学高速发展,但基本原理依然不变,学习并能掌握好微机原理与接口技术这门知识是非常重要的,通过对这门知识的了解可以简单的编写一些日常生活中经典的控制程序。 本课程设计主要是通过应用MF2KI软件和Masm编程,使得在界面上显示出各种具有一定精度的曲线波形,如三角波,正弦和余弦波,主要是针对显示程序的设计和应用及bios的调用。 关键词:微机原理 MF2KI Masm 曲线 波形 bios 1 武汉理工大学《微机原理与接口技术》课程设计说明书 显示任意波形曲线 1设计任务及要求 1.1初始条件 将要显示的曲线事先算好,存储于变量里,可利用查表法或其它方法算出曲线的值,并将曲线在屏幕显示出来,注意数据的精度。 1.2要求完成的主要任务 1(要求能从键盘接受显示曲线的操作状态,如显示,停止,继续显示等功能。 2(能通过按键选择不同的曲线显示,如正弦,余弦,三角波形等任意曲线。 3(能通过按键改变显示曲线的幅度及相位。 2 武汉理工大学《微机原理与接口技术》课程设计说明书 2总设计方案说明 2.1设计思路 根据设计题要求,在屏幕上显示任意波形,该设计实现三个波形的显示,正弦波、余弦波和三角波,曲线由离散的点组成,先用matlab对曲线取点,根据比例存入变量中,用命令将屏幕设成640*480,用命令将所选点的颜色设计成与背景颜色不同的颜色即可将点组成的曲线在屏幕上显示出来。同时用不同的按键输入实现曲线的的选择,暂停,继续,退出及曲线相位和幅度的变化。 2.2程序设计及程序实现的功能 2.2.1程序设计 主程序流程图如下图所示: 开始 是判断是否退出结束 否 按提示输入 y(余弦波)/z(正弦波)/s(三角波) 显示 改变幅度、相位 执行 否是判断是否暂停 图2-1 总程序流程图 3 武汉理工大学《微机原理与接口技术》课程设计说明书 主程序的编写如下:(具体程序看附录) start: mov ax,data mov ds,ax mov ah,0 mov al,12h int 10h input: lea dx,info1;输出字符串 mov ah,9 int 21h mov ah,08;读键盘字符 int 21h cmp al,'s';是否是s jz san cmp al,'z';是否是z jz zheng cmp al,'y';是否是y jz yu cmp al,'q';是否是q jz exit cmp al,'Q';是否是Q jz exit mov dx,offset info2;输出字符 mov ah,09 int 21h jmp input san: call sanjiaobo jmp input zheng: call zhengxian jmp input yu: call yuxian jmp input exit: mov ah,4ch int 21h ,,,,,, ;子程序的编写 end start 4 武汉理工大学《微机原理与接口技术》课程设计说明书 波形子程序的流程图如下图所示: 开始 按提示输入显示 是否改变幅度、相位 判断al是否等于1bh,显示即是否输入Esc键 图2-2 三角波子程序流程图(“按提示输入”接总程序) 三角波的子程序编写如下:(其中调用具体子程序见附录) sanjiaobo proc near mov ax,data mov ds,ax mov ax,stacks mov ss,ax setscreen call zuobiao call main1 key_right: mov ah,0h int 16h mov bl,al mov al,ah ;取扫描码 cmp al,4dh ;是否为向右键 jne key_left call clear1 add hoffset,2 cmp hoffset,140 jge wait0 call zuobiao call main1 jmp key_right 5 武汉理工大学《微机原理与接口技术》课程设计说明书 wait0: mov hoffset,139 ;遇到右边界时在该处一直画 call zuobiao call main1 jmp key_right key_left: cmp al,4bh ;是否为向左键 jne key_up call clear1 sub hoffset,2 cmp hoffset,-140 jle wait1 call zuobiao call main1 jmp key_right wait1: mov hoffset,-140 call zuobiao call main1 jmp key_right key_up: cmp al,48h ; 是否为向上键 jne key_down call clear1 add voffset,1 cmp voffset,60 jge wait2 call zuobiao call main1 jmp key_right wait2: mov voffset,60 call zuobiao call main1 jmp key_right key_down: cmp al,50h ;是否为向下键 jne wait4 call zuobiao call clear1 sub voffset,1 6 武汉理工大学《微机原理与接口技术》课程设计说明书 cmp voffset,0 jle wait3 call zuobiao call main1 trsfer: jmp key_right wait3: mov voffset,0 call zuobiao call main1 jmp key_right wait4: mov al,bl cmp al,1bh jne trsfer jmp input ret sanjiaobo endp 正弦波,余弦波子程序的编写与之相类似。 2.2.2总程序实现的功能 (1)运行程序后,按提示输入y,z,s分别选择余弦波,正弦波,三角波在屏幕上显示; (2)按和键可以左右任意改变相位,按和可以上下任意改变幅度; “,”“,”“,”“,” (3)按Esc键可以重新进行波形选择,可以按“q”或“Q”退出程序。 7 武汉理工大学《微机原理与接口技术》课程设计说明书 3程序的调试 运行程序,从键盘输入s(三角波)得如下图形: 图3-1 三角波 按下键,改变三角波的幅度和相位得如下图形: “,”和“,” 图3-2 改变幅度和香味后的三角波 8 武汉理工大学《微机原理与接口技术》课程设计说明书 按Esc键暂停,再从键盘输入y(余弦波)得图形如下图所示: 图3-3 余弦波 按下键,改变余弦波的幅度和相位得如下图形: “,”和“,” 图3-4 改变相位和幅度后的余弦波 9 武汉理工大学《微机原理与接口技术》课程设计说明书 按Esc键暂停,再从键盘输入z(正弦波)得图形如下图所示: 图3-5 正弦波 按下键,改变正弦波的幅度和相位得如下图形: “,”和“,” 图3-6 改变相位和幅度后的正弦波 按Esc键暂停后,再输入“q”或“Q”可退出程序。 10 武汉理工大学《微机原理与接口技术》课程设计说明书 4小结与体会 通过将近两周的微机原理课程设计,我进一步了解了微机的指令系统和微机的汇编程序。在刚开始编程的时候,我几乎无从下手,不知道怎样去设计从键盘输入、怎样显示输出,怎么将数据在ASCII码与十六进制数之间相互转换,怎么通过汇编绘制条形图等。向同学请教,学到了很多,最后找老师要了参考程序,自己进行了完善,收获良多。 在编程的过程中,我学到了很多平时学不到、也想不到的地方。之前的《微机原理及接口技术》的学习,我只是对汇编语言有了一些初步的了解,以及一些初步编程的方法,而这将近两周的课程设计,让我对编程知识有了更深层次的了解,以前上课学都是一些枯燥的东西,感觉没多大用处,但是通过课程设计把所学的东西用在了实践上,设计出来一些有用的东西,尽管有好多次总是运行不了,找来找去总是是一些小小的错误,但最终毕竟成功了,同时,提高了自己的思维能力和细心。而且,通过此次课程设计,我更加深深地感到自己上机编程能力很不足,编的程序可读性不太好。我会在以后的学习过程中,再接再厉,掌握汇编的方法和技巧。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在徐老师的辛勤指导下,终于游逆而解。掌握了一些编程的一些基本技巧,比如子程序的编写与调用,bios中断的调用,在此之间,虽然我遇到了这样或那样的问题,但经过自己的努力和不懈探求,最终克服了种种难关,在此谢谢帮助自己的同学和老师。 11 武汉理工大学《微机原理与接口技术》课程设计说明书 参考文献 【1】龚尚福.《微机原理与接口技术》.西安电子科技大学出版社,2003年 【2】宋杰等(《微机原理与接口技术课程设计》(机械工业出版社 ,2005年 【3】陈希,蒋乐民.《微机原理与接口技术》. 北京邮电大学出版社,2006年 【4】李芷.《微机原理与接口技术》.电子工业出版社,2002年 【5】钱晓捷.《汇编语言程序设计》(第二版).电子工业出版社,2003年 12 武汉理工大学《微机原理与接口技术》课程设计说明书 附录 程序清单如下: setscreen macro mov ah,0 mov al,12h int 10h endm data segment info1 db 0dh,0ah,'please choose the letter y(cos),s(treeangle),z(sin):' db 0dh,0ah,'input q/Q to quit','$' info2 db 0dh,0ah,'choose error!','$' sanjiao db 00,02,04,06,08,10,12,14,16,18,20,22 db 24,26,28,30,32,34,36,38,40,42,44,46 db 48,50,52,54,56,58,60,62,64,66,68,70 db 72,74,76,78,80,82,84,86,88,90,92,94 db 96,98,100,102,104,106,108,110,112,114,116,118 db 120,122,124,126,128,130,132,134,136,138,140,142 db 144,146,148,150,152,154,156,158,160,162,164,166 db 168,170,172,174,176,178 cose db 200,200,200,200,199,199,199,198,198,197,196,196 db 195,194,193,192,191,190,189,188,187,185,184,183 db 181,180,178,177,175,173,171,170,168,166,164,162 db 160,158,155,153,151,149,146,144,141,139,136,134 db 131,129,126,123,120,118,115,112,109,106,103,100 db 97,94,91,88,85,81,78,75,72,68,65,62 db 58,55,52,48,45,42,38,35,31,28,24,21 db 17,14,10,07,04,00 sine db 00,03,07,10,14,17,21,24,28,31,35,38 db 42,45,48,52,55,58,62,65,68,72,75,78 db 81,85,88,91,94,97,100,103,106,109,112,115 db 118,120,123,126,129,131,134,136,139,141,144,146 db 149,151,153,155,158,160,162,164,166,168,170,171 db 173,175,177,178,180,181,183,184,185,187,188,189 13 武汉理工大学《微机原理与接口技术》课程设计说明书 db 190,191,192,193,194,195,196,196,197,198,198,199 db 199,199,200,200,200,200 angle dw 0 temp dw 0 hoffset dw 0 voffset dw 50 count dw 50 d3 dw 0 data ends stacks segment db 64 dup(?) stacks ends code segment assume cs:code,ds:data,ss:stacks start: mov ax,data mov ds,ax mov ah,0 mov al,12h int 10h input: lea dx,info1;输出字符串 mov ah,9 int 21h mov ah,08;读键盘字符 int 21h cmp al,'s';是否是s jz san cmp al,'z';是否是z jz zheng cmp al,'y';是否是y jz yu cmp al,'q';是否是q jz exit cmp al,'Q';是否是Q jz exit 14 武汉理工大学《微机原理与接口技术》课程设计说明书 mov dx,offset info2;输出字符 mov ah,09 int 21h jmp input san: call sanjiaobo jmp input zheng: call zhengxian jmp input yu: call yuxian jmp input exit: mov ah,4ch int 21h sanjiaobo proc near mov ax,data mov ds,ax mov ax,stacks mov ss,ax setscreen all zuobiao c call main1 key_right: mov ah,0h int 16h mov bl,al mov al,ah ;取扫描码 cmp al,4dh ;是否为向右键 jne key_left call clear1 add hoffset,2 cmp hoffset,140 jge wait0 15 武汉理工大学《微机原理与接口技术》课程设计说明书 call zuobiao call main1 jmp key_right wait0: mov hoffset,139 ;遇到右边界时在该处一直画 call zuobiao call main1 jmp key_right key_left: cmp al,4bh ;是否为向左键 jne key_up call clear1 sub hoffset,2 cmp hoffset,-140 jle wait1 call zuobiao call main1 jmp key_right wait1: mov hoffset,-140 call zuobiao call main1 jmp key_right key_up: cmp al,48h ; 是否为向上键 jne key_down call clear1 add voffset,1 cmp voffset,60 jge wait2 call zuobiao call main1 jmp key_right wait2: mov voffset,60 call zuobiao call main1 jmp key_right key_down: cmp al,50h ;是否为向下键 jne wait4 16 武汉理工大学《微机原理与接口技术》课程设计说明书 call zuobiao call clear1 sub voffset,1 cmp voffset,0 jle wait3 call zuobiao call main1 trsfer: jmp key_right wait3: mov voffset,0 call zuobiao call main1 jmp key_right wait4: mov al,bl cmp al,1bh jne trsfer jmp input ret sanjiaobo endp clear1 proc push ds ;保护现场 push ax push bx push cx push dx ;查表确定三角波 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 值,逐点绘制三角波 mov angle,0 again : lea bx,sanjiao mov ax,angle cmp ax,180 jl wanglong1 sub ax,180 wanglong1: cmp ax,90 jl wanglong2 ;小于等于转移 je wanglong22 ;ZF标志为1,则转移 17 武汉理工大学《微机原理与接口技术》课程设计说明书 neg ax ;NEG是求反指令 add ax,181 wanglong22: sub ax,1 wanglong2: mov bx,ax mov al,sanjiao[bx] cwd imul voffset idiv count push ax mov ah,0 cmp angle,180 neg al add al,240 jmp ok ok: mov temp,ax pop ax mov ah,0ch ;画点 mov al,00h mov cx,angle add cx,140 add cx,hoffset mov dx,temp int 10h add angle,1 cmp angle,360 jle again pop dx ;恢复现场 pop cx pop bx pop ax pop ds ret clear1 endp ;画曲线子函数 18 武汉理工大学《微机原理与接口技术》课程设计说明书 main1 proc push ds push ax push bx push cx push dx ;查表确三角波函数值,逐点绘制三角波 mov angle,0 again1: lea bx,sanjiao mov ax,angle cmp ax,180 jl wang sub ax,180 wang: cmp ax,90 jl long je long1 neg ax add ax,181 long1: sub ax,1 long: mov bx,ax mov al,sanjiao[bx] cwd ;缩放 imul voffset idiv count push ax mov ah,0 cmp angle,180 neg al add al,240 jmp wanglong wanglong: mov temp,ax pop ax mov ah,0ch ;画点 mov al,09h mov cx,angle 19 武汉理工大学《微机原理与接口技术》课程设计说明书 add cx,140 add cx,hoffset mov dx,temp int 10h add angle,1 cmp angle,360 jle again1 pop dx pop cx pop bx pop ax pop ds ret main1 endp zhengxian proc near mov ax,data mov ds,ax mov ax,stacks mov ss,ax setscreen call zuobiao call smain skey_right: mov ah,0h int 16h mov bl,al mov al,ah ;取扫描码 cmp al,4dh ;是否为向右键 jne skey_left call sclear add hoffset,2 cmp hoffset,140 jge swait0 call zuobiao call smain 20 武汉理工大学《微机原理与接口技术》课程设计说明书 jmp skey_right swait0: mov hoffset,139 ;遇到右边界时在该处一直画 call smain jmp skey_right skey_left: cmp al,4bh ;是否为向左键 jne skey_up call sclear sub hoffset,2 cmp hoffset,-140 jle swait1 call zuobiao call smain jmp skey_right swait1: mov hoffset,-140 call zuobiao call smain jmp skey_right skey_up: cmp al,48h ; 是否为向上键 jne skey_down call sclear add voffset,1 cmp voffset,60 jge swait2 call zuobiao call smain jmp skey_right swait2: mov voffset,60 call zuobiao call smain jmp skey_right skey_down: cmp al,50h ;是否为向下键 jne swait4 call sclear sub voffset,1 cmp voffset,0 21 武汉理工大学《微机原理与接口技术》课程设计说明书 jle swait3 call zuobiao call smain strsfer: jmp skey_right swait3: mov voffset,0 call zuobiao call smain jmp skey_right swait4: mov al,bl cmp al,1bh jne strsfer jmp input ret zhengxian endp sclear proc push ds push ax push bx ;查表确定正弦波函数值,逐点绘制正弦 mov angle,0 sagain1: lea bx,sine mov ax,angle cmp ax,180 jl snext1 sub ax,180 snext1: cmp ax,90 jl snext2 je snext22 neg ax add ax,181 snext22: sub ax,1 snext2: mov bx,ax mov al,sine[bx] cwd imul voffset 22 武汉理工大学《微机原理与接口技术》课程设计说明书 idiv count push ax mov ah,0 cmp angle,180 jge sbig neg al add al,240 jmp sok sbig: add ax,240 sok: mov temp,ax pop ax mov ah,0ch ;画点 mov al,00h mov cx,angle add cx,140 add cx,hoffset mov dx,temp int 10h add angle,1 cmp angle,360 jle sagain1 pop bx pop ax pop ds ret sclear endp ;画曲线子函数 smain proc push ds push ax push bx ;查表确定正弦波函数值,逐点绘制正弦波 mov angle,0 sagain: lea bx,sine mov ax,angle 23 武汉理工大学《微机原理与接口技术》课程设计说明书 cmp ax,180 jl squad1 sub ax,180 squad1: cmp ax,90 jl squad2 je squad22 neg ax add ax,181 squad22: sub ax,1 squad2: mov bx,ax mov al,sine[bx] cwd ;缩放 imul voffset idiv count push ax mov ah,0 cmp angle,180 jge sbigdis neg al add al,240 jmp sready sbigdis: add ax,240 sready: mov temp,ax pop ax mov ah,0ch ;画点 mov al,0bh mov cx,angle add cx,140 add cx,hoffset mov dx,temp int 10h add angle,1 cmp angle,360 jle sagain pop bx 24 武汉理工大学《微机原理与接口技术》课程设计说明书 pop ax pop ds ret smain endp yuxian proc near mov ax,data mov ds,ax mov ax,stacks mov ss,ax setscreen call zuobiao call cmain ckey_right: mov ah,0h int 16h mov bl,al mov al,ah ;取扫描码 cmp al,4dh ;是否为向右键 jne ckey_left call cclear add hoffset,2 cmp hoffset,140 jge cwait0 call zuobiao call cmain jmp ckey_right cwait0: mov hoffset,139 ;遇到右边界时在该处一直画 call zuobiao call cmain jmp ckey_right ckey_left: cmp al,4bh ;是否为向左键 jne ckey_up call cclear sub hoffset,2 cmp hoffset,-140 jle cwait1 25 武汉理工大学《微机原理与接口技术》课程设计说明书 call zuobiao call cmain jmp ckey_right cwait1: mov hoffset,-140 call cmain jmp ckey_right ckey_up: cmp al,48h ; 是否为向上键 jne ckey_down call cclear add voffset,1 cmp voffset,60 jge cwait2 call zuobiao call cmain jmp ckey_right cwait2: mov voffset,60 call zuobiao call cmain jmp ckey_right ckey_down: cmp al,50h ;是否为向下键 jne cwait4 call cclear sub voffset,1 cmp voffset,0 jle cwait3 call zuobiao call cmain ctrsfer: jmp ckey_right cwait3: mov voffset,0 call zuobiao call cmain jmp ckey_right cwait4: mov al,bl cmp al,1bh jne ctrsfer 26 武汉理工大学《微机原理与接口技术》课程设计说明书 jmp input ret yuxian endp cclear proc push ds push ax push bx ;查表确定余弦波函数值,逐点绘制余弦 mov angle,0 cagain1: lea bx,cose mov ax,angle cmp ax,180 jl cnext1 sub ax,180 cnext1: cmp ax,90 jl cnext2 je cnext22 neg ax add ax,181 cnext22: sub ax,1 cnext2: mov bx,ax mov al,cose[bx] cwd imul voffset idiv count push ax mov ah,0 cmp angle,90 jge cbig cnext3: neg al add al,240 jmp cok cbig: cmp angle,270 jge cnext3 27 武汉理工大学《微机原理与接口技术》课程设计说明书 add ax,240 cok: mov temp,ax pop ax mov ah,0ch ;画点 mov al,00h mov cx,angle add cx,140 add cx,hoffset mov dx,temp int 10h add angle,1 cmp angle,360 jle cagain1 pop bx pop ax pop ds ret cclear endp ;画曲线子函数 cmain proc push ds push ax push bx ;查表确定余弦波函数值,逐点绘制余弦波 mov angle,0 cagain: lea bx,cose mov ax,angle cmp ax,180 jl cquad1 sub ax,180 cquad1: cmp ax,90 jl cquad2 je cquad22 28 武汉理工大学《微机原理与接口技术》课程设计说明书 neg ax add ax,181 cquad22: sub ax,1 cquad2: mov bx,ax mov al,cose[bx] cwd ;缩放 imul voffset idiv count push ax mov ah,0 cmp angle,90 jge cbigdis cquad3: neg al add al,240 jmp ready cbigdis: cmp angle,270 jge cquad3 add ax,240 ready: mov temp,ax pop ax mov ah,0ch ;画点 mov al,0fh mov cx,angle add cx,140 add cx,hoffset mov dx,temp int 10h add angle,1 cmp angle,360 jle cagain pop bx pop ax pop ds ret cmain endp 29 武汉理工大学《微机原理与接口技术》课程设计说明书 zuobiao proc mov ah,0 mov al,12h int 10h drawaxis1: ;画坐标轴 mov dx,240 mov cx,60 xaxis1: ;画X轴 mov ah,0ch mov al,05h int 10h inc cx cmp cx,600 jnz xaxis1 mov dx,20 mov cx,140 yaxis1: ;画Y轴 mov ah,0ch mov al,05h int 10h inc dx cmp dx,460 jnz yaxis1 mov dx,240 mov cx,600 arrow1_x1: ;画X轴箭头 mov ah,0ch mov al,05h int 10h dec cx dec dx cmp cx,594 jnz arrow1_x1 mov dx,240 30 武汉理工大学《微机原理与接口技术》课程设计说明书 mov cx,600 arrow1_x2: mov ah,0ch mov al,05h int 10h dec cx inc dx cmp cx,594 jnz arrow1_x2 mov dx,20 mov cx,140 arrow1_y1: ;画Y轴箭头 mov ah,0ch mov al,05h int 10h inc dx dec cx cmp dx,26 jnz arrow1_y1 mov dx,20 mov cx,140 arrow1_y2: mov ah,0ch mov al,05h int 10h inc dx inc cx cmp dx,26 jnz arrow1_y2 ret zuobiao endp code ends end start 31
本文档为【微机原理课程设计--显示任意波形曲线】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_496339
暂无简介~
格式:doc
大小:100KB
软件:Word
页数:42
分类:生活休闲
上传时间:2017-10-16
浏览量:97