接口技术课程设计.docx
《接口技术课程设计.docx》由会员分享,可在线阅读,更多相关《接口技术课程设计.docx(13页珍藏版)》请在冰点文库上搜索。
![接口技术课程设计.docx](https://file1.bingdoc.com/fileroot1/2023-6/28/6ba22bc3-97cc-4842-b575-95b2dfdb3d62/6ba22bc3-97cc-4842-b575-95b2dfdb3d621.gif)
接口技术课程设计
河北科技大学
《接口技术》课程设计报告
学生姓名:
学号:
专业班级:
课程名称:
微型计算机接口技术
学年学期:
2014—2015学年第二学期
指导教师:
2015年6月
课程设计成绩评定表
学生姓名
学号
成绩
专业班级
起止时间
2015.
设计题目
LED七段数码管数字钟
验
收
内
容
课程设计小组验收结果:
硬件设计:
优秀□良好□中等□及格□需努力□
程序设计:
优秀□良好□中等□及格□需努力□
实验结果:
优秀□良好□中等□及格□需努力□
课程设计个人验收结果:
操作能力:
优秀□良好□中等□及格□需努力□
软件理解:
优秀□良好□中等□及格□需努力□
硬件理解:
优秀□良好□中等□及格□需努力□
指导教师:
年月日
一、设计题目………………………………………………………………..
二、设计目的………………………………………………………………..
三、设计原理及方案………………………………………………………..
1.设计方案…………………………………………………………
2.设计原理…………………………………………………………
(1)七段数码管显示…………………………………………..
(2)键盘扫描显示…………………………………………….
(3)8253计数器和8259中断……………………………………………
3.硬件链接……………………………………………………………………
四、实现方法………………………………………………………………………………
1.七段数码管显示…………………………………………………………………
2.键盘扫描显示…………………………………………………………………….
3.定时器设计……………………………………………………………………….
4.总程序设计………………………………………………………………………..
五、调试过程及结果…………………………………………………………………………
六、改进意见与建议…………………………………………………………………………
七、设计总结与体会…………………………………………………………………………
一、设计题目
LED七段数码管数字时钟
二、设计目的
1.设计并完成LED七段数码管数字钟电路。
2.数字钟显示格式为:
HH:
MM:
SS。
3.具有通过键盘能够调整时、分、秒的功能。
4.设计电路并在实验台上连接线路。
三、设计原理及方案
1.设计方案
本设计采用LAB6000伟福仿真实验箱,利用4MHz脉冲信号源和多级分频电路产生脉冲信号,4MHz脉冲信号经过F/64分频后得到62.5KHz脉冲信号,将脉冲信号传递给8253定时器,定时器每0.000016秒中断一次,在中断服务程序中对中断次数进行计数,0.000016秒计数62500次就是1秒,然后在对秒计数得到分和小时值,并送入显示缓冲区,用总线方式控制数码管显示。
同时,利用实验箱提供的键盘扫描电路和显示电路来调整时、分、秒。
2.设计原理
(1)七段数码管显示
图1.七段数码管
七段数码管的字形代码表如下表:
显示字形
段码
0
3fh
1
06h
2
5bh
3
4fh
4
66h
5
6dh
6
7dh
7
07h
8
7fh
9
6fh
A
77h
B
7ch
C
39h
D
5eh
E
79h
F
71h
图2.八段数码管LED显示电路
实验箱提供了6位八段数码LED显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。
将KEY/LEDCS接到CS0上,则实验箱中八位段码输出地址为08004H,位码输出地址为08002H。
(2)键盘扫描显示
图3.键盘扫描电路
实验箱提供了一个6×4的小键盘,将KEY/LEDCS信号接到CS0上,则列扫描地址为08002H,行码地址为08001H。
向列扫描码地址逐列输入低电平,然后从行码地址读回。
如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。
这样就可以通过输出的列码和读取的行码来判断按下的是什么键。
在判断有键按下后,要有一定的时延,防止键盘抖动。
(3)8253计数器和8259中断
图4.8253计数器扩展电路
图5.8259中断扩展电路
3.硬件连接
8253用定时器/计数器1,8253片选接CS4,地址为0C000H,8253时钟源CLK1接分频电路的F/64输出,频器的Fin接4MHz时钟,8253的GATE1接VCC;8259中断INT0接8253的OUT1,片选接CS5,地址为0D000H。
显示电路的KEY/LEDCS接CS0,地址为08000H。
四、实现方法
程序流程图
图6.主程序框图
根据主程序框图,要实现电子时钟,必须先实现七段数码管显示、键盘扫描显示、定时器以及将输入的键值转换为显示数据。
为了实现上述四个功能,我又设计了三个子模块的流程图,并完成了相应的程序设计。
1.七段数码管显示
图7.七段数码管显示子程序框图
2.键盘扫描显示
图8.读键输入子程序框图
3.定时器设计
图9.定时中断服务子程序框图
4.总程序设计
将上述三个子模块的功能结合起来,把键盘输入的数据转换成十进制,分别赋给Hour、Minute、Second,电子时钟就实现了。
总程序清单:
五、调试过程及结果
在代码调试过程中,我发现了两个问题。
一是,程序不具备自动纠错功能。
如果输入错误的时、分、秒,程序不能做出相应的处理。
二是,由于试验箱的缘故,输出的脉冲周期小于0.000016秒,使得设计出来的电子时钟的1秒相当于实际的0.5秒。
针对以上两个问题,我对初步设计出来的程序做了相应的修改:
1.增加了对时、分、秒正确性的判断语句,如果错误,则做出相应的处理
cmpHour,24;判断输入的Hour是否非法
jlL0;如果正确,则继续
movHour,0;如果非法,则清零
cmpMinute,60;判断输入的Minute是否非法
jlL1;如果正确,则继续
movMinute,0;如果非法,则清零
cmpSecond,60;判断输入的Second是否非法
jlL2;如果正确,则继续
movSecond,0;如果非法,则清零
2.脉冲输入频率了近一倍,就必须将计数器的计数初值扩大两倍来解决这个问题,而8253每个计数器只有16位,这样定时常数便超过了计数器所允许的最大范围。
在老师的帮助下,我采用多级串联的方式来解决这个问题。
采用两个计数器,定时常数分别62500和2,将计数器1的输出接到计数器0的输入,计数器0的输出接到INT0。
moval,36h;00110110B;计数器0,16位,方式3,二进制
movdx,CONTROL
outdx,al
movax,2
movdx,COUNT0
outdx,al;计数器低字节
moval,ah
outdx,al;计数器高字节
moval,76h;01110110B;计数器1,16位,方式3,二进制
movdx,CONTROL
outdx,al
movax,62500
movdx,COUNT1
outdx,al;计数器低字节
moval,ah
outdx,al;计数器高字节
六、改进意见与建议
此次设计的数字时钟缺乏人机互动功能,在修改时间的时候秒针停止计时。
应该在此部分程序中加以解决,但由于对汇编语言相关知识掌握不足,这些问题有待在今后的学习过程中进一步完善。
七、设计总结与体会
课程设计很快就结束了,看着自己的努力成果,心里颇有感触。
从最初的无从下手,到分析设计,到编程调试,一步步走来,知识一点一滴的积累,最终完成了这份另自己满意的作品。
在设计的过程中,我也遇到了一些困难,例如,在将键盘输入的值转换成显示数据的时候,我重复调用子程序GetKey,却没有得到我想要的结果,经过一系列的探索和修改,我在调用子程序GetKey前先调用了子程序TestKey,如果键盘有输入,再转入GetKey执行,结果完全正确。
在设计定时器的时候也遇到了一些问题,由于实验箱的故障,输出的时间频率和真正的时间频不等,简单地将计数器的计数初值增大,必定会超出计数器的计数范围。
我翻阅了相关的书本,在老师的帮助下成功解决了这个问题。
解决方法是采用两个计数器串联的方式。
为期两个星期的课程设计,在克服一个又一个困难的过程中,巩固了我所学的理论知识,还培养我的实际动手能力,还培养我在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能用设计报告表达设计思想和结果的能力。
通过本次课程设计实践,使我对《微机原理及接口技术》这门学科有了不同于以前的认识,原来只是认为它只是硬件的理论,有点虚无缥缈的感觉,但通过本次课程设计使我感受到它是一门综合性、实践性较强的课程,使我体会到要想综合运用所学的理论知识,提高我们的开发与设计能力,必须增加实际操作的环节。
这次课程设计不仅培养了我们的实际动手能力,更检验了我们对本门课学习的情况,培养我们严肃认真的学习态度。
过程中我们通过集体讨论设计方法、设计步骤等问题,使我感受到团队合作的重要性。
真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,并能用设计报告表达设计思想和结果的能力正是我们这次课程设计的目的,我想,我做到了。
与此同时,通过本次课程设计,还是我学会熟练应用8086汇编语言编写应用程序和处理有关接口的实际设计中问题,熟悉了微机系统的硬软件开发工具的使用方法。