硬件课程设计实践报告个人.docx
《硬件课程设计实践报告个人.docx》由会员分享,可在线阅读,更多相关《硬件课程设计实践报告个人.docx(15页珍藏版)》请在冰豆网上搜索。
![硬件课程设计实践报告个人.docx](https://file1.bdocx.com/fileroot1/2022-12/17/e7f4a57f-8c84-4b4a-94cd-82dc55eb16fc/e7f4a57f-8c84-4b4a-94cd-82dc55eb16fc1.gif)
硬件课程设计实践报告个人
硬件课程设计实践报告(个人)
题目:
可编程作息时间控制器
班级:
信安10-1班
学号:
08103663
姓名:
王宝
指导教师:
王凯
2012年12月
目录
1.设计模块说明..........................................3
2.子程序...............................................5
3.分析与测试...........................................15
4.运行结果.............................................16
5.结论与体会..........................................16
参考文献................................................18
1.设计模块说明
1.1基本时钟模块说明:
本功能模块用来调整和显示基本的时间和日期,完成一个时钟显示系统最基本的功能。
由于时间有三个变量:
时,分,秒,每一个变量都有个位和十位两位,需要分开显示。
因此在显示变量每一位之前,应先查表,然后将对应的数码管位选和段选值编码送到8279的数据端口,才能正确显示。
具体工作流程如下:
1)显示模块当秒值达到60时,然后清零,分值增加1;当分达到60时,然后清零,时值加1;当时到24时,然后时分秒全部清零并重新开始计时。
2)调整具体时间时,先按0键开始设定,按键的1,2,3,4,5,6分别对应秒的个位,秒的十位,分的个位,分的十位,时的个位,时的十位进行加1。
时间设定完之后再按0键进行保存设置。
1.2时间运行模块说明
时间设定完之后便设定当前的时间,同时可以通过8253控制时间的运行,所以时间是在不断运行的。
1.3报时响应系统说明
时间在不断地运行,由8253控制1秒的计时,每当经过1秒,则8279要控制秒的个位加1,当显示时间与设定时间相同时,通过8253的赋值来控制铃响灯亮进行报时操作。
1.48253模块说明
在本次实验中,8253主要具有计数即控制时间运行功能,还有控制音响的发声频率及周期。
时间运行与调节利用芯片8253的处理而产生符合要求的脉冲,执行计时子程序改变时间参数而计时,进行时间计算,并用实时检测程序将时间参数用数码管显示电路显示出小时与分钟以及秒钟数。
与此同时也进行与报时时间段程序的不断调用,使得在规定时刻进行报时。
可选择8253通道0与通道1实现定时,通道2输出out2音响的输入端口,完成上述连接后,编程实现小时,分钟的变化的子程序,以及对8253,进行初始化编程,计时程序实现时间运行。
图1-18253控制时间运行
1.58279模块说明
8279是一种通用的可编程序的键盘、显示接口器件,单片器件就能够完成键盘输入和显示控制两种功能。
其键盘输入的功能可以设定闹钟时间,还可以实现1秒计时的时间变化,通过键盘来显示数码管上的数据,则时间更加直观,用于使用可编程作息时间控制器的基本用户操作和用户接口显示界面。
使其具有良好的可操作性。
8279主要负责设定闹钟时间,设定当前时间,显示及键盘输入等功能。
下图1-1充分体现了8279的这些功能。
图1-28279负责时间设定
2.子程序
子程序
;//////////////////按键检测函数/////////////////////
FIR:
MOVDX,Z8279
MOVAL,0C2H
OUTDX,AL;置空FIFO寄存器
WAIIT:
NOP
INAL,DX
MOVBL,AL
ANDAL,80H
CMPAL,80H
JEWAIIT;FIFO正在清除期间则跳转等待
MOVAL,BL
ANDAL,0FH
CMPAL,00H
JEWAIIT;检测有无按键按下,没有按键按下就退出
MOVAL,40H;有按键按下
OUTDX,AL;写读FIFORAM命令字
MOVDX,D8279;读入FIFORAM内容
INAL,DX
NOP
CMPAL,3BH;检查数据是否越界
JEFINI
FINI:
MOVDX,Z8279
MOVAL,0D3H;清显示RAM,FIFORAM
OUTDX,AL
CMPAL,03H;检测按下的键是否为0(注意0为模式选择键)
JENEXT2
NEXT2:
JMPEXIT
CMPAL,02H;检测按下的键是否为1
JEC1
CMPAL,10H
JEC2
CMPAL,34H
JEC3
CMPAL,01H
JEC4
CMPAL,09H
JEC5
CMPAL,33H
JEC6
JMPFIR
C1:
INCR1;若按键为1则闹钟的秒的个位加1
JMPSHOW
C2:
INCR2
JMPSHOW
C3:
INCR3
JMPSHOW
C4:
INCR4
JMPSHOW
C5:
INCR5
JMPSHOW
C6:
INCR6
JMPSHOW
SHOW:
;SI寄存器放偏移量,据偏移量查表得编码值
MOVDX,D8279
MOVSI,R1
MOVAL,LED[SI]
OUTDX,AL
MOVDX,D8279
MOVSI,R2
MOVAL,LED[SI]
OUTDX,AL
MOVDX,D8279;这两个空的,无偏移量
MOVAL,3FH
OUTDX,AL
MOVDX,D8279
MOVAL,3FH
OUTDX,AL
MOVDX,D8279
MOVSI,R3
MOVAL,LED[SI]
OUTDX,AL
MOVDX,D8279
MOVSI,R4
MOVAL,LED[SI]
OUTDX,AL
MOVDX,D8279
MOVSI,R5
MOVAL,LED[SI]
OUTDX,AL
MOVDX,D8279
MOVSI,R6
MOVAL,LED[SI]
OUTDX,AL
JMPFIR
EXIT:
MOVDX,Z8279;清FIFORAM寄存器
MOVAL,0C2H
OUTDX,AL
;OUT1连接245第7个口,检测电平
TESTT:
MOVDX,200H;245
INAL,DX
TESTAL,80H
JNZTESTT;JNZ不等于则跳转,高电平
TESTTT:
MOVDX,200H
INAL,DX
TESTAL,80H
JZTESTTT;检测低电平
;//////////////////////判断时间是否到了//////////////////////
MOVAX,R1
CMPAX,I1
JNZPROCESS
MOVAX,R2
CMPAX,I2
JNZPROCESS
MOVAX,R3
CMPAX,I3
JNZPROCESS
MOVAX,R4
CMPAX,I4
JNZPROCESS
MOVAX,R5
CMPAX,I5
JNZPROCESS
MOVAX,R6
CMPAX,I6
JNZPROCESS
CALLPLAY
PROCESS:
;如果时间没有到,则继续运行
MOVDX,D8279
MOVSI,I1
MOVAL,LED[SI]
OUTDX,AL;数码管显示I1
MOVI1,SI
MOVDX,D8279
MOVSI,I2
MOVAL,LED[SI]
MOVI2,SI
OUTDX,AL
MOVDX,D8279
MOVAL,3FH
OUTDX,AL
MOVDX,D8279
MOVAL,3FH
OUTDX,AL
MOVDX,D8279
MOVSI,I3
MOVAL,LED[SI]
MOVI3,SI
OUTDX,AL
MOVDX,D8279
MOVSI,I4
MOVAL,LED[SI]
MOVI4,SI
OUTDX,AL
MOVDX,D8279
MOVSI,I5
MOVAL,LED[SI]
MOVI5,SI
OUTDX,AL
MOVDX,D8279
MOVSI,I6
MOVAL,LED[SI]
MOVI6,SI
OUTDX,AL;显示当前时间
MOVSI,I1
INCSI
CMPSI,10
JNEJU1;判断秒是否等于10,如果不等跳到JU1,等则清零JEJUU2
JU1:
MOVI1,SI;ju1是若最此位没到十不清零。
JMPTESTT
JUU2:
MOVSI,00H
MOVI1,SI
MOVSI,I2
INCSI
CMPSI,6
JNEJU2
MOVSI,00H
JU2:
MOVI2,SI;ju2是若最此位没到十不清零。
JEJUU3
JMPTESTT
JUU3:
MOVSI,I3
INCSI
CMPSI,10
JNEJU3
MOVSI,00H
JU3:
MOVI3,SI;ju3是若最此位没到十不清零。
JEJUU4
JMPTESTT
JUU4:
MOVSI,I4
INCSI
CMPSI,6
JNEJU4
MOVSI,00H
JU4:
MOVI4,SI;ju1是若最此位没到十不清零。
JEJUU5
JMPTESTT
JUU5:
MOVSI,I5
INCSI
CMPSI,04
JNEJU5
MOVSI,00H
JU5:
MOVI5,SI;ju5是若最此位没到十不清零。
JEJUU6
JMPTESTT
JUU6:
MOVSI,I6
INCSI
CMPSI,02
JNEJU6
MOVSI,00H
JU6:
MOVI6,SI;ju6是若最此位没到十不清零。
JMPTESTT
PLAYPROCNREAR;播放音乐子程序
MOVDX,CONTROL;8253初始化
MOVAL,10110111B
OUTDX,AL
MOVDX,COUNT2
MOVAL,34h
OUTDX,AL
MOVAL,76h
OUTDX,AL;发声频率
MOVCX,60000
DELAY:
PUSHCX
MOVCX,10
DELAY1:
LOOPDELAY1
POPCX
LOOPDELAY
TINGZHI:
MOVDX,CONTROL;8253初始化
MOVAL,10110111B
OUTDX,AL
RET
PLAYENDP
JMP$
;数码管0-9的编码
LED:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
LED_:
DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH;
带点的数
STARTENDP
CODEENDS
ENDSTART
3.分析与测试
3.1优点分析与测试
测试时间是否到了主要是通过8253计时器对每一秒计时都采取高低电平检测,然后对数码管上的时钟和存储的时间进行比较,在检测过程过,还需要对输入的设置的数据进行增加,到10后进一,同理分针60进一,时针同样60进一。
在本次设计的过程中,我们遇到了一些困难但通过努力终于比较完整的完成了这次设计的任务;在8279键盘扫描程序中,其中重要的是键盘码的对应值,他是实现我们输入数字与控制响铃的关键,同时程序中的几个循环也是比较重要的;在计时程序设计中,最重要的是如何判断定时时间到,用设定时间与显示的数字作比对,直到相同为止即定时时间是准确的。
在本次的实验设计中,最大的优点在于我们所选用的原理简单易行,容易实现,能够在较短的时间内达到要求的效果。
3.2缺点分析与测试
本设计存在缺陷:
首先,这个设计不够精确,数码管显示的时间与主要原因,计算的数字存在误差,系统也存在误差。
在8279的程序中也有一定的缺陷。
在存储键码时应当多次循环才能保证其数码管输出地与铃响时间一致,并且需要通过准确的计算,指定的时间才能达到预期的效果。
4.运行结果
4.1实验运行结果如下图所示:
图4-1运行结果
5.结论与体会
通过次实验,我们收获颇多,不仅把课本的知识用于实践,而且通过与同学协作共同完成实验,感受到团结就是力量。
我们在这次实验之初,对实验没有一个太大的概念,听了老师的讲解之后稍稍了解到了一点,于是我们便上网查询,找到了关于这个实验的一些资料,最后我们决定使用8253和8279来作为我们这次实验的主要芯片。
首先,一拿到这个课题,我就在思考如何通过几个模块实现这个功能。
通过字面意思,要制作一个电子时钟,然后通过按键将需要闹钟的时间输入并存储,然后通过电子时钟与存储的时间进行比较,定时闹钟。
所以,首先是学习如何用8253制作计时器,对于这方面的学习,在之前的微机原理课程中有所了解。
通过对8253进行初始化,让其有计时功能。
然后是8279,对于这个芯片,我们在之前的课程中没有涉及,但是通过老师提供的学习资料,对8279也有了一定的了解,通过做8279键盘显示实验,了解了如何使用这个芯片来实现键盘的输入。
最后就是两个芯片的合作,但是一开始一直想不出来怎么实现。
后来经过老师的提点,提到用I/O接口实现,用其读取8253的输出数据,来判断时分秒,从而最终解决了这个问题。
其实一开始对于时钟的制作,还出现了一些问题,不知道如何让它在数码管上显示,最后在同学和老师的帮助下,通过8253计数器的功能和I/O的输入数据来判断每一秒,从而让数码管显示正确的时间。
之后的8279输入,因为有老师提供的资料,所以很快就解决了。
然后就是存储所输入的时间,和当前时间的比较。
通过这次的硬件课程设计,我们学到了很多的课本以外的知识,同时也复习了课本的知识。
在收获的同时,我们也深刻的了解到了,即使书本上的知识掌握的再好,在将它付诸实践时还是会遇到各种各样的问题。
这次课程设计就是一次对自己所学知识的总结和应用,使我们对微机原理这门课程有了更深的了解。
本次实验对于我们来说是一次很难得的锻炼机会。
为了实现本次实验,我们需要从一个模型从项目选择、方案选择和论证电路设计、元器件选择等到软硬件的设计及实现,再到最终的测试和调试整个工作过程,了解并掌握了系统设计时软件、硬件以及软硬件联合设计、制作和调试。
因此,无论是在理论方面,还是实际动手能力方面都有很大提高。
但同时,我们也发现我们存在着很多欠缺之处,在以后的学习中,我们一定会再接再厉,更多的掌握这方面的知识、技能,为以后走进更高的学习领域或工作岗位打下基础。
此外,这次设计实验也培养了我们团体协作的精神。
在实验的过程中,我们深切的体会到“做什么东西,并不是一个人就能行的,必须要有队友的合作,只有大家一起努力,才能最终完成事情。
”在这次实验中,我们小组的成员一直是积极地配合着,虽然在实验中我们的贡献是不同的,但我们发挥着团体协作的精神,共同承担责任,直到实验的完成。
这是一门对学生的实践大有帮助的课程,这样的课程确实可以让我们学到很多除了课本上以外的知识,最主要的是学会将理论应用于实践。
在以后的学习和生活中,我们都要通过有效的学习方式,将理论应用于实践,这样才能将知识真正转化为我们的知识。
在这里我们还要感谢王凯老师帮助我们解决许多复杂的问题,包括实验机器本身和电脑配置的问题,以及我们代码的调试和逻辑错误等。
王老师不耐其烦地热心帮我们解答疑问,他和蔼可亲、诙谐幽默的教导深深记在我们的脑海中。
6.参考文献
[1]周荷琴吾秀清主编《微机原理与接口技术》中国科学技术出版社
[2]《微机原理与接口技术实验与实践教程》汤书森清华大学出版社
[3]《硬件课程设计大纲》马海波中国矿业大学计算机学院
[4]《硬件课程指导书》马海波,刘厚泉中国矿业大学计算机学