《微机原理与接口技术课程设计-简易键盘的制作(14页).doc》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计-简易键盘的制作(14页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-微机原理与接口技术课程设计-简易键盘的制作-第 13 页湖南工业大学课 程 设 计资 料 袋 湖南工业大学 学院(系、部) 2015 2016 学年第 一 学期 课程名称 微机原理与接口技术 指导教师 杨伟丰 学生姓名 专业班级 通信1302 学号 题 目 简易键盘的制作 成 绩 起止日期2015 年 12 月 19 日2015年12月25日目 录 清 单序号材 料 名 称资料数量备 注1课程设计任务书12课程设计说明书13课程设计图纸456湖南工业大学课程设计任务书20152016 学年第 1 学期 计算机与通信 学院 通信工程 专业 1302 班级课程名称: 微型计算机组成原理 设计题目
2、: 简易键盘的制作 完成期限:自 2015 年 12 月 19 日至 2015 年 12 月 25 日共 1 周内容及任务一、设计的主要技术参数 利用扩展按键、6个数码管、微机完成代码输入器制作,通过按键输入某个数字或字母,然后在数码管上显示,显示时输入几个显示几个,最多显示6个,显示采用队列的形式。 (祥见课程设计指导书)二、设计任务(内容)1、完成相关的电路设计2、完成汇编程序设计3、连接相关的电路4、验证5、完成课程设计说明书三、设计工作量1周完成进度安排起止日期工作内容12月19日分组、任务分配、课题理解12月20日-22日功能分析、程序设计、电路设计12月22日-24日实验验证和测试
3、12月25 日总结、书写实验报告,答辩。参考资料1 戴梅萼. 微型计算机技术及应用,清华大学出版社, 2008年2 彭楚武. 微机原理与接口技术, 湖南大学出版社, 2006年3 艾德才. 32位微机原理及接口技术, 清华大学出版社, 2003年指导教师(签字): 年 月 日系(教研室)主任(签字): 年 月 日微型计算机组成原理课程设计指导书计算机与通信学院2015年12月湖南工业大学 微机原理与接口技术课程设计说明书简易键盘的制作起止日期: 2015年 12月19日 至 2015年 12 月 25 日学生姓名班级通信1302学号成绩指导教师(签字)计算机与通信学院2015年 12月 25日
4、目录目录第一部分 总则5一、目的要求5二、设计步骤与设计说明书的撰写要求5三、时间进度安排7四、考核要求7第二部分 课程设计项目内容8项目一 简易键盘的制作8一、设计目的8二、设计内容8三、基本原理8四、设计步骤11五、程序代码12总结18第一部分 总则一、目的要求课程设计是培养和锻炼在校学生综合应用所学理论知识解决实际问题能力、进行工程实训的重要教学环节,它具有动手、动脑,理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一种较好方法。微型计算机组成原理是一门实践性较强的课程,让学生在学完该课程之后,进行一次课程设计,使学生将
5、课堂所学的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。通过设计实践,培养学生查阅专业资料、工具书或参考书,了解有关工业标准,掌握现代设计手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。通过设计,不但要培养和提高学生解决工程具体问题、动脑动手的技术工作能力,而且还要逐步建立科学正确的设计和科研思想,培养良好的设计习惯,牢固树立实事求是和严肃认真的工作态度。二、设计步骤与设计说明书的撰写要求1、设计步骤1)选题与分组:根据分组,选择课题,在小组内进行分工,进行系统调查,搜集资料。2)课题分析:根据搜集的资料,进行功能分析,并进
6、行系统功能等设计。3)课题设计:根据课题要求设计必要的电路,并利用汇编语言编写程序,实现所设计的模块功能。4)调试与测试:利用计算机和微机原理与接口实验箱自行调试程序,成员交叉测试程序,并记录测试情况。5)验收与评分:指导教师对每个小组的开发的系统,及每个成员开发的模块进行综合验收,结合设计报告,根据课程设计成绩的评定方法,评出成绩。 2、设计说明书的撰写要求1)本课题设计主要内容和要求。2)描述自己所分配到的设计任务。3)进度安排与完成情况。4)所涉及到的技术原理与解决方案。5)本课程设计的目的意义,设计的结果与心得体会。三、时间进度安排 1、组织动员与分组,分组讨论,1天。 2、资料查阅,
7、功能分析,1天。 3、电路设计与程序设计,1天。 4、验证与调试,2天。 5、总结,分组讨论,1天。 6、书写课程设计说明书,1天。四、考核要求课程设计完成后,每位同学单独答辩。根据设计完成情况和所掌握的知识,并结合平时表示,给与优、良、中、及格和不及格5个等级评定。第二部分 课程设计项目内容项目一 简易键盘的制作一、设计目的通过该设计,掌握8255并行接口芯片的使用,掌握普通键盘的设计,并掌握相应的程序设计和电路设计的技能。是对8253定时计数章节理论学习的总结和补充,为后续的硬件课程的学习打下基础。二、设计内容 利用开发板KB-C中的18个按钮中的前16个作为代码键,即代表:0、1、2、9
8、、A、b、C、d、E、F,最后2个键,1个为删除键(S24),一个为回车键(S25),实现以下功能:每按1个键,则在屏幕上显示相应该键代表的字符,按S25键结束输入。再利用KB-C上的6个数码管中最后面的4个,在输入代码时不在屏幕上显示,而在数码管上显示,即输第1个时,在最后1位显示,输第2个时,前的那个在倒数第2个显示,而刚才输入的那个在最后1位显示,如此等等,4个代码输完后,按S25结束输入,并在屏幕上显示出来。三、基本原理 1.按键的基本原理在KB-C板上,端口A负责发按键扫描信息,端口C的低3位,即PC0、PC1、PC2,负责接收扫描结果,如下图所示,先定时通过端口A(PA0,PA1,
9、PA2,PA3,PA4,PA5)扫描各按钮,即先PA0=0,其它为1发信号,然后PA1=0,其它为1,端口发出1个信号后,即读端口C,如果PC0,PC1,PC2全为高电平,说明无按钮按下,如果PC0为低电平(PC1,PC2肯定为高电平),且此时,端口扫描的情况是:PA0=1,PA1=0,PA2=1,则说明SW1被按下。 2. 数码显示管工作原理数码管由8255端口B和端口C联合控制,端口负责控制某个数码管中的那些段码的显示和小数点的显示(PB7)。端口C的PC4,PC5,PC6发送的信号通过译码后,负责选择6个数码管中的1个显示,即某时刻只有1个数码显示,如果要让几个同时显示,则采用来回扫描显
10、示的方法,且当某个数码管显示时,必须要有一定的延时,约在100ms左右,太短显示不明显(发光不够),太长会产生闪烁。数码管的控制如下图所示:3、防止按键时的抖动,可以设计一个延时子程序来肖抖。4、本实验用到了8255A芯片,它是Intel系列中的并行接口芯片。由于它是可编程的,可以通过软件来设置芯片的工作方式,所以,用它连接外部设备时,通常不需要再附加外部电路。5. 8255A有三个8位的端口,端口,端口。在方式0下工作时,它们都是基本的输入输出口,要注意该方式下是单向传输的。8255A的控制字如下图所示1D6D5D4D3D2D1D0图4.1 8255A的控制字其中:D6D5是A组方式选择,0
11、0为方式0,01为方式1,1为方式2;D4表端口工作方式,0为输出,1为输入;D3表示PC7-PC4,1为输入,0为输出;D2表B组方式选择,0为方式0,1为方式1;D1表端口B工作方式,1为输入,0为输出;D0表示PC3-PC0,1为输入,为输出。本实验中用到了8255A的端口A,端口C、端口C它们都工作在方式0下,因此控制字为81。端口B与数码管相连用来显示操作的内容,而端口低4位用来检测是否有按键按下,高4位用来控制数码管的段,端口A用来发送按键信息。控制行数电路图如下所示控制列数PC0 PA0PC1 PA1PC2 PA2. PA3PC4 PA4PC5 PA5PC6 . PB0 PB1
12、PB2 PB3 PB4 PB5 PB6 PB7 8255A控制数码管 段abcdefgdp图4.2 8255A电路图数码管各信息的表示和二进制和十六进制的转换如下表所示:下所示的是0-F:表4.1 七段数码管的字型代码表显示字形gefdcba段码001111113fH1000011006H21010115bH310011114fH4110011066H511011016dH611111017dH7000011107H811111117fH911011116fHA111011177HB11111007CHC011100139HD10111105EHE111101179HF111000171H四、
13、设计步骤1.电路设计:根据设计内容,通过分析,设计出相应的电路图。2、控制字设计:根据要求,设计出各自8255的控制字和8253控制字。3、程序设计:根据要求,设计程序流程图,并设计相应的程序。4、验证:在实验室具体测试和验证。程序代码:data segment ;数据段的定义anjian1 db 012345 ;第一行按键回显现实内容anjian2 db 6789Ab ;第二行按键回显现实内容anjian3 db CdEF ;第三行按键回显现实内容data ends STACK SEGMENT DB 200 DUP(?)STACK ENDScode segment ;程序段的定义assume
14、 cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov dx,303h ;8255初始化 mov al,10000001B out dx,al scan1: mov al,11111110B ;键盘的扫描(11111110) mov bh,0 ;bh用来记录扫描的次数scan2: mov dx,300h ;对A端口开始扫描 out dx,al mov bl,al ;暂存扫描值变量 mov dx,302h ;读入C端口的值 in al,dx test al,00000001b ;测试D0是否为1 jz p1 ;为1跳转第一行的处理 t
15、est al,00000010b ;测试D1是否为1 jz p2 test al,00000100b ;测试D2是否为1 jz p3 mov al,bl ;暂存不变量 把当前扫描值还给al rol al,1 ;循环左移,开始对A的下一个端口扫描 inc bh ;扫描一次自加1 cmp bh,6 ;控制每排扫描6次 jz scan1 jmp scan2 p1: call delay mov si,offset anjian1 ;第一排按钮的某个按钮输出屏幕上 call screen ;在屏幕上显示 jmp scan1 p2: call delay mov si,offset anjian2 ;第
16、二排按钮的某个按钮输出屏幕上 call screen ;在屏幕上显示 jmp scan1 p3: call delay mov si,offset anjian3 ;第三排按钮的某个按钮输出屏幕上 cmp bh,0 jz next1 ;是0,显对应的值 cmp bh,1jz next1 ;是1,显示对应的值 cmp bh,2jz next1 ;是2,显对应的值 cmp bh,3 ;是3,显对应的值jz next1 cmp bh,4 ;在屏幕上显示 jnz next ;不是4,检测是不是5 call backspace ;是4,退格 jmp scan1 next: cmp bh,5 jnz wr
17、 ;不是5就返回最初 call enter ;是5的话就退出 next1: call screen jmp scan1 wr: jmp scan1 ;回到最初,重新检测 screen proc mov bl,bh mov bh,00h mov al,si+bx mov dl,al mov ah,02h int 21h retscreen endpenter proc jmp exitenter endpbackspace proc push bx push dx mov ah,3 mov bh,0 int 10h mov al,80 mul dh mov dh,0 add ax,dx dec
18、ax mov dl,80 div dl mov dh,al mov dl,ah mov bh,0 mov ah,2 int 10h pop dx pop bx retbackspace endpdelay proc ;延时子程序 mov cx,0 aa: mov di,1100h bb: dec di jnz bb dec cx jnz aa retdelay endp exit: mov ah,4ch ;退出程序返回DOS int 21h code endsend start心得一周的微机原理课程设计结束了,虽然上课过程感到非常的枯燥,总是对着冗长的程序段,删掉,编译,测试,不过还是有很多收
19、获的。此次微机原理课程设计我们组选择的是简易键盘制作的设计,由于微机原理的知识掌握的不够扎实,所以花了一部分时间来学习键盘的工作原理,这样才能更好的来设计创新。每个按键都有了功能,而且也编译测试通过,算是小有理解吧。我们把精力又转移到了怎么使按键所对应的功能在屏幕上显示出来,连接了8255和键盘区控制灯的针脚后,自己又学习了对应的屏幕显示程序,及怎么把扫描出来的行或列值进行保存,后面在程序中可以看到很多极其类似的程序段。其后我们又添加了一些数码管显示模块。通过对这程序的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在做实验的过程中通过和同学的交流,也增加了合作的技巧。每个人都可能会在某个地方钻死角,而团队虽然不能避免死角,但却可以及早的钻出来而不浪费太多的时间在没用的地方。细节决定成败。很多次的调试总是发现功能是有瑕疵的,就是因为一些小的细节没有做好,也许只是忘了加个逗号亦或是跳转错了地方。本次实验是实践和理论的结合的实验,不仅巩固了对理论知识的理解,而且还加强了动手能力以及独立思考解决实际问题的能力,设计出了一些小功能,当然程序还是有很多地方有瑕疵,至少程序的易读性就没有做的很好,每次改程序都要改半天,设计的功能也不是很有创新,这也就对我提出了更高的要求,要不断的学习,来弥补不断产生的瑕疵。