当前位置:文档之家› 微机原理霓虹灯显示程序课程设计

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

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

霓虹灯显示程序设计

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=02

BH=页号

DH=行

DL=列

读光标:AH=03

显示字符串:AH=13H

AL=01H ;光标跟随移动

ES:BP=串地址

CX=串长度

DH,DL=起始行列

BH=页号

BL=属性

即程序通过INT 10H2号功能的调用置光标位置,3号功能的调用读光标的位置,以及13号功能的调用显示字符串。并通过顺序、循环结构程序的调用进行图形的霓虹灯效果显示。

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

同时由于微机处理速度较快,不容易一次看到图形变化,则需要在程序中添加延迟程序作为子程序不断被调用用以减缓显示速度,方便肉眼观察到图形变换效果。延迟程序中,由于寄存器CX存储有限,不能达到合适的延迟程度,故应采用循环结构的子程序来进行延迟操。

3 程序流程图

3.1主程序流程图

定义数据段,然后将代码段程序初始化,然后调用13号功能显示字符串组成的‘董德军’三个字,再调用条纹显示子程序,显示运动的条纹,判断是否输入Q,若输入Q,则程序结束,退出程序,否则,执行跳转命令,继续调用汉字显示程序和条纹显示程序。

主程序结构流程图如图2-1

图3-1 主程序结构流程图

3.2子程序结构流程图

3.2.1名字显示子程序流程图

按照要求要显示出自己的名字,因此,运用多个字符组成,并按照笔画顺序显示出来,结构流程图如图3-2所示。

图3-2 名字显示子程序流程图

3.2.2擦除子程序流程图

在显示完名字并进行变色以后,将使用竖条纹对屏幕进行擦出,擦除以后若没有检测到字符Q的输入,则进行循环,继续显示名字,并在此进行擦出,擦出子程序流程图如图3-3所示。

图3-3 擦除子程序流程图

4 程序主要模块功能分析

4.1名字显示功能模块

如何使用ASCII码显示自己的中文名字是这次课程设计的关键之处,为了达到霓虹灯的效果,我采用各种字符组合,来组成名字的形状,为了达到更美观的效果,在这里,借助一个字符画转换软件,名字为ASCIIArtStudioASCII,该软件是用来创建ASCII字符画的软件,可以像使用画笔一样创建 ASCII 字符画。还支持将图片转换为字符画,以及保存成文本或图片文件等功能。

首先我使用画图工具将自己的名字打出来,并转化为图片格式,如图4-1所示。

图4-1 使用绘图工具得到宋体的中文名字

然后运行ASCIIArtStudioASCII软件,点击菜单栏文件,选择将图片转换为ASCII ART 一项,读出图片,点击转换,将图片转化为字符画,所得字符画如图4-2所示。

图4-2 名字的ASCII码组成

然后按照每一个字符的坐标方位在80*25大小的屏幕上显示由各种字符组成的文字,

在屏幕上,0行0列相对于屏幕左上角的位置,24行79列相对于右下角的位置。

对应显示屏幕上的每个字符,在存储器中又连续的两个字节表示,一个字节保存ASCII 码,另一个字节保存字符的属性。在屏幕上处理字母、数字以及一些字符图形称为文本方式。在文本方式下,属性字节对单色显示和彩色显示都是有效的。在彩色显示器里,如CGA、EGA、VGA 等,常用一个字节( 8 个位) 来表示文字颜色和背景颜色,通常以第0~3 位表示文字本身颜色;第4~6 位表示背景颜色,背景颜色只有上表左栏的8 种而已;第7 个位,表示是否闪烁,0 表示不闪烁,1 表示闪烁。每个字符由四种属性组成,第一项为字符种类,如61h代表字符“a”,第二项为字符的颜色,如Oah代表绿色,第三项为字符相对于前一个字符的行坐标,第四项为该字符对于上一个字符的列坐标,这样只要定义了第一个字符在屏幕中的位置,那么就能将整个汉字显示出来。以下为第一个汉字

“董”所定义的数据段。

dong db130

db61h,0ah,0,0

db12dup('a',0ah,0,1)

db30h,0ah,0,1

db '&',0ah,0,1

db ']',0ah,-1,-9

db 'n',0ah,0,1

db 'J',0ah,1,-1

db '&',0ah,0,1

db ']',0ah,1,-1

db 'f',0ah,0,1

db26h,0ah,-2,4

db26h,0ah,1,0

db '!',0ah,1,0

db ',',0ah,0,1

db 'g',0ah,0,1

db22h,0ah,1,0

db7eh,0ah,0,-1

db7eh,0ah,0,-1

db 'M',0ah,0,-1

db '0',0ah,0,-1

db 'M',0ah,0,-1

db '*',0ah,0,-1

db 'v',0ah,0,-1

db 'a',0ah,0,-1

db61h,0ah,0,-1

db61h,0ah,1,-2

db12dup('a',0ah,0,1) db30h,0ah,0,1

db 'e',0ah,0,1

db5dh,0ah,2,-12

db36h,0ah,0,1

db5dh,0ah,1,-1

db 'M',0ah,0,1

db5dh,0ah,1,-1

db 'L',0ah,0,1

db '_',0ah,-3,0

db7dup('_',0ah,0,1) db 'j',0ah,0,1

db 'B',0ah,1,0

db '#',0ah,1,0

db '#',0ah,1,0

db7eh,0ah,-1,-7

db6dup('~',0ah,0,1) db61h,0ah,1,-6

db6dup('a',0ah,0,1) db26h,0ah,-4,-3

db7dup('&',0ah,1,0) db 'P',0ah,-4,0

db '8',0ah,3,0

db '!',0ah,0,-6

db '~',0ah,0,1

db4dup('~',0ah,0,1)

db '~',0ah,0,2

db4dup('~',0ah,0,1)

db ',',0ah,-1,0

db27h,0ah,3,-12

db14dup(27h,0ah,0,1)

db ',',0ah,-1,0

db '_',0ah,0,-1

显示名字的的过程如下面程序段所示,其中前三句是将汉字位型图的地址送给寄存

器,dh和dl分别表示汉字的其实的第一个点在屏幕上的行列的坐标,call指令用于子程

序调用,分别调用move_shape1和 Amust_2子程序,进行读点和写点。

lea di,dong

mov dh,7

mov dl,17

call move_shape1

call Amust_2

在move_shape1子程序中,和Amust_2子程序中,char_cntl是指字符,pointer1表

示颜色,line_on1为行坐标,col_on1为列坐标。

mov char_cnt1,cx

mov pointer1,di

mov line_on1,dh

mov col_on1,dl

名字的显示效果如图4-2所示。

图4-2名字显示结果

4.2颜色变化功能模块

颜色变化功能实际上就是将名字用其他颜色重新写一遍,将原来的文字覆盖,因此可

实现文字颜色变化,本程序用的是重新定义数据段的方法,将每个字符重新定义,还有一种方法是使用函数,将每个字符代表字符颜色的部分同时加减一个数,便可实现变色功能。文字变色的显示结果如图4-3所示。

图4-3 文字变色显示结果

4.3条纹清屏与文字闪烁功能模块

程序通过从右向左将名字显示覆盖,即达到清除屏幕显示的名字的效果。若将调用的延迟程序调的快一些,还可以达到文字闪烁的效果,在这里提一下,实现文字闪烁的功能

也可以通过改变定义数据段中文字的属性实现,程序模块如下:

Aerase proc near

mov cx,char_cnt1

mov di,pointer1

mov dh,line_on1

mov dl,col_on1

Aerase_next:

add dh,[di+2]

add dl,[di+3]

cmp dl,2

je Aleft

mov ah,2

int10h

mov ah,8

int10h

cmp al,40h

je Aexitx2

cmp al,02ah

je Aexitx2

jmp Aexitx3

Aexitx2: dec Acount0

jne Aexitx3

mov Acount0,11

Aexitx3: cmp Acount1,1

je Aexit0

mov al,'*'

mov bl,03h

jmp Aexit7

Aexit0: mov al,'*'

mov bl,0

Aexit7: push cx

mov cx,1

mov ah,9

int10h

pop cx

cmp Acount0,11

jne Aerase_next

add di,4

loop Aerase_next

dec col_on1

mov cx,char_cnt1

mov di,pointer1

mov dh,line_on1

mov dl,col_on1

Aleft: ret

Aerase endp

col_onl代表的是列坐标,每次循环经过dec col_onl就可以实现的列坐标自减1的功能,从而使得条纹字符从右向左而来,经过除所有字符都变为“*”。显示效果如图4-4所示。

图4-4 条纹清屏的显示效果

4.4按Q/q键退出功能模块

该设计要求在程序运行过程中,按下Q或q键能够推出程序,因此在程序中加入了退出功能模块,首先判断有没有字符输入,没有就跳转到Aagain,若检测到字符输入,再把输入字符与Q/q相比较,若不同,还是跳转到Aagain执行循环,若是Q/q,则执行退出命

令,返回DOS。

mov ah,0bh

int21h

cmp al,0

jz Aagain

mov ah,1

int21h

cmp al,'q'

jz exit

cmp al,'Q'

jz exit

jmp Aagain

exit : mov ax,4c00h

int21h

4.5延迟功能模块

若显示程序没有了延时功能模块,那么所有的显示内容都将一闪而过,根本看不清,因此,我们需要在程序中加入延迟程序,除此之外延迟程序可以用来控制汉字显示的快慢

以及刷屏的快慢速度,汉字显示的慢一些会有一笔一画写出来的效果,非常漂亮,刷屏快

一些则会有闪烁的效果出现。以下是延迟模块的子程序。

dly_qrtr proc near

push cx

push dx

mov dx,25

dll: mov cx,65530

dl2: loop dl2

dec dx

jnz dll

pop dx

pop cx

ret

dly_qrtr endp

5程序调试

在WINXP操作系统下,在MFPCI98软件中编入80x86汇编程序,用MASM5.0编译,进行汇编、连接、运行操作。对编译时出现的错误进行调试。

我在编译时容易出现遗漏对应指令的错误,如进行CALL指令调用子程序时,容易遗漏在CALL后的RET指令,导致运行时出现错误图形。还有在调用INT 10H功能时,读光标,置光标还有显示字符串指令时,对寄存器AX,BX,DX,CX,BP的数据传送应根据光标起始位的行列坐标需求来确定数据的传送,才能达到要求的图形显示效果。

6课程设计总结

一拿到这个课程设计,我就被吓了一跳,因为要显示自己的名字,而我的名字有33画,要用一个个字符组合显示出来,实在是一个庞大的工程量,这对我的耐心和我的毅力都是一个很大的考验,虽然可以用别的文字替换,但我最终还是决定将自己的名字做出来,为此,我花费了近四个小时。最终对自己做出的成果还算满意。

经过两个周的课程设计,我认识到,课程设计是能真正让人学到实际应用的东西的一门课程,收获比上几个星期的课还多。

首先,要实现题目要求的功能,我们必须全心的投入其中,养成一种敢于钻研的习惯,在把课程要求实现到实际中来的过程中,首先必须要有个清晰地思路,设计方案,这就需要能够精心钻研。

其次,通过课程设计,让我在课本的基础上,更深入的了解了各种指令的用法和程序的完成过程,调试方法及技巧。为了了解程序思路,我查了不少指令的功能资料,以及关于显示器显示的功能要求,并了解了霓虹灯功能的实现。

编写程序的过程中,体会最深的是子程序的调用和程序的条理问题,一个程序就算功能实现了,但是也要使主程序和子程序的条理分明,易读性高,才能算一个比较好的程序,调试程序中,学习了汇编语言的整个调试过程,更加容易的找出程序的错误处了。

课程设计终于圆满完成了,在这次课程设计过程中,我得到了许多人的帮助。

首先我要感谢与我同组的同学,没有我们的一致团结合作,就没有我们今天的成果,同时,也要感谢其他组的同学,在我们有疑问的时候,你们给予了及时的解答,及时的提醒让我们得以少走很多弯路。

还有,我的课程设计指导老师老师在课程设计上给予我了指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师利用自己渊博的知识以及丰富的设计经验帮我解决了许多技术上的难题,让我能把程序做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。

参考文献

[1]沈美明,温冬禅编著.IBM-PC汇编语言程序设计.第二版.北京:清华大学出版社,2001

[2]周佩玲,吴耿峰,万炳奎编著.十六位微型计算机原理接口及其应用.合肥:中国科学

技术大学出版社,1995

[3]艾德才编著.Pentium/80486实用汇编语言程序设计.北京:高等教育出版社,2000

[4]谭浩强编著.计算机硬件技术基础.北京:电子工业出版社,2004

[5]李继灿编著.新编16-32位微型计算机原理及应用.北京:清华大学出版社,1997

[6]邹逢兴编著.计算机硬件技术基础.北京:高等教育出版社,2001

[7]邹逢新等编著.微型计算机原理及其应用典型题解析与实战模拟.长沙:国防科技大学

出版社,2001

[8]周佩玲,彭虎,傅忠谦编著.微机原理与接口技术.北京:电子工业出版社,2007

附录源程序代码

;--<<<***************>>>DATA_SEGMENT<<<*************>>>-- ;DATA_SEGMENT 部分为定义数据段

data_seg segment

;---A--**************************--A---

dong db130 ;定义“董”的字符个数

db61h,0ah,0,0

db12dup('a',0ah,0,1)

db30h,0ah,0,1

db '&',0ah,0,1

db ']',0ah,-1,-9

db 'n',0ah,0,1

db 'J',0ah,1,-1

db '&',0ah,0,1

db ']',0ah,1,-1

db 'f',0ah,0,1

db26h,0ah,-2,4

db26h,0ah,1,0

db '!',0ah,1,0

db ',',0ah,0,1

db 'g',0ah,0,1

db22h,0ah,1,0

db7eh,0ah,0,-1

db7eh,0ah,0,-1

db 'M',0ah,0,-1

db '0',0ah,0,-1

db 'M',0ah,0,-1

db '*',0ah,0,-1

db 'v',0ah,0,-1

db 'a',0ah,0,-1

db61h,0ah,0,-1

db61h,0ah,1,-2

db12dup('a',0ah,0,1)

db30h,0ah,0,1

db 'e',0ah,0,1

db5dh,0ah,2,-12

db36h,0ah,0,1

db5dh,0ah,1,-1

db 'M',0ah,0,1

db5dh,0ah,1,-1

db 'L',0ah,0,1

db7dup('_',0ah,0,1)

db 'j',0ah,0,1

db 'B',0ah,1,0

db '#',0ah,1,0

db '#',0ah,1,0

db7eh,0ah,-1,-7

db6dup('~',0ah,0,1)

db61h,0ah,1,-6

db6dup('a',0ah,0,1)

db26h,0ah,-4,-3

db7dup('&',0ah,1,0)

db 'P',0ah,-4,0

db '8',0ah,3,0

db '!',0ah,0,-6

db '~',0ah,0,1

db4dup('~',0ah,0,1)

db '~',0ah,0,2

db4dup('~',0ah,0,1)

db ',',0ah,-1,0

db27h,0ah,3,-12

db14dup(27h,0ah,0,1)

db ',',0ah,-1,0

db '_',0ah,0,-1

dong1 db130

db61h,0ch,0,0

db12dup('a',0ch,0,1)

db30h,0ch,0,1

db '&',0ch,0,1

db ']',0ch,-1,-9

db 'n',0ch,0,1

db 'J',0ch,1,-1

db '&',0ch,0,1

db ']',0ch,1,-1

db 'f',0ch,0,1

db26h,0ch,-2,4

db26h,0ch,1,0

db '!',0ch,1,0

db ',',0ch,0,1

db 'g',0ch,0,1

db22h,0ch,1,0

db7eh,0ch,0,-1

db7eh,0ch,0,-1

db 'M',0ch,0,-1

db 'M',0ch,0,-1

db '*',0ch,0,-1

db 'v',0ch,0,-1

db 'a',0ch,0,-1

db61h,0ch,0,-1

db61h,0ch,1,-2

db12dup('a',0ch,0,1)

db30h,0ch,0,1

db 'e',0ch,0,1

db5dh,0ch,2,-12

db36h,0ch,0,1

db5dh,0ch,1,-1

db 'M',0ch,0,1

db5dh,0ch,1,-1

db 'L',0ch,0,1

db '_',0ch,-3,0

db7dup('_',0ch,0,1)

db 'j',0ch,0,1

db 'B',0ch,1,0

db '#',0ch,1,0

db '#',0ch,1,0

db7eh,0ch,-1,-7

db6dup('~',0ch,0,1)

db61h,0ch,1,-6

db6dup('a',0ch,0,1)

db26h,0ch,-4,-3

db7dup('&',0ch,1,0)

db 'P',0ch,-4,0

db '8',0ch,3,0

db '!',0ch,0,-6

db '~',0ch,0,1

db4dup('~',0ch,0,1)

db '~',0ch,0,2

db4dup('~',0ch,0,1)

db ',',0ch,-1,0

db27h,0ch,3,-12

db14dup(27h,0ch,0,1)

db ',',0ch,-1,0

db '_',0ch,0,-1

dong2 db130

db61h,0eh,0,0

db12dup('a',0eh,0,1)

db30h,0eh,0,1

db ']',0eh,-1,-9

db 'n',0eh,0,1

db 'J',0eh,1,-1

db '&',0eh,0,1

db ']',0eh,1,-1

db 'f',0eh,0,1

db26h,0eh,-2,4

db26h,0eh,1,0

db '!',0eh,1,0

db ',',0eh,0,1

db 'g',0eh,0,1

db22h,0eh,1,0

db7eh,0eh,0,-1

db7eh,0eh,0,-1

db 'M',0eh,0,-1

db '0',0eh,0,-1

db 'M',0eh,0,-1

db '*',0eh,0,-1

db 'v',0eh,0,-1

db 'a',0eh,0,-1

db61h,0eh,0,-1

db61h,0eh,1,-2

db12dup('a',0eh,0,1) db30h,0eh,0,1

db 'e',0eh,0,1

db5dh,0eh,2,-12

db36h,0eh,0,1

db5dh,0eh,1,-1

db 'M',0eh,0,1

db5dh,0eh,1,-1

db 'L',0eh,0,1

db '_',0eh,-3,0

db7dup('_',0eh,0,1) db 'j',0eh,0,1

db 'B',0eh,1,0

db '#',0eh,1,0

db '#',0eh,1,0

db7eh,0eh,-1,-7

db6dup('~',0eh,0,1) db61h,0eh,1,-6

db6dup('a',0eh,0,1) db26h,0eh,-4,-3

db7dup('&',0eh,1,0)

db '8',0eh,3,0

db '!',0eh,0,-6

db '~',0eh,0,1

db4dup('~',0eh,0,1)

db '~',0eh,0,2

db4dup('~',0eh,0,1)

db ',',0eh,-1,0

db27h,0eh,3,-12

db14dup(27h,0eh,0,1)

db ',',0eh,-1,0

db '_',0eh,0,-1

de db100

db 'g',0eh,0,0

db '^',0eh,1,0

db 'j',0eh,0,-1

db '!',0eh,1,0

db 'j',0eh,0,-1

db27h,0eh,1,0

db ',',0eh,0,-1

db '6',0eh,0,4

db 'j',0eh,0,-1

db '@',0eh,1,-1

db '#',0eh,1,-1

db ']',0eh,1,-1

db '7',0eh,1,-1

db '#',0eh,-1,2

db '4',0eh,1,0

db '4',0eh,1,0

db '4',0eh,1,0

db '4',0eh,1,0

db '4',0eh,1,0

db22h,0eh,1,0

db27h,0eh,-10,3

db8dup(27h,0eh,0,1)

db 'g',0eh,-1,0

db '&',0eh,-1,-4

db '0',0eh,1,0

db 'f',0eh,1,0

db 'p',0eh,1,-3

db '1',0eh,1,0

db '1',0eh,1,0

db 'P',0eh,1,0

微机原理课程设计报告交通灯

WORD格式微机原理课程设计 设计题目交通灯的设计 实验课程名称微机原理 姓名王培培 学号080309069 专业09自动化班级2 指导教师张朝龙 开课学期2011至2012学年上学期

一、实验设计方案 实验名称:交通灯的设计实验时间:2011/12/23 小组合作:是□否?小组成员:无 1、实验目的: 分析实际的十字路口交通灯的亮灭过程,用实验箱上的8255实现交通灯的控制。(红,黄,绿三色灯) 2、实验设备及材料: 微机原理和接口技术实验室的实验箱和电脑设备等。 3、理论依据: 此设计是通过并行接口芯片8255A和8086计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。 如硬件连接图所示(在后),红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255 的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4(南东北西)路口的红灯,B,C口类推。8086工作在最小模式,低八位端口AD0~AD7接到8255和8253的D0~D7,AD8~AD15通过地址锁存器8282,接到三八译码器,译码后分别连到8255和8253的CS片选端。8253的 三个门控端接+5V,CLOCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK,2 OUT1接到8086的AD18,8086通过检测此端口是否有高电平来判断是否30s定时到。OUT2产生 1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。8255三个口全部工作在方式0既基本 输入输出方式,红绿灯的转换由软件编程实现。

4、实验方法步骤及注意事项: ○1设计思路 红,黄,绿灯可分别接在8255的A口,B口和C口上,灯的亮灭可直接由8086输出0,1 控制。 设8253各口地址分别为:设8253基地址即通道0地址为04A0H,通道1为04A2H,通道2 为04A4H,命令控制口为04A6H。 黄灯闪烁的频率为1HZ,所以想到由8253产生一个1HZ的方波,8255控制或门打开的时 间,在或门打开的时间内,8253将方波信号输入或门使黄灯闪烁。 由于计数值最大为65535,1MHZ/65536的值远大于2HZ,所以采用两个计数器级联的方 式,8253通道0的clock0输入由分频器产生的1MHZ时钟脉冲,工作在方式3即方波发生器方 式,理论设计输出周期为0.01s的方波。1MHZ的时钟脉冲其重复周期为T=1/1MHZ=1s,因此 通道0的计数初值为10000=2710H。由此方波分别作为clock1和clock2的输入时钟脉冲,所以 通道1和通道2的输入时钟频率为100HZ,通道1作计数器工作在方式1,计数初值3000=BB8H 既30s,计数到则输出一个高电平到8255的PA7口,8255将A口数据输入到8086,8086检测 到高电平既完成30s定时。通道2工作在方式3需输出一个1HZ的方波,通过一个或门和8086 共同控制黄灯的闪烁,因此也是工作在方波发生器方式,其计数初值为100=64H,将黄灯的状态 反馈到8055的端口PB7和PC7,同样输入到8086,8086通过两次检测端口状态可知黄灯的状态 变化,计9次状态变化可完成5次闪烁。 三个通道的门控信号都未用,均接+5V即可。 ○ 2硬件原理及电路图 由于8255A与8086CPU是以低八位数据线相连接的,所以应该是8255A的A1、A 0 线分别与 8086CPU的A2、A线相连,而将8086的 1 A 0 线作为选通信号。如果是按8255A内部地址来看, 则在图中它的地址是PA口地址即(CS+000H),PB口地址为(CS+001H),PC口地址为(CS+002H),

微机原理课程设计电压报警器实验报告

南通大学电子信息学院 微机原理课程设计 报告书 课题名: 班级: 姓名: 学号: 指导老师: 日期: xxx

目录 1.设计目的 (2) 2.设计内容 (2) 3.设计要求 (2) 4.设计原理 (3) 5.硬件电路图 (3) 6.程序代码 (5) 7.程序及硬件系统调试情况 (19) 8.设计总结与体会 (19)

一、设计目的 课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。 通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。 通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。 二、设计内容 设计一个电压报警器,要求采集实验箱提供的0~5V的电压,当输入电压在3V以内,显示电压值,如2.42。当输入电压超过3V,显示ERR,并报警。电压值可在七段数码管显示,点阵广告屏显示或液晶屏显示。报警形式自行设计,

微机原理课程设计

微机原理课程设计

前言 加热器数字控制系统的设计与功能的实现要求学生在学习完微机原理及应用这门课的基础上,在对芯片类知识以及汇编语言有一定基础的前提下进行的一个非常体现学生综合能力的一个设计。要想很好的完成这个题目,必须对芯片的功能有很详细的了解,同时也要求学生的汇编语言基础要扎实。计算机技术的飞速发展,使的计算机知识和应用技能已成为人类知识经济的重要组成部分。《微型计算机原理》正是掌握计算机结构和工作原理的入门课程,它偏重于实际应用的课程,要求学生在学好理论知识的基础上,培养定的实践动手操作能力,学生将所学的理论知识和实践有机结合,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。微机原理课程设计是对《微型计算机原理》课程理论教学和实验教学的综合和总结。 通过该课程设计,可以使学生对微机原理及应用这门课有更深刻的了解与认识,同时在做课程设计的过程中也锻炼了学生将书本上的知识应用到具体实践上的能力。不仅回顾了上课老师所讲的知识,同时也培养了自身的创新能力,自主设计能力,纠错能力,加强了学生动手的能力。

目录 1.前言 (2) 2.课程设计题目 (4) 3.设计任务分析 (5) 4.总体设计思路 (6) 5.硬件设计 (7) 6.软件设计 (11) 7.小结 (13) 8.参考文献 (14) 9.设计图纸 (15) 10.程序清单 (16)

课程设计题目:数字控制系统在加热器中的应用 一、课程设计的目的意义 通过课程设计培养同学们的系统设计能力,使同学们达到以下能力训练:(1)调查研究、分析问题的能力; (2)使用设计手册、技术规范的能力; (3)查阅中外文献的能力; (4)制定设计方案的能力; (5)计算机应用的能力; (6)设计计算和绘图的能力; (7)技术经济指标的分析能力; (8)语言文字表达的能力。 二、课程设计任务介绍 当把物品放入加热器中,首先要启动加热器和电机工作,设定加热时间为5分钟,为使物品均匀加热,每隔30秒电机要反转一次,(正转→反转、反转→正转),加热时间到后,停止加热器和电机工作,并发声,告知加热结束。

微机原理课程设计报告

微机原理课程设计报告 课程设计是每一个大学生在大学生涯中都不可或缺的, 它使我们在实践中了巩固了所学的知识、在实践中锻炼自己的动手能力,本文就来分享一篇微机原理课程设计报告,希望对大家能有所帮助! 微机原理课程设计报告(一)以前从没有学过关于 汇编语言的知识,起初学起来感觉很有难度。当知道要做课程设计的时候心里面感觉有些害怕和担心,担心自己不会或者做不好。但是当真的要做的时候也只好进自己作大的努力去做,做到自己最好的。 我们在这个过程中有很多自己的感受,我想很多同学都 会和我有一样的感受,那就是感觉汇编语言真的是很神奇,很有意思。我们从开始的担心和害怕渐渐变成了享受,享受着汇编带给我们的快乐。看着自己做出来的东西,心里面的感觉真的很好。虽然我们做的东西都还很简单,但是毕竟是我们自己亲手,呵呵,应该是自己亲闹做出来的。很有成就感。 我想微机原理课程设计和其他课程设计有共同的地方, 那就是不仅加深和巩固了我们的课本知识,而且增强了我们自己动脑,自己动手的能力。但是我想他也有它的独特指出,那就是让我们进入一个神奇的世界,那就是编程。对于很多学过汇编或者其他的类似程序的同学来说,这不算新奇,但是对于我来说真的新奇,很有趣,也是我有更多的兴趣学习微机原理和其他的汇编。 微机原理与接口技术是一门很有趣的课程,任何一个计 算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。讨论某一部分原理时又要涉及到其它部分的工作原理。这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。 学习该门课程知识时,其思维方法也和其它课程不同,

霓虹灯灯控制系统的课程设计

前言 根据在常熟理工这半年对于自动化专业的学习,尤其是电工学、自动控制原理以及电力电子技术等专业课程的学习,让我对于PLC课程设计打下了基础。对于我们自动化专业来讲,这个专业对于现实生活是非常有用的。而我们在这半年进行的大都是理论知识,虽有实验课程,但那也是基于对于理论知识的进一步分析,故而我们也非常需要一种把我们理论应用到实际的实习锻炼。我们的老师,根据我们自动化专业的特点,以及学生日常学习的反应给与了我们四个课题去进行实习:进行PLC编程的语言设计。 PLC可以说是我们来到常熟理工学院时学习最苛刻也是以后工作时实用的一门课程。和学别的科学一样,在学完PLC理论课程后我们做了课程设计,此次设计一分组的方式进行,老师进行抽挑课题,可以说每人的程序都不一样。我抽到的就是霓虹灯灯控制系统的设计。虽然说平时理论的学习成绩还可以,但是真要自己去设计这个程序,还真是束手无策。还好有我小组的其他成员,他们帮组我解决了不少难题,合作是成功的基础。 通过这次的课程设计,我学会了PLC的基本编程方法,以及对PLC的工作原理和操作步骤有了深刻的理解。在对理论的运用中,提高了我们的工程素质,在没有做课程设计以前,我对其的掌握都停留在思想上,许多次出现了问题总是卡在那里,却很难知道问题出在哪里,实践检验成果,理论只是基础。 本设计中详细讲解了霓虹灯等控制系统中三个不同的表现方式,如依次点亮,全亮全灭等等,我组的其他成员还有更多显示方式,在此不一一介绍。 本设计程序得到了常熟理工学院老师的大力辅导,在此深表谢意。 由于编者水平有限,错误与不妥之处,敬请原谅

目录 目录 (2) 一.课程设计任务书 (3) 1.1课程设计任务.....................................................................................错误!未定义书签。 1.2课程设计目的.....................................................................................错误!未定义书签。 1.3课程设计要求.....................................................................................错误!未定义书签。 1.4课程设计内容.....................................................................................错误!未定义书签。二.PLC的简介.. (5) 2.1PLC基本概念 (5) 2.2PLC的基本结构 (5) 2.3PLC的工作原理 (6) 三.组态王简介 (7) 3.1组态王基本特性 (7) 3.2组态王与西门子S7-200的几种通信方式 (8) 四.总体设计方案 (10) 4.1控制要求 (10) 4.2设计思路 (10) 4.3PLC外部接线图 (11) 4.4I/O分配表 (11) 4.5PLC梯形图 (13) 4.6组态王监控画面显示 (16) 五.个人小结 (17) 参考文献 (18)

2014年微机原理课程设计题目-汇总 (1)

1.根据键盘输入的一个数字显示相应的数据螺旋方阵。如输入4,则显示。 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 共需要显示4^2=16个数字。 要求:①根据键盘输入的数字(3-20),显示相应的数据方阵。 ② 画出设计思路流程图,编写相应程序。 2.显示日期或时间。要求:有提示信息,输入字母“r”,可显示系统当前日期;输入字母“s”,可 显示系统当前时间;输入字母“q”,退出程序。 3.字符游戏 随机显示字符ch,等待用户输入 如果输入字符与ch一致,则随机显示下一个字符ch2;否则显示“输入错误”; 如此循环; 输入Enter结束 点击Enter程序退出; 4.从键盘上输入7名裁判的评分(0-10,整数),扣除一个最高分,扣除一个最低分,计算出其它五 个分数的平均值(保留一位小数),并在显示其上输出 “The final score is:”和最终结果。 5.为短跑比赛设计一个确定成绩次序的程序,要求能够输入8个队员编号,成绩;输出最终的排名 次序编号及成绩。(成绩时间格式--秒数:百分秒数,如12:15) 6.为评委设计一个显示选手通过的指示器,以电脑显示屏作为指示屏。当从键盘输入0时,显示屏 上呈现“×”图形,表示选手被淘汰;当从键盘输入1时,显示屏上呈现“√”图形,表示选手通过。 7.试设计一个道路收费系统,将车型分为大型车、中型车、小型车,每种车型分别有各自的单公里 收费标准,如下表所示,在收费时,将车型和公里数输入系统,就可自动生成收费额,(公里数取整。收费额以元为单位,保留一位小数)。 序号 车型 单公里收费(单位:0.1元) 1 大型车 5 2 中型车 3 3 小型车 1 8.通过实验箱TDN实现8个LED灯循环闪烁。 要求:首先是1、3、5、7号LED灯以此亮1秒钟,当第7号LED灯亮后,这四个灯同时闪烁5下; 然后,2、4、6、8号灯依次亮1秒钟,当第8号灯亮后,这四个灯同时闪烁5下。 9.为男子25米手枪速射决赛设计一个排名程序。决赛有6名运动员参加,每人每轮次打5枪,每枪 打中靶子的中心区就计一分,打不中就记0分。四轮比赛之后,先将成绩最低的选手淘汰(即为

微机原理课程设计报告

微型计算机技术课程设计 指导教师: 班级: 姓名: 学号: 班内序号: 课设日期: _________________________

目录 一、课程设计题目................. 错误!未定义书签。 二、设计目的..................... 错误!未定义书签。 三、设计内容..................... 错误!未定义书签。 四、设计所需器材与工具 (3) 五、设计思路..................... 错误!未定义书签。 六、设计步骤(含流程图和代码) ..... 错误!未定义书签。 七、课程设计小结 (36)

一、课程设计题目:点阵显示系统电路及程序设计 利用《汇编语言与微型计算机技术》课程中所学的可编程接口芯片8253、8255A、8259设计一个基于微机控制的点阵显示系统。 二、设计目的 1.通过本设计,使学生综合运用《汇编语言与微型计算机技术》、《数字电子技术》等课程的内容,为今后从事计算机检测与控制工作奠定一定的基础。 2.掌握接口芯片8253、8255A、8259等可编程器件、译码器74LS138、8路同相三态双向总线收发器74LS245、点阵显示器件的使用。 3.学会用汇编语言编写一个较完整的实用程序。 4.掌握微型计算机技术应用开发的全过程,包括需求分析、原理图设计、元器件选用、布线、编程、调试、撰写报告等步骤。 三、设计内容 1.点阵显示系统启动后的初始状态 在计算机显示器上出现菜单: dot matrix display system 1.←left shift display 2.↑up shift display 3.s stop 4.Esc Exit 2.点阵显示系统运行状态 按计算机光标←键,点阵逐列向左移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标↑键,点阵逐行向上移动并显示:“微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓”。 按计算机光标s键,点阵停止移动并显示当前字符。 3.结束程序运行状态 按计算机Esc键,结束点阵显示系统运行状态并显示“停”。 四.设计所需器材与工具 1.一块实验面包板(内含时钟信号1MHz或2MHz)。 2.可编程芯片8253、8255、74LS245、74LS138各一片,16×16点阵显示器件一片。

霓虹灯的PLC控制系统设计概要(doc 16页)

霓虹灯的PLC控制系统设计概要(doc 16页)

前言 随着改革的不断深入,社会主义市场经济的不断繁荣和发展,个大中小城市都在进行亮化工程。个企业为宣传自己企业的形象和产品,均采用广告手法之一:霓虹灯广告屏来实现这一目的.当我们夜晚走在大街上,马路两旁各色各样的霓虹灯广告均可以见到,一种是采用霓虹灯管做成的各种形状和多中彩色的灯管,另一种为日光等管或白炽灯管作为光源,另配大型广告语或宣传画来达到宣传的效果。这些灯的亮灭,闪烁时间及流动方向等均可以通过PLC来达到控制的要求. 可编程控制器PLC可编程序控制器:英文全称Programmable Logic Controller ,中文全称为可编程逻辑控制器,是一种数字运算操作的电子系统,专为在工业环境应用而设计的。它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算,顺序控制,定时,计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程. 可编程控制器是工业环境下应用及满足用户需要而设计,它具有以下的特点:(1)可靠性高。平均无故障工作时间场合故障平均修复时间短。可在恶劣的环境下工作。简单、操作方便而使失误少。 (2)柔性好。柔性好是指在使用过程中的适应性和灵活性。只需通过程序的编制和更改即可适应生产的要求。 (3)功能强大。可编程控制器不但具有开关量控制、模拟量控制、数据通信、中断控制等完善的功能。 (4)使用方便。编程方便,极易被技术人员接受和掌握,操作方便。 (5)体积小,功耗低。可编程控制器以其丰富的功能和显著的特点得到了广泛的运用。 关键词: PLC 霓虹灯控制系统

微机原理课程设计

、 微机原理课程设计 —数据采集系统(查询法) # (

一、课设目的 进一步掌握微机原理只是,了解危机在实时采集过程中的应用,学习、掌握编程和程序调试方法。 , 二、课设内容 用查询法,将ADC 0809通道0外接0~5V电压,转换成数字量后,在七段LED数码管上,以小数点后两位(几十毫伏)的精度,显示其模拟电压的十进值;0809~道0的数字量以线性控制方式送DAC0832输出,当通道O的电压为5V时,0832的OUT为0v,当通道O的电压为0时,0832的OUT为2.5V;此模拟电压再送到ADC0809通道1,转换后的数字量在CRT上以十六进制显示;通道0的数字量经74LS574输出到八位LED上,且以一定的要求,点亮LED指示灯。调整电位器,用示波器或三用表观察0832的变化,观察七段LED数码管数值的变化,观察LED灯的变化, ADC 0809的CLK脉冲,由定时器8254的OUT0提供;ADC 0809的EOC信号,用8255的PC0检测;74LS574外接的LED灯变化如下:若电压值小于0.5V,则最低位(DO)’LED灯亮,若电压值大于4.5V,则最高位LED灯亮,若电压值在0.5V~4.5V,则八位LED灯由低向高变化亮,且高位LED灯亮时低位灯全亮。 要有较好的人机对话界面;控制程序的运行。 三、硬件设计 1、电原理框图 见附件1 2、电原理框图工作过程的简要说明 【 (1)、ADC 0809的INO采集电位器0—5V电压,INl采集0832输出的模拟量。(2)、DAC 0832将ADC 0809的INO数字量后重新转换成模拟量输出。 (3)、8255用于检测ADC 0809转换是否,为七段LED数码管显示提供显示驱动信息。 (4)、七段LED数码管显示ADC 0809的INO的值。 (5)、74LS574驱动八位发光二极管,使它们按要求点亮:来指示当前采样值的范围。 (6)、8254提供ADC 0809的采样时钟脉冲。 (7)、74LSl38译码器为各芯片提供地址信息。 四、软件设计 【 首先进行程序初始化显示提示信息,判断是否有键按下,按下1则继续往下执行,按下2则退出。首先对8254进行初始化选择工作方式及赋初值,然后启动0809的IN0,接着初始化8255,并检测PA7的状态检测转换是否,否继续检测

汇编与微机原理课程设计报告

微机接口课程设计报告 (题目:模拟自动门) 指导老师郭兰英 班级2015240204

目录 一概述 (1) 1.1 课程设计名称 (1) 1.2 课程设计要求 (1) 1.3 课程设计目的 (1) 二设计思想 (1) 三实施方案 (2) 3.1 获得传感器和“门”的状态 (2) 3.2 驱动步进电机和点阵模块 (2) 3.3 实现硬件延时 (3) 四硬件原理 (3) 4.1 中断控制器8259 (4) 4.2并行接口8255 (4) 4.3 定时/计数器8254 (5) 4.4 点阵LED显示屏 (5) 4.5 步进电机 (6) 4.6 红外距离传感器 (7) 五软件流程 (8) 六程序运行结果及分析 (11) 6.1 开门状态 (11) 6.2 关门状态 (12) 6.3 关门操作进行时中断到开门操作 (14)

6.4特殊状态 (15) 七个人感想 (16) 八附录 (18)

一、概述 1.1课程设计名称 模拟自动门 1.2课程设计要求 1)用汇编语言编程完成硬件接口功能设计。 2)硬件电路基于80x86微机接口。 3)程序功能包含:步进电机转动、点阵显示开关门、传感器检测是否有人、8254延时。 4)传感器检测有人时开门,门全开后延时几秒关门,若关门时检测到有人,立刻开门。 1.3课程设计目的 通过本课程设计,让学生对微机系统有一个较面的理解,对典型数字接口电路的应用技术有一个较深入的掌握,并对应用系统进行硬件原理和软件编程进行分析、设计和调试,达到基本掌握简单微型计算机应用系统软硬件的设计方法,提高项目开发能力的目的。要求同学分组完成课题,写出课程设计说明书,画出电路原理图,说明工作原理,编写设计程序及程序流程图。 二、设计思想 本程序主要功能是模拟商场等公共场所的自动门,实现有物体靠近并被传感器检测到时发生一系列变化的效果,模拟实现开门关门的功能。 为了尽量模拟真实场景下的自动门状态变化,本程序主要可以实现以下功能: 1、当传感器可检测范围内检测到物体,并且“门”为“关”的状态,立即“打开门”,即用一系列的硬件动作模拟自动门打开的动作和状态。 2、当“门”完全打开后一段时间后,传感器范围内检测不到物体时,立即“关闭门”, 用一系列的硬件动作模拟自动门关闭的动作和状态。

霓虹灯模拟显示课程设计

霓虹灯模拟显示课程设计

1.设计任务及要求分析 本次课程设计要求用汇编语言设计“霓虹灯”模拟显示,需要实现的功能如下:1、按下b/B键,分六笔快速画出矩形及其两条对角线;2、按下y/Y 键,流水灯从左到右依次点亮,然后一次熄灭;3、按下q/Q键,退出程序。分析本设计不需要硬件设备,在微机原理实验集成环境MF2KP中编写程序,调用DOS命令和BIOS命令,并用合适的字符代替霓虹灯来实现。 1方案论证 2.1方案一 我们可以采用编写延时子程序的方法来实现延时,这种方法的主要原理是运用计算机相应每一条的时间积累。程序如下: push bx push cx mov cx ,xx ;输入正数 A1: mov bx,xx ;输入正数 A2: dec bx Jnz A1 Loop A2 pop cx pop bx 此方案的原理是运用循环指令来进行,主要通过设置cx和bx的值来进行复循环,从而达到时间的积累即延时。 2.2方案二 方案二:运用DOS功能调用。采用21H来中断调用,功能号为AH=2CH,完成的功能是设置时间,DH的值变换一次是0.01秒,这样通过设置DH的值来设

置时间的延时。 2.3方案比较 两种方案在理论上都是可行的,但是课程设计任务在时间要求上不是很严格 只要区分快慢的大概效果既可,故选择方案一。 3设计原理 3.1设计思想 本次课程设计主要中显示图案是通过显示单个字符逐步实现的,通过移动光标可以改变字符输出的位置,位置的改变又是通过宏定义定义了一个程序段用于改变光标,设计了两个变量分别为光标在屏幕上的行和列坐标,把已经设计好了的图案的行列坐标分别定义在数据段的行列数据组里,用指针自加的方式进行连续调用显示。在显示中插入延时程序控制显示的效果。本次课程设计设计了二个延时程序分别满足二种不同的延时需要。延时程序是通过LOOP循环来实现的,可以改变CX的值来改变延时的长短。本次课设还涉及到清屏功能,故设计了一个清屏子程序,通过BIOS功能的调用实现清屏,和屏幕属性的设置。 整个程序分为三部分:第一段是继续与否的选择,检查输入是否为设计的字符b/B,是则进入下一程序断,否则继续检测;第二段是快速显示设计图案,通过光标移动逐步显示完预设图案,并询问是否进入下一程序段,检查输入是否为字符y\Y,是则进入下一程序段,否则跳回第二段程序重复执行一遍;第三段程序以较慢速度依次出现“*”,以实现模拟流水灯的效果,然后一次消失,在这个过程中检查是否有“q/Q”输入,有则跳转到中止程序段退出程序,否则继续。

武科大微机原理课程设计

一、设计题目 键控数据采集及数值显示电路设计 二、设计任务 按不同的数字键(0、1、2、3、4、5、6、7)采集0809相应数据通道的模拟量,并在LED 数码管上显示值。设定输入模拟量在0—5V范围内,显示值在0—255范围内。 三、设计要求 1.画出连接线路图或功能模块引脚连接图。 2.采用8088CPU作主控制器,0809作A/D转换器,采用直接地址译码方法,给各芯片分配地址,选取芯片中必须包含有8255。 3.采用3个共阴极型LED动态显示,只需显示0—255范围内的值。 四、设计思想及需要用的主要芯片 1、设计思想 首先通过编程对8255初始化,然后通过8255对ADC0809转换器初始化,通过0~7号按键(在这里0~7号按键用开关实现,有按键的过程中会有抖动,所以需要加入一个74LS244芯片,用于缓冲),经8088微处理器处理后选择ADC0809的模拟通道,将0~5V内的模拟量通过选择的模拟通道传递给模数转换器,通过转换器把模拟量转换为0~255之间的数字量,将数字量通过可编程并行接口8255(在这里端口A作为数据输入端,端口B作为数据输出端,端口C作为控制端),送给LED数码管显示。 2.主要芯片及其功能 ADC0809与系统的接口包括两个输出口和一个输入口,第一个输出口用于控制芯片内部的模拟通道选择,CPU输出的通道地址从ADC0809的引脚ADDA、ADDB、ADDC输入,并利用ALE信号触发锁存;第二个输出口是哑元,用以触发ADC0809的引脚START启动转换。当转换结束后,ADC0809的引脚EOC会产生一个高电平的状态信号,该信号用于检测,也可用于申请中断。随后,CPU可以从ADC0809的引脚D0-D7输入转换后的数据。其芯片引脚图如下 8255是并行通信接口芯片,其基本功能是以并行的方式在系统总线与I/O设备之间传送

微机原理课程设计实验报告DOC

河北科技大学 课程设计报告 学生姓名:学号: 专业班级: 课程名称: 学年学期: 指导教师: 年月

课程设计成绩评定表 学生姓名学号成绩 专业班级起止时间2011.12.24—2012.11.28 设计题目字符串动画显示 指 导 教 师 评 语 指导教师: 年月日

目录 一、课程设计的目的 (1) 二、设计题目 (1) 三、设计内容要求 (2) 四、设计成员及分工 (2) 五、课程设计的主要步骤 (2) 六、课程设计原理及方案 (3) 七、实现方法 (3) 八、实施结果 (8) 九、总结 (8) 十、体会感受 (8)

一、课程设计的目的 课程设计是以自己动手动脑,亲手设计与调试的。它将基本技能训练、基本工艺知识和创新启蒙有机结合,培养我们的实践和创新能力。课程设计的意义,不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力。作为信息时代的大学生,基本的动手能力是一切工作和创造的基础和必要条件。 课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识解决实际工程设计和应用问题的能力的重要教学环节,它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一种较好方法。 《微机原理及应用》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,学生就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。所以通过有针对性的课程设计,使学生学会系统地综合运用所学的理论知识,提高学生在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。 通过课程设计实践,不仅要培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能以图纸和说明书等表达设计思想和结果的能力。培养学生事实求是和严肃认真的工作态度。 通过设计过程,要求学生熟悉和掌握微机系统的软件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的系统方案论证设计、编程、软件调试、查阅资料、编写说明书等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计使学生熟练的熟练掌握微机系统的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的软件调试方法和步骤,熟悉微机系统的软件开发工具的使用方法。 二、设计题目

霓虹灯显示程序设计

引言 我们知道汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言,汇编语言对于硬件的控制具有独特的优势。一方面,汇编语言指令是用一些具有相应含义的助忆符来表达的,所以,它要比机器语言容易掌握和运用,但另一方面,它要直接使用CPU的资源,相对高级程序设计语言来说,它又显得难掌握。 霓虹灯是日常生活中常见的灯饰,它装点了夜空,丰富了人们的生活,让夜间的城市更加美丽。通过汇编语言的学习,我们通过汇编语言,可实现霓虹灯的控制与操作,实现其显示与闪烁,或者是其他的动态变化,从而可以很方便的达到理想效果。INT 10H 是由BIOS 对屏幕及显示器所提供的服务程序,汇编语言的INT 10号中断提供了设置显示模式、设置颜色模式、设置光标位置、按指定属性显示字符等功能,可以显示汉字或图像,同时也提供了初始化屏幕或滚屏等功能号,通过擦除子程序以及清屏子程序的配合运用,可以达到让汉字或图像闪烁或运动的功能。而文字的显示我们又可以通过取模软件轻松获得,这使得整个编译过程轻松了很多,同时可以让文字或图标的显示更加规范和多样化,达到霓虹灯多样变化的目的。 本次课程设计,研究的正是霓虹灯显示程序设计,我们可通过对INT 10号中断的功能调用实现,设计出我们想要的霓虹灯显示效果。在整个设计过程,我们可以加强对课本知识的巩固,并借此拓展自己的知识面。 关键词:汇编语言霓虹灯中断字符运行调试 1设计要求及分析 1.1设计要求 1)用汇编语言编写一个霓虹灯的模拟显示程序; 2)在屏幕上显示你的中文名字或其它文字,按某种规律闪烁变化,按“q”键退出; 3)撰写课程设计说明书。内容包括:摘要、目录、正文、参考文献、附录(程序清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。

微机原理课程设计报告-数字时钟的实现(附代码)

合肥工业大学 计算机与信息学院 课程设计 课程:微机原理与接口技术设计专业班级:计算机科学与技术x班学号: 姓名:

一、设计题目及要求: 【课题6】数字时钟 1.通过8253 定时器作产生秒脉冲定时中断。在中断服务程序中实现秒、分、小时的进位(24小时制)。 2.在七段数码管上显示当前的时分秒(例如,12 点10 分40 秒显示为121040)。 3.按“C”可设置时钟的时间当前值(对准时间)。 二、设计思想: 总体思想: 1、功能概述: 实验箱连线: 本实验建立在Dais实验箱基础上完成的基本连线及程序如下: 138译码器: A,B,C,D,分别连接A2,A3,A4,GS; y0连接8253的CS片选信号; y1连接8259的CS片选信号; 8253连线: 分频信号T2接8253的CLK0; 8253的OUT0接8259的IR7; 8253的gate信号接+5V; 8259连线: 8259的数据线接入数据总线;

本程序包括显示模块,键盘扫描模块,时间计数模块,设置模块等几个模块, (1)程序运行后,LED显示000000初始值,并且开始计数 (2)按C键进行设置初始时间,考虑到第一个数只能是0,1,2,当第一个数显示2时第二个数只能显示0~4,同理下面各位应满足时钟数值的合理的取值; (3)在手动输入初始值时,按D键进行回退1位修改已设置值,连续按D键可以全部进行删除修改。 2、主程序设计 主程序中完成通过调用子程序完成对8253及8259的初始化,对8259进行中断设置。主要在显示子程序和键盘子处理程序之间不断循环,8253每一秒给8259一个刺激,当8259接受到刺激后会给CPU一个中断请求,CPU会转去执行中断子程序,而中断子程序设置成时间计数加,即完成电子表的整体设计。详细流程图见图三-1。 3、LED显示子程序设计 本程序显示部分用了6个共阳极LED作为显示管,显示程序要做到每送一次段码就送一次位码,每送一次位码后,将位码中的0右移1位作为下次的位码,从而可以实现从左到右使6个LED依次显示出相应的数字。虽然CPU每隔一定时间便执行显示程序,但只要这个时间段不太长,由于人眼的视觉作用,就可以在6个LED上同时见到数字显示。 4、键盘扫描子程序设计 本程序需要用键盘对时间的初始值进行设置,因此对键盘扫描的子程序需要满足的功能如下: 判断是否是C键,若不是就返回至主程序,若是C键就开始对时间初始值进行设置,同时因注意到第一个值不可以超过2,第一个数是2时第二数不能超过4,余下的同理要满足时间数值的取值范围呢,若不是合法输入不予反应继续等待输入。当遇到输入数值错误时可以按下D键进行删除一位重新设置;当6位初始值全部设置成功后,电子表将自动开始走表。 5、时间运算子程序设计 该子程序的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟

微机原理课程设计

微机原理与应用课程设计

目录 一、设计任务 1、计时秒表,具有分、秒和百分之一秒的计时功能。 2、可以在屏幕中央显示计时结果,屏幕显示彩色图案和文字。 3、秒表具有键控启/停功能,而且可以随时通过键盘复位,清零。 二、设计原理 1、HALT(启动子程序) 2、DIS(宏定义——苹果显示程序) 3、DISS(宏定义——字符串的输出) 4、CLOUR(字体颜色设置程序) 5、IOSET(设置光标位置子程序) 6、GO(初始化显示子程序) 7、TIME(延时子程序) 8、TRAN(压缩BCD码转ASCII码程序) 9、复位、停止等功能的实现 三、流程图 a)主程序流程图 b)压缩BCD转ASCII码子程序流程图 c)延时子程序流程图 四、程序段 五、程序调试 六、程序运行结果 七、心得体会

八、参考文献 一、设计任务: 1.计时秒表,具有分、秒和百分之一秒的计时功能,并可以在屏幕中央显示计时结果。 2.屏幕显示彩色图案和文字。 3.秒表具有键控启/停功能,而且可以随时通过键盘复位,清零。 二、设计原理: 本程序的主要设计原理是用主程序完成百分之一秒与秒之间的转换,显示计时结果,实现暂停,暂停再启动,复位,复位再启动的功能,并通过调用一些附加程序,缩减主程序的长度,提高运行效率和精度,现将用到的所有附加程序的原理及其在运行过程中所起到的作用汇总如下: 1.DIS(宏定义——苹果显示程序) 通过宏调用,实现苹果图案的显示。在宏定义里,设置一个形参变量,作为移动光标的位置,在下面调用宏中,给予变量X不同的实参,输出苹果图案。 2.DISS(宏定义——字符串的输出) 原理同上。 3.CLOUR(字体颜色设置程序) 通过字体颜色设置程序,实现屏显字体颜色的改变。当改变BX值时,字体颜色会改变。 4.HALT(启动子程序) 通过启动子程序,实现计时的开始,当从键盘输入一个字符时,判断是否等于S,如果不等,则在循环执行启动子程序中动态等待,直到输入的字符为S 时,计时开始。 5.IOSET(设置光标位置子程序) 通过设置光标子程序,来设置显示的区域。一般整个屏幕可显示25行,80列,屏幕左上角字符位置为0行0列,右下脚字符为24行79列,对应十六进制为:左上脚为(0,0),右下脚为(18,4F)。入口信息为:(AH)=2 要设置光标;(BH)=0 页号;(DH,DL)=00要置光标于0行0列。DX赋值为0D27H,光标置位于屏幕中央。 6.GO(初始化显示子程序) 通过将在数据段定义的BUFFER数组的首址赋给BX,将待显示初值字符串00:00存入数组中的相应位置,当每次复位以后,重新调用该子程序,将程序的执行结果修正为00:00,并显示于屏幕上,从而实现了程序的初值设定和复位功能。 7.TIME(延时子程序) 计算机每执行一条指令,虽然很快,但是需要一些时间,因此在本程序中可以通过延时程序,让计算机去执行一些无关的程序,来达到时钟秒与百分之一秒转换时的时间延迟。每条指令执行时间的长短,是以计算机的时钟周期为基本单位的,因此不同的计算机可以通过修改延时程序数值来使其达到准确计时。 8.TRAN(压缩BCD码转ASCII码程序)

汇编语言霓虹灯字符显示

信息工程学院 《汇编语言程序设计》课程设计 设计题目:霓虹灯的字符显示 年级专业: 组长: 小组成员: 指导教师: 完成日期:

霓虹灯的字符显示 【摘要】: 五光十色的霓虹灯对于我们并不陌生,但却从不知道是如何被设计和应用的,通过本学期学习的汇编语言,我组在本次课程设计中便尝试设计模拟霓虹灯显示,所以,设计内容是采用本学期所学的8086汇编语言设计一个运行于计算机的“霓虹灯”的模拟显示程序。霓虹灯的主题为英文单词“HELLO”,在白色单词的基础上,红色不断的在每个英文字母上循环闪烁。并且,键盘数字键“1”和“2”均可控制不同的闪烁方式,按键“ESC”可控制退出程序运行。这就要求了该霓虹灯能够动态的进行变化,最后,按键“esc”退出,以免程序一直运行导致电脑死机。该霓虹灯模拟显示程序主要是进行程序的循环、子程序的调用,来完成这一动态变化效果。 【Abstract】 Colorful neon no stranger to us, but they never know how the design and application, through the semester to learn assembly language, I team during the course design, the design will try to simulate neon display, so the design content is learned this semester using 8086 assembly language running on the computer to design a "neon" analog display program. Neon theme for the English word "HELLO", in white the word, based on constantly in the red letters on each cycle of flicker. Also, the keyboard number keys "1" and "2" can be controlled flashes of different ways, the key "ESC" to control exit program is running. This requires that the neon can be changed dynamically, and finally, the key "esc" to exit, so as not to cause the computer to crash the program has been run. The neon analog display program is primarily one of the program cycle, a subroutine call, to complete this dynamic effect. 关键词:霓虹灯;汇编语言;子程序;循环

8086.8088微机原理课程设计

8086/8088微机原理课程设计 1、课程设计说明 “微机原理与接口技术课程设计”主要是测试学生的8086/8088系统输入输出技术应用能力、数字电路应用能力和程序设计能力。 设计题目中综合了《数字逻辑》、《微机原理与接口技术》和《程序设计基础》等课程中的相关知识点。特别是电气工程系各专业学习了《模拟电子》、《传感器技术》、《单片机技术》等课程,给题目的扩展和实际应用提供了基础。本课程的课程设计实际上是一个综合性应用的设计和制作。 这里只给出了部分课程设计的题目,主要和接口电路有关,每个题目的实现方式和扩展空间都很大,指导教师可根据学生的具体情况决定设计题目的内容和设计量。纯汇编语言软件的设计未在这里列出。 欢迎学生自拟题目,经指导教师审核其难易程度和确定所用器材,优先选用。 2、课程设计计分办法 课程设计的计分由课设题目(60)、课设报告(20)、考勤(20)三部分组成。 一、题目的选择 设计题目分为星级制(★),根据选择题目的难易程度确定成绩,以百分制计算,按比例计入总成绩。要根据个人情况合理选择题目,不可多组选择同一题目。 1、无星为最简题目,做完多个题目仅记分为及格(69分及以下)。 2、1星(★)为简单题目,做完1个题目记分为良(70~89分)。 3、2星(★★)为较难题目,做完1个题目记分优(90~100分)。 4、星级题目多做可提高分值。 5、课设一般为分组实施,主要设计者记原星级分值,辅助者减1星。 6.、未完成设计者视设计程度减星计分。 7、无星题目可单人完成,但不选题目者记0分。 二、报告要求 课设报告应按规定格式书写,并按时上交。报告原则上要求手工书写,如要打印必须是独立版本,遇雷同课设报告均不计入总成绩。 三、考勤 考勤。点名一次未到扣5分,5次以上记0分。

相关主题
文本预览
相关文档 最新文档