微机原理实验报告.docx
- 文档编号:24150319
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:18
- 大小:262.48KB
微机原理实验报告.docx
《微机原理实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
微机原理实验报告
南通大学电子信息学院
微机原理与接口技术课程设计
报告书
课题名数字时钟
班级xxxxxx
姓名xxxx
学号xxxxxxx
指导教师xxx
日期x.x.x-x.x.x
目录
一、设计目的…………………………………………………………………………3
二、设计内容…………………………………………………………………………3
三、设计要求…………………………………………………………………………3
四、设计原理与硬件电路……………………………………………………………3
1、设计原理…………………………………………………………………3
2、整体电路图………………………………………………………………3
3、局部电路图………………………………………………………………4
五、设计流程图………………………………………………………………………5
六、程序代码…………………………………………………………………………7
七、程序及硬件系统调试情况………………………………………………………13
八、设计总结与体会…………………………………………………………………13
九、参考文献…………………………………………………………………………14
一、设计目的
课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。
它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。
通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。
让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。
通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。
二、设计内容
数字时钟
编程实现时钟功能,按秒刷新,要求定位在屏幕右上角。
三、设计要求
在课程设计时,2~4人一组,在教师指导下,各组可以集体讨论,但设计报告由学生独立完成,不得互相抄袭。
教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。
学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师。
同组同学要发扬团队协作精神,积极主动的提出问题、解决问题、讨论问题,互相帮助和启发。
学生在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。
指导教师要引导学生学会掌握和使用各种已有的技术资料,不能盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。
学生要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。
设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。
四、设计原理与硬件电路
1、设计原理:
8253A产中断信号送到8086的NMI,设置中断向量,继而转去执行中断服务子程序,使秒加1;若秒计数到60,清0、分加1;若分计数到60,分清0、时加1;若时计数到24,清0。
按键检测:
通过5255A的C口PC0---PC3读取数据,检测相应位是否为0。
若为0,表示有按键按下,转去执行相应的程序。
2、整体连接图
3、局部连接图
五、设计流程图:
七段数码管数字钟的程序设计流程图
六、程序代码:
;----------------8253---------------
MD8253EQU34H;8253控制字--计数器0+16位+方式2+BCD码
CONTROLEQU406H;8253控制口地址
COUNT0EQU400H
COUNT1EQU402H
COUNT2EQU404H
;-----------------8255---------------
MD8255EQU81H;8255控制字--共阳极数码管A,B口输出+C口低四位按键输入+方式0
CTL8255EQU206H;8255控制口
OUTSEGEQU200H;A-段控制口
OUTBITEQU202H;B-位控制口
CHANGEAEQU204H;C-地址用于修改时间
DATASEGMENT
CNTDB0
LEDBUFDB8DUP(?
);显示缓冲
NUMDB1DUP(?
);显示的数据
DELAYTDB1DUP(?
)
HOURDB12
MINUTEDB30
SECONDDB0
LEDMAPDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH;七段管显示码
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
MAINPROCFAR
START:
MOVAX,DATA
MOVDS,AX
;--------------------------------
MOVAX,0
MOVES,AX
MOVDI,4*2
MOVAX,OFFSETIENTERR
CLD
STOSW
MOVAX,SEGIENTERR
STOSW
MOVAX,DATA
MOVES,AX
;--------------------------------
MOVAL,MD8253;8253控制字
MOVDX,CONTROL
OUTDX,AL
MOVAx,10000;利用8253计数器0
MOVDX,COUNT0
OUTDX,AL
MOVAL,AH
OUTDX,AL;两次写入,先写低字节,后写入高字节
;------------------------------
MOVAL,MD8255;8255初始化
MOVDX,CTL8255
OUTDX,AL
;---------------数值转换----------------------------------------------------
LP:
MOVAL,HOUR
MOVAH,0
MOVCL,10
DIVCL
MOVCH,AH;AH存余数,即个位,AL存商,即十位
MOVAH,0
MOVBX,OFFSETLEDMAP
ADDBX,AX
MOVAL,[BX];时的十位转换成显示码
MOVLEDBUF,AL;显示码存入显示缓冲区
MOVBX,OFFSETLEDMAP
MOVAL,CH
MOVAH,0
ADDBX,AX
MOVAL,[BX];时的个位转换成显示码
MOVLEDBUF+1,AL;显示码存入后一位显示缓冲区
MOVLEDBUF+2,0BFH
MOVAL,MINUTE
MOVAH,0
MOVCL,10
DIVCL
MOVCH,AH
MOVAH,0
MOVBX,OFFSETLEDMAP
ADDBX,AX
MOVAL,[BX];分的十位转换成显示码
MOVLEDBUF+3,AL
MOVBX,OFFSETLEDMAP
MOVAL,CH
MOVAH,0
ADDBX,AX
MOVAL,[BX];ORAL,80H
MOVLEDBUF+4,AL
MOVLEDBUF+5,0BFH
MOVAL,SECOND
MOVAH,0
MOVCL,10
DIVCL
MOVCH,AH
MOVAH,0
MOVBX,OFFSETLEDMAP
ADDBX,AX
MOVAL,[BX];秒的十位转换成显示码
MOVLEDBUF+6,AL
MOVBX,OFFSETLEDMAP
MOVAL,CH
MOVAH,0
ADDBX,AX
MOVAL,[BX];分的个位转换成显示码
MOVLEDBUF+7,AL
;----------------数码管显示------------------------------------------------------
MOVBX,OFFSETLEDBUF
MOVSI,8;共8个八段管
MOVAH,00000001B;从左边开始显示
DLOOP:
MOVDX,OUTBIT
MOVAL,0
OUTDX,AL;关所有八段管
MOVAL,[BX]
MOVDX,OUTSEG
OUTDX,AL
MOVDX,OUTBIT
MOVAL,AH
OUTDX,AL;显示一位八段管
MOVCX,0080H
LOOP$
SHLAH,1
INCBX
DECSI
JNZDLOOP
MOVDX,OUTBIT
MOVAL,0
OUTDX,AL;关所有八段管
;----------------按键检测-------------------------------------------------
MOVDX,204H
INAL,DX;读入C口是否有键按下
ANDAL,0FH;屏蔽高5位
CMPAL,0FH;检查是否全为零
JZEXIT0;没有键按下不需要修改退出
MOVCX,2500H
LOOP$;延迟20ms消键盘抖动
INAL,DX;再次读入C口
ANDAL,0FH
CMPAL,0FH
JZEXIT0;确认第一次检查为干扰键盘退出
MOVBL,AL;不是干扰存开关量入寄存器BL
RESET:
ANDAL,01H;KEY1
JZHOU_INC
MOVAL,BL
ANDAL,02H;KEY2
JZHOU_DEC
MOVAL,BL
ANDAL,04H;KEY3
JZMIN_INC
MOVAL,BL
ANDAL,08H;KEY4
JZMIN_DEC
JMPEXIT0
HOU_INC:
INCHOUR
MOVAL,HOUR
CMPAL,24;分数与60比较
JNZEXIT0
MOVHOUR,0;分清零
JMPEXIT0
HOU_DEC:
DECHOUR
MOVAL,HOUR
CMPAL,0;分数与0比较
JNZEXIT0
MOVHOUR,24;分60
JMPEXIT0
MIN_INC:
INCMINUTE
MOVAL,MINUTE
CMPAL,60;分数与60比较
JNZEXIT0
MOVMINUTE,0;分清零
JMPEXIT0
MIN_DEC:
DECMINUTE
MOVAL,MINUTE
CMPAL,0;分数与0比较
JNZEXIT0
MOVMINUTE,60;分60
JMPEXIT0
EXIT0:
NOP
JMPLP
RET
MAINENDP
;-------------------中断响应------------------------------
IENTERRPROC
PUSHAX
PUSHDX
INCSECOND;秒加1
MOVAL,SECOND
CMPAL,60;秒数与60比较
JNEEXIT1
MOVSECOND,0;秒清零
INCMINUTE;分加1
MOVAL,MINUTE
CMPAL,60;分数与60比较
JNEEXIT1
MOVMINUTE,0;分清零
INCHOUR;时加1
MOVAL,HOUR
CMPAL,24;时数与24比较
JNEEXIT1
MOVHOUR,0;时清零
EXIT1:
POPDX
POPAX;恢复AX
IRET
IENTERRENDP
CODEENDS
ENDSTART
七、程序及硬件系统调试情况
遇到的主要问题和解决办法:
1、在将随机输入的时间值转换成显示数据的时候,刚开始不知道该怎么做,但后来经过一系列的探索和修改,我们是通过按键置入随机的时间值,然后送到8255的C口,然后经过A口输出到LED显示,结果完全正确。
2、在设计定时器的时候也遇到了一些问题,输出的时间频率和真正的时间频不等,简单地将计数器的计数初值增大,必定会超出计数器的计数范围。
八、课程设计总结与体会:
微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分。
讨论某一部分原理时又要涉及到其它部分的工作原理。
这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。
所以,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。
学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成各种实际应用项目。
一个星期的课程设计很快就结束了,看着自己一个星期的努力成果,心里感到格外的欣慰。
从最初的无从下手,到分析设计,到编程调试,一步步走来,知识一点一滴的积累,最终完成了这份另自己满意的作品。
总的来说,这次实验并不是很难,主要的困难来自对程序的理解。
功夫不负有心人,经过同组四个人的合作和努力,我们最后对实验的原理有了清晰的认识。
虽然实验台上的很多模块单元没有用到,但是就系统功能来说,我觉得我们做的还是不错的。
在设计的过程中,我们也遇到了一些困难,例如,在将随机输入的时间值转换成显示数据的时候,刚开始不知道该怎么做,但后来经过一系列的探索和修改,我们是通过按键置入随机的时间值,然后送到8255的C口,然后经过A口输出到LED显示,结果完全正确。
在设计定时器的时候也遇到了一些问题,输出的时间频率和真正的时间频不等,简单地将计数器的计数初值增大,必定会超出计数器的计数范围。
我们翻阅了相关的书本,在小组成员的互相帮助下成功解决了这个问题。
解决方法是采用将计数器处之设的大一点。
为期一个星期的课程设计,首先,让我学习和掌握计算机中常用接口电路及8255A的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过实践,进一步加深了对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
其次,在克服一个又一个困难的过程中,巩固了我们所学的理论知识,还培养我的实际动手能力,还培养我在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能用设计报告表达设计思想和结果的能力。
这次课程设计,再次,让我们对实验台有了足够的了解,让我们知道了实验台上各个模块的用法;而且它还让我们对自己动手写程序来控制实验台的运作有了一定的基础。
虽然实验台只是一个小型的模拟平台,但是通过对它的学习和操作,我们对有关接口的知识将会有一个更广泛的认识,而且它对我们以后的学习也会有帮助的。
实验中,我不仅复习和巩固了微机原理中的很多知识,而且学到了很多在书本上所没有学到过的知识。
且充分了解到画程序流程图的必要性。
通过程序流程图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,在程序测试的过程中也有利于查错。
本次设计给我最大的收获就是动手能力的重要性,实践和理论上是有差距的,理论与实际相结合是很重要的。
只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
动手试验也让自己对书本知识有了更深刻的认识,把书本知识真正的转化为自己所掌握的东西,能加以利用。
实验中个人的力量是不及群体的力量的,我们同组四个人分工合作,做事的效率高了很多。
虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。
而且实验也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。
当然,我们所完成的这个作品仍不完美。
例如,缺乏人机互动功能,在修改时间的时候秒针停止计时。
这些问题有待我们在今后的学习过程中进一步完善。
总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。
在此我还要感谢老师的悉心指导和同组人员的协助及配合,正是因为你们的帮助才确保了本次课程设计的顺利进行,谢谢!
九、参考文献
1、《微型计算机原理与接口技术》电子工业出版社
2、《IBM-PC汇编语言程序设计》清华大学出版社出版
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)