《微机原理与接口技术》课程设计说明书霓虹灯显示程序设计

上传人:pu****.1 文档编号:431205501 上传时间:2024-02-16 格式:DOC 页数:32 大小:245KB
返回 下载 相关 举报
《微机原理与接口技术》课程设计说明书霓虹灯显示程序设计_第1页
第1页 / 共32页
《微机原理与接口技术》课程设计说明书霓虹灯显示程序设计_第2页
第2页 / 共32页
《微机原理与接口技术》课程设计说明书霓虹灯显示程序设计_第3页
第3页 / 共32页
《微机原理与接口技术》课程设计说明书霓虹灯显示程序设计_第4页
第4页 / 共32页
《微机原理与接口技术》课程设计说明书霓虹灯显示程序设计_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《《微机原理与接口技术》课程设计说明书霓虹灯显示程序设计》由会员分享,可在线阅读,更多相关《《微机原理与接口技术》课程设计说明书霓虹灯显示程序设计(32页珍藏版)》请在金锄头文库上搜索。

1、武汉理工大学微机原理与接口技术课程设计说明书 霓虹灯显示程序设计1设计内容简介 汇编语言是用指令的助记符、符号地址、标号等书写程序的语言,实际上是机器语言的一种符号表示,主要特点是可以使用助记符来表示机器指令的操作码和操作数,可以用标号和符号来代替地址、常量和变量。汇编语言是能够利用计算机所有硬件特性进而直接控制硬件的唯一语言。汇编语言的使用范围很广,文字显示只是其中很简单的一项。本次课程设计采用DOS和BIOS功能调用,采用2580的彩色图像显示方式。先在坐标纸上用ASCII码所对应的字符拼出自己的名字,并设定ASCII码的颜色值。ASCII码对应字符的位置由行数与列数的二维坐标确定。其中行

2、向上则减,向下则增;列向左则减,向右则增。程序在数据段中写出所要显示的我名字的位形图,每行数据段定义组成文字的一个点。其中包含组成文字的字符、颜色、横坐标、纵坐标。文字的变色是通过同一个字的不同颜色版本去覆盖当前的版本以及清屏、擦除程序实现的。文字的闪烁则是通过将颜色属性的八位二进制数的最高位置一实现的。通过比较输入字符与0、Q或q的大小,来实现退出的功能。2设计任务及要求 本次霓虹灯显示程序设计任务书的内容要求如下: 1用汇编语言编写一个霓虹灯的模拟显示程序; 2在屏幕上显示你的中文名字或其它文字,按某种规律闪烁变化,按“q”键退出; 分析任务书要求可知:本次程序设计尽量在屏幕上显示自己的名

3、字,也可以显示其他的文字。文字要按某种方式闪烁,闪烁方式不限定于一种,也可以多种。程序运行过程中,有Q或q输入,则程序结束;无字符输入或输入字符不是Q、q,则程序照常运行。3方案论证 本次课程设计在确定最终方案之前,各个功能模块都从多种设计中比较得出。 (1)文字显示可采用坐标纸写点的方式或者直接用字模软件取字符。原本下载了一个字模软件,在其中输入文字就可以读取字模。但是其字模编码是用于LED中的,并不能直接在本程序中调用显示文字。因此,最后采用用坐标纸写点的方式, 虽然写点的工作量较大,但是便于理解,容易修改。 (2)用相同字体但不同颜色的字符去覆盖对应的字符,只能起到变色的作用。要实现闪烁

4、还要把每一个点的颜色属性最高位设为1。 (3)退出程序块中,在判断输入字符是否为Q或q之前必须加一段有没有字符输入的程序。否则,程序运行到判断字符这里,运行窗口就会等在那里,直到输入字符才能继续运行。这样每次运行到这里程序就会等着,实现不了霓虹灯的连续闪烁。4软件设计说明4.1程序流程图4.1.1主程序流程图 流程思路:数据段初始化调用汉字显示程序,先显示汉字”yu”,再显示汉字”yu1”调用竖条纹显示程序,显示运动的条纹判断是否有字符输入,没有的话,继续往下执行有字符输入时,判断是否为“Q”或“q”不为“Q”或“q”时,转到执行程序段Aagain1为“Q”或“q”时,退出程序。主程序流程图如

5、下:开始数据段初始 YY N N调用条纹显示子程序,显示运动的条纹调用汉字显示子程序,先后显示“xiang”,“xiang1”调用条纹显示子程序,显示运动的条纹 结束输入字符是否是“Q”、“q”?调用汉字显示子程序,先后显示“jia”,“jia1”调用条纹显示子程序,显示运动的条纹调用汉字显示程序,先后显示“yu”,“yu1”判断是否有字符输入? 图1 霓虹灯显示主程序4.1.2子程序流程图 本程序显示的汉字为自己的名字,名字中的每个字都用不同颜色的版本写两次,然后竖形条纹扫过,条纹扫过时汉字被覆盖,条纹扫过后开始显示下一个文字,然后条纹再扫过,一直这样循环。因此,子程序有汉字显示子程序、竖形

6、条纹显示子程序、擦除子程序,对应的流程图分别如图2、3、4所示。 开始Y N CX中内容自减1寄存器出栈判断CX中内容是否为0? CX出栈,保存循环次数 在指定坐标处写第一个点CX入栈 保存组成点的基本信息CX寄存器清零寄存器入栈 结束 图2 汉字显示子程序流程图 开始 寄存器入栈CX寄存器清零保存组成点的基本信息 结束 寄存器出栈 将字符写11次判断指定坐标处字符是否为*?判断指定坐标处字符是否为?CX出栈,保存循环次数在指定坐标处写第一个点判断是否到达屏幕最左端? CX寄存器入栈 YN Y N N Y 图3 竖形条纹显示子程序 开始N NNYY 结束保存点的基本信息列坐标dl自减1将字符改

7、为*将字符写11个判断指定位置处字符是否为*?判断指定位置处字符是否为?判断是否到达屏幕最左端?保存组成点的基本信息 图4 擦除子程序4.2主要程序段与程序设计分析4.2.1程序中用到的BIOS内的中断功能 (1)02H号功能调用 功能:用文本坐标下设置光标位置 入口参数:AH=02H BH=显示页码 DH=行(Y坐标) DL=列(X坐标) 出口参数:无 (2)08H号功能调用 功能:读光标处的字符及其属性 入口参数:AH=08H BH=显示页码 出口参数:AH=属性 AL=字符 (3)09H号功能调用 功能:在当前光标处按指定属性显示字符 入口参数:AH=09H AL=字符 BH=显示页码

8、BL=属性(文本模式)或颜色(图形模式) CX=重复输出字符的次数 出口参数:无 (4)0FH号功能调用 功能:读取显示器模式 入口参数:AH=0FH 出口参数:AH=屏幕字符的列数 AL=显示模式 BH=页码4.2.2程序中用到的DOS功能调用 (1)01H号功能调用 功能:从键盘输入一个字符 输入参数:无 输出参数:AL=ASCII码 (2)0BH号功能调用 功能:检查标准输入设备上是否有字符可读,该输入操作可被重定向 输入参数:AH=0BH 输出参数:AL=00H无字符可读;FFH有字符可读 (3)4CH号功能调用 功能:返回操作系统4CH 调用:MOV AH,4CH INT 21H4.

9、2.3主要程序段与程序设计分析 (1)数据段 本课程设计源程序中的汉字运用写点的方式实现,在数据段的定义中,由组成汉字的点的ASCII码值、颜色、X坐标、Y坐标构成。 例如: yu db 34 db 2ah,8ah,0,0 db 2ah,8ah,-5,1 db 2ah,8ah,4,0 db 2ah,8ah,-5,1 这段程序是第一个汉字“余”的位形图,其中2ah为组成“余”字第一个点的ASCII码值,在屏幕上显示为*;8ah为颜色属性,为淡绿色且闪烁;(0,0)为这个点的坐标,第一个为行坐标,第二个为列坐标。这个点为“余”字组成点的基准坐标,其它点的坐标设置与此点类似。坐标设置按照矩阵的形式,

10、向上则行自减1,向下则行自增1,向左则列自减1,向右则列自增1。每写出一个点后,该点的坐标变回基准坐标(0,0)。本程序中写点是按照从左到右、从上到下的顺序写的,直至写完所有的点。 (2)写点程序段 首先将汉字位形图的地址送给寄存器,程序如下: lea di,yu mov dh,17 mov dl,6 其中,dh,dl分别对应于所写汉字第一个点在屏幕上显示时的行、列坐标。然后读取组成点的信息,程序段如下: mov char_cnt1,cx mov pointer1,di mov line_on1,dh mov col_on1,dl mov char,cx 程序中char_cnt1指字符,pointer1指颜色,line_on1指行坐标, col_on1指列坐标。写点的程序在子程序Amust_2,Amust_21中类似,程序段如下: mov cx,char_cnt1 mov di,pointer1 mov dh,line_on1 mov dl,col_on1Aplot_next0: add dh,di+2 add dl,di+3 mov ah,2 int 10h mov al,di mov bl,di+1 push cx mov cx,1 mov ah,09 int 10h pop cx ad

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号