微机原理课程设计指导书教材.docx
《微机原理课程设计指导书教材.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计指导书教材.docx(15页珍藏版)》请在冰豆网上搜索。
微机原理课程设计指导书教材
《微机原理及应用》课程设计指导书
软件按照学号末尾选做
东华大学信息科学与技术学院自动化系
2015年9月1日
一、课程设计目的
本课程设计是继《微机系统及应用》课程之后的一次综合性设计、实验训练。
根据微机系统及应用课程教学的重点和主要知识点及工程实际需要,设置汇编语言程序设计、PC机内部接口和8086系统接口电路设计等设计题目。
要求学生综合本课程和其它相关课程中学到的80X86系统结构、汇编语言设计、典型接口芯片、电路电子技术等相关知识进行程序设计、硬件接口电路设计和调试,系统地掌握微机原理和接口技术的相关知识,实现知识的融会贯通。
要求学生通过课程设计的学习,提高设计汇编语言程序的能力和技巧,培养实现一个简单应用系统功能的硬件软件设计能力。
二、课程设计内容
一)汇编语言程序设计及调试
0)PC机实时时钟的设计
利用PC机现有的硬件和软件资源设计程序,以实现在显示器上显示XX(时):
XX(分):
XX(秒)。
(1)设计思路
PC机系统板上使用一片8253,其地址为40H—43H,其通道0以方式3工作,每55ms向中断控制器8259AIRQ0端发一次中断请求。
本设计题要求借用原有电路,重新设置8253的计数器0每10ms产生一次中断,100次中断后加1秒,然后调整时、分、秒并显示在屏幕上。
(2)实时时钟的功能
按下任意键开始显示数据区中存放的时间值,并且每秒更新一次,运行中按下空格键则停止运行并返回DOS。
程序中应保护原系统的08H中断矢量以便退出时恢复原系统的设置。
(3)题目的要求
①PC机实时时钟的基本程序如附录一,请根据中断服务程序设计时钟时、分、秒调整的中断报务程序,然后调试实现时钟的基本功能
②在原有程序基础上,增加键盘输入字符功能,可通过修改时、分、秒的数据,实现实时时钟可调整功能。
③在原有程序基础上,设计美观的时钟显示方式。
1)光条式菜单程序设计
一个多功能的软件通常以菜单为程序界面,用户可以通过菜单直观地选择各项功能。
(1)设计思路
用汇编语言设计的菜单程序应主要包括3项内容:
①设计界面
要求美观清晰,操作简便,菜单项简洁可用一行表示。
②菜单项选择
利用“色带”选择菜单项。
色带是颜色鲜明的条形光带,可以覆盖一个菜单项,用户利用“↑”、“↓”、“←”、“→”键移动色带位置,然后按下回车键,被色带覆盖的菜单项就被选中。
③菜单项程序的组织和调用
菜单项较多时,可为每一个菜单项设计一个独立的菜单项程序,采用JMP、CALL指令调用程序段;菜单项较少时,不必为第一个菜单项设计一个独立的程序,此时界面显示、菜单项选择和菜单项程序可包含在一个程序中。
(2)关键技术
①定位显示彩色字符串
利用BIOS中的INT10H的13H号功能可以设计一个定位显示彩色字符串的程序段
调用:
AH=13H,AL=写方式:
0属性在BL中,字符串中仅含字符码,写后光标位置
不被修改
1属性在BL中,字符串中仅含字符码,写后修改光标
位置;
BH=页;
BL=待显字符串的属性,07H表示正常显示,0FH表示黑底白字,51H
表示品红色背景蓝色字符串
CX=待显字符串的长度;
DH=待显字符串首字符的行值
DL=待显字符中首字符的列值
BP=待显字符串首字符在附加段的偏移地址行值
②色带的生成和移动
在调用上一个字符显示程序时,将待显字符串的属性设为51H,色带就生成;设为0FH时,色带就消失。
使当前色带消失,然后在下一个位置上生成色带,就达到色带的移动。
③设置一个NN单元
存放色带的位置,NN单元的内容跟踪色带位置的变化。
利用NN单元的值可以计算出色带位置的行号和色带覆盖菜单项字符的偏移地址。
(3)题目要求
①单级菜单程序见附录二,调试程序并分析程序以理解程序的功能。
②在原有程序的基础上,设计程序实现二级菜单功能。
2)波形显示程序设计
试利用PC机显示器软件中断(INT10H)功能(VGA模式640*480),设计一个波形显示程序。
显示器水平方向为时间轴,垂直方向为信号幅度。
测试信号为正弦波信号和三角波信号。
要求:
基本要求:
能显示正弦波波形和三角波形(50Hz)。
扩展:
在基本要求基础上,能通过键盘实现时间刻度可变,信号增益可变。
3)四则混合运算器设计
要求:
设计一个可以进行2位数四则运算的计算器。
1、用按键输入数和运算符号(表达式最多两个运算符,如3*2+4);2、在显示器上运算结果(十进制数);3、具有清零和复位功能;5、具有连续运算功能。
4)图形切换
要求以菜单方式进行选择,有四种情况。
按下‘1’显示一个圆;按下‘2’显示一个三角形;按下‘3’显示一个矩形;按下‘q’,退出。
要求有提示。
5)字符串输入
随机出现一个不少于30个字符ASCII字符串,按空格键开始输入,如果输入的字符与原字符不相符,则用不同颜色标记。
要求有提示。
6)显示杨辉三角形
从键盘接收正整数N;屏幕显示杨辉三角形,显示N行信息.
7)图形移动
图形的移动可以分几步进行:
(1)先在屏幕上显示某个图形;
(2)延时适当时间;
(3)清除这个图形;
(4)改变图形显示的行列坐标;
(5)返回第
(1)步,重复上述过程。
按下回车结束。
8)九九乘法表
用汇编语言编写九九乘法表在屏幕上显示出来,而且能按一定规律显示.1键为横向排列;2键为颜色输出;0键为取消该功能即退出该程序。
9).代码转换
完成一个字母或数制之间的转化程序,主程序分别具有5种可选择的子功能,按相应的字符可分别进入相应的子功能并在屏幕上显示结果,按“q”键退出。
5种可选择的子功能分别为:
(1)实现小写字母向大写字母的转换
(2)实现大写字母向小写字母的转换
(3)实现二进制数向十六进制数的转换
(4)实现十六进制数向二进制数的转换
(5)实现十六进制数向十进制数的转换
(二)接口电路设计
1数据采集系统设计
利用8253,8255A,ADC0809设计一个基于8088最小系统的数据采集系统(不包含A/D转换器输入通道中的放大器和采样保持电路),最小系统的时钟频率为5MHz,8253时钟频率为1MHz。
要求每隔200μs采集一个数据,每次启动采集数据时采集时间为20ms(即每次启动一次,共采集100个数据)。
由一个开关手动启动数据采集,数据的I/O传送采用中断方式传送。
8259A地址为20H,21H,仅对8255A,8253地址进行译码,8255A、8253的端口地址为每位同学学号最后4位乘以8,如:
学号后4位是1820,则地址范围为1820*8——1820*8+8。
允许附加必要的门电路、地址译码器和单稳电路等。
完成:
(1)硬件设计,画出连接图(不包括8259A,用正规“米”字方格纸绘制)
(2)软件设计,包括8255A,8253的初始化及中断服务程序(只采集ADC0809的IN0通道)。
2键盘显示接口电路设计
利用8253,8255A设计一个基于8088最小系统的键盘显示接口电路。
键盘为4X4行列式键盘(0-9,A-F),显示器为7段代码LED,共4位,动态显示。
要求每隔200ms扫描一次键盘,解码后的键值在LED显示器上滚动显示。
假定最小系统的时钟频率为5MHz,8253时钟频率为1MHz,键盘软件消抖动。
8259A地址为20H,21H,不用参与译码,8255A,8253的端口地址为每位同学学号最后4位乘以8,如:
学号后4位是1820,则地址范围为1820*8——1820*8+8。
允许附加必要的门电路、地址译码器和单稳电路等。
(1)硬件设计,画出连接图(不包括8259A,用正规“米”字方格纸绘制)
(2)软件设计,包括8255A,8253的初始化及中断服务程序,键盘扫描子程序,LED显示子程序。
3交通灯控制系统
利用8253,8255A,8259等芯片设计一个基于8088最小系统的十字路口交通灯控制系统。
通行时间(绿灯)(或禁止时间(红灯))30秒,准备时间3秒,在准备时间里黄灯闪烁3次,闪烁频率为0.5秒,周而复始。
最小系统的时钟频率为5MHz,8253的时钟频率为1MHz。
8259A地址为20H,21H,不用参与译码,8255A,8253的端口地址为每位同学学号最后4位乘以8,如:
学号后4位是1820,则地址范围为1820*8——1820*8+8。
允许附加必要的门电路、地址译码器和单稳电路等。
(1)硬件设计,画出连接图(不包括8259A,用正规“米”字方格纸绘制)
(2)软件设计,包括8255A,8253的初始化及中断服务程序,控制程序等。
二、要求
要求每位同学独立完成一个汇编语言程序设计和调试,以及一个接口电路设计。
其中,程序设计部分共有0-9十套设计题,请各位同学按照自己的学号末位数对应选择所完成的题目。
汇编语言程序必须实现基本功能,在基本功能基础上要有所发挥,力求创新。
硬件接口电路设计,必须完成手绘原理图(通常画在描图纸上),编出相应的程序。
三、参考资料
1杨素行编微型计算机系统原理及应用,清华大学出版社
2吴宁主编80X86/Pentium微型计算机原理及应用,电子工业出版社
3孙德文主编微型计算机技术,高等教育出版社
4沈美明编IBM-PC汇编语言程序设计,清华大学出版社
附录一
STACKsegmentparastack'stack'
db256dup(0)
stackends
datasegmentparapublic'data'
countdb100
tenhdb'1'
hourdb'3',20h
tenmdb'1'
minutedb'0'
db':
'
tensdb'5'
seconddb'0',0dh,'$'
dataends
codesegmentparapublic'code'
startprocfar
assumecs:
code
pushds
xorax,ax
pushax
movah,01
int21h
cli
cld
movax,0000h
movds,ax
movsi,0020h
lodsw
movbx,ax
lodsw
pushax;seg
pushbx;offset
movax,data
movds,ax
assumeds:
data
movax,0000h
moves,ax
movdi,0020h
movax,offsettimer
stosw
movax,cs
stosw
moval,00110110b
out43h,al
movax,11932
out40h,al
moval,ah
out40h,al
inal,21h
pushax
moval,0fch
sti
forever:
movdl,0ffh
movah,06
int21h
jzdisp
cmpal,20h
jzexit
disp:
movdx,offsettenh
movah,9
int21h
moval,second
waitcha:
cmpal,second
jzwaitcha
jmpforever
exit:
cli
cld
popax
out21h,ax
moval,36h
out43h,al
moval,0
out40h,al
out40h,al
movax,0
moves,ax
movdi,4*8
popax
stosw
popax
stosw
sti
ret
startendp
timer:
pushax
pushcx
sti
moval,count
decal
movcount,al
jnzint_ret
movcount,100
moval,second
addal,1
aaa
movsecond,al
jncint_ret
moval,tens
adcal,0
aaa
andal,0fh
movtens,al
cmpal,6
jnzint_ret
moval,0
movtens,al
moval,minute
addal,1
aaa
movminute,al
jncint_ret
moval,tenm
adcal,0
aaa
andal,0fh
movtenm,al
cmpal,6
jnzint_ret
moval,0
movtenm,al
moval,tenh
movcl,4
shlal,cl
movcl,al
moval,hour
andal,0fh
oral,cl
addal,1
daa
cmpal,24h
jzreseth
movch,al
movcl,4
shral,cl
oral,30h
movtenh,al
moval,ch
andal,0fh
oral,30h
movhour,al
jmpint_ret
reseth:
movtenh,'0'
movhour,'0'
int_ret:
moval,second
andal,0fh
oral,30h
movsecond,al
moval,tens
andal,0fh
oral,30h
movtens,al
moval,tenm
andal,0fh
oral,30h
movtenm,al
moval,minute
andal,0fh
oral,30h
movminute,al
cli
moval,20h
out20h,al
popcx
popax
iret
codeends
endstart
附录二
stacksegmentparastack'stack'
db256dup(0)
stackends
dispmacrox,length,color
movax,1301h
movbx,color
movcx,length
movdh,yy
movdl,x
movbp,addr
int10h
endm
datasegment
l0db'MENU'
l1db'====================='
l2db'|EXAMPLE_1'
l3db'|EXAMPLE_2'
l4db'|EXAMPLE_3'
l5db'|RETURN'
l6db'====================='
LLEQU$-l6
XXequ(80-ll)/2
yydb?
nndw1
tabdw?
l2,l3,l4,l5
addrdw?
dataends
codesegment
assumecs:
code,ds:
data,es:
data
beg:
movax,data
movds,ax
moves,ax
movax,3
int10h
movyy,8
movaddr,offsetl0
last2:
dispxx,ll,0fh
addaddr,ll
incyy
cmpyy,15
jllast2
movnn,1
callcompute
dispxx+3,ll-6,51h
scan:
movah,1
int16h
jzscan
movah,0
int16h
cmpah,80
jedown
cmpah,72
jeup
cmpal,0dh
jeexit
jmpscan
down:
cmpnn,4
jescan
callcompute
dispxx+3,ll-6,0fh
incnn
callcompute
dispxx+3,ll-6,51h
jmpscan
up:
cmpnn,1
jescan
callcompute
dispxx+3,ll-6,0fh
decnn
callcompute
dispxx+3,ll-6,51h
jmpscan
exit:
moval,byteptrnn
movah,4ch
int21h
computeprocnear
movdi,nn
adddi,di
movax,tab[di]
addax,3
movaddr,ax
moval,byteptrnn
addal,9
movyy,al
ret
computeendp
codeends
endbeg
二、课程设计要求
要求每位同学独立完成至少一个软件题目的设计和调试、完成硬件部分实验。
汇编语言程序设计必须实现基本功能,在基本功能基础上要有所发挥,力求创新;硬件接口电路实验遵循硬件部分指导书要求,独立完成每个实验并解决实验中出现的各种问题。
四、参考资料
1杨素行编微型计算机系统原理及应用,清华大学出版社
2吴宁主编80X86/Pentium微型计算机原理及应用,电子工业出版社
3孙德文主编微型计算机技术,高等教育出版社
4沈美明编IBM-PC汇编语言程序设计,清华大学出版社
五、考核
1集中上机调试时间执行严格的考勤制度
2上机实考
3设计报告
注:
独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。
如发现程序或者课程设计报告雷同,一律记不及格。
六、设计报告(须手写,打印无效)
1、所完成课程设计的题目、内容、功能
2、设计思想、原理,模块的划分,程序的流程框图
3、每个程序中,所使用的DOS/BIOS功能调用,宏库文件列表清单;如涉及硬件编程,介绍相应的工作原理
4、程序源代码及注释。
5、调试过程,出现的问题及解决,运行结果,运行说明。
6、硬件工作原理分析,硬件电路接线图,相应的工作程序。
7、课程设计总结及展望。