微机原理课设霓虹灯的模拟显示

合集下载

微机原理课设:可控制霓虹灯

微机原理课设:可控制霓虹灯

标准《微机原理与接口技术》课程设计题目:可控制霓虹灯班级:电气本151小组组长:徐明(2015040104)小组成员:王军三(2015040107)黄国涛(2015040108)刘飞鸿(2015040113)指导教师:刘微日期:2017年10月11日齐齐哈尔工程学院机电工程系一、设计可控制霓虹灯目的及意义霓虹灯其设计目的主要为:(1) 进一步熟悉8255A并行接口的基本工作原理(2) 运用CES-86通用微机实验装置,了解键盘的基本结构,学会编写程序.(3)在熟悉了小键盘的基础上,加上LED发光二极管的使用设计出绚丽闪耀的霓虹灯.本课程设计是自动化专业学生的一次较全面的的设计训练,是配合“微机与接口技术”课堂教学的最后一个重要的实践教学环节,它将起到巩固课堂和书本上所学的知识、加强综合能力、提高系统设计水平、启发创新思想的作用。

霓虹灯的意义:随着改革的不断深入,社会主义市场经济的不断繁荣与发展,大中小城市都在进行亮化工程。

企业为发展自己的形象和产品,一般都会采用通过霓虹灯广告屏这种广告手法,所以当我们夜晚走在大街上,马路两旁各色各样的霓虹灯广告随处可见,一种是采用霓虹灯管做成的各种形状和多种彩色的灯管,另一种为日光灯管或白炽灯管作为光源,另配大型广告语或宣传画来达到宣传的效果,大部分是采用霓虹灯。

这就涉及到如何去控制霓虹灯的亮灭、闪烁时间及流动方向等诸多控制问题,如何去快捷、可靠、简单的去控制,成为人们考虑的重点。

当然,虽然程序最后达到了预期控制要求,但是由于实际情况和理想情况存在差距,我知道还有很多地方有待改进,同时我还是个初学者,各方面肯定存在不足,如果老师发现了缺陷之处,请指出,我们一定会虚心接受。

二、总体方案(一)概述本次课程设计中所使用的芯片8255A(如右图)是Intel公司采用CHMOS工艺生产的一种高性能通用可编程输入/输出并行接口芯片,可以方便地应用在Intel系列微处理器系统中。

PLC课程设计霓虹灯

PLC课程设计霓虹灯

PLC课程设计报告学院:电气信息工程学院班级:自动化姓名:学号:指导老师:二、霓虹灯广告屏示意图该广告屏共有4根灯管,16只流水灯,每4只灯为一组,如下图所示:12341234658714ⅡⅠ四三15131211109162. 控制要求::(1)该广告屏中间4根灯管亮灭的时序为:第1根亮→2亮→3亮→……→第4根亮,时间间隔为1s ,全亮后,显示3s ,再反过来从4→3→……→1按1s 间隔顺序熄灭,全灭后停亮2s ;再从第4根开始亮,顺序点亮4→……→1,时间间隔1s ,显示5s ,再从1→2→……→4按1s 间隔顺序熄灭,全灭后停亮2s ,然后重复运行,周而复始。

(2)16只流水灯,4个一组分成4组,从Ⅰ→Ⅱ→……四按1s 时间间隔依次向前移动,且点亮时每相隔1灯为亮,即从Ⅰ“①、③”亮→Ⅱ“⑤、⑦”亮,同时Ⅰ“①、③”灭→Ⅲ“ ⑼ 、⑾ ”亮,同时Ⅱ“⑤、⑦”灭……,如此移动一段时间(如30s )后,再反过来移动一段时间,四“ (16)、(14)亮→三“(12)、(10)”亮,同“(16)、(14)”灭,……如此循环往复。

(3)系统有单步/连续控制,有起动和停止按钮。

(4)起动时,灯管和流水灯同时起动,关闭时,可同时也可分别关闭。

3. 编程并模拟调试4. 画出I/O 端子接线图1、顺序功能图子程序22、PLC控制电路设计(1)选择PLC的机型:S7-226。

(2)输入输出分配表:主程序:4、调试过程出现的问题和解决措施或改进1、问题:编译无错但程序无法下载。

原因:在SCRT段外使用了SCRT指令。

解决办法:换成置位指令。

2.问题:无法在任意过程中停止。

原因:只有一个SCR程序段有停止指令。

解决方法:在每个SCR语句段加入停止指令。

5、使用说明1、按下I0.0启动,四根灯管和流水灯同时亮且进入跳转2、按下I1.0流水灯单步运行,按下I1.1四根灯管单步运行3、按下I0.2灯管熄灭关闭,按下I0.3流水灯熄灭关闭三、心得体会经过为期一个星期的PLC课程设计,使得我对PLC的掌握进一步的增强,加深了对PLC的理解,并对PLC产生了浓厚的兴趣,但是我也深深的知道自己的不足之处,比如说对应用指令的不熟悉,大大地加深了我的程序复杂程度。

计算机霓虹灯模拟显示软件设计

计算机霓虹灯模拟显示软件设计

课程设计题目计算机霓虹灯模拟显示软件设计学院自动化学院专业电气工程及其自动化班级电气1001班姓名指导教师张锐2013 年 1 月18 日课程设计任务书学生姓名:专业班级:电气1001指导教师:张锐工作单位:自动化学院题目: 计算机霓虹灯模拟显示软件设计初始条件:1.用于调试程序的IBM兼容PC机一台;2.安装DOS/WIN98操作系统或运行于DOS/ WIN98兼容方式;3.EDIT 等文本编辑器输入80x86汇编程序,MASM 5.0编译及链接程序。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.使用汇编语言设计一个运行于计算机的霓虹灯模拟显示软件,软件应实现模拟显示霓虹灯,要求至少有一种动态显示效果。

可以附加显示其它信息和添加多种动态显示效果。

2.说明书撰写格式应符合《课程设计说明书统一书写格式》。

时间安排:1.程序框图设计,3天2.编程,4天3.调试,3天4.编写设计报告,4天指导教师签名:年月日系主任(或责任教师)签名:年月日摘要霓虹灯是日常生活中常见的灯饰,它装点了夜空,丰富了人们的生活。

通过汇编语言的学习,可实现霓虹灯的控制与操作,实现其显示与闪烁,或者是其他的动态变化,从而可以很方便的达到理想效果。

本设计通过对字符进行坐标形式的定义再调用BIOS使之顺序显示,通过擦除子程序以及清屏子程序的配合运用,可以达到让汉字或图像闪烁或运动的功能。

最后通过按键‘Q/q’来实现程序的结束。

关键字:霓虹灯汇编语言子程序目录1设计任务原理及方案认证 (1)1.1设计任务 (1)1.2设计原理分析 (1)1.3方案比较及认证 (1)2程序流程图 (2)2.1主程序流程图 (2)2.2 子程序流程图 (3)2.2.1字符显示程序结构流程图 (3)2.2.2清屏程序结构流程图 (4)3主要程序段与程序设计分析 (6)3.1程序中用到的BIOS内的中断功能 (6)3.2程序中用到的DOS功能调用 (7)3.3主要程序段与程序设计分析 (8)3.3.1数据段程序 (8)3.3.2写点程序段 (8)3.3.3 输入Q、q退出程序 (10)3.3.4 竖形条纹的显示程序 (11)3.3.5条纹清屏与文字闪烁功能程序 (12)3.3.6延迟功能程序 (13)4程序调试 (14)4.1.调试工具 (14)4.2.调试过程与结果分析 (14)5 心得体会 (15)参考文献 (16)附录一源程序和程序注释 (17)本科生课程设计成绩评定表 (27)霓虹灯模拟显示软件设计1设计任务原理及方案认证1.1设计任务1.使用汇编语言设计一个运行于计算机的霓虹灯模拟显示软件,软件应实现模拟显示霓虹灯,要求至少有一种动态显示效果。

霓虹灯模拟显示课程设计

霓虹灯模拟显示课程设计

霓虹灯模拟显示课程设计1.设计任务及要求分析本次课程设计要求用汇编语言设计“霓虹灯”模拟显示,需要实现的功能如下:1、按下b/B键,分六笔快速画出矩形及其两条对角线;2、按下y/Y 键,流水灯从左到右依次点亮,然后一次熄灭;3、按下q/Q键,退出程序。

分析本设计不需要硬件设备,在微机原理实验集成环境MF2KP中编写程序,调用DOS命令和BIOS命令,并用合适的字符代替霓虹灯来实现。

1方案论证2.1方案一我们可以采用编写延时子程序的方法来实现延时,这种方法的主要原理是运用计算机相应每一条的时间积累。

程序如下:push bxpush cxmov cx ,xx ;输入正数A1:mov bx,xx ;输入正数A2:dec bxJnz A1Loop A2pop cxpop bx此方案的原理是运用循环指令来进行,主要通过设置cx和bx的值来进行复循环,从而达到时间的积累即延时。

2.2方案二方案二:运用DOS功能调用。

采用21H来中断调用,功能号为AH=2CH,完成的功能是设置时间,DH的值变换一次是0.01秒,这样通过设置DH的值来设置时间的延时。

2.3方案比较两种方案在理论上都是可行的,但是课程设计任务在时间要求上不是很严格只要区分快慢的大概效果既可,故选择方案一。

3设计原理3.1设计思想本次课程设计主要中显示图案是通过显示单个字符逐步实现的,通过移动光标可以改变字符输出的位置,位置的改变又是通过宏定义定义了一个程序段用于改变光标,设计了两个变量分别为光标在屏幕上的行和列坐标,把已经设计好了的图案的行列坐标分别定义在数据段的行列数据组里,用指针自加的方式进行连续调用显示。

在显示中插入延时程序控制显示的效果。

本次课程设计设计了二个延时程序分别满足二种不同的延时需要。

延时程序是通过LOOP循环来实现的,可以改变CX的值来改变延时的长短。

本次课设还涉及到清屏功能,故设计了一个清屏子程序,通过BIOS功能的调用实现清屏,和屏幕属性的设置。

微机原理与接口技术霓虹灯程序设计

微机原理与接口技术霓虹灯程序设计

微机原理实验报告课题名:霓虹灯设计班级:学号: _姓名:指导教师:目录实验目的 (3)实验要求 (3)实验原理 (3)实验内容 (3)程序代码 (4)程序及硬件系统调试情况 (9)设计总结与体会 (9)➢实验目的在熟悉8086/8088指令系统的基础上,掌握8086/8088汇编语言程序设计方法;掌握8259可编程中断控制器,8255可编程并行接口的应用。

➢实验要求模拟霓虹灯(实验箱中的发光二极管)交替变换的过程。

用8255设计霓虹灯,三种以上变化:设计程序控制8个并排LED灯霓虹灯至少4种不同的状态的变换,选择8255的任一数据端口连接发光二极管模拟。

运行过程中可随时中断退出。

➢实验原理可通过DVCC8086单板机上的8255芯片来实现,利用8255A中的PC口,将其8位输出PC7~PC0分别与8个LED灯L1~L8相连,当PC口其中某位输出为“0”时,则对应LED灯亮。

通过编程先对8255进行初始化,选择控制字,设置PC口为输出方式,然后给8088CPU中的AH赋值0EFH,采用循环移位指令对AH中的数值0EFH进行移位,最后将移位后的数据输到PC口,从而使8个LED灯按要求依次逐一点亮。

其他变化原理类似。

➢实验内容✧八个灯半亮,半灭;✧依次从左向右亮,从右向左亮,循环三次;✧两边往中间,中间往两边亮,循环三次;✧单数灯依次从左向右亮,双数灯依次从右往左亮,循环三次。

➢流程图➢程序代码STACK SEGMENT STACK.DW64 DUP(?)stack endsCODE SEGMENTASSUME CS:CODE,SS:STACKSTART:CLIMOV BX,0010HMOV AL,80HOUT 63H,ALPUSH DSMOV AX,0000HMOV DS,AXMOV AX,OFFSET IRQ1ADD AX,2000HMOV SI,0024HMOV [SI],AXMOV AX,0000HMOV SI,0026HMOV [SI],AXMOV AX,OFFSET IRQ5ADD AX,2000HMOV SI,0034HMOV [SI],AXMOV AX,0000HMOV SI,0036HMOV [SI],AXPOP DSIN AL,21HAND AL,0DDHOUT 21H,ALMOV AL,0FFHOUT 61H,ALa10:STICMP BX,0000HJZ A11JMP A10a11:STIMOV CX,3.A1: MOV AL,80H ;半亮,半灭OUT 63H,ALMOV AL,00HOUT 61H,ALCALL DALLY1MOV AL,0FFHOUT 61H,ALCALL DALLY1MOV AL,80HOUT 63H,ALMOV AL,0F0HOUT 61H,ALCALL DALLY1MOV AL,80HOUT 63H,ALMOV AL,0FFHOUT 61H,ALCALL DALLY1MOV AL,0FHOUT 61H,ALCALL DALLY2LOOP A1MOV CX,3A2: MOV AL,07EH ;两边往中间,中间往两边OUT 61H,ALCALL DALLY1MOV AL,0BDHOUT 61H,ALCALL DALLY1MOV AL,0DBHOUT 61H,ALCALL DALLY1MOV AL,0E7HOUT 61H,ALCALL DALLY1MOV AL,0E7HOUT 61H,ALCALL DALLY1MOV AL,0DBHOUT 61H,ALCALL DALLY1MOV AL,0BDHOUT 61H,ALMOV AL,07EHOUT 61H,ALCALL DALLY2LOOP A2MOV CX,2A3: MOV AL,07FH ;依次亮,左右OUT 61H,ALCALL DALLY1MOV AL,0BFHOUT 61H,ALCALL DALLY1MOV AL,0DFHOUT 61H,ALCALL DALLY1MOV AL,0EFHOUT 61H,ALCALL DALLY1MOV AL,0F7HOUT 61H,ALCALL DALLY1MOV AL,0FBHOUT 61H,ALCALL DALLY1MOV AL,0FDHOUT 61H,ALCALL DALLY1MOV AL,0FEHOUT 61H,ALCALL DALLY1MOV AL,0FEHOUT 61H,ALCALL DALLY1MOV AL,0FDHOUT 61H,ALCALL DALLY1MOV AL,0FBHOUT 61H,ALCALL DALLY1MOV AL,0F7HOUT 61H,ALCALL DALLY1MOV AL,0EFHCALL DALLY1MOV AL,0DFHOUT 61H,ALCALL DALLY1MOV AL,0BFHOUT 61H,ALCALL DALLY1MOV AL,07FHOUT 61H,ALCALL DALLY2LOOP A3MOV cx,3A4: MOV AL,07FH ;单数依次从左向右亮,双数依次从右向左亮OUT 61H,ALCALL DALLY1MOV AL,0DFHOUT 61H,ALCALL DALLY1MOV AL,0F7HOUT 61H,ALCALL DALLY1MOV AL,0FDHOUT 61H,ALCALL DALLY1MOV AL,0FEHOUT 61H,ALCALL DALLY1MOV AL,0FBHOUT 61H,ALCALL DALLY1MOV AL,0EFHOUT 61H,ALCALL DALLY1MOV AL,0BFHOUT 61H,ALCALL DALLY2LOOP A4MOV AL,0FAHOUT 61H,ALCALL DALLY2LOOP A4.MOV CX,3JCXZ A12JMP A11a12:INT 21Hirq1:MOV AL,0FFHOUT 61H,ALMOV AL,20HOUT 20H,ALHLTIRETirq5:MOV BX,0000HMOV AL,20HIRETDALLY1 PROCPUSH AXPUSH CXMOV CX,0040HB1: MOV AX,0200HB2: DEC AXJNZ B2LOOP BPOP AXRETDALLY1 ENDPDALLY2 PROCPUSH AXPUSH CXMOV CX,0200HB3: MOV AX,0200HB4: DEC AXJNZ B4LOOP B3POP CXPOP AXRETDALLY2 ENDPCODE ENDSEND START.➢程序及硬件系统调试情况在Wmd86调试软件里面打开程序,首先编译改程序,此时会弹出一个编译出错对话框,按提示的出错行数对应进行修改,修改完后再编译—汇编—链接。

微机原理课设霓虹灯的模拟显示说课材料

微机原理课设霓虹灯的模拟显示说课材料

1.设计意义与要求1.1设计意义通过课程设计,能够对所学知识有更进一步的理解,并能掌握学习理论时没有注意的细节。

调试程序,排除故障有助于提高分析问题、解决问题的能力。

课程设计中碰到的挫折,有助于养成良好的学习习惯、严谨的工作作风。

通过此课程设计的汇编语言练习,可以熟悉汇编语言的寻址方式和指令系统,BIOS和DOS系统功能调用,程序设计方法并熟悉汇编的编程环境。

1.2设计要求设计内容:采用汇编语言设计一个在屏幕中央以$字符显示一矩形,并以#将矩型从上之下、从左至右填满;然后再按相反的次序消失的程序。

按Q退出程序设计要求:(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(5)调试记录及结果分析(6)总结(7)参考资料(8)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图2方案论证2.1方案比较在设计过程中字符的显示有2中不同的方式。

方案一:运用DOS功能的2号调用,程序的设计如下MA ROW,COLUME ;MA是个宏定义光标位置MOV AH,02HMOV DL,’#’INT 21H在本程序中,显示方式很简洁很直观很容易记忆理解。

但是它无法设置字符的属性,同时还会在下个坐标位置显示光标,影响光看者的视觉享受。

方案二:运用BIOS功能的9号调用,程序设计如下CALL CURSOR ;调用光标设置子程序MOV AL,23HMOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CX这个程序设计起来占用寄存器较多,略微复杂点,但是它的功能更加完备,更能实现霓虹灯的颜色变化显示效果,给人一种美感。

2.2方案选择从上面的分析比较可知方案二的可行性和实际达到的效果更好。

所以选则方案二实现霓虹灯的功能。

3系统原理阐述3.1设计思路(1) 执行程序时显示一个欢迎界面,提示按大写S键进入显示界面(2) 执行程序这部分程序运用的主要原理是先在屏幕上显示个字符$(#)号,再执行循环,语句显示一行(列)$(#)字符。

霓虹灯模拟显示

霓虹灯模拟显示

中文摘要本次设计主要完成了霓虹灯的显示界面大小、霓虹灯的颜色及代表霓虹灯的字符(@、*)的运动情况和霓虹灯的界面显示。

关键字:霓虹灯汇编语言程序设计主流程图和子流程图的设计I目录中文摘要 ................................................................. 错误!未定义书签。

第一章霓虹灯内容和功能.................................... 错误!未定义书签。

第二章霓虹灯设计 . (1)第一节霓虹灯设计思路、模块划分 ................................ 错误!未定义书签。

第二节霓虹灯主流程图 (2)第三节霓虹灯子流程图 ................................................... 错误!未定义书签。

第四节霓虹灯界面显示 (9)第五节霓虹灯程序源代码及注释 (10)第三章总结 (14)参考文献 (15)致谢 (16)II第一章霓虹灯内容和功能◆内容一、设置霓虹灯的显示界面大小(15行77列字符)屏幕大小(24行79列)二、设置控制霓虹灯字符的颜色三、“霓虹灯”的模拟显示步骤1、显示霓虹灯的上横杠@(从左到右);2、显示霓虹灯的下横杠@ (从右到左);3、显示霓虹灯的左横杠*@;4、显示霓虹灯的右横杠@*;5、字符(@*)分别从左右两边进入向中间移动,然后一起从中间向左右运动并且变换颜色;6、整个的模拟图形显示出来◆功能:霓虹灯模拟显示图形并且变换颜色第二章霓虹灯设计第一节霓虹灯设计思路、模块划分一、霓虹灯设计思路:写出主程序,根据主程序调用子程序完成霓虹灯显示。

二、霓虹灯课程设计的模块划分:主程序:设置寄存器的内容,调用子程序设置屏幕大小、屏幕显示的颜色和字符的运动情况。

子程序:1.clear_screen :清屏设置,屏幕大小在坐标点(0,0)和(24,79)之间。

微机原理课设-霓虹灯的模拟显示

微机原理课设-霓虹灯的模拟显示

1.设计意义与要求1.1设计意义通过课程设计,能够对所学知识有更进一步地理解,并能掌握学习理论时没有注意地细节.调试程序,排除故障有助于提高分析问题、解决问题地能力.课程设计中碰到地挫折,有助于养成良好地学习习惯、严谨地工作作风.通过此课程设计地汇编语言练习,可以熟悉汇编语言地寻址方式和指令系统,BIOS和DOS系统功能调用,程序设计方法并熟悉汇编地编程环境.1.2设计要求设计内容:采用汇编语言设计一个在屏幕中央以$字符显示一矩形,并以#将矩型从上之下、从左至右填满;然后再按相反地次序消失地程序.按Q退出程序设计要求:(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(5)调试记录及结果分析(6)总结(7)参考资料(8)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图2方案论证2.1方案比较在设计过程中字符地显示有2中不同地方式.方案一:运用DOS功能地2号调用,程序地设计如下MA ROW,COLUME 。

MA是个宏定义光标位置MOV AH,02HMOV DL,’#’INT 21H在本程序中,显示方式很简洁很直观很容易记忆理解.但是它无法设置字符地属性,同时还会在下个坐标位置显示光标,影响光看者地视觉享受.方案二:运用BIOS功能地9号调用,程序设计如下CALL CURSOR ;调用光标设置子程序MOV AL,23HMOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CX这个程序设计起来占用寄存器较多,略微复杂点,但是它地功能更加完备,更能实现霓虹灯地颜色变化显示效果,给人一种美感.2.2方案选择从上面地分析比较可知方案二地可行性和实际达到地效果更好.所以选则方案二实现霓虹灯地功能.3系统原理阐述3.1设计思路(1) 执行程序时显示一个欢迎界面,提示按大写S键进入显示界面(2) 执行程序这部分程序运用地主要原理是先在屏幕上显示个字符$(#)号,再执行循环,语句显示一行(列)$(#)字符.利用像这样地原理实现矩形框地完成和内部地填充.至于反向消失部分,用空格代替想要显示地字符,反向执行循环,就可以实现字符地消失了.(3) 霓虹灯显示完毕,提示输入Q退出界面.3.2程序中地BIOS和DOS功能调用3.2.1 BIOS功能调用(1) 设置光标位置(2号功能)入口参数:AH=2(功能号),BH=页号,DH=行号,DL=列号.出口参数:无.根据DX确定了光标位置.(2) 初始窗口或向上滚动(6号功能)入口参数:AH=6,AL=上滚行数,CX=上滚窗口左上角地行、列号.DX=上滚窗口右下角地行、列号.BH=空白行地属性.出口参数:无.当滚动后,底部为空白输入行(3) 在当前光标位置写字符和属性(9号功能)入口参数:AH=9,BH=页号,AL=字符地ASCII码,BL=字符属性,CX=写入字符数.出口参数:无.3.2.2DOS功能调用(1) 键盘输入一个字符并回显(1号功能)输入参数无,返回结果AL=字符(2) 显示字符串,光标跟谁字符串移动(9号功能)DS:DX=待显字符串地首地址字符串以‘$’结尾.(3) 显示一个字符,光标跟随字符移动(2号功能)DL=待显字符地ASCII码,无返回结果.3.3.程序模块(1) 宏定义光标位置MA MACRO OP1,OP2 。

霓虹灯显示程序设计详解

霓虹灯显示程序设计详解

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.用汇编语言编写一个霓虹灯的模拟显示程序;2.在屏幕上动态显示”新年快乐”,按蓝—绿—黄---红---白闪烁变化,按“q”键退出;时间安排:1月3 日----- 1 月5 日查阅资料及方案设计1月5 日----- 1 月7 日编程1月7 日----- 1 月9 日调试程序1月9 日----- 1 月10 日撰写课程设计报告指导教师签名:年月日系主任(或责任教师)签名:年月日目录1设计内容及要求 (1)2程序原理分析 (2)3主程序流程图 (3)4 程序主要模块功能分析 (4)4.1名字显示功能模块 (4)4.1.1 vga简介 (4)4.1.2 256色调色板 (4)4.1.3 视频显示模式设置 (4)4.3 文字显示 (6)4.4 清屏子程序 (8)4.5文字动画效果 (8)5程序调试 (10)6课程设计总结 (11)参考文献 (12)附录源程序代码 (13)1设计内容及要求要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.用汇编语言编写一个霓虹灯的模拟显示程序;2.在屏幕上显示你的中文名字或其它文字,按某种规律闪烁变化,按“q”键退出;3.撰写课程设计说明书。

内容包括:摘要、目录、正文、参考文献、附录(程序清单)。

正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。

2程序原理分析采用系统提供的BIOS功能调用中的int 10h显示功能,定义AH=0,AL=13将屏幕输出设置为320X200,256色图形方式。

利用AH=12些点功能,通过写ASCII码,来组成文字,其中ASCII码的位置可由行数和列数的二维坐标确定,由定义的区域内开始,行向下自增1,列向右自增1,逐列写ASCII码,然后编写程序段实现内存地址与屏幕坐标之间的联系。

微机课设—霓虹灯”的模拟显示程序设计—包刚

微机课设—霓虹灯”的模拟显示程序设计—包刚

目录1.设计意义与要求 (1)1.1设计意义 (1)1.2设计要求 (1)2方案论证 (2)2.1方案比较 (2)2.2方案选择 (2)3系统原理阐述 (2)3.1设计思路 (2)3.2程序中的BIOS和DOS功能调用 (3)3.2.1 BIOS功能调用 (3)3.2.2 DOS功能调用 (3)3.3.程序模块 (4)4.软件思想与流程图 (5)4.1程序功能描述 (5)4.2 流程图 (6)5.调试记录及结果分析 (7)5.1 调试过程 (7)5.2结果记录 (7)5.3调试中出现的问题及解决方法 (9)6.心得体会 (10)7.参考文献 (11)8.附录源程序清单 (12)“霓虹灯”的模拟显示程序设计1.设计意义与要求1.1设计意义通过课程设计,能够对所学知识有更进一步的理解,并能掌握学习理论时没有注意的细节。

调试程序,排除故障有助于提高分析问题、解决问题的能力。

课程设计中碰到的挫折,有助于养成良好的学习习惯、严谨的工作作风。

通过此课程设计的汇编语言练习,可以熟悉汇编语言的寻址方式和指令系统,BIOS 和DOS系统功能调用,程序设计方法并熟悉汇编的编程环境。

1.2设计要求设计内容:采用汇编语言设计一个在屏幕中央以#字符显示一矩形,并以&将矩型内部由下到上,从中央到两边填满;然后再按相反的次序消失的程序。

按Q退出程序设计要求:(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(5)调试记录及结果分析(6)总结(7)参考资料(8)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图2方案论证2.1方案比较在设计过程中字符的显示有2中不同的方式。

方案一:运用DOS功能的2号调用,程序的设计如下MA ROW,COLUME ;MA是个宏定义光标位置MOV AH,02HMOV DL,’#’INT 21H在本程序中,显示方式很简洁很直观很容易记忆理解。

微机原理课设 模拟节日彩灯

微机原理课设 模拟节日彩灯

课程设计报告课程设计名称:微机系统综合课程设计课程设计题目:模拟节日彩灯变化院(系):专业:班级:学号:姓名:指导教师:完成日期:课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3实验环境 (3)第2章详细设计方案 (4)2.1硬件电路设计 (4)2.2主程序设计 (5)2.3功能选择模块的设计与实现 (6)2.4彩灯显示模块地设计与实现 (7)第3章结果测试及分析 (8)3.1结果测试 (8)3.2结果分析 (8)参考文献 (10)附录 (11)第1章总体设计方案1.1 设计原理根据题目要求,要完成节日彩灯的显示,控制,模式选择等功能,在本次设计中主要使用了8279键盘/显示芯片以及部分连线来完成节日彩灯的模拟。

采用8279键盘显示接口芯片显示不同模式彩灯,通过延时程序控制彩灯演示的频率。

将模式选择功能、停止功能、显示功能等通过不同的子程序实现,然后在程序中调用不同的子程序来实现不同的功能。

1.2 设计思路采用汇编语言程序设计的方法结合硬件电路设计方法,利用AEDK实验箱上已有芯片来实现模拟至少8种不同的节日彩灯变化(能够控制到数码管的每一段)。

1.2.1提出方案开始运行显示登陆界面,即用数码管显示学号,然后选择一种模式(从1到8),若想单一模式显示,则直接按开始键就可以显示。

若想组合模式显示,则要按下组合键,然后再按下想要显示的次数,然后循环按下模式键—组合键—次数,当要组合显示的模式及相应的次数全部输入完毕后,按下开始键,就能在数码管上显示组合的节日彩灯了。

在显示时按下暂停键则停止显示,直到按下开始键后又继续显示。

按下结束键,则数码管显示清空,直到再次选择模式开始后才重新显示。

1.2.2 方案论证1.由于实验要求实现模拟至少8种不同的节日彩灯变化(能够控制到数码管的每一段),并且还要实现开始,暂停,停止,模式选择等功能,所以我选择8279键盘显示接口芯片,通过键盘上的不同按键来实现不同模式的选择切换、开始、暂停等功能,并将不同的模式的彩灯变化通过数码管显示出来。

实验说明:实验六 霓虹灯PLC控制组态仿真实验

实验说明:实验六  霓虹灯PLC控制组态仿真实验

247实验六 霓虹灯PLC 控制组态仿真实验一、实验目的1.初步学会使用组态软件, 掌握PLC 控制系统的组态仿真设计基本原理。

2.学习FPWIN-GR 软件的使用,掌握用梯形图编写PLC 程序及程序的调试方法。

3.熟悉霓虹灯控制的PLC 编程及调试 。

二、实验器材1.微机一台(内有“力控”组态软件和“FPWIN-GR”编程软件)。

2.松下FP1-C24型PLC 一台或FP0R 系列PLC 一台。

3.连接线(微机与PLC 的通信线)和PLC 的电源线。

4.给FP0R 型PLC 供电的24V 直流电源(可选)、FP 手持编程器Ⅱ一台(可选)。

三、 实验原理本实验是利用PLC 来控制8个字形霓虹灯的闪烁及工作过程。

霓虹灯设备的组态仿真界面如图1所示。

图1 霓虹灯设备组态仿真界面实验的控制要求为:1) 实验主要是控制8个字形霓虹灯的闪亮过程。

“中”、“国”、“共”、“产”、“党”、“万”、“岁”、“!”,这8个字符分别对应PLC 的8个输出触点Y0~Y7。

每个输出触点的输出值 “0”或“1”对应于灯的灭与亮。

2) 要求按动“开始”按钮时,8个字形霓虹灯在程序的控制下依次点亮或熄灭,并循环反复。

当按动“停止”按钮时程序停止工作,字形霓虹灯立即全部熄灭。

3) 本实验并没有具体的控制要求,请读者自行提出控制要求,设计出相应的控制程序,并验证PLC程序的正确与否。

四、I/O分配表(见表1)五、预习要求根据自行提出的控制要求和I/O分配表,用梯形图编写PLC程序并写出注释说明。

六、实验步骤与内容1.连接计算机与PLC装置,启动计算机,接通PLC装置的电源。

2.分别把参考程序lamp1.fp、lamp2.fp和lamp3.fp下载到PLC中运行,之后关闭FPWIN 或切换到离线状态,启动组态软件的运行系统,进入霓虹灯控制组态仿真系统观察一下程序运行的情况,这样有利于理解PLC的控制要求。

然后退出所有组态程序。

3.双击桌面上的FPWIN图标,进入FPWIN,录入事先编好的PLC程序并编辑转换。

PLC实验六报告-霓虹灯饰模拟

PLC实验六报告-霓虹灯饰模拟

实验六霓虹灯饰模拟一、实验要求合上启动按钮,按1、2→1~4→1~6→1~8→1→2、8→3、7→4、6→5→4、6→3、7→2、8→1→1~8→3~8→5~8→7、8→1、5→4、8→3、7→2、6→1、5的顺序使霓虹灯相应号的灯亮,拨下启动按钮所有灯灭,每一组灯(即每一步)的时间间隔为1秒。

二、实验软元件X000—启动开关 Y000~Y007---霓虹灯的1、2、3、4、5、6、7、8八个号码灯三、实验梯形图四、实验程序及注释0. 启动2. 设定循环时间为1秒15.脉冲输入19.设定循环承接时间,与循环时间保持一致。

25.第一条左移,使第1到第15组灯亮。

35.第二条左移,使第16到第22组灯亮。

五、实验结果1)仿真结果,用GXdeveloper 对程序进行仿真得到如下的结果,灯按照顺序循环显示。

1、2 → 1~4 → 1~6 → 1~8 → 12、8 →3、7 →4、6 → 5 → 4、63、7 → 2、8 → 1 → 1~8 → 3~85~8→7、8 →1、5 →4、8→3、7左:2、6↓↓↓↓右:1、52)实验结果:实验结果与仿真相同,灯亮的顺序以及时间均符合要求。

六、实验总结此次实验需自己编写程序来得到实验题目要求的结果,有了做前几次实验的经验,这次实验不算难。

实验的基本思路与实验三LED模拟数码管以及实验五天塔之光基本一致。

要按照一定的顺序循环显示几组灯的循环亮灭,只需为每一步设定一个辅助继电器M作为代表,在程序中,每一步的实现只需用相应的常开触点M来控制即可。

顺序显示的实现则是利用左移指令,使代表每一步的辅助继电器M依次得到一个输入脉冲,相应常开触点便会按顺序闭合,继而输出相应的Y,相应的灯就会亮。

经过这几次实验,对于定时器跟计数器以及一些常用指令的运用已经比较熟悉了,对于其他比较常用的指令以及软元件的应用还需继续学习。

模拟“霓虹灯”汇编语言程序设计

模拟“霓虹灯”汇编语言程序设计

学号:课程设计题目模拟“霓虹灯”汇编语言程序设计学院专业班级姓名指导教师2012年1月13日目录摘要 (1)1 设计内容介绍 (2)2 方案论证 (3)3 程序原理分析 (4)3.1程序中的字体属性定义 (4)3.2程序中用到的BIOS内的中断功能 (4)3.3程序中用到的DOS功能调用 (5)4 主要模块与程序设计 (7)4.1程序流程图 (7)4.2文字显示模块 (11)4.3颜色变化模块 (13)4.4竖形条纹显示模块 (13)4.5竖形条纹移动与清屏模块 (14)4.6按ESC退出模块 (15)4.7延迟功能模块 (16)5 程序调试 (18)5.1调试工具 (18)5.2调试过程 (18)5.3结果分析 (18)结束语 (21)参考文献 (22)附录源程序代码 (23)摘要霓虹灯是日常生活中最为常见的灯饰,它装点了晚上,使城市的夜景变得如此的美丽,极大地丰富了人们的生活。

通过汇编语言编写程序,实现模拟霓虹灯的显示与闪烁,可以很方便的打到需要的效果。

汇编语言中的INT 10H号中断提供了设置显示模式,设置颜色模式,设置光标位置,按指定属性显示字符等功能号,可以显示汉字与字母,同时还提供了初始化屏幕和滚动屏幕等功能号,通过擦除子程序以及清屏子程序的配合,从而达到让霓虹灯闪烁的功能。

正确编排文字组成点的坐标,颜色以及ASCII码值,就可以达到需要显示的文字,合理运用INT 10H号中断的功能号,正确调用擦除子程序和清屏子程序就可以达到预期的效果。

关键词:霓虹灯中断子程序显示闪烁1 设计内容介绍汇编语言是用指令的助记符、符号地址、标号等书写程序的语言,实际上是机器语言的一种符号表示,主要特点是可以使用助记符来表示机器指令的操作码和操作数,可以用标号和符号来代替地址、常量和变量。

汇编语言是能够利用计算机所有硬件特性进而直接控制硬件的唯一语言。

汇编语言的使用范围很广,文字显示只是其中很简单的一项。

霓虹灯闪烁控制系统-微机原理与接口技术课程设计

霓虹灯闪烁控制系统-微机原理与接口技术课程设计

霓虹灯闪烁控制系统-微机原理与接口技术课程设计引言随着科技的发展,越来越多的设备需要进行控制和调节。

在现代社会中,人们对于环境的美化和装饰有着更高的要求,霓虹灯作为一种常见的装饰品和室内照明设备,受到了广泛的应用。

为了实现多种闪烁效果,需要一种可编程的控制系统来操控霓虹灯的亮灭状态。

本文档将介绍一个基于微机原理和接口技术的霓虹灯闪烁控制系统的设计与实现。

设计目标本文档的设计目标是实现一个多通道霓虹灯闪烁控制系统,具体要求如下:1.支持至少4个霓虹灯通道。

2.支持定义多种闪烁模式,包括常亮、常灭、交替闪烁、呼吸灯等。

3.支持通过用户界面或者外部设备控制闪烁模式和参数。

4.支持保存和加载闪烁模式配置文件。

5.提供实时监测和调试功能,方便用户进行系统调试和故障排查。

系统硬件设计霓虹灯接口电路为了确保系统与霓虹灯之间的可靠连接,需要设计一个合适的接口电路。

通常,霓虹灯需要较高的工作电压和较多的电流来驱动,因此,在接口电路中需要考虑到合适的电流限制和电压转换。

接口电路的设计主要包括以下几个方面:1.驱动电源设计:根据霓虹灯的工作电压要求,选择合适的电源电压,并通过电流限制电路控制电流。

2.开关电路设计:霓虹灯是否闪烁是通过开关电路的开闭状态来决定的。

设计一个可控制的开关电路来控制霓虹灯的亮灭状态。

3.保护电路设计:为了防止电压过高或者电流过大对系统和霓虹灯造成损坏,需要设置相应的保护电路,如过压保护和过流保护。

微机原理与接口技术本设计所使用的微机系统主要包括单片机、外设接口电路和人机交互界面。

单片机选择选择合适的单片机对于系统的稳定性和扩展性至关重要。

根据本设计目标和要求,我们可以选择具有较多输入输出引脚、较大存储容量和较高时钟频率的单片机。

常用的单片机型号有STC系列、ATmega系列等。

外设接口电路外设接口电路主要用于实现单片机与外部设备的通信和控制功能。

在本设计中,外设接口电路需要包括霓虹灯的驱动电路、按键开关和显示屏等界面电路。

微机原理霓虹灯显示程序课程设计

微机原理霓虹灯显示程序课程设计

霓虹灯显示程序设计1设计内容及要求要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.用汇编语言编写一个霓虹灯的模拟显示程序;2.在屏幕上显示你的中文名字或其它文字,按某种规律闪烁变化,按“q”键退出;3.撰写课程设计说明书。

内容包括:摘要、目录、正文、参考文献、附录(程序清单)。

正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。

2程序原理分析本次设计实现的是霓虹灯的模拟显示,在80*25大小的屏幕上显示由各种字符组成的不同图形,在屏幕上,0行0列相对于屏幕左上角的位置,24行79列相对于右下角的位置。

对应显示屏幕上的每个字符,在存储器中又连续的两个字节表示,一个字节保存ASCII码,另一个字节保存字符的属性。

在屏幕上处理字母、数字以及一些字符图形称为文本方式。

在文本方式下,属性字节对单色显示和彩色显示都是有效的。

本程序采用的是彩色字符显示,在显示彩色文本时,属性字节能够选择前景和背景的颜色。

每个字符可以选择16种颜色中的一种,背景色有8种颜色可以选择。

图1-1是16色文本方式显示的属性字节。

表1-1列出了16色字符方式颜色的组合。

表1-1 16种颜色的组合本程序主要运用了BIOS显示中断类型10H的部分功能,主要有用到以下几个功能:置光标:AH=02BH=页号DH=行DL=列读光标:AH=03显示字符串:AH=13HAL=01H ;光标跟随移动ES:BP=串地址CX=串长度DH,DL=起始行列BH=页号BL=属性即程序通过INT 10H2号功能的调用置光标位置,3号功能的调用读光标的位置,以及13号功能的调用显示字符串。

并通过顺序、循环结构程序的调用进行图形的霓虹灯效果显示。

程序的数据段以字符串的形式来表示,可以很方便的直接运用INT 10H中的13号功能即显示字符串功能显示图形,这样一来程序得到了很大的简化,但同时,图形的显示是以字符串的形式,即以行的依次顺序逐渐出像在屏幕上,在字符串一次出现的同时,通过调用相应的子程序改变图形显示的颜色属性,以及不断变换显示图形的形状。

实验十七 霓虹灯饰模拟

实验十七  霓虹灯饰模拟

实验十七霓虹灯饰模拟
在霓虹灯模拟实验区完成本实验
一、实验目的
用PLC构成霓虹灯控制系统。

二、实验内容
合上启动按钮,按以下规律显示:1→2→3→4→5→6→7→8→7→6→5→4→3→2→1→1、2→2、3→3、4→4、5→5、6→6、7→7、8→
1、3、5、7→
2、4、6、8→1、2、
3、
4、
5、
6、
7、8→1……
三、霓虹灯实验面板图图6-17-1所示
霓虹灯饰模拟控制面板
上图中,右框中的1、2、3、4、5、6、7、8分别接主机的输出点Q0.0、Q0.1、Q0.2、Q0.3、Q0.4、Q0.5、Q0.6、Q0.7。

启动按钮接主机的输入点I0.0。

四、编制梯形图并写出实验程序
参考梯形图如下所示:
图6-17-2
五、实验设备
1、THSMS-A型、THSMS-B型实验装置或THSMS-1型、THSMS-2型实验箱一台
2、安装了STEP7-Micro/WIN32编程软件的计算机一台
3、PC/PPI编程电缆一根
4、锁紧导线若干
六、预习要求
阅读实验指导书,复习教材中有关的内容。

七、报告要求
整理出运行和监视程序时出现的现象。

微机原理课设_霓虹灯闪烁控制系统方案

微机原理课设_霓虹灯闪烁控制系统方案

微机原理与接口技术》课程设计题可控制霓虹灯班级:电气本151小组组长: 徐明(2015040104 )小组成员:王军三 (2015040107 )黄国涛 (2015040108)刘飞鸿(2015040113)指导教师:刘微日期:2017年10月11日齐齐哈尔工程学院机电工程系一、设计可控制霓虹灯目的及意义霓虹灯其设计目的主要为:(1) 进一步熟悉8255A 并行接口的基本工作原理(2) 运用CES-86 通用微机实验装置,了解键盘的基本结构,学会编写程序.(3) 在熟悉了小键盘的基础上,加上LED 发光二极管的使用设计出绚丽闪耀的霓虹灯.本课程设计是自动化专业学生的一次较全面的的设计训练.是配合“微机与接口技术”课堂教学的最后一个重要的实践教学环节.它将起到巩固课堂和书本上所学的知识、加强综合能力、提高系统设计水平、启发创新思想的作用。

当然.虽然程序最后达到了预期控制要求.但是由于实际情况和理想情况存在差距.我知道还有很多地方有待改进.同时我还是个初学者.各方面肯定存在不足.如果老师发现了缺陷之处. 请指出.我们一定会虚心接受。

二、芯片介绍本次课程设计中所使用的芯片8255A (如右图)是In tel公司采用CHMO工艺生产的一种高性能通用可编程输入/输出并行接口芯片,可以方便地应用在In tel系列微处理器系统中。

下面对8255A芯片进行简单介绍:8255A的内部结构8255A 是40引脚双列直插式芯片,片内有A,B,C三个8位I/O端口,可提供24条可编程的输入/输出端口线。

它的内部结构由三部分电路组成:把他用线路与8086CPU的接口电路、内部控制逻辑电路和与外设连接的输入/输出接口电路。

8086内部介绍8086 CPU中寄存器总共为14个.且均为16位。

即AX.BX.CX.DX.SPBPSI.DI.IPFLAG.CS.DS.SS.ES共14 个。

而这14个寄存器按照一定方式又分为了通用寄存器.控制寄存器和段寄存器。

微机课设霓虹灯显示程序

微机课设霓虹灯显示程序

课程设计题目霓虹灯显示程序设计学院自动化学院专业自动化卓越工程师班级自动化ZY1402姓名潘江宝指导教师李道远2016 年12 月 2 日课程设计任务书学生姓名:潘江宝 _ 专业班级:自动化ZY1402指导教师:李道远工作单位:自动化学院题目: 显示姓名字样的程序初始条件:编写显示“自己姓名”字样的程序,每隔1秒钟变一次颜色(变三次)。

按Q退出程序。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图时间安排:11月20日~11月23日:收集资料,方案选择11月23日~11月30日:整体流程,程序细节,调试程序12月1日~12月7日: 课程设计报告撰写12月8日:交报告,程序演示,答辩指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (I)ABSTRACT (II)1设计任务及要求分析 (1)1.1设计任务目的分析 (1)1.2具体要求分析 (1)2方案比较及认证说明 (2)2.1方案设计 (2)2.2方案选择 (2)3 系统原理阐述 (3)4 设计思路及汇编程序 (4)4.1 主程序设计 (4)4.2 子程序yanse1设计 (5)4.3 子程序disp的设计 (5)4.4 子程序delay的设计 (6)4.5 退出程序及中断指令调用 (6)4.6 源程序代码 (7)5调试记录及结果分析 (14)总结 (17)参考文献 (18)摘要随着现代科学技术的发展,计算机的应用越来越广泛,软件技术应用于生活的各个领域。

而软件的开发离不开编程,因此,微机原理与接口技术的应用也更加深入了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理课设霓虹灯的模拟显示1.设计意义与要求1.1设计意义通过课程设计,能够对所学知识有更进一步的理解,并能掌握学习理论时没有注意的细节。

调试程序,排除故障有助于提高分析问题、解决问题的能力。

课程设计中碰到的挫折,有助于养成良好的学习习惯、严谨的工作作风。

通过此课程设计的汇编语言练习,可以熟悉汇编语言的寻址方式和指令系统,BIOS和DOS系统功能调用,程序设计方法并熟悉汇编的编程环境。

1.2设计要求设计内容:采用汇编语言设计一个在屏幕中央以$字符显示一矩形,并以#将矩型从上之下、从左至右填满;然后再按相反的次序消失的程序。

按Q退出程序设计要求:(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(5)调试记录及结果分析(6)总结(7)参考资料(8)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图2方案论证2.1方案比较在设计过程中字符的显示有2中不同的方式。

方案一:运用DOS功能的2号调用,程序的设计如下MA ROW,COLUME ;MA是个宏定义光标位置MOV AH,02HMOV DL,’#’INT 21H在本程序中,显示方式很简洁很直观很容易记忆理解。

但是它无法设置字符的属性,同时还会在下个坐标位置显示光标,影响光看者的视觉享受。

方案二:运用BIOS功能的9号调用,程序设计如下CALL CURSOR ;调用光标设置子程序MOV AL,23HMOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CX这个程序设计起来占用寄存器较多,略微复杂点,但是它的功能更加完备,更能实现霓虹灯的颜色变化显示效果,给人一种美感。

2.2方案选择从上面的分析比较可知方案二的可行性和实际达到的效果更好。

所以选则方案二实现霓虹灯的功能。

3系统原理阐述3.1设计思路(1) 执行程序时显示一个欢迎界面,提示按大写S键进入显示界面(2) 执行程序这部分程序运用的主要原理是先在屏幕上显示个字符$(#)号,再执行循环,语句显示一行(列)$(#)字符。

利用像这样的原理实现矩形框的完成和内部的填充。

至于反向消失部分,用空格代替想要显示的字符,反向执行循环,就可以实现字符的消失了。

(3) 霓虹灯显示完毕,提示输入Q退出界面。

3.2程序中的BIOS和DOS功能调用3.2.1 BIOS功能调用(1) 设置光标位置(2号功能)入口参数:AH=2(功能号),BH=页号,DH=行号,DL=列号。

出口参数:无。

根据DX确定了光标位置。

(2) 初始窗口或向上滚动(6号功能)入口参数:AH=6,AL=上滚行数,CX=上滚窗口左上角的行、列号。

DX=上滚窗口右下角的行、列号。

BH=空白行的属性。

出口参数:无。

当滚动后,底部为空白输入行(3) 在当前光标位置写字符和属性(9号功能)入口参数:AH=9,BH=页号,AL=字符的ASCII码,BL=字符属性,CX=写入字符数。

出口参数:无。

3.2.2 DOS功能调用(1) 键盘输入一个字符并回显(1号功能)输入参数无,返回结果AL=字符(2) 显示字符串,光标跟谁字符串移动(9号功能)DS:DX=待显字符串的首地址字符串以‘$’结尾。

(3) 显示一个字符,光标跟随字符移动(2号功能)DL=待显字符的ASCII码,无返回结果。

3.3.程序模块(1) 宏定义光标位置MA MACRO OP1,OP2 ;宏定义光标位置PUSH AX ;现场保护PUSH BXMOV AH,02HMOV BH,0 ;页号MOV DH,OP1 ;行号MOV DL,OP2 ;列号INT 10HPOP BXPOP AXENDM这个子程序的重点是设计光标所在页、行、列及其现场保护。

使用了BIOS 功能调用设置光标的位置。

(2) 清屏子程序CLEAR PROC NEAR ;清屏MOV AH,06HMOV AL,0MOV CH,0MOV CL,0MOV DH,24MOV DL,79MOV BH,07HINT 10HRETCLEAR ENDP初始化窗口,AL=0表示全屏滚动,CH=滚动窗口左上角行号,CL=滚动窗口左上角列号,DH=滚动窗口右下角行号,DL=滚动窗口右下角列号,BH=滚入行的属性。

(3) 光标的设置CURSOR PROC NEAR ;光标的设置MOV AH,02HMOV BH,0MOV DH,ROW ; 设置行MOV DL,COLUME ;设置列INT 10HRETCURSOR ENDP光标位置的设置,这个子程序与宏定义光标位置类似只是运用有些不同。

(4) 延时子程序DELAY1 PROC NEARPUSH CXPUSH DXMOV DX,100D3: MOV CX,500D4: LOOP D4DEC DXJNZ D3POP DXPOP CXRETDELAY1 ENDP这个子程序写法的关键是现场保护(即进栈出栈),内外两个循环的设计。

延时程序的主要目的是可以让我们清楚的看到字符在屏幕上的显示过程。

4.软件思想与流程图4.1程序功能描述程序开始,进行清屏,显示欢迎界面。

按键输入,如果输入S就执行霓虹灯模拟显示在屏幕中央以$字符显示一矩形,并以#将矩型内部从上往下、从左至右填满;然后再按相反的次序消失的程序,否则就继续等待输入。

霓虹灯模拟显示程序执行完后,显示退出提示,等待Q的输入,如果输入为Q就退出程序,否则就继续等待输入。

4.2 流程图NYNY Array5.调试记录及结果分析5.1 调试过程调试过程主要由编辑、汇编、链接和执行等几个步骤组成。

(1) 源程序的编辑:编辑好汇编语言源程序后,保存为.asm文件。

(2) 源程序的汇编:调用汇编程序对源程序进行翻译,生成.OBJ的目标文件。

在汇编过程中,源程序有错误生不成目标文件,经过多次修改最终生成目标文件。

(3) 目标程序的连接:调用链接程序(LINK)将用户目标程序和库文件进行链接、定位,生成.EXE可执行文件。

(4) 调试可执行程序:刚开始可执行程序运行之后没有得到预想的结果,又重新检查源程序的算法错误,重新编辑、汇编、链接和执行,得到了预想的结果。

5.2结果记录经过很多次调试,分析修改完善,终于得到正确调试结果。

(1)执行程序时,提示进入界面如下;图1 欢迎提示界面(2)输入S后,程序执行过程中,显示矩形框及填充如下:图2显示矩形框图3填充矩形框(3)程序执行过程中,反向消失填充及矩形框如下:图4反向消失矩形框内部图5反向消失矩形框(4)程序执行过程中,再次显示矩形框和填充如下:图6再次显示矩形框图7再次填充矩形框(5)程序执行过程中再次反向消失填充及矩形框如下:图8再次反向消失矩形框内部图9再次反向消失矩形框(6)提示输Q退出界面如下:图6退出提示界面由以上调试得到的图形可知,调试结果与预期结果是一致的,程序可实现预期的功能。

5.3调试中出现的问题及解决方法问题1:寄存器不够用怎么办?解决方法:这是由于程序结构复杂,使用了太多寄存器,可以定义外部变量来解决。

问题2:寄存器值变化多端怎么办?解决方法:使用堆栈进行现场保护。

使用时应注意PUSH,POP的成对使用,不要遗忘POP同时还要注意堆栈的先入后出的规律。

6.心得体会通过这次的课程设计,让我对汇编有了更进一步的认识,加强了我用汇编语言编程的能力。

汇编语言程序设计是一门很抽象的学科,学起来也比较乏味。

一开始学的时候感觉很难,也没什么兴趣。

但随着学习的推进,以及上机编程,逐渐感到轻松。

在这次课程设计中,让我更加熟悉了汇编语言的一些基本的指令;掌握了汇编语言的一些基本的中断调用功能,可以用汇编语言调用各种中断调用功能。

在设计过程中,不断对程序进行修改、改进,增强了自己分析问题、解决问题的能力;在不断的调试中,也让自己发现了自己存在的一些错误以及一些调试时应注意的问题,同时也更深的理解了寄存器、存储器等工作原理以及一些指令执行后对它们的改变,例如INT指令会改变AL的值,在编程时应注意这方面的问题。

这次的汇编课程设计,我的题目是霓虹灯的模拟显示。

虽然在设计过程中遇到了不少问题,比如运行界面出现乱码、字符不是出现在预期位置等等问题,但在不断的修改和尝试中慢慢地解决这些问题,心里也有一种莫名的喜悦之感,正是这种感觉,使我对这门课产生了更加浓厚的兴趣,对本次课程设计更加用心和认真。

这次向老师问了两次,向同学请教过很多问题,使我的基础知识更加牢靠。

其实很早我就把程序写好了,不过很烂,后来经过几天的修改调试最终达到了自己觉得还过得去的要求在编程过程中我对汇编的一些工具进行了尝试,从MASM的EDIT集成汇编运行环境,最终我在“MASM”软件下完成了我的编程工作,该软件可以标识汇编关键字,从而利于编写与调试。

总之,这次课程设计我锻炼了动手能力,熟悉了汇编的编程环境,并巩固了课程相关知识,收益很多。

实践出真知,在课程设计中不忘在小处创新,希望在下一次课程设计中能有更大的突破!7.参考文献[1]汤书森.《微机原理接口技术实验于实践教程》.北京:清华大学出版社,2008[2]余朝琨.《IBM-PC汇编语言程序设计》.北京:机械工业出版社. 2008[3]宋江.《微机原理与接口技术》.北京:机械工业出版社. 2005[4]金泉涌.《微型计算机应用经验汇编》.北京:清华大学出版社,2007[5]沈美玲.《IBM-PC汇编语言程序设计》.北京:清华大学出版社,1993[6]吴耿峰.《十六位微型计算机原理接口及应用》.北京:高等教育出版.2004[7]戴梅萼.《微型计算机技术与应用》.北京:清华大学出版社.1992[8] 罗省贤.《汇编语言程序设计教程》.北京:电子工业出版社,2004[9]吴向军.《汇编语言程序设计》.北京:高等教育出版社,20088.附录源程序清单源程序如下:MA MACRO OP1,OP2 ;宏定义光标位置PUSH AX ;PUSH BXMOV AH,02HMOV BH,0 ;页号MOV DH,OP1 ;行MOV DL,OP2 ;列INT 10HPOP BXPOP AXENDMSTACK SEGMENT PARA STACK 'Stack' ;定义堆栈段STACK ENDSDATASEG SEGMENT PARA 'Data' ;定义数据段ROW DB '?'COLUME DB '?'COUNT DB '?'COUNT1 DB '?'CT DB '?'MENU DB '******************************************',0dh,0ah ; DB '** welcome you ! **',0dh,0ahDB '** **',0dh,0ahDB '** programme of displalying neon lamp **',0dh,0ahDB '** **',0dh,0ahDB '** please press S to enter **',0dh,0ahDB '** and then press Q to exit ! **',0dh,0ahDB '******************************************$'BUF DB 'press Q to exit ! $'DATASEG ENDSCODESEG SEGMENT PARA 'Code'ASSUME SS:STACK,DS:DATASEG,CS:CODESEGMAIN PROC FARMOV AX,DATASEGMOV DS,AXCALL CLEAR ;调用清屏子程序MA 8,0 ;欢迎界面的出现位置 WAT0: LEA DX,MENU ;输入S进入霓虹灯显示 MOV AH,9INT 21HMOV AH,1INT 21HCMP AL,'S'CALL CLEAR ;如果输入的不是S就清屏 MA 8,0JNZ WAT0PUSH AX ;入栈PUSH BXPUSH CXPUSH DXMOV ROW,24 ;完成矩形框的左竖行MOV COLUME,0LOP3: CALL CURSOR ;调用设置光标位置MOV AL,24H ;把$的ASCII 码传递给AL MOV BL,0BH ;设置字符属性PUSH CX ;入栈MOV CX,1 ;字符显示1次MOV AH,09HINT 10HPOP CX ;出栈CALL DELAY1 ;调用延时DEC ROW ;行坐标减1CMP ROW,0 ;若行坐标大于0就跳转到lop3否则执行下个程序JNZ LOP3MOV ROW,0MOV COLUME,0 ;完成矩形框的上行LOP1: CALL CURSORMOV AL,24HMOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1INC COLUMECMP COLUME,79JNZ LOP1MOV ROW,0MOV COLUME,79 ;完成矩形框的右竖行LOP2: CALL CURSORMOV AL,24H ;完成$的输出 MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1INC ROWCMP ROW,24JNZ LOP2MOV ROW,24MOV COLUME,79 ;完成矩形框的下横行LOP4: CALL CURSORMOV AL,24HMOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1DEC COLUMECMP COLUME,0JNZ LOP4 ;到此矩形框已完成MOV COLUME,0 ;从上往下从左往右'#'填充 LOP6: MOV ROW,1INC COLUMELOP5: CALL CURSORMOV AL,23HMOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1INC ROWCMP ROW,24JNZ LOP5CMP COLUME,78JNZ LOP6MOV COLUME,79 ;反向消失LOP7: MOV ROW,23DEC COLUMELOP8: CALL CURSORMOV AL,' 'MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1DEC ROWCMP ROW,0JNZ LOP8CMP COLUME,1JNZ LOP7MOV CL,1 ;消失矩形框左竖行 LOP10: MA CL,0MOV AL,' 'MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1INC CLCMP CL,24JNZ LOP10MOV CL,0 ;消失矩形框下行LOP9: MA 24,CLMOV AL,' 'MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1INC CLCMP CL,79JNZ LOP9MOV CL,24 ;消失矩形框右竖行LOP11: MA CL,79MOV AL,' 'MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1DEC CLCMP CL,0JNZ LOP11MOV CL,79 ;消失矩形框上行LOP12: MA 0,CLMOV AL,' 'MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1DEC CLCMP CL,0JNZ LOP12MA 0,0 ;消失(0,0)这一点MOV AL,' 'MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXMOV ROW,24 ;完成矩形框的左竖行MOV COLUME,0LOP13: CALL CURSOR ;调用设置光标位置MOV AL,24H ;把$的ASCII 码传递给AL MOV BL,0BH ;设置字符属性PUSH CX ;入栈MOV CX,1 ;字符显示1次MOV AH,09HINT 10HPOP CX ;出栈CALL DELAY1 ;调用延时DEC ROW ;行坐标减1CMP ROW,0 ;若行坐标大于0就跳转到lop3否则执行下个程序JNZ LOP13MOV ROW,0MOV COLUME,0 ;完成矩形框的上行LOP14: CALL CURSORMOV AL,24HMOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1INC COLUMECMP COLUME,79JNZ LOP14MOV ROW,0MOV COLUME,79 ;完成矩形框的右竖行LOP15: CALL CURSORMOV AL,24H ;完成$的输出 MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1INC ROWCMP ROW,24JNZ LOP15MOV ROW,24MOV COLUME,79 ;完成矩形框的下横行 LOP16: CALL CURSORMOV AL,24HMOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1DEC COLUMECMP COLUME,0JNZ LOP16 ;到此矩形框已完成 MOV COUNT1,23 ;矩形框内部填充LOP17: MOV COUNT,39MOV CH,39MOV CL,40LOP18: MA COUNT1,CH ;填充左半段MOV DL,23HPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXMOV AH,02HINT 21HMA COUNT1,CL ;填充右半段MOV AL,'#'MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1DEC CHINC CLDEC COUNTCMP COUNT,0JA LOP18DEC COUNT1CMP COUNT1,0JNZ LOP17MOV CT,1 ;设置行的初值为1 反向消失内部LOP19: MOV COUNT,39 ;内循环次数MOV CH,1MOV CL,78LOP20: MA CT,CHMOV AL,' ' ;显示空格MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXMA CT,CL ;设置光标位置MOV DL,' 'MOV AH,02HINT 21HCALL DELAY1INC CHDEC CLDEC COUNTCMP COUNT,0JNZ LOP20INC CTCMP CT,24JNZ LOP19MOV CL,1 ;消失矩形框左竖行LOP21: MA CL,0MOV AL,' 'MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1INC CLCMP CL,24JNZ LOP21MOV CL,0 ;消失矩形框下行LOP22: MA 24,CLMOV AL,' 'MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1INC CLCMP CL,79JNZ LOP22MOV CL,24 ;消失矩形框右竖行LOP23: MA CL,79MOV AL,' 'MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1DEC CLCMP CL,0JNZ LOP23MOV CL,79 ;消失矩形框上行LOP24: MA 0,CLMOV AL,' 'MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXCALL DELAY1DEC CLCMP CL,0JNZ LOP24MA 0,0 ;消失(0,0)这一点MOV AL,' 'MOV BL,0BHPUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXMA 12,30 ;显示输入Q提示输入Q退出WAT: LEA DX,BUF ;获取偏移地址MOV AH,9 ;用DOS功能9号功能显示字符串 INT 21HMOV AH,1 ;键盘输入单个字符INT 21HCMP AL,'Q' ;与Q比较JZ EXIT ;如过输入为Q则跳转 CALL CLEARMA 12,30JMP WATEXIT: MOV AX,4C00H ;返回dos系统INT 21HMAIN ENDPCLEAR PROC NEAR ;清屏MOV AH,06HMOV AL,0MOV CH,0MOV CL,0MOV DH,24MOV DL,79MOV BH,07HINT 10HRETCLEAR ENDPCURSOR PROC NEAR ;光标的设置 MOV AH,02HMOV BH,0MOV DH,ROW ;设置行MOV DL,COLUME ;设置列INT 10HRETCURSOR ENDPDELAY1 PROC NEARPUSH CXPUSH DXMOV DX,100D3: MOV CX,200D4: LOOP D4DEC DXJNZ D3POP DXPOP CXRETDELAY1 ENDPCODESEG ENDSEND MAIN。

相关文档
最新文档