计算机波形显示软件设计(微机原理)_第1页
计算机波形显示软件设计(微机原理)_第2页
计算机波形显示软件设计(微机原理)_第3页
计算机波形显示软件设计(微机原理)_第4页
计算机波形显示软件设计(微机原理)_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉理工大学《微机原理与接口技术》课程设计说明书目录TOC\o"1-3"\h\u20364摘要 1238641总体设计 2143371.1总体设计思路 3308471.3程序流程图 3201282程序设计与实现 5104772.1初始条件 5102162.2设置屏幕显示方式 590312.3输出文本信息 688082.4键盘处理子程序 76982.5绘制图形 8297752.6绘制坐标系 894402.7清屏过程 1031792.8绘制波形曲线 1137112.9相位及幅值的改变 13125003程序调试及结果 1461624总结与体会 1824532参考文献 196028附录1 20摘要通过汇编语言设计一个运行于计算机的显示波形的软件,软件应实现根据定义的数组或从键盘输入的数据串显示波形。并通过键盘输入改变波形类型,相位。运用基本程序设计方法、DOS和BIOS调用,宏汇编的基本概念和方法,通过上机操作和程序调试技术,进行软件设计。将计算机理论知识转化为计算机应用知识。设计波形中利用笛卡尔坐标和屏幕像素完成波形绘制,实验中,利用插标法产生正弦波,绘制一张正弦数字量表。汇编语言中,可以通过调用DOC中断,int21h处理输入输出信息,同时还通过BIOS中断int10h设置输出字符的起始位置。通过这些完成波形绘制和变换。关键词:DOC,BIOS,宏汇编1总体设计1.1总体设计思路通过汇编语言产生方波和正弦波,并控制波形的幅值和相位。波形曲线可以看成一个函数,屏幕是由一个个像素点组成,它可以看成一个笛卡尔坐标系,曲线的每一个点对应着一个横坐标,对应着一个纵坐标(函数值),不同的曲线有不同的函数,只要找到曲线上点的坐标(函数值)就可以绘制出不同的曲线,所以,问题的关键就在于如何获得并显示出不同波形曲线的函数值。本实验中采用查表法产生正弦波,造一张正弦数字量表,即查函数表得到的值转换成十六进制数填表。D/A转换取值范围为一个周期,采样点越多,精度越高,本实验中采样点为128点/周期。正弦数字量表中的值为参考值,对于不同幅值的正弦波可以通过把表中的每个值乘以相同的倍数得到。方波,只需确定其极值,在第一时间段为正,在第二时间段为负,以此类推。1.2程序流程图程序从初始化开始,首先让指针指向提示信息一,即在屏幕上显示:“1sin;2cos;3clear;E/eexit;right/leftchangephase;up/downchangeamplitude”; 当有键按下后,如果键是1,则转向执行产生正弦波的程序;如果键不是1,则看键是否为2。如果键是2,则转向执行产生方波的程序;如果键也不是2,则看是否为3。如果是3,则转向执行清屏的程序;如果也不是3,则看是否为e或者E。如果是e或者E,则转向执行结束程序。以正弦波为例,当程序判断为按键1时,继续判断是否为“→”,“←”,“↑”,“↓”若为是则执行右移,左移,幅度变大,幅度减小。其他波形同正弦波,这里不一一累述。结束结束开始‘1’按下?正弦波‘2’按下?方波‘3’按下?清屏左键按下?左移右键按下?右移E/e键按下?绘制坐标系设置屏幕显示方式输出提示信息2程序设计与实现2.1初始条件1.用于调试程序的IBM兼容PC机一台;2.安装DOS/WIN98操作系统或运行于DOS/WIN98兼容方式;3.EDIT等文本编辑器输入80x86汇编程序,MASM5.0编译及链接程序。2.2设置屏幕显示方式IBM-PC的标准显示适配器,一种是单色显示,它只能显示黑白字母、数字、符号和菱形等简单的图形字符,它是以文本方式工作的;另一种是彩色/图形适配器EGA和VGA,它能以文本和图形两种方式工作。在彩色/图形适配器中把屏幕分成M*N个点阵,每个坐标上的图像元素就是一个像素。通过调用BIOS中断int10h的0号功能可以设置屏幕的显示方式。调用方式如下:入口参数:AH=0(功能号),AL=设置方式。部分显示设置方式调用参数如表2-1。出口参数:无。表2-1部分显示设置方式表调用参数AL显示方式00H40*25黑白字符方式01H40*25彩色字符方式02H80*25黑白字符方式03H80*25彩色字符方式04H320*200彩色图形方式11H640*480单色图形12H640*48016色图形本设计中选用04号功能,设置屏幕分辨率为320*200,彩色图形方式,字符分辨率为80*25。其中屏幕的最左上角坐标为(0,0)。程序模块如下:;设置屏幕显示方式宏setscreenmacro movah,0 moval,04h int10hendm2.3输出文本信息 为了拥有一个良好的人机交互界面,在程序设计中,文本提示信息的输出有着非常重要的作用。汇编语言中,可以通过调用DOS中断,int21h处理输入和输出信息,同时还可以通过BIOS中断int10h设置输出字符的起始位置。设置输出字符的起始位置模块如下:movah,2;用文本坐标下设置光标位置movdh, X ;第一个字符输出的行坐标movdl,Y ;第一个字符输出的列坐标int10H显示字符串需要调用int21h中断的09号功能。程序模块如下:;设置输出宏,带参数outputmacromess ;mess为字符串变量名 movah,2movdh,22 movdl,1 int10H;设置字符输出开始位置 movdx,offsetmess movah,9 int21hendm 宏执行完成后,将在22行第一列开始输出变量mess的字符串。2.4键盘处理子程序键盘处理使用BIOS或者DOS键盘中断,BIOS中断INT16H,本程序中使用DOS键盘中断,调用如下: movah,0ch ;清除键盘缓冲区 movah,7 ;等待从键盘输入一个字符,不回显 int21h ;返回参数AL=按下键的ASC码2.5绘制图形本设计选用的屏幕显示方式为320*200彩色图形方式,即横坐标有320个点,纵坐标有200个点,默认左上角为坐标原点(0,0)。要画出波形曲线,则要每个横坐标都对应着一个纵坐标的值。值不同绘制出的波形曲线也不同。把不同的曲线纵坐标的值储存在表中,通过查表可以得到不同曲线。每种曲线每周期取128个点,然后在屏幕上绘制出这些点,从而显示出相应的波形曲线。屏幕上的图形是由多个像素点组成,所以各种曲线也由多个点组成。在指定的坐标位置上写像素点的方式如下:movah,0chmoval,color ;像素点的颜色(0~3)movcx,col ;列号movdx,row ;行号int10h2.6绘制坐标系由于屏幕默认的原点为左上角为(0,0),要在屏幕中间绘制曲线,所以在绘制前要进行坐标的变换,转化为笛卡尔坐标系,该子程序如下:;绘制笛卡尔坐标系draw_zuobiaoprocnear movcx,0d_heng: ;绘制横轴 movah,0ch moval,01h;像素的颜色 movdl,100 int10h inccx cmpcx,320 jned_heng movcx,0 movdl,0 2.7清屏过程清屏程序的设计原理,是用背景色的像素点重新在全屏进行绘制。 clear1: movah,0ch moval,00h;背景色重新刷屏 int10h inccx cmpcx,3202.8绘制波形曲线根据不同的按键值,绘制不同的波形曲线。如:draw_lineprocnear画线过程,先绘制第一周期pushsi movax,col addbx,ax calld_line popsi calldraw_line12.9相位的改变相位的改变原理是当左/右方向键之一按下时,将曲线绘制的起始点向左/右平移10个像素点,然后重新绘制。幅值的改变原理是当上/下方向键之一按下时,改变si指针,指向另外一个幅值的函数表,重新绘制波形曲线。如:;改变相位,右方向键按下一次曲线右移10个像素点key_rightprocnear movcx,col addcx,10 movcol,cx cmptemp,1 jzright1 3程序调试及结果通过运行程序可实现正弦波,方波,以及两种种波形的相位改变。调节时如重新回到初始页面,按数字键“3”,即可完成清屏指令并返回最初界面。按e/E退出程序。以下位移及幅值改变以正弦波为例。按下数字‘1’,显示两个周期的正弦波形曲线3-13-1正弦波形按下方向键右,曲线向右移动,如图3-23-2正弦波右移按下方向键左,曲线向左移动,如3-33-3正弦波左移按下数字‘2’,显示两个周期的方波形曲线,如图3-43-4方波按下数字‘4’,实现清屏;如图3-53-5清屏按下E/e键,程序成功退出4.总结与体会由于以前对信号发生器了解太少,刚拿到题目不知从何下手,上网查资料才得以了解信号发生器。程序运行时还出现很多问题,比如上图中问题,查了资料才发现是JZ和JMP的范围不一样。BIOS中断INT10H和DOC中断INT21H的各种功能比较多,我上网下载了BIOS中断大全和DOC中断大全,帮助我理解。在如何可以用汇编语言画出波形这一问题上,还是在网上查阅了很多资料,小组同学一起奋斗,最终才得以解决的。通过本次课程设计,学会了用汇编语言设计一个运行于计算机的显示波形的软件,软件应实现根据定义的数组或从键盘输入的数据串显示波形。掌握了基本程序设计方法、DOS和BIOS调用,掌握了宏汇编的基本概念和方法,熟悉上机操作和程序调试技术,初步具备了软件设计的能力。但在将计算机理论知识转化为计算机应用知识的同时,也发现了许多薄弱环节,还不能熟练用汇编语言编程,对计算机领域各门学科的交叉应用还有待加强与提高,更增加了小组同学的团队协作能力。这次的课程设计让我学到了书本上没有的知识,锻炼了动手能力。通过翻阅资料,在老师同学的帮助下我顺利完成了这次课程设计。感谢老师同学的无私帮助。参考文献[1]潘名莲.微计算机原理.北京:电子工业出版社,2004.7[2]李志民.计算机原理与汇编语言程序设计.长沙:中南大学出版社,2001.8[3]许骏.微型计算机系统原理及应用.广州:华南理工大学出版社,1996.5[4]宫云战.微型计算机原理与应用基础教程.北京:机械工业出版社,1999.5[5]荀殿栋.微处理器应用技术与实例.北京:电子工业出版社,1997.11附录1程序;*********************宏设置 SETSCREENMACRO;设置屏幕显示方式MOVAH,0MOVAL,04H;设置彩色4色,320*200,文本80*25INT10HENDMOUTPUTMACROMESS;输出宏MOVAH,2MOVDH,22;行坐标0-25MOVDL,1;列坐标0-80INT10H;设置标题开始位置80*25MOVDX,OFFSETMESSMOVAH,9INT21HENDM;*********************堆栈段STACKYSEGMENTDB250DUP(?)STACKYENDS;*********************数据段DATASEGMENTMENUDB'1sin;2cos;3clear;E/eexit;right/leftchangephase;up/downchangeamplitude',0ah,0dh,'$';按键提示菜单;正弦表SINEDB100,98,96,94,92,90,88,86DB84,82,81,79,77,75,74,72DB71,69,68,66,65,64,63,62DB61,61,60,59,59,59,58,58DB58,58,58,59,59,59,60,61DB61,62,63,64,65,66,68,69DB71,72,74,75,77,79,81,82DB84,86,88,90,92,94,96,98DB100,102,104,106,108,110,112,114DB116,118,119,121,123,125,126,128DB129,131,132,134,135,136,137,138DB139,139,140,141,141,141,142,142DB142,142,142,141,141,141,140,139DB139,138,137,136,135,134,132,131DB129,128,126,125,123,121,119,118DB116,114,112,110,108,106,104,102;方波表COSINEDB58,58,58,58,58,58,58,58DB58,58,58,58,58,58,58,58DB58,58,58,58,58,58,58,58DB58,58,58,58,58,58,58,58DB58,58,58,58,58,58,58,58DB58,58,58,58,58,58,58,58DB58,58,58,58,58,58,58,58DB58,58,58,58,58,58,58,58DB58,58,58,58,142,142,142,142DB142,142,142,142,142,142,142,142DB142,142,142,142,142,142,142,142DB142,142,142,142,142,142,142,142DB142,142,142,142,142,142,142,142DB142,142,142,142,142,142,142,142DB142,142,142,142,142,142,142,142DB142,142,142,142,142,142,142,142TEMPDB?;输出曲线类型1正弦2方波3三角曲线COLDW0;象素点行坐标ROWDB0;象素点列坐标COLOUR_TEMPDB0;象素点颜色变量DATAENDS;*********************代码段 CODESEGMENTASSUMEDS:DATA,CS:CODE,SS:STACKYSTART:MOVAX,DATAMOVDS,AXSETSCREEN;屏幕方式设置OUTPUTMENU;输出提示信息CALLDRAW_ZUOBIAO;绘制坐标轴MOVCOLOUR_TEMP,02H;颜色紫色;检测按键值 INKEY:MOVAH,0CH;清除键盘缓冲区MOVAH,7;等待从键盘输入一个字符,不回显INT21HMOVBX,128CMPAL,'1';若为1,画正弦JZPAN1CMPAL,'2';若为2,画方波JZPAN2CMPAL,'3';若为4,清屏JNZINKEY4BJMPCLEAR_SCREENJZINKEYINKEY4B:CMPAL,4BH;左键按下左移JNZINKEY4DJMPKEY_LEFTINKEY4D:CMPAL,4DH;右键按下右移JNZINKEYEJMPKEY_RIGHTINKEYE:CMPAL,'E';若为E或e,则退出JNZINKEYE2JMPQUITINKEYE2:CMPAL,'e'JNZINKEYJMPQUITJMPINKEY;不断检测键盘键值PAN1:;画正弦LEASI,SINEMOVROW,0MOVCOL,0CALLDRAW_SINERETPAN2:;画方波LEASI,COSINEMOVROW,0MOVCOL,0CALLDRAW_COSRETKEY_RIGHTPROCNEAR;改变相位,右移10个像素点MOVCX,COLADDCX,10MOVCOL,CXCMPTEMP,1JZRIGHT1CMPTEMP,2JZRIGHT2RETKEY_RIGHTENDPRIGHT1:;波形重绘LEASI,SINEJZDRAW_SINERETRIGHT2:LEASI,COSINEJZDRAW_COSRETKEY_LEFTPROCNEAR;改变相位,左移动10个像素点MOVCX,COLSBBCX,10MOVCOL,CXCMPTEMP,1JZLEFT1CMPTEMP,2JZLEFT2RETKEY_LEFTENDPLEFT1:LEASI,SINEJZDRAW_SINERETLEFT2:LEASI,COSINEJZDRAW_COSRET;********************************************************************DRAW_SINEPROCNEAR;画正弦过程CALLCLEAR_SCREENMOVCX,COLMOVTEMP,1CALLDRAW_LINERETDRAW_SINEENDP;********************************************************************DRAW_COSPROCNEAR;画方波过程CALLCLEAR_SCREENMOVCX,COLMOVTEMP,2CALLDRAW_LINERETDRAW_COSENDP;********************************************************************DRAW_LINEPROCNEAR;画线过程,先绘制第一周期PUSHSIMOVAX,COLADDBX,AXCALLD_LINEPOPSICALLDRAW_LINE1D_LINE:MOVAH,0CHMOVAL,COLOUR_TEMP;像素的颜色MOVDL,[SI]INT10HINCSIINCCXCMPCX,BXJLD_LINERETDRAW_LINEENDPDRAW_LINE1PROCNEAR;绘制第二周期MOVCX,BXADDBX,128CALLD_LINE1CALLINKEYD_LINE1:MOVAH,0CHMOVAL,COLOUR_TEMP;像素的颜色MOVDL,[SI]INT10HINCSIINCCXCMPCX,BXJLD_LINERETDRAW_LINE1ENDP;********************************************************************DRAW_ZUOBIAOPROCNEAR;绘制笛卡尔坐标系MOVCX,0 D_HENG:MOVAH,0CHMOVAL,03H;像素的颜色MOVDL,100INT10HINCCXCMPCX,320JNED_HENGMOVCX,0MOVDL,0D_ZONG:MOVAH,0CHMOVAL,03H;像素的颜色INT10HINCDLCMPDL,200JNED_ZONGMOVCX,320MOVDL,100

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论