微机原理加法器课程设计1

合集下载

微机原理课程设计

微机原理课程设计
微机原理课程设计
前言
加热器数字控制系统的设计与功能的实现要求学生在学习完微机原理及应用这门课的基础上,在对芯片类知识以及汇编语言有一定基础的前提下进行的一个非常体现学生综合能力的一个设计。要想很好的完成这个题目,必须对芯片的功能有很详细的了解,同时也要求学生的汇编语言基础要扎实。计算机技术的飞速发展,使的计算机知识和应用技能已成为人类知识经济的重要组成部分。《微型计算机原理》正是掌握计算机结构和工作原理的入门课程,它偏重于实际应用的课程,要求学生在学好理论知识的基础上,培养定的实践动手操作能力,学生将所学的理论知识和实践有机结合,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。微机原理课程设计是对《微型计算机原理》课程理论教学和实验教学的综合和总结。
[2]、徐建民·《汇编语言程序设计》[M]·北京:电子工业出版社
[3]、洪永强.微机原理与接口技术.北京:科学出版社. 2004年
课程设计图纸
程序清单
DATA SEGMENT
INTR_IVADDEQU01C8H;INTR对应的中断矢量地址(对应着中断程序入口地址)
INTR_OCW1EQU0A1H;INTR对应PC机内部8259的OCW1地址
MOV AX,SEG MYISR
MOV ES:[DI],AX;ห้องสมุดไป่ตู้置当前中断处理程序入口段地址
MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位
INAL,DX
MOV IM_BAK,AL;保存INTR原中断屏蔽字
AND AL,INTR_IM
OUTDX,AL
MOV DX,MY8259_ICW1 ;初始化实验系统中8259的ICW1
MOV DI,INTR_IVADD

微机原理 实验一 加法程序

微机原理  实验一 加法程序

实验一加法程序一、实验目的:学习数据传送和算术运算指令的用法。

二、实验内容:将两个多位十进制28056,47193相加,并显示加数,被加数,和。

要求两个加数均以ASCII码形式各自顺序存放在DATA1和DATA2内存单元中,结果送回DATA1处(低位在前,高位在后)。

三,程序流程图:程序流程如图2.1所示。

图2.1十进制数相加程序流程图SHOW MACRO BMOV DL,BMOV AH,02HINT 21HENDMDATA SEGMENTDATA1 DB 33H,39H,31H,37H,34HDATA2 DB 36H,35H,30H,38H,32HDATA3 DB '____ ',0DH,0AH,'$'DATA ENDSSTACK SEGMENT STACKSTA DB 20 DUP (?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACK, ES:DATA START: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA2MOV BX,05SHOW 20HCALL DISPLSHOW 0DHSHOW 0AHMOV SI,OFFSET DATA1MOV BX,05SHOW 2BhCALL DISPLSHOW 0DHSHOW 0AHS1: SHOW 2DHLOOP S1SHOW 0DH SHOW 0AHMOV SI,OFFSET DATA1MOV DI,OFFSET DATA2CALL ADDAMOV SI,OFFSET DATA1MOV BX,05SHOW 20HCALL DISPLMOV AX,4C00HINT 21HDISPL PROC NEARDS1: SHOW [SI+BX-1]DEC BXJNZ DS1RETDISPL ENDPADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05AD1: SUB BYTE PTR [SI+BX-1],30H SUB BYTE PTR [DI+BX-1],30H DEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05CLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALINC SIINC DIMOV SI,DXMOV DI,BPMOV BX,05AD3: ADD BYTE PTR [SI+BX-1],30HADD BYTE PTR [DI+BX-1],30HDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START编写完源程序后,保存为文件名为“JIAFA.ASM”的文件。

加法器课程设计电路

加法器课程设计电路

加法器课程设计电路一、课程目标知识目标:1. 学生能理解加法器的基本概念,掌握半加器、全加器的电路组成和工作原理。

2. 学生能运用所学知识,设计简单的加法器电路,并描述其功能。

3. 学生了解数字电路的基本分类,认识到加法器在数字电路中的应用。

技能目标:1. 学生能够运用所学知识,分析并解决实际加法器电路问题。

2. 学生通过小组合作,动手搭建加法器电路,提高实践操作能力。

3. 学生能够运用计算机辅助设计软件,绘制加法器电路图。

情感态度价值观目标:1. 学生对数字电路产生兴趣,培养主动探究科学知识的热情。

2. 学生在小组合作中,学会尊重他人意见,培养团队协作精神。

3. 学生通过学习加法器电路,认识到科技发展对生活的影响,增强社会责任感。

课程性质:本课程为电子技术基础课程,以理论教学和实践操作相结合的方式进行。

学生特点:学生为初中生,具有一定的物理知识和动手能力,对电子技术有一定的好奇心。

教学要求:结合学生特点,注重理论与实践相结合,提高学生的实践操作能力和创新能力。

在教学过程中,注重启发式教学,引导学生主动探究,培养科学思维。

二、教学内容1. 数字电路基础知识:介绍数字电路的基本概念、分类及特点,使学生了解加法器在数字电路中的应用。

- 教材章节:第一章 数字电路概述2. 加法器原理:讲解半加器、全加器的工作原理,引导学生理解加法器电路的组成及功能。

- 教材章节:第三章 组合逻辑电路;第四节 加法器3. 加法器电路设计:教授如何设计简单的加法器电路,让学生掌握电路设计的基本方法。

- 教材章节:第三章 组合逻辑电路;第五节 电路设计实例4. 实践操作:组织学生进行小组合作,动手搭建加法器电路,提高学生的实践操作能力。

- 教材章节:第五章 实践操作;第一节 电路搭建与测试5. 计算机辅助设计:介绍计算机辅助设计软件,教授如何绘制加法器电路图。

- 教材章节:第六章 计算机辅助设计;第一节 电路图绘制教学进度安排:第一课时:数字电路基础知识,介绍加法器在数字电路中的应用。

微机原理课程设计简易计算器

微机原理课程设计简易计算器

-O一一〜二O—二学年第一学期信息科学与工程学院自动化系课程设计计划书二o—年十二月六日一、课题名称简易计算器设计二、课题目的利用8088和8255设计一个简易计算器,并将其结果显示在LED数码管上。

熟悉系统设计的基本步骤,掌握8088与8255的接口设计,掌握通过8255设计键盘扫描技术,掌握通过8255显示七段共阴极数码管设计。

加强对8088数据总线,地址总线及接口寻址的理解,加深对8255的端口控制的理解。

三、需求分析(1)能够实现99以内的加减乘法运算,并显示在2位LED上。

(2)对于减法运算产生的负数,可在LED上显示号,若负量超过9,则显示“E0S四、方案选择方案一:该方案将LED显示电路直接接在8088的DB上,而键盘则采用8255进行扫描。

方案二:该方案则是将LED显示电路和键盘扫描电路分别接在两个不同的8255上,扫描和显示时,选中不同的8255。

方案三:该方案则只用一片8255驱动LED显示和键盘扫描电路。

方案评估:方案一:LED显示驱动电路实现起来较简单,但是很浪费系统总线资源,舍弃!方案二:释放了系统数据总线,但是方案缺乏经济性,因为采用了两片8255,与建设资源节约型社会初衷冲突!舍弃!方案三:此种方案较为经济,方便,具有模块化的特点(因为将计算和显示电路全部集成在了8255上,应用时,直接挂接8255即可实现要求!)综上所述:采用方案三!五、程序流程图程序总流程图:判断输入流程图: 断电开始I六. 系统原理图键盘映射图:键盘编码图:系统原理图:注:1、复位电路单独画在旁边,其参数设置符合6MHZo2、74HC04反相器由于位置不够,本人自己画了一个小型的74HC04。

3、IOW, IOR信号线由于采用了最大系统组态,故由8288的IORC 和AIOWC 代替。

4.8088的CLK由8284A提供,其电路连接方式参照Datasheet5、最大系统组态连接方式参照课本。

6、LED与键盘扫描电路的上拉电阻阻值统一采用,保证数码管有足够亮度。

设计加法器教学设计

设计加法器教学设计

设计加法器教学设计一、引言在数学教育中,加法是最基础的运算之一,而加法器是实现加法运算的关键工具。

设计合理的加法器教学设计,能够帮助学生理解加法的概念和运算规则,培养他们的逻辑思维和计算能力。

本文将针对小学低年级的学生,设计一个简单而有效的加法器教学设计。

二、教学目标1. 理解加法的概念和加法的基本性质;2. 能够使用加法器完成简单的加法计算;3. 培养学生的逻辑思维和计算能力。

三、教学准备1. 加法器模型(可以是物理模型或者在电脑上展示的虚拟模型);2. 数字卡片或者纸牌,上面写着加法算式;3. 白板、彩色粉笔。

四、教学过程1. 导入使用一个生活实例来引入加法的概念,例如:“小明手里有3颗苹果,小红给了他2颗苹果,现在他一共有多少颗苹果?”。

让学生思考并回答这个问题,引导他们发现和认识加法的运算过程。

2. 理解加法的性质通过探究加数交换律和加法结合律,让学生理解加法的基本性质。

可以使用加法器模型来进行示范,让学生自己操作,亲自验证。

3. 计算实例给学生发放数字卡片或纸牌,上面写着加法算式,让学生自己加法器上进行操作,计算出结果。

每道题目可以先让学生想一想,然后手动操作加法器得出答案。

教师可以在白板上记录学生的解题过程和答案,以便后面的总结和讨论。

4. 引导讨论在计算实例中,故意设置一些特殊的情况,例如相同的加数、其中一个加数为0等,引导学生思考这些特殊情况下的结果。

通过对这些情况的讨论,让学生更加深入地理解加法的运算规则。

5. 拓展应用引导学生将加法运算应用到实际生活问题中。

例如:“今天小明放了6个气球,小红放了3个气球,他们一共放了多少个气球?”。

通过这样的问题,让学生将加法运算与实际问题相联系,提高他们的实际应用能力。

6. 总结对于学生在计算实例中出现的错误或疑惑进行总结,澄清概念,加强记忆。

让学生回答一些关于加法的问题,巩固所学内容。

7. 实际操作让学生在加法器模型上进行实际操作,计算一些实际的加法题目。

微机原理 加法计算器设计及显示

微机原理 加法计算器设计及显示

实验报告课程名称:微机原理实验指导老师: 成绩:实验名称: 加法计算器及显示实验类型: 同组学生姓名: 一、实验目的与要求(必填)ﻩﻩ二、实验内容与原理(必填)三、主要仪器设备(必填) ﻩﻩ四、操作方法与实验步骤五、实验数据记录与处理ﻩﻩ六、实验结果与分析(必填)七、讨论、心得一、实验目的与要求1.掌握基于状态机的编程方法2.实现数字运算、键盘输入、LED显示的多任务协调编程二、实验内容与原理1.编写程序,输入两个两位十进制数并显示,按确认键后显示运算结果2.基本功能:能够输入输入数字(非数字无效)并显示结果3.附加功能:光标指示功能(通过LED闪烁实现)以及退格功能三、程序代码ORG 0000HSTART: MOV78H,#0 ;初始化:78H放0的段码,其余放熄灭码MOV 79H,#10MOV7AH,#10MOV7BH,#10MOV 7CH,#10MOVR5,#0 ;R5就是按键次数,初始置0MOV R6,#0;将0置入R6中MOVR7,#0;将0置入R7中MOV30H,#0;30H就是功能键存放单元,置为0MOV 31H,#0 ;31H单元初始置为0MOV 40H,#0;40H单元初始置为0MOV41H,#0 ;41H单元初始置为0LOOP: LCALL DIR;调用显示子程序LCALLKEY ;调用键盘检测程序INC R5 ;按键次数加1S1: CJNE A,#10,S2;不就是"+"键,跳到S2LJMP FUN ;就是"+"键,跳到FUNS2: CJNE A,#11,S3;不就是"-"键,跳到S3LJMPFUN ;就是"-"键,跳到FUNS3: CJNE A,#12,S4 ;不就是"*"键,跳到S4LJMPFUN; 就是"*"键,跳到FUNS4:CJNEA,#13,S5 ; 不就是"/"键,跳到S5LJMPFUN ; 就是"/"键,跳到FUNS5: CJNEA,#14,S6 ; 不就是"="键,跳到S6LJMP FUN ;就是"="键,跳到FUNS6:CJNE A,#15,N1 ; 不就是"CL"键,跳到N1LJMP START; 就是"CL"键,跳到STARTN1: CJNE R5,#1,N2 ;若按键次数不等于1,跳到N2LJMP D11 ;跳到D11N2:CJNE R5,#2,START;若按键次数不等于2,跳到STARTLJMPT1 ;跳到T1D11: MOV R4,A;将A写入R4MOV 78H,A;输入值送显示个位缓存MOV 79H,#10;将10送到79H单元LJMP LOOP ;跳转到循环T1:MOV 53H,A;将A写入53HMOV B,#10;将10置入BMOVA,R4;将上一次输入的R4写进AMUL AB;A乘以10ADD A,53H ;53H里面的值与A相加MOV R4,A ;将新的值置入到R4MOV 79H,78H ;个位到十位MOV78H,53H;新数为个位LJMPLOOP;跳转到循环FUN:MOV 78H,#10 ;将10置入到78HMOV79H,#10;将10置入到79HMOV R0,30H ;与上次功能键交换MOV 30H,AMOV A,R0CJNE A,#10,FUN1;判断功能键LJMPADDY;"+"FUN1: CJNE A,#11,FUN2LJMP SUBT ;"-"FUN2: CJNE A,#12,FUN3LJMP MULT ;"*"FUN3: CJNE A,#13,FUN4LJMP DIVI;"/"FUN4: CJNE A,#14,FUN5 ;首次按功能键,即A=#0LJMPEQUA ;"="FUN5:MOV 40H,R4;保存第一个数MOVR5,#0;按键次数清零LJMPBCD ;将其拆为BCD码,以便后来将其显示OF: LJMP START ;跳转回开始ADDY: MOVA,40H ;加法,第一个数送累加器ADDA,R4 ;第一个数加第二个数MOV 40H,A ;存本次结果MOV R5,#0 ;按键次数清零LJMP BCD ;跳转到BCD程序SUBT: MOVA,40H;减法,第一个数送累加器CLRC;借位清零SUBB A,R4;带借位的减法,第一个数减第二个数JB CY,BCD2 ;借位为1,跳转到BCD2MOV 40H,A;将减的结果送40HMOVR5,#0 ;按键次数清零LJMPBCD ;跳转到BCDMULT: MOV A,40H ;乘法,第一个数送累加器MOV B,A;将A送BMOV A,R4;将第二个数送累加器MUL AB;第一个数乘以第二个数MOV R5,#0;按键次数清零JB OV,BCD1 ;若乘法结果溢出,则跳转到BCD1MOV40H,A ;将A送40HLJMP BCD;跳转到BCDDIVI: MOV A,R4 ;除法,第二个数送累加器MOV B,A;将第二个数送BMOVA,40H ;将第一个数送ADIVAB ;A除以BJB OV,OF ;当B为0时跳到OFMOV40H,A;将A送40HMOV R5,#0 ;按键次数清零LJMP BCD ;跳转到BCDEQUA: MOV R5,#0;按键次数清零MOV 31H,A ;将A送31HLJMP BCD ;跳转到BCD;----乘法溢出时的处理程序BCD1: ;乘法溢出时的处理程序MOV 78H, B;将高8位送78HMOV 79H, A ;将低8位送79HLCALLHEX2BCD;调用子程序把78H、79H中的数字,转换成BCD码,送到7AH 7BH 7CHMOVA, 7CH;下面,把万千百十个位,分别存入7CH 7BH7AH79H78HMOV B, #16DIV AB ;除以16,目的就是分离出高、低四位MOV 79H, A ;存放十位MOV 78H, B ;存放个位MOV A, 7AHMOV7CH,A;存放万位MOV A, 7BHMOV B, #16DIV ABMOV7BH, AMOV7AH, BLJMP LOOPHEX2BCD: ;子程序:把78H、79H中的数字,转换成BCD码,送到7AH7BH 7CH CLR AMOV 7AH, A ;先清零MOV7BH, AMOV7CH, AMOV R6, #16 ;共转换十六位数LOOPP:CLRCMOV A, 79H;从待转换数的高端移出一位到CyRLC AMOV79H, AMOVA, 78HRLC AMOV78H, AMOV A,7CH ;送到BCD码的低端ADDC A, 7CH ;带进位加。

(完整word版)微机原理加法器实训报告

(完整word版)微机原理加法器实训报告

沈阳工程学院课程设计课程设计题目:加法器设计系别信息工程系班级系统本101学生姓名闫浩学号2010414113指导教师衣云龙、王德君职称讲师、工程师起止日期:2012年5月21日起-—至2012年5月26日止沈阳工程学院课程设计任务书课程设计题目: 加法器设计系别信息工程系班级系统本101学生姓名闫浩学号2010414113指导教师衣云龙、王德君职称讲师、工程师课程设计进行地点:微机原理实验室任务下达时间:2012年5月18日起止日期: 2012年5月21日起—-至2012年5月26日止教研室主任王健2012年5月18日批准一、课程设计目的通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。

通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。

为以后学生结合专业从事微机应用设计奠定基础。

二、课程设计的原始资料及依据查阅可编程并行芯片8255或其他相关资料.用简单的输入输出端口等硬件,配合延时和控制程序控制灯的亮灭。

三、课程设计的主要内容及要求内容:利用微机原理实验箱,采两组发光二极管来模拟A,B两路交叉路口的信号灯控制.要求:按实际交通灯控制规程控制.四、课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、程序代码及功能说明(程序及必要注释等)、遇到的问题及解决方法、设计总结、设计小组评语、参考文献等.一般不应少于3000字。

2.在适当位置配合相应的设计原理图、程序流程图、硬件电路接线图等图表进行说明。

应做到文理通顺,内容正确完整,书写工整,装订整齐.3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。

设计小组评语处注明设计组组长、设计组成员,并由设计组组长给出评语.4.课程设计说明书手写或打印均可。

计算机组成原理八位原码加减法器电路课程设计

计算机组成原理八位原码加减法器电路课程设计

计算机组成原理八位原码加减法器电路课程设计是一个重要的课题,它涉及到计算机内部数字运算的实现方式。

在加减法器电路的设计中,我们需要考虑到输入数据的编码方式以及运算的性质。

在这个设计中,我们将使用八位原码进行加减法运算。

首先,我们需要明确输入的数据格式。

原码表示法是一种最直观的数值表示方法,它直接反映了数值的正负和绝对大小。

对于八位二进制原码,它的取值范围是-256到255。

在这个范围内,数值的大小和其对应的二进制表示之间的关系是简单的线性关系。

接下来,我们来看一下加减法器的电路设计。

由于我们需要进行的是加法和减法运算,我们需要使用两个不同的电路模块:加法器和减法器。

对于加法器,我们可以使用异或门和与门组合的方式来实现。

八位二进制数的异或运算具有"无进位"的性质,因此在需要加法运算时,我们可以通过异或门来实现逐位相加。

由于输入的数据是以原码形式给出的,因此在输出端需要进行一次模2取反操作,将加法结果转化为实际的数值大小。

这个过程可以用一个简单的逻辑表达式描述如下:C[7:0] = A[7:0] XOR B[7:0]D[7:0] = 255 - C[7:0]其中,C[7:0]是异或运算的结果,D[7:0]是实际数值大小。

对于减法器,我们同样可以使用异或门和与门来实现。

由于减法运算涉及到负数的情况,我们需要引入进位信号来处理负数减法的溢出问题。

具体的实现方式可以参考加法器的设计,只是在输出端需要进行一次模2加操作,将减法结果转化为实际的数值大小。

在进行电路设计时,我们还需要考虑到一些细节问题,比如输入输出端的延迟问题、电路的稳定性和抗干扰能力等。

这些因素都可能影响到电路的性能和精度。

因此,在进行电路设计时,我们需要充分考虑这些因素,并通过实验和测试来验证我们的设计是否满足要求。

总的来说,八位原码加减法器电路的设计是一个复杂而又重要的任务。

通过这个设计,我们可以更好地理解计算机内部数字运算的实现方式,也可以为更高级的计算机组成原理课程设计打下基础。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中文摘要和关键词微机原理课程设计——8255,加法器设计2本实验是对加法器的输入、运算、输出而进行的编程,利用了8255芯片,通过8255的A,B端口输入两个八位二进制数,经CPU运算后,由C端口输出.通过编写相应程序用8086/8088的“OUT”指令可将8255的控制字送入其控制字寄存器所对应的地址,以达到将控制字送入8255的目的,以此来控制8255的工作方式以及A、B、C三个端口的输入,输出状态,格式化8255。

本实验8255工作在方式0,即基本输入输出状态,A、B端口是输入状态,C端口是输入状态。

再用相同方法可将8255的A、B两个端口的内容送入A、B两个端口。

通过A,B端口输入的两个二进制数经编程运算,然后在C口输出,通过循环语句实现两个二进制数求和的连续运算、输出. 关键字:循环、工作方式、编程、运算、格式化目录课程设计任务书1设计任务描述1.1 设计目的1.2 设计的要求1.3对设计说明书撰写内容、格式、字数的要求1.4设计完成后应提交成果的种类、数量、质量等方面的要求1.5时间进度安排2微机原理课程设计成绩评定表3 设计思路 (3)4 设计原理流程图.............………..….……..….………………….…..….…...…4~54.1主程序4.2键盘扫描子程序5 实际硬件接线图 (6)6 源程序清单及注释…………..………..….….……………………….…………7~9 7主要元器件介绍………………………………………………………………10~127.1键盘7.1.1键盘的工作原理7.1.2键盘输入信息的过程7.1.3键盘扫描(识别键)的过程7.2 可编程并行接口8255A7.2.1 8255简介7.2.2 8255的控制字参考文献 (13)设计总结 (14)3、设计思路本周课程设计中,我们组的设计题目是加法器设计1。

得知这个题目后,我们全组同学共同讨论研究了设计流程.从键盘输入数据开始,首先键盘清0,按四下分别输入两个二位十进制数,再利用8255的输入输出功能,输入数据,在CPU 中计算和,再经8255输出到LED显示器,用九盏灯显示结果.第一盏表示十位向百位是否有进位,即只能进行一百以内的显示,接下来的四位为BCD码显示的十位,最后四位显示个位.先设计子程序分别实现延时,扫描键盘,判断输入位,清屏等.程序开始后调用子程序.实现求和.4设计原理流程图4.1 .8255A与键盘接口程序流程图(a)主程序4.2键盘扫描子程序5实际硬件电路接线图6源程序清单及注释MYDATA SEGMENTNUM DB 4 DUP(0)SUM DB 3 DUP(0)MYDATA ENDSSTACK0 SEGMENT PARA STACK'STACK'DW 200 DUP(?)STACK0 ENDSMYCODE SEGMENTASSUME CS:MYCODE,DS:MYDATA,ES:MYDATA,SS:STACK0SOFTDLY PROC ;延时子程序PUSH BXPUSH CXMOV BL,50DELAY0:MOV CX,2801WAIT0:LOOP WAIT0DEC BLJNZ DELAY0POP CXPOP BXRETSOFTDLY ENDPMYCMIAO PROC ;键盘扫描子程序PUSH AXPUSH BXPUSH CXPUSH DXMOV DX,0600H ;设置8255PA端口地址MOV AL,00H ;行线输出全口OUT DX,ALLP1: MOV DX,0602H ;设置8255PB端口地址IN AL,DX ;读入列线值AND AL,0FH ;屏蔽无关位CMP AL,0FH ;测试列线值是否全为1JZ LP1 ;若列线值全为1,表明无键按下,等待按键 MOV CX,2000H ;设置循环次数DELAY1:LOOP DELAY1 ;若有按键按下,延迟2000ms,清除抖动IN AL,DX ;再察看列线,看键是否还按着AND AL,0FHCMP AL,0FHJZ LP1 ;已松开等待按键LP2:MOV BL,4 ;行数送BL,即行扫描次数MOV BH,4 ;列数送BHMOV AL,0FEH ;设置行扫描初值MOV CH,0FFH ;设置起始键号为FFHLP3:MOV DX,0600H ;设置8255PA端口地址OUT DX,AL ;输出行扫描初值ROL AL,1 ;修改扫描码为扫描下一行做准备 MOV AH,AL ;保持修改后的扫描码MOV DX,0602H ;设置8255PB端口地址IN AL,DX ;读入列值AND AL,0FH ;屏蔽无关位CMP AL,0FH ;查列线是否全位1JNZ LP4 ;有,则转去找该列线ADD CH,BH ;无,修改键号指向该行末列键号 MOV AL,AH ;取回扫描码DEC BL ;行值减1JNZ LP3 ;行末查完转下一行JMP LP2 ;重新开始扫描键盘LP4:INC CH ;键号加一,指向本行首列键号 RCR AL,1 ;右移一位JC LP4MOV [SI],CH ;键号送入[SI]中INC SIPOP DXPOP CXPOP BXPOP AXRETMYCMIAO ENDPSTART:MOV AX,MYDATAMOV DS,AXMOV ES,AXMOV SI,OFFSET NUMMOV DI,OFFSET SUMMOV DX,0606HMOV AL,82HOUT DX,ALMOV CX ,2YY1:CALL MYCMIAO ;输入第一个数CALL SOFTDLYLOOP YY1MOV CX,2YY2:CALL MYCMIAO ;输入第二个数CALL SOFTDLYLOOP YY2MOV CX,2MOV SI,OFFSET NUMCLCYY3:MOV AL,[SI+1] ;开始进行加法操作ADC AL,[SI+3]AAAMOV [DI+2],ALDEC DIDEC SILOOP YY3MOV AH,0 ;防止溢出,保存进位ADC AH,0MOV [DI+2],AHMOV DI,OFFSET SUMYY4:MOV DX,0604H ;8255PC口地址MOV AH,[DI+1]ROL AH,4MOV AL,[DI+2]ADD AL,AHOUT DX,AL ;将十位,个位输出到PC口以驱动LED灯显示 MOV AL,[DI]ROL AL,4MOV DX,0600HOUT DX,AL ;将百位输出到PC口高4位驱动LED灯显示 MOV CX,20YY5:CALL SOFTDLY ;延迟1s后清0LOOP YY5MOV AX,0OUT DX,AXMOV DX,0604HOUT DX,AXJMP STARTMYCODE ENDSEND START7主要元器件介绍7.1 键盘键盘是微机系统和其他实时控制系统中广泛使用的一种基本输入设备。

按键实际上就是一个开关;对大多数键盘而言,为了减少与微机间的连线,简化结构,按键被排成行和列的矩阵形式,称为矩阵键盘。

矩阵键盘根据识别键和键盘扫描实现方式的不同又分为两类:编码键盘和非编码键盘。

编码键盘主要是用硬件来实现键的识别和扫描,它功能强,可靠,但硬件复杂,一般微机系统使用编码键盘。

非编码键盘主要是用软件方法来识别键和绎键,本次课程设计主要应用非编码键盘的基本工作原理,及键盘控制程序的编制方法。

7.1.1 键盘的工作原理通常可采用两种方法来识别键盘上的闭合键:即行扫描与行反转法,本次课程设计采用的是行扫描法,其基本思想是:将行线接输出端口,列线接输入端口。

先将所有的行线输出低电平(A口),读入列线的值(B口),若此时列线上的值全为1,说明无键按下;若有某位为0,则说明对应列上有键按下,这时改变行扫描码,使行线逐行为0,依次输出行扫描码,读入列值。

当读入某一列线的值为0时,则可根据此时的行扫描码和列线的值唯一的确定按键的位置,同时也就确定了该键的扫描码。

7.1.2 键盘输入信息的过程:(1)CPU检查是否有键按下;(2)扫描检查各行和列,找到被按键的键号;(3)将键号转换成计算机能识别的代码并转入相应的键盘处理程序。

7.1.3键盘扫描(识别键)的过程:(1)识别是否有键按下:方法是使PA0~PA3输出全为0,读B口(列值)PB0~PB3,PB0~PB3中只要有一位为0,就说明有键按下,因为由于上拉电阻接+5V 的作用,无键按下时,列线被置成高电平。

当某键被按下,该键所在行线和列线接通,所以,当行线为低电平时,对应的列线也为低电平。

(2)消抖动:抖动就是键按下时由于手工操作,键的闭合和断开之间回跳几下才能稳定到闭合的位置,这就称为抖动。

抖动问题不解决回引起对闭合键的错误识别,所以当判别出有键按下时应消除抖动。

消除抖动的常用方法是在检测到有键按下后,延迟一段时间(通常为20ms),再检查该键是否仍然被按着,若是,才真正认为有键按下,而不是干扰。

(3)确定是哪个键被按下:即确定被按下键的行列号,因此可采用上述的行扫描法。

(4).根据找到的键号,转去执行该键功能的子程序。

7.2 可编程并行接口8255A7.2.1 8255简介并行接口是以数据的字节为单位与I/O设备或被控对象之间传递信息。

在实际应用中凡是CPU与外设之间同时需要传递两位以上信息时均需采用并行接口。

可编程并行通信接口(8255A)是一个具有两个8位(A口和B口)和两个4位(C口)并行输入/输出端口的接口芯片,为了适应多种数据传送方式的要求8255A设置了3种工作方式:方式0为基本输入输出方式,方式1为选通输入输出方式,方式2为双向传送方式。

本次为满足设计需要,将8255A设置为方式0。

本次课程设计用并行接口8255作为微机与键盘间的接口,采用行扫描法识别键。

将键盘中的各行与A口PA0~PA3相连,A口为输出;将各列与B口的PB0~PB3相连,B口为输入口。

7.2.2 8255的控制字说明:当控制字bit7=1时,控制字的bit6~bit3这4位用来控制A组,即A 口的8位和C口的高4位,而控制字的低3位bit2~bit0用来控制B组,包括B 口的8位和C口的低4位。

参考文献1.周明德.微型计算机系统原理与应用(第四版).北京:清华大学出版社2.王正洪.朱正伟.马正华.微机接口与应用.北京:清华大学出版社3.范会敏.李晋惠.微型计算机原理与接口技术应用.北京:科学出版社4.沈鑫剡.微机原理与应用学习辅导.北京:清华大学出版社5.韩进宏.贾鹏.微型计算机原理与接口技术实验指导书.北京:机械工业出版社设计总结回顾起此次微机原理课程设计,我感慨颇多,的确,从选题到定稿,从理论到实践,在整整1星期的日子里,可以说是很不容易的,但是可以学到很多很多的的东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

相关文档
最新文档