最新微机原理课程设计抢答计时器1.docx
- 文档编号:452897
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:19
- 大小:86.04KB
最新微机原理课程设计抢答计时器1.docx
《最新微机原理课程设计抢答计时器1.docx》由会员分享,可在线阅读,更多相关《最新微机原理课程设计抢答计时器1.docx(19页珍藏版)》请在冰豆网上搜索。
最新微机原理课程设计抢答计时器1
微机原理课程设计抢答计时器1
《微机实验及课程设计》
课程设计报告
一.课程设计目的与要求…………………………………………………………………………3
二.方案论证与原理设计…………………………………………………………………………3
三.详细设计………………………………………………………………………………………4
四.方案实现与测试………………………………………………………………………………6
五.分析与总结……………………………………………………………………………………7
1、基本要求
设计一个用于智力竞赛的抢答计时器,同时能测试人的反应(响应)时间。
按启动钮,测试开始,2个八段码倒计时开始(如从10秒或20秒倒计时),一旦看到灯亮,参赛双方(或三方)分别按不同的抢答按钮参与抢答。
一旦其中一位按下按钮,相应的显示灯(LED)亮并响“嘟”的一声,此时若其它按钮按下均无效。
若一直到计数到零,无一人按下按钮,则抢答结束(以后再按抢答钮无效)。
立即按测试钮,8×8点阵显示反应时间xx.xx秒(8×8点阵用红色代表秒,绿色代表0.01秒,交替显示)。
要求:
(1)编制1个随机数产生子程序,由随机数决定从按启动钮到对应LED亮的时间(如在3秒~15秒之间内任意变动),使被测试者对LED亮的时间无法预见,以确保测试结果的可信;
(2)必须在见到LED亮后按测试钮才有效,即一直按着按钮或提前按下按钮无效;
(3)反应时间显示xx.xx秒,准确到百分之一秒。
2、设计思路
将系统分成3个大的模块:
倒计时模块,计时模块,显示模块。
1)倒计时模块:
通过一个子程序段获得随机数,并用这个随机数倒计时;
2)计时模块:
倒计时结束时灯亮,开始计数,当有人按下键并正确时,锁存所用时间;
3)显示模块:
将锁存的时间用八段码显示出来。
一.课程设计目的与要求
1、课程设计目的
上学期在学习微机原理的基础上,我们一直在实践微机实验及课程设计教程这门实验课程,从指令与汇编语言基础开始,我们熟悉了调试工具的使用,汇编语言程序设计,I/O与存储器,简单输入输出,中断,计数/定时器,以及模数/数模转换。
平时的实验都是对各个单元单一功能的验证,并没有他们之间的联系,最后的综合课程设计将让我们学以致用,把学到的各个章节的知识根据需要联系在一起,并实现一定的功能。
同时也培养我们遇到问题,思考问题,解决问题的能力。
化零为整,在实践中深化对所学内容的认识。
2、基本要求
设计一个用于智力竞赛的抢答计时器,同时能测试人的反应(响应)时间。
按启动钮,测试开始,2个八段码倒计时开始(如从10秒或20秒倒计时),一旦看到灯亮,参赛双方(或三方)分别按不同的抢答按
钮参与抢答。
一旦其中一位按下按钮,相应的显示灯(LED)亮并响“嘟”的一声,此时若其它按钮按下
均无效。
若一直到计数到零,无一人按下按钮,则抢答结束(以后再按抢答钮无效)。
立即按测试钮,8×
8点阵显示反应时间xx.xx秒(8×8点阵用红色代表秒,绿色代表0.01秒,交替显示)。
要求:
(1)编制1个随机数产生子程序,由随机数决定从按启动钮到对应LED亮的时间(如在3秒~15秒之间内任意变动),使被测试者对LED亮的时间无法预见,以确保测试结果的可信;
(2)必须在见到LED亮后按测试钮才有效,即一直按着按钮或提前按下按钮无效;
(3)反应时间显示xx.xx秒,准确到百分之一秒。
3、进一步设计要求
修改以上设计使进一步能测试人对不同事物的反应(响应)时间。
如功能为:
按启动钮,测试开始,
一旦红灯亮,立即按红灯测试钮,一旦绿灯亮,立即按绿灯测试钮,但黄灯亮为干扰。
8×8点阵显示反应
时间xx.xx秒。
若按错钮,则显示出错并响“嘟”一声。
要求:
(1)编制2个随机数产生子程序,1个决定从按启动钮到LED亮的时间,另一个决定亮何种颜色灯;
(2)同样要求在见到LED亮时按测试钮才有效;
(3)在倒计数时附有音乐伴奏。
二.方案论证与原理设计
1、设计思路
将系统分成3个大的模块:
倒计时模块,计时模块,显示模块。
1)倒计时模块:
通过一个子程序段获得随机数,并用这个随机数倒计时;
2)计时模块:
倒计时结束时灯亮,开始计数,当有人按下键并正确时,锁存所用时间;
3)显示模块:
将锁存的时间用八段码显示出来。
2、进一步设计
随机数程序我用读系统时钟的方法,得到随机数后一旦测试开始,通过loop倒计时,倒计时结束时,灯亮表示可以开始抢答。
这里灯亮可以有两种选择:
红灯和黄灯,我用随机数末位进行选择,0则红灯亮,1则绿灯亮。
这也变相实现了进一步设计要求中两个随机数子程序的要求。
灯亮以后我用8253的计数器开始计数,当有人按下键且正确时,计数停止,得到一个计数值。
对这个计数值进行处理以后可以相应的通过8*8点阵的行选和红选黄选使时间在点阵上交替显示。
由于系统板可以提供的时钟是1MHZ或2MHZ,这样计数器计出的数值再转化比较繁琐,我选择用8253的另一个计数器输入1MHZ的时钟,采用方式3产生100HZ的方波,这样每个脉冲0.01秒,计数得到的值单位为0.01秒,可以直接用来显示。
三.详细设计
1、硬件连接图
8255
(CLK来自系统脉冲1MHZ)
8253
2、主程序流程图与显示子程序流程图
否
图一.主程序流程图图二.显示子程序流程图
3、初始定义
在程序的数据段里定义好8253、8255各需要用到的端口地址,定义点阵的行选和列选地址。
4、初始化
首先显示提示信息,等待测试开始。
8253:
用到计数器1、2,计数器1的控制字为01110001B,采用方式0,BCD码十进制计数,计数器2的控制字为10110111B,采用方式3,二进制计数。
计数器2初值选择10000,产生0.01s脉冲,输出作为计数器1的时钟信号。
8255:
控制字为10000000B,A口B口均做输出;B口接GATE1,需要开始计数时初值设为01H。
5、倒计时
通过读系统时钟得到一个随机数,启动后通过loop倒计数,计完时灯亮,可以开始抢答。
这里倒计数时我并没有用数码管显示,这样才更有不可预见性。
6、计反应时间
倒计时结束后灯亮,此时PB0输出高电平,使计数器1开始工作,当有键按下且是正确的时PB0输出低电平,计数器1停止工作。
8253计数器2产生的0.01s时钟使得计数器1计得得时间是以0.01s为单位,用0减去计数停止时的数即为从开始计数到按键之间的时间。
分别获得这个时间各位数字存入不同的变量,就可以在点阵上交替显示这些变量来得到反应时间。
实验中数字显示形式为xx:
xx秒,红色数字显示为秒,黄色显示为0.01秒,四个数字交替显示就是测试者的反应时间。
7、显示模块
8*8点阵上数字的现实原理:
字形0~9与段码有对应关系,例如数字5:
8fh,89h,89h,0f9h,将数字0~9的段码依次放在变量numx中,显示方法:
行选地址-2A0H,红选地址-2A8H,黄选地址-2B0H,要显示某一个数字,对应到位选信号00h,04h,08h,0ch,10h,14h,18h,1ch,20h,24h中的一个,映射到段码变量中就是所要显示数字的段码,依次扫描显示。
显示模块的中心思想就是扫描,利用人眼的视觉暂留,看到4列LED灯都亮,显示相应的信息。
四.方案实现与测试
现在提交的程序与验收时的有所不同,验收时并没有实现全部功能,如反应时间的显示是通过中断显示在屏幕上,算是变相的实现。
此后我又完善了一些功能,如点阵显示,随机亮红灯或绿灯。
基本完成了实验要求。
实验现象:
开始时若按“q”,则退出测试;若按其他键,重新显示提示信息,重新开始;若按“1”,测试开始,等待,当有灯亮时,如为红灯按“2”,为绿灯按“3”,如果按键准确,点阵显示时间,如果按错,屏幕显示“wrong!
”,“Continue?
(Y/N)”。
程序编译无误后连接实验箱进行调试,调试时首先分别单独连接点阵,8255,8253进行简单功能的验证,验证无误保证硬件不会影响到方案的实现。
对显示模块的调节花了比较多的精力,刚开始点阵不显示,但硬件验证的时候点阵是没问题的,所以我先改为屏幕显示,通过中断使在运行到某一些关键步骤的时候输出一定的信息,功能验证无误后再连接点阵。
其次是delay环节的时间,因为数字的显示是通过扫描完成的,所以delay时间不能太长也不能太短,通过不断的调试终于得到了合适的delay值。
五.分析与总结
通过这四周的课程设计,我学到了不少也发现不少问题。
很大的一个问题是我没有很好的利用TD等调试工具,造成的后果就是不能及时发现问题出在哪里,所以效率相对较低,如果以后还有类似的课题,我一定要好好利用这些工具。
另外隔了一个假期,对有一些基本知识和功能有一些陌生了,所以熟悉这些也花了不少时间,这是以后需要改进的地方。
我从不断想方案,否定一个再试一个,到完善程序,到不断调试出结果,最后能完成基本功能,我还是比较欣慰的。
这和许多实践类课程一样,重在实践,当你写完程序觉得逻辑功能都很完美的时候,只是走出了一小步,当调试时会遇到各种各样意想不到的问题,在不断改进的过程中才能对理论有更好的把握。
对于这次实验而言,它将原来有些枯燥的基本实验实例化了,而且需要我们根据要求把它们有机联系在一起,实际设计了利用微机系统的一些应用。
同时我了解到微机,乃至以后单片机的一些设计和应用的方法。
虽然我没能把系统功能非常完美的呈现,但在这个过程中我从不断的错误中吸取很多教训,这些对以后的学习时间都是很有帮助的。
当然,如果时间更加充裕的话,我相信我的设计会做的更加完善。
参考书目:
[1]东南大学《微机系统与接口》课程组,微机实验及课程设计教程(试用版2.0),2009年2月
[2]杨素行等编著,《微型计算机系统原理及应用(第2版)》,北京,清华大学出版社,2004年
附汇编代码
PORTEQU0E000H-280H
TIM_CTLEQUPORT+283H;8253控制寄存器
TIMER0EQUPORT+280H;计数器012
TIMER1EQUPORT+281H
TIMER2EQUPORT+282H
CW_TIMER0EQU00110000B;计数器0控制字,方式0
CW_TIMER1EQU01110001B;计数器1控制字,方式0
CW_TIMER2EQU10110111B;计数器2控制字,方式3
P8255_CTLEQUPORT+28BH;8255控制寄存器,A口输出
P8255AEQUPORT+288H;8255ABC口
P8255BEQUPORT+289H
P8255CEQUPORT+28AH
LEDEQUPORT+2A0H
LED_REQUPORT+2A8H;红选
LED_YEQUPORT+2B0H;黄选
DATESEGMENT;数据段
MESS1db'********XXXXXXXXX********',0dh,0ah,'$'
MESS2dB'Start--press1',0DH,0AH
db'redl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 微机 原理 课程设计 抢答 计时器