版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 课 程 设 计 课程名称 微机原理课程设计与实践 题目名称 计算器(1) 学生学院 自动化学院 专业班级 10级电气(1)班 学 号_3110001249_ 学生姓名_孙发杰_指导教师 李传芳 2012 年 11月 21日一、课程设计的内容1在显示器上显示任意四位十六进制数2.将8个键按实验室要求定义键值,按任意键在显示器上显示对应键值,要求显示值能够左移。3.实现:A)定义键盘按键,5个为数字键4、6、8、C、D,3个功能键:加号+,乘号×,等号;B)可进行三位16进制加法运算; C)可进行两位16进制乘法运算。二、课程设计的要求与数据(1)巩固和加深对微机原理课程内容的认识和理
2、解,提高应用水平。(2)掌握汇编语言程序的编制方法。(3)熟悉键盘控制和七段数码管的使用三、课程设计应完成的工作完成线路的接线,编写三个程序并输入电脑中,把程序加载到W86学习机当中,运行程序验证结果。四、课程设计进程安排序号设计各阶段内容地点起止日期1了解键盘的工作原理,编写显示程序微机实验室3月17日2定义键盘数字和显示数字微机实验室3月18日3设计十六进制减法和十进制乘法的计算器微机实验室3月19、20日五、应收集的资料及主要参考文献1 许立锌等编.微型计算机原理及应用.北京:机械工业出版社,20032.许立梓等编微型计算机原理及应用 -习题解答、实验指导及课程设计.北京:机械工业出版社
3、,2003发出任务书日期: 年 月 日 指导教师签名:计划完成日期: 年 月 日 基层教学单位责任人签章: 主管院长签章:摘要 本实训报告主要关于本次任务中如何运用8255和LED显示器,通过编译代码来实现所需要数字的显示,与数字的能够左右移动,和加入十六进制减法和十进制乘法的功能实现。包括系统设计原理,系统原理图,程序设计流程图,原程序代码和参考文献等。目 录课程设计任务书11.系统设计说明.41.1 各部分工作原理说明.41.1.1 8255接口芯片与4×2键盘的连接41.1.2 LED显示器的工作方式.51.2 8255A与键盘、显示器的连接图.62.程序设计及流程图.72.1
4、显示程序.72.1.1流程图.72.1.2源程序.82.2键盘程序.92.2.1流程图.92.2.2源程序.102.3 计算器程序.132.3.1流程图.132.3.2源程序.143.主要参考文献.214.心得体会211 系统设计说明如电路框图所示,本系统是一个由CPU控制的8255A和两个74LS07同向驱动电路组成,通过对8255A的编程,以实现对键盘和LED数码管显示器的控制。系统中,8255A的PA4PA7引线作为键盘的控制输出,同时也作为LED数码管显示器的片选控制;PC2和PC6引线作为键盘的控制输入,用以确定键盘按键的位置。PB7PB0引脚作为LED数码管显示器的数码管控制(PB
5、7PB0)分别接到液晶显示器的数码管控制的AH接口),用以确定数码管的亮与灭。通过对8255A的编程,把PA和PC口的输入信号,转变成PB口的输出信号,控制LED数码管显示器,同时,还要实现对应的功能。通过对8255A的编程,把输入的信号经过处理,显示在显示器上。1.1 各部分工作原理说明1.1.1 8255接口芯片与2×4键盘的连接图中有2行4列,4根线于PA口相连,2根列线与PC口的PC2,PC6相连。按键设置在行、列交点处(数字或字符为其键号),行、列线分别连接到按键开关的两端。当列线通过上拉电阻接+5V时,就被钳位在高电平状态。键盘中有无键按下是由行线送入全扫描字、列线读入行
6、线状态来判断的。这就是:给行线所有I/O线均置成低电平,然后读入列线电平状态。如果有键按下,总会有一根列线电平被拉至低电平,从而使列线输入不全为1。键盘中哪一个键按下是由行线逐行置低电平后,检查列线输入状态予以确定的。其方法是:依次给行线送低电平,然后查所有列线状态,如果全为1,则所按下之键不在次行。如果不全为1,则所按下之键必在次行。而且是在与0电平行线相交点上的那个键。键盘的工作方式采用编程扫描工作方式,即通过调用键盘子程序来响应键输入的要求,在键盘扫描子程序中完成下述功能:1) 判断键盘上有无键按下。其方法是先使PA7PA00,然后读PC2、PC6的状态,若全为1,则键盘中无键按下;若不
7、全为1,则说明键盘中有键按下。2) 去除按键的抖动影响。对于由机械触点构成的按键,由于机械触点的弹性作用,触点在闭合及断开瞬间有一个抖动过程,一般为510ms时间。为了消除抖动影响可作这样处理:当判断有键按下后,软件延时一段时间在判断键盘状态,如果仍有键按下状态,则认为有一个确定的键按下,否则按键抖动处理。3) 求按下键的键值及键号。键盘上的每个键都对应一个键值。键值的组成:高8位为扫描该键时的行线输出值(PA4PA7),高8位为该键按下时的列线输入值(PC2、PC6为有效位,其余位令其为1)。由于键盘中键号排列无规律,不能通过对键值直接运算得到键号。因此必须先判断按下键是使PC2=0还是PC
8、6=0,然后再查为零的列线上键按下时其8位键值中是否有一位为零,若为零则可得到键值。求按下键的键值及键号的目的是使程序转到相应的地址去完成该键的操作。一般,对数字键就是直接将该号送到显示缓冲区进行显示,对功能键则必须先找到该功能键处理程序入口地址,并转去执行该键的命令。因此当键号求到后,还必须找到功能处理入口。4) 为保证键闭合依次CPU仅进行依次键功能操作。程序中需要等待键释放以后再将键号送累加器AH。1.1.2 LED显示器的工作方式LED数码管是目前最常用的数字显示器,图A、B为共阴管和共阳管的电路,图C为两种不同出线形式的引出脚功能图。一个LED数码管可用来显示一位09十进制数和一个小
9、数点。小型数码管(0.5寸和0.36寸)每段发光二极管的正向压降,随显示光(通常为红、绿、黄、橙色)的颜色不同略有差别,通常约为22.5V,每个发光二极管的点亮电流在510mA。LED数码管要显示BCD码所表示的十进制数字就需要有一个专门的译码器,该译码器不但要完成译码功能,还要有相当的驱动能力。图A 共阴连接(“1”电平驱动) 图B 共阳连接(“0”电平驱动)图C LED数码管符号及引脚功能图LED显示器有静态和动态两种工作方式LED显示器工作在静态显示方式下,共阴极或共阳极连接在一起,然后接地或+5V;每位的段选线(A,B,G,H)与一个8位并行口相连。这样,只要在每一位的段选线上保持段选
10、码电平,该位就能保持相应的显示字符。在多位LED显示时,为了化简电路,降低成本,将所有位的断选线并联在一起,由一个8位的I/O口控制,即控制段选码而共阴极或共阳极点分别由相应的I/O线控制即控制位选码,这就是动态显示。4位LED动态显示电路只需一个8位I/O口及一个4位I/O口,其中8个I/O控制段选码,4位I/O控制位选。进行4位字符显示时,采用扫描显示方式,即在每一瞬间只使某一位显示相应字符,在此瞬间,段选控制I/O口输出相应字符段选码,位选控制I/O口在该显示位送入选通电平(共阴极送低电平,共阳极送高电平),以保证该位显示相应字符。如此轮流,使每位显示该位应显示字符,并保持延迟一段时间(
11、15ms),以造成视觉暂留效果。不断循环送出相应的段选码、位选码,就可以获得视觉稳定的显示状态。1.2 8255A与键盘、显示器的连接图本设计采用8255接口芯片作为2×4键盘与4位七段数码管显示器的接口。74LS0774LS07PB0PB7PC2PC6PA7PA4 4.7K×2Y1Y2X1X2X3X4×=92478PA6PA5+5VABCDEFGDP+5V:4.7k4.7k2 程序设计及流程图2.1显示程序123EFD要求:在显示器上显示任意六位十六进制数 2.1.1 流程图开始初始化读入输出字符片选显示器校对表首地址并输出延时结束2.1.2 源程序程序如下:S
12、TACK SEGMENTDW 64 DUP(?)STACK ENDSDATA SEGMENT TABL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H, 7CH,39H,5EH,79H,71H ;数码转化表DATA1 DB 01H,02H,03H,0EH,0FH,0DHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DTAT,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV BX,OFFSET TABLMOV SI,OFFSET DATA1MOV DX,0606HMOV AL,80HOUT D
13、X,ALS1:CALL DISPJMP S1DISP:PUSH AXPUSH CXPUSH SIMOV CX,06HMOV AH,0FEHA1:MOV AL,AHMOV DX, 0602HOUT DX,ALMOV AL,SIXLAT MOV DX,0604HOUT DX,ALCALL DELAYINC SIROL AH,1LOOP A1POP SIPOP CXPOP AXRETDELAY:PUSH AX ;延时子程序PUSH CXMOV CX,0006HT1:MOV AX,0100HT2:DEC AXJNZ T2LOOP T1POP CXPOP AXRETCODE ENDSEND START2
14、.2 键盘程序要求:将8个键定义键值为按任意键在显示器上显示对应键值AB25985F2.2.1 流程图开始8255初始化有无压键显示扫描保存数据有无放键显示扫描NYNY2.2.2 源程序程序如下:STACK SEGMENTDW 64 DUP(?)STACK ENDSDATA SEGMENT VAR1 DB 0H,0H,0H,0H TABL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH, 77H,7CH,39H,5EH,79H,71H ;转为显示码 DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV A
15、X,DATAMOV DS,AXMOV DX,0606H ;8055A的初始化 MOV AL,90H OUT DX,ALSTT:MOV AL,00H ;键盘测试有无压键MOV DX,0602HOUT DX,ALNEXT:MOV DX,0600HIN AL,DXAND AL,0CH ;通过扫描A口低位测试是否按键CMP AL,0CHJNZ KEYABCCALL DISPJMP STTKEYABC:CALL TIME ;调用延时,去抖动MOV DX,0600H ;送入A口数据IN AL,DXAND AL,0CH ;对数据前四位清零CMP AL,0CH ;比较后四位数据JNZ KEY ;转移到检测按下
16、哪个数字键JMP STT ;返回检测键盘KEY:MOV AL,0FEH ;检测数字A键MOV DX,0602HOUT DX,ALMOV DX,0600HIN AL,DXTEST AL,08H ;测试按键JNZ KEY_9 ;转移检测下一个数字键CALL KEYA JMP STTK ;调用数字键处理程序KEY_9:TEST AL,04H ;检测数字键9JNZ KEY_B CALL KEY9JMP STTKKEY_B: MOV AL,0FDH ;检测数字键BMOV DX,0602HOUT DX,ALMOV DX,0600HIN AL,DXTEST AL,08HJNZ KEY_8CALL KEYBJ
17、MP STTKKEY_8:TEST AL,04H ;检测数字键8JNZ KEY_2CALL KEY8JMP STTKKEY_2:MOV AL,0FBH ;检测数字键2MOV DX,0602HOUT DX,ALMOV DX,0600HIN AL,DXTEST AL,08HJNZ KEY_CCALL KEY2JMP STTKKEY_C:TEST AL,04H ;检测数字键CJNZ KEY_5CALL KEYCJMP STTKKEY_5:MOV AL,0F7H ;检测数字键5MOV DX,0602HOUT DX,ALMOV DX,0600HIN AL,DXTEST AL,08HJNZ KEY_FCA
18、LL KEY5JMP STTKKEY_F:TEST AL,04H ;检测数字键FJNZ KEY_00CALL KEYFKEY_00:JMP STTKKEYA:CALL LP1 ;置数AMOV AL,0AHMOV SI,ALCALL DISPRETKEY9:CALL LP1 ;置数9 MOV AL,09HMOV SI,ALCALL DISPRETKEYB:CALL LP1 ;置数BMOV AL,0BHM0V SI,ALCALL DISPRETKEY8:CALL LP1 ;置数8MOV AL,08HMOV SI,ALCALL DISPRETKEY2:CALL LP1 ;置数2MOV AL,02HM
19、OV SI,ALCALL DISPRETKEYC:CALL LP1 ;置数CMOV AL,0CHMOV SI,ALCALL DISPRETKEY5:CALL LP1 ;置数5MOV AL,05HMOV SI,ALCALL DISPRETKEYF:CALL LP1 ;置数FMOV AL,0FHMOV SI,ALCALL DISPRETLP1:MOV CX,0005H ;数据保存,移位MOV SI OFFSET VAR1LP2:mov AL,SI+1MOV SI,ALINC SILOOP LP2RETDISP:PUSH AXPUSH CXPUSH SIMOV BX,OFFSET TABLMOV S
20、I OFFSET VAR1MOV CX,06HMOV AH,0FEHA1:MOV AL,AHMOV DX,0602HOUT DX,ALMOV AL,SIXLATMOV DX,0604HOUT DX,ALCALL DELAYINC SIROL AH,ILOOP A1POP SIPOP CXPOP AXRETDELAY:PUSH AX ;延时子程序PUSH CXMOV CX,0006HT1:MOV AX,0100HT2:DEC AXJNZ T2LOOP T1POP CXPOP AXRETTIME:PUSH AX PUSH CXMOV CX,0002HTIME1:MOV AX,0300HTIME2:
21、DEC AXJNZ TIME2LOOP TIME1POP CXPOP AXRETSTTK:CALL DISP ;放键测试程序MOV AL,00HMOV DX,0602HOUT DX,ALMOV DX,0600HIN AL,DXAND AL,0CHCMP AL,0CHJNZ STTKJMP STT CODE ENDSEND START2.3计算器程序要求: A)定义键盘按键,8个为数字键0到7,3个功能键:加号+,减号-,等号;B)可进行五位8进制减法运算; C)可进行四位8进制加法运算。2.3.1 流程图开始8255初始化有无压键显示扫描是数字键?有标志?加号?乘号?设加标志设乘标志清零显示器
22、,清标志位保存数据放键?显示扫描清零显示器进行加、乘运算,存结果等号?YYYYYYYNNNNNN程序流程图2.3.2 源程序程序如下:STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDATA SEGMENTVAR1 DB 0BFH,0DFH,0EFH,0F7HVAR2 DB 0FCH,0FCH,0FCH,0FCH,0FCH,0FCH,0FCH,0FCHVAR3 DB 00H,00H,00H,00H,00H,00H,00H,00H VAR4 DB 00H,00H,00H,00H,00H,00H,00H,00HTABLE DB 0FCH,60H,0DAH,0F2H
23、,066H,0B6H,0BEH,0E4H,0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV AL,82H;8255A初始化OUT 63H,ALSTT:MOV AL,00H;键盘测试OUT 60H,ALNEXT: IN AL,61HAND AL, 60H;通过扫描C口低位测试是否按键CMP AL,60HJNZ KEYABCCALL DISPJMP STTKEYABC:CALL TIME;调用延时,去抖动IN AL,
24、61H;送入C口数据AND AL,60H;数据前六位清零CMP AL,60H;比较数据后两位JNZ KEY_C ;转移到检测按下哪个数字键JMP STT;返回检测键盘KEY_C: MOV AL, 0F7H;检测数字2键OUT 60H,ALIN AL,61HTEST AL,20H;测试按键JNZ KEY_D;转移检测下一个数字键CALL KEYC ;调用数字键处理程序JMP STTK;放键返回KEY_D : TEST AL,40H;检测功能×键JNZ KEY_4;转移检测下一个数字键CALL KEYD ;调用数字键处理程序JMP STTK;放键返回KEY_4 : MOV AL, 0EF
25、H;检测数字4键OUT 60H,ALIN AL,61HTEST AL,20H;测试按键JNZ KEY_1;转移检测下一个数字键CALL KEY4 ;调用数字键处理程序JMP STTK;放键返回KEY_1 : TEST AL,40H;检测功能-键JNZ KEY_6;转移检测下一个数字键CALL KEYS ;调用数字键处理程序JMP STTKKEY_6 : MOV AL,0DFH;检测数字7键OUT 60H,ALIN AL,61HTEST AL,20H;测试按键JNZ KEY_2;转移检测下一个数字键CALL KEY6;调用数字键处理程序JMP STTK;放键返回KEY_2 : TEST AL,4
26、0H;检测功能=键JNZ KEY_8;转移检测下一个数字键CALL KEY2;调用数字键处理程序JMP STTK;放键返回KEY_8 : MOV AL,0BFH;检测数字8键OUT 60H,ALIN AL,61HTEST AL,20H;测试按键JNZ KEY_E;转移检测下一个数字键CALL KEY8 ;调用数字键处理程序JMP STTK;放键返回KEY_E : TEST AL,40H;检测数字9键JNZ KEY_HCALL KEYE;调用数字键处理程序KEY_H: JMP STTK;放键返回KEYC: CMP BH,00HJZ KEYCCCALL CLEARKEYCC:CALL LP1MOV
27、 AL,9CHMOV SI+3,ALMOV AL,0CHMOV DI+3,ALCALL DISPRETKEYD: CMP BH,00HJZ KEYDDCALL CLEARKEYDD:CALL LP1MOV AL,7AHMOV SI+3,ALMOV AL,0DHMOV DI+3,ALCALL DISPRETKEY4: CMP BH,00HJZ KEY44CALL CLEARKEY44:CALL LP1MOV AL,66HMOV SI+3,ALMOV AL,04HMOV DI+3,ALCALL DISPRETKEY6: CMP BH,00HJZ KEY66CALL CLEARKEY66:CALL
28、LP1MOV AL,0BEHMOV SI+3,ALMOV AL,06HMOV DI+3,ALCALL DISPRETKEY8: CMP BH,00HJZ KEY88CALL CLEARKEY88:CALL LP1MOV AL, 0FEHMOV SI+3,ALMOV AL,08HMOV DI+3,ALCALL DISPRETKEY1: CMP BH,00HJNZ KEY11CALL LP3KEY11:MOV BX,0101H RETKEY2: CMP BH,00HJNZ KEY22CALL LP3KEY22:MOV BX,0102H RETKEYE: MOV BH,01HCMP DH,01HJZ
29、 K0MOV DH,01HMOV BH,01HCMP BL,01HJZ K1CMP BL,02HJZ K2STTE:RET K0: CALL CLEARK1:CALL ADD1JMP STTEK2:CALL MUL1JMP STTECLEAR:MOV SI,OFFSET VAR2MOV DI,OFFSET VAR3MOV CX,0004HCLEAR1:MOV AL,0FCHMOV SI,ALMOV AL,00HMOV DI,ALINC SIINC DILOOP CLEAR1MOV BH,00HRETADD1:LEA SI,VAR3LEA DI,VAR4CLCMOV CX,0003HADD2:M
30、OV AL,DIADD AL,SICMP AL,10HJL ADD3SUB AL,10HMOV BL,01HADD DI+1,BLADD3:MOV DI,ALINC SIINC DILOOP ADD2CALL CHANGECALL DISPRETMUL1:MOV SI,OFFSET VAR3MOV DI,OFFSET VAR4MOV CL,04HMOV AX,0000HMOV AL,SI+1SAL AL,CLADD AL,SIMOV BL,00HMOV BL,DI+1SHL BL,CLADD BL,DIMUL BLMOV CX,0004HA1: MOV BX,AXAND AX,000FHMOV
31、 DI,ALINC DIMOV AX,BXPUSH CXMOV CL,04HSHR AX,CLPOP CXLOOP A1CALL CHANGECALL DISPRETLP1:MOV CX,0004H;数据移位保存子程序(前进三位)MOV SI,OFFSET VAR2;SI指向显示代码缓冲区首址MOV DI,OFFSET VAR3LP2:MOV AL,SI+3MOV SI+4,AL MOV AL,DI+3;显示代码移位MOV DI+4,ALDEC SI ;显示数字移位DEC DILOOP LP2RET;移位返回LP3: MOV CX,0004HMOV SI,OFFSET VAR3MOV DI,O
32、FFSET VAR4LP4: MOV AL,SIMOV DI,ALINC SIINC DILOOP LP4RETCHANGE:MOV SI,OFFSET VAR2MOV DI,OFFSET VAR4MOV BX,OFFSET TABLEMOV CX,0004HCOMP0: MOV AL,DI XLATMOV SI,ALINC SIINC DILOOP COMP0RET DISP:LEA SI,VAR2LEA DI,VAR1MOV DL,DI+3CMP DL,0FCHJNZ DIR3MOV DL,DI+2CMP DL,0FCHJNZ DIR2MOV DL,DI+1CMP DL,0FCHJNZ DIR1JMPDIR0DIR3:MOV CX,0004H JMP DIRDIR2:MOV CX,0003H JMP DIRDIR1:MOV CX,0002H JMP DIRDIR0:MOV CX,0001HDIR:MOV AL,SIOUT 62H,ALMOV AL,DIOUT 60H,ALCALL TIMEINC SIINC DILOOP DIRRETTIME: PUSH AX PUSH CX;延时子程序MOV CX,0040H TIME1:MOV AX,0003HTIME2:DEC AXJNZ TIME2LOOP TI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年南昌县人民医院医护人员招聘考试参考题库附答案详解
- 2025年西安三秦医院医护人员招聘笔试题库及答案详解
- 2026年赤峰市结核病医院医护人员招聘考试参考题库附答案详解
- 2026年宁城县中医院医护人员招聘考试参考题库附答案详解
- 2026年安徽省皖江机械厂职工医院医护人员招聘考试模拟试题及答案详解
- 2026年天津市河东疡科医院医护人员招聘考试模拟试题及答案详解
- 2025年苏州市相城区太平街道乐安社区卫生服务站医护人员招聘笔试题库及答案详解
- 2026年上半年福州新投生态开发有限公司招聘4人笔试模拟试题及答案详解
- 2025年丰润铁路医院医护人员招聘笔试题库及答案详解
- 2025年鹤岗市南山区平安第二人民医院医护人员招聘笔试题库及答案详解
- 2026中国热带农业科学院分析测试中心高层次人才引进4人笔试参考试题及答案解析
- 2026电工技师考试题库及参考答案
- 无线网络测试优化案例
- 公交公司内部审计制度
- 2026年中考语文备考之名著阅读《经典常谈》知识点汇编(完整版)
- 结肠息肉切除术后迟发性穿孔的早期识别策略-1
- 催化燃烧设备培训课件
- 电梯内控烟制度规范
- 2026年下学期小学二年级语文句子仿写与扩充练习
- 汽轮机本体安装培训课件
- 2025年现代交换技术考试题库含答案
评论
0/150
提交评论