代码输入器课程设计说明书(非常好)_第1页
代码输入器课程设计说明书(非常好)_第2页
代码输入器课程设计说明书(非常好)_第3页
代码输入器课程设计说明书(非常好)_第4页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理与接口技术课程设计说明书代码输入器设计起止日期: 2011 年 6月 12日至 2011 年 6月 19日学生姓名张 一 伟班级通信工程 081学号08408200117成绩指导教师(签字)计算机与通信学院2011年6 月6日课题名称微机原理与接口技术课程设计人数5组长张一伟同组人员廖亚斌、陈伟、周婷、龙昱琪一、 设计目的课通过该设计,掌握8255 并行接口芯片的使用,普通键盘的设计和数码管的使用,并掌握相应的程序设计和电路设计的技能。是对8255 并行接口芯片题章节理论学习的总结和补充,为后续的硬件课程的学习打下基础。的二、 设计内容主利用开发板 KB-C中的 18 个按钮中的前 1

2、6 个作为代码键, 即代表: 0、1、要2、 9、A、B、C、 D、E、 F,最后 2 个键, 1 个为删除键( S24),一个为回车内键(S25),实现以下功能: 每按 1 个键,则在屏幕上显示相应该键代表的字符,容按 S25 键结束输入,每个代码为4 个 16 进制代码组成。和再利用 KB-C上的 6 个数码管中最后面的4 个,在输入代码时不在屏幕上要显示,而在数码管上显示,即输第1 个时,在最后 1 位显示,输第 2 个时,前求的那个在倒数第 2 个显示,而刚才输入的那个在最后 1 位显示,如此等等, 4 个代码输完后,按 S25 结束输入,并在屏幕上显示出来。具分析课题,汇总,调试,修

3、正程序错误等体任务时一、时间安排:1、6 月 12 日:分组、任务分配、课题理解。间2、6 月 13 日 -6 月 14 日:功能分析、程序设计。安3、6 月 15 日 -6 月 18 日:实验验证和测试。排4、6 月 19 日:总结、书写实验报告。与二、完成情况:完在大家的共同努力下我们在安排的时间里顺利完成了相应的任务,同时我成们也在课程设计过程中学到了很多。情况一、基本原理1、按钮的原理:在 KB-C板上,端口 A 负责发按键扫描信息, 端口 C 的低 3 位,即 PC0、PC1、PC2,负责接收扫描结果, 如下图所示, 先定时通过端口 A(PA0,PA1,PA2,PA3,PA4,PA5

4、)扫描各按钮,即先 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 个数码显示, 如果要让几个同

5、时显示, 则采用来回扫描显示的方法, 且当某个数码管显示时, 必须要有一定的延时,约在 100ms左右,太短显示不明显(发光不够) ,太长会产生闪烁。数码管的控制如下图所示:键盘对应的 ASCII 码表键盘012345678910ASCI30H31H32H33H34H35H36H37H38H39H41HI键盘1112131415ASCII42H43H44H45H46H键盘对应发光二极管表键盘012345678发光二3FH06H5BH4FH66H6DH7DH07H7FH极管键盘9101112131415发光二67H77H7CH39H5EH79H71H极管二、设计步骤1、程序流程图1)、程序一流程

6、图:开始8255A 的初始化N判断是否有键按下YN回车在屏幕上显示Y结束流程图说明: 8255 初始化后,程序一直扫描键盘,如果没有按键按下则直接继续扫描键盘, 如果有按键按下, 则判断按键是否是回车键,如果是回车则结束程序,否则显示出按键所对应的十六进制字符到电脑屏幕上。2 )、程序二流程图开始8255 的初始化扫描键盘N在四个发光二极管上显示相应的按回车键值(按第一个在最右端显示,按第二个第一个左移,第二个在最右端显示)Y在屏幕上显示发光二极管上的信息结束程序二流程图说明: 8255 初始化后程序开始扫描键盘,如果没有按键按下则继续扫描键盘, 如果有按键按下则判断是不是回车键,如果是回车键

7、则把输入的最后四个字符输出到电脑屏幕上显示,如果不是则把数码管和屏幕显示对应的第三位左移到第四位, 第二位左移到第三位, 第一位左移到第二位, 再把新输入进来的存到第一位。2.8255 的初始化1 )、程序一:MOV AL,81HMOV DX,CON_8255;CON_8255即 303HOUT DX,AL2)、程序 2:mov al,10000001bmov dx,303hout dx,al程序一和程序二初始化相同, 但是程序一只需要端口 A和端口 C低三位输入。而程序二需要端口 A 和端口 C低三位输入和端口 B和端口 C的第五六七位输出才可以。3. 程序设计根据课程设计要求和上面整个程序

8、的流程图以及我们对程序的分析有下列程序段:1)、数据段程序 1:DATA SEGMENTPC_0DB 012345 ;在屏幕上显示的数据PC_1DB 6789ABPC_2DB CDEFDATA ENDS程序 2:data segmentpc_0 db 3fh,06h,5bh,4fh,66h,6dh ; 发光二极管 pc_1 db 7dh,07h,7fh,67h,77h,7chpc_2 db 39h,5eh,79h,71hpcA_0 db 30h,31h,32h,33h,34h,35h;DOS字符ASCII值pcA_1 db 36h,37h,38h,39h,41h,42hpcA_2 db 43h

9、,44h,45h,46htemp db 00h,00h,00h,00htemp1 db 30h,30h,30h,30hdata ends; 四个灯的变量;DOS字符的值2)、键盘扫描两个程序的键盘扫描基本上是一样的:WAIT1: MOV AL,0FEHMOV BH,0DWAIT2: MOV DX,300HOUT DX,ALMOV BL,ALMOV DX,302HIN AL,DXTEST AL,00000001B;测试D0位是否为1JZ PC0TEST AL,00000010B;测试D1位是否为1JZ PC1TEST AL,00000100B;测试D2位是否为1JZ PC2MOV AL,BLRO

10、L AL,1INC BHINC BHCMP BH,12JZ WAIT1JMP WAIT2PC0: MOV SI,OFFSET PC_0;CALL KEYB_HANDLING响应第一排键盘的某个按钮CALL DELAYJMP WAIT1PC1: MOV SI,OFFSET PC_1;CALL KEYB_HANDLINGCALL DELAYJMP WAIT1响应第二排键盘的某个按钮PC2: MOV SI,OFFSET PC_2;CMP BH,8JL NEXT1JNZ NEXTCALL BACKSPACEJMP WR响应第三排键盘的某个按钮3)、屏幕显示程序1:KEYB_HANDLING PROC;

11、键盘响应MOV BL,BHMOV BH,00HMOV AL,SI+BXmov dl,almov ah,02hint 21hCALL DELAYRETKEYB_HANDLING ENDP程序2:input proc;输入到显示在屏幕上的值call shift_emov al,si+bxmov si,offset temp1mov si,alretinput endp4)、数码管显示show proc;显示在发光二极管push axpush bxmov si,offset tempmov cx,4mov bx,0mov ah,00hbbb:mov al,ahmov dx,302hout dx,al

12、mov al,si+bxinc bxmov dx,301hout dx,aladd ah,10hcall delay1loop bbbpop bxpop axretshow endp5)、数码管数字和电脑屏幕字符的移动数码管数字移动:shift_l proc;二极管的灯左移动push sipush axpush cxpush bxmov si,offset tempmov cx,3mov bx,2mov al,2bsss:mov bl,almov ah,si+bxinc bxmov si+bx,ahdec alloop bssspop bxpop cxpop axpop siretshift_

13、l endp电脑屏幕字符移动:shift_e proc;显示在屏幕上的值的移动push sipush axpush cxpush bxmov si,offset temp1mov cx,3mov bx,2mov al,2bsss1:mov bl,almov ah,si+bxinc bxmov si+bx,ahdec alloop bsss1pop bxpop cxpop axpop siretshift_e endp4. 程序的验证程序一比较简单,没有花费太多时间就做好了。程序二其实也不难,只是由于我们不是一个人在设计二十五个组员都在共同工作,开始的时候我们的程序在我们看来没有错,但是运行起来

14、没有看到想要的结果。经过我们不懈的努力我们终于获得了成功。最后,程序一和程序二都运行正确,需要提出来的是, 程序二有一点点不影响实验结果的问题: 数码显示管某些不应该亮的地方运行时有微弱的灯光,正也是我们到最后也没有解决的问题,需要请教老师。心得体会:本次课程设计多我来说真的是帮助很大,之前我汇编没学好,才开始做微机试验的时候真是很痛苦, 通过这一次的课程设计, 我对汇编也有了进一步的掌握,同时本次课程设计让我进一步理解和掌握了 8255 的使用,对我进行微机考试之前的复习很有帮助。此次微机课程设计让我懂得了实践的重要性。即使课本知识掌握的很好,如果不会综合运用,也是一些支离破碎的无用的知识,

15、而如果能够运用而实际动手能力很差,理论与实践结合不起来, 学得再好也没用。这次课程设计恰好是将课 本知识与的巩固与综合运用结合起来, 再加上实际动手能力的培养三者结合起来的。一方面,它加深与巩固了所学的各章节的理论, 并将其综合运用,提高了我 们综合运用知识的能力;另一方面,培养了我们对专业知识学习的趣。总之,这次设计多少还是有一点收获的。 这次设计让我明白了一个道理, 做 任何事前之前, 不管完成它的时间有多么充裕, 开始的态度都要摆好, 都要认真 去对待,到最后才不会后悔!也许有些人会说,草草完成的设计没有什么意义,没有意义的是也就没有收获。没错,这次的设计是草草完成,没有多大的意义, 在

16、答辩的时候, 很多设计的重点都没有完成, 但这次给我的经验是宝贵的, 在以 后的毕业设计甚至在以后的工作中, 我就不会出现这种问题了。 人的一生,不是 没有意义的事,就不去做了。很多事,都是在做了之后,才会觉得有没有意义,才会觉得有没有收获!所以,在这次设计的过程中,我得到了一些宝贵的经验, 所以这就是我的收获附件程序源代码:1)程序一:只在屏幕上显示DATA SEGMENTA_8255 EQU 300HB_8255 EQU 301HC_8255 EQU 302HCON_8255 EQU 303HPC_0 DB 012345PC_1 DB 6789ABPC_2 DB C D E FDATA E

17、NDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,81HMOV DX,CON_8255OUT DX,ALMOV AL,00HMOV DX,C_8255OUT DX,ALWAIT1: MOV AL,0FEHMOV BH,0dWAIT2: MOV DX,A_8255OUT DX,ALMOV BL,ALMOV DX,C_8255IN AL,DXTEST AL,00000001BJZ PC0TEST AL,00000010BJZ PC1TEST AL,00000100BJZ PC2MOV AL,BLROL AL,

18、1INC BHinc bhCMP BH,12JZ WAIT1JMP WAIT2PC0: MOV SI,OFFSET PC_0CALL KEYB_HANDLINGCALL DELAYJMP WAIT1PC1: MOV SI,OFFSET PC_1CALL KEYB_HANDLINGCALL DELAYJMP WAIT1PC2: MOV SI,OFFSET PC_2CMP BH,8JL NEXT1JNZ NEXTCALL BACKSPACEJMP WRNEXT: CMP BH,10JNZ WRCALL ENTERJMP WRNEXT1: CALL KEYB_HANDLINGWR:CALL DELA

19、YJMP WAIT1KEYB_HANDLING PROCMOV BL,BHMOV BH,00HMOV AL,SI+BXMOV DL,ALMOV AH,02HINT 21HCALL DELAYRETKEYB_HANDLING ENDPENTER PROCJMP EXITENTER ENDPBACKSPACE PROCMOV AL,00HMOV DX,B_8255OUT DX,ALRETBACKSPACE ENDPDELAY PROCMOV CX,0DAA1: MOV BX,8000DAA2: DEC BXJNZ AA2LOOP AA1RETDELAY ENDPEXIT: MOV AH,4CHIN

20、T 21HCODE ENDSEND START2)程序二:在数码管上显示data segmentpc_0 db 3fh,06h,5bh,4fh,66h,6dh ; 发光二极管 pc_1 db 7dh,07h,7fh,67h,77h,7ch pc_2 db 39h,5eh,79h,71hpcA_0 db 30h,31h,32h,33h,34h,35h;DOS字符 ASCII 值pcA_1 db 36h,37h,38h,39h,41h,42hpcA_2 db 43h,44h,45h,46htemp db 00h,00h,00h,00h; 四个灯的变量temp1 db 30h,30h,30h,30h

21、;DOS字符的值data endscode segmentassume cs:code,ds:databeg:mov ax,datamov ds,axmov al,10000001bmov dx,303hout dx,almov al,00hmov dx,302hout dx,alf1:mov al,0feh; 键盘扫描开始mov bh,00hf2:mov dx,300hout dx,almov bl,alcall showmov dx,302hin al,dxtest al,00000001bjz pc0test al,00000010bjz pc1test al,00000100bjz p

22、c2mov al,blrol al,1inc bhcmp bh,6hjz f1jmp f2pc0:mov si,offset pc_0call key_pressmov si,offset pcA_0call inputcall delayjmp f1pc1:mov si,offset pc_1call key_pressmov si,offset pcA_1call inputcall delayjmp f1pc2:mov si,offset pc_2cmp bh,04hjl next1jnz nextjmp wrnext:cmp bh,05h;jnz wrcall enterjmp wrn

23、ext1:call key_pressmov si,offset pcA_2call inputwr: call delayjmp f1key_press procmov bl,bhmov bh,00hcall shift_l;第一排键盘;第二排键盘;第三排键盘第 17键盘; 键盘按下mov al,00hmov dx,302hout dx,almov al,si+bxmov dx,301hout dx,almov si,offset tempmov si,alretkey_press endpenter proc;mov si,offset temp1mov cx,4mov bx,3bb1:mov dl,si+bxdec bxmov ah,02hint 21hloop bb1jmp exitenter endp回车盘input proc;call shift_emov al,si+bxmov si,offset temp1mov si,alretinput endp输入到显示在屏幕上的值show proc;显示在发光二极管push axpush bxmov si,offset tempmov cx,4mov bx,0mov ah,00hbbb:mov al,ahmov

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论