微机原理课程设计指导书.docx
《微机原理课程设计指导书.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计指导书.docx(17页珍藏版)》请在冰豆网上搜索。
微机原理课程设计指导书
《微机原理及应用》课程设计指导书
软件按照学号末尾选做
东华大学信息科学与技术学院自动化系日1年9月2015
24
/1
一、课程设计目的
本课程设计是继《微机系统及应用》课程之后的一次综合性设计、实验训练。
根据微机系统及应用课程教学的重点和主要知识点及工程实际需要,设置汇编语言程序设计、PC机内部接口和8086系统接口电路设计等设计题目。
要求学生综合本课程和其它相关课程中学到的80X86系统结构、汇编语言设计、典型接口芯片、电路电子技术等相关知识进行程序设计、硬件接口电路设计和调试,系统地掌握微机原理和接口技术的相关知识,实现知识的融会贯通。
要求学生通过课程设计的学习,提高设计汇编语言程序的能力和技巧,培养实现一个简单应用系统功能的硬件软件设计能力。
二、课程设计内容一)汇编语言程序设计及调试
0)PC机实时时钟的设计
利用PC机现有的硬件和软件资源设计程序,以实现在显示器上显示XX(时):
XX(分):
XX(秒)。
(1)设计思路
PC机系统板上使用一片8253,其地址为40H—43H,其通道0以方式3工作,每55ms向中断控制器8259AIRQ0端发一次中断请求。
本设计题要求借用原有电路,重新设置8253的计数器024
/2
每10ms产生一次中断,100次中断后加1秒,然后调整时、分、秒并显示在屏幕上。
(2)实时时钟的功能
按下任意键开始显示数据区中存放的时间值,并且每秒更新一次,运行中按下空格键则停止运行并返回DOS。
程序中应保护原系统的08H中断矢量以便退出时恢复原系统的设置。
(3)题目的要求
①PC机实时时钟的基本程序如附录一,请根据中断服务程序设计时钟时、分、秒调整的中断报务程序,然后调试实现时钟的基本功能
②在原有程序基础上,增加键盘输入字符功能,可通过修改时、分、秒的数据,实现实时时钟可调整功能。
③在原有程序基础上,设计美观的时钟显示方式。
1)光条式菜单程序设计
一个多功能的软件通常以菜单为程序界面,用户可以通过菜单直观地选择各项功能。
(1)设计思路
用汇编语言设计的菜单程序应主要包括3项内容:
①设计界面
要求美观清晰,操作简便,菜单项简洁可用一行表示。
②菜单项选择
24
/3
利用“色带”选择菜单项。
色带是颜色鲜明的条形光带,可以覆盖一个菜单项,用户利用“↑”、“↓”、“←”、“→”键移动色带位置,然后按下回车键,被色带覆盖的菜单项就被选中。
③菜单项程序的组织和调用
菜单项较多时,可为每一个菜单项设计一个独立的菜单项程序,采用JMP、CALL指令调用程序段;菜单项较少时,不必为第一个菜单项设计一个独立的程序,此时界面显示、菜单项选择和菜单项程序可包含在一个程序中。
(2)关键技术
①定位显示彩色字符串
利用BIOS中的INT10H的13H号功能可以设计一个定位显示彩色字符串的程序段
调用:
AH=13H,AL=写方式:
0属性在BL中,字符串中仅含字符码,写后光标位置
不被修改
1属性在BL中,字符串中仅含字符码,写后修改光标
位置;
BH=页;
BL=待显字符串的属性,07H表示正常显示,0FH表示黑底白字,51H
24
/4
表示品红色背景蓝色字符串
CX=待显字符串的长度;
DH=待显字符串首字符的行值
DL=待显字符中首字符的列值
BP=待显字符串首字符在附加段的偏移地址行值
②色带的生成和移动
在调用上一个字符显示程序时,将待显字符串的属性设为51H,色带就生成;设为0FH时,色带就消失。
使当前色带消失,然后在下一个位置上生成色带,就达到色带的移动。
③设置一个NN单元
存放色带的位置,NN单元的内容跟踪色带位置的变化。
利用NN单元的值可以计算出色带位置的行号和色带覆盖菜单项字符的偏移地址。
(3)题目要求
①单级菜单程序见附录二,调试程序并分析程序以理解程序的功能。
②在原有程序的基础上,设计程序实现二级菜单功能。
2)波形显示程序设计
试利用PC机显示器软件中断(INT10H)功能(VGA模式24
/5
640*480),设计一个波形显示程序。
显示器水平方向为时间轴,垂直方向为信号幅度。
测试信号为正弦波信号和三角波信号。
要求:
基本要求:
能显示正弦波波形和三角波形(50Hz)。
扩展:
在基本要求基础上,能通过键盘实现时间刻度可变,信号增益可变。
3)四则混合运算器设计
要求:
设计一个可以进行2位数四则运算的计算器。
1、用按键输入数和运算符号(表达式最多两个运算符,如3*2+4);2、在显示器上运算结果(十进制数);3、具有清零和复位功能;5、具有连续运算功能。
4)图形切换
要求以菜单方式进行选择,有四种情况。
按下‘1'显示一个圆;按下‘2'显示一个三角形;按下‘3'显示一个矩形;按下‘q',退出。
要求有提示。
5)字符串输入
随机出现一个不少于30个字符ASCII字符串,按空格键开始输入,如果输入的字符与原字符不相符,则用不同颜色标记。
要求有提示。
6)显示杨辉三角形
从键盘接收正整数N;屏幕显示杨辉三角形,显示N行信息.
24
/6
)先在屏幕上显图形移动图形的移动可以分几步进行:
(17))改变)清除这个图形;(4(示某个图形;2)延时适当时间;(3按重复上述过程。
)5)返回第(1步,图形显示的行列坐标;(下回车结束。
九九乘法表8)而且能按一用汇编语言编写九九乘法表在屏幕上显示出来,键为取消该功键为颜色输出;0定规律显示.1键为横向排列;2即退出该程序能。
代码转换).9
种5完成一个字母或数制之间的转化程序,主程序分别具有按相应的字符可分别进入相应的子功能并在屏可选择的子功能,幕上显示结果,按“q”键退出。
种可选择的子功能分别为:
5
)实现小写字母向大写字母的转换(1
)实现大写字母向小写字母的转换(2
)实现二进制数向十六进制数的转换(3
)实现十六进制数向二进制数的转换4(
)实现十六进制数向十进制数的转换(5
(二)接口电路设计
数据采集系统设计1最小系统的8088ADC08098255A8253利用,,设计一个基于24
/7
数据采集系统(不包含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。
允许附加必要的门电路、地址译码器24
/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十套设计题,请各位同学按照自己的学号末位数对应选择所完成的题24
/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'
24
/10
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
1124
/
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