微机原理与接口计算器课设报告

合集下载

《微机原理及接口》课程设计报告-简单的动画设计

《微机原理及接口》课程设计报告-简单的动画设计

一、设计任务1.程设计的目的更深入的了解汇编这门语言,并从中学到东西掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力。

提高我们对学习认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。

培养我们从资料文献、科学实验中获得知识的能力,提高我们从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。

培养我们勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。

学习汇编语言综合应用程序设计方法,提高汇编语言实际应用能力,充分了解计算机硬件和软件,完成理论到实践的推进过程。

2.课程设计要求(1)根据微机软、硬件条件,每人选定一个具有一定综合性的程序设计题目A对题目进行模块分析B 系统设计实用,功能全面C 按时按量完成任务(2)按时间上机完成调试任务3.设计任务在DOS环境中编程完成以下任务:(1)以滚动方式输出下车动态行驶图形(2)小车在公路上动态行驶,从屏幕左侧驶向屏幕右侧后,在到达屏幕右侧后,公路下降。

(3)段距离并改变颜色,然后小车继续由左向右行驶(4)当下降到屏幕底部时,再返回到屏幕顶部重复上述过程(5)直到有键按下时,程序运行结束(6)设计说明书:设计思想、参考程序的程序流程图和源程序4.设备IBM—PC微型计算机一台二、设计方案1、设计思想主程序思想:使用BIOS中断调中显示器控制用子程序,要求显示动态效果图像即为一辆小车在公路上动态行驶,到达屏幕右方时,公路下降并改变颜色,小车又从左向右行驶以此循环,直至有键按下时结束程序。

2、主程序流程框图3、源程序代码data segmentline dw 10 ;定义行变量color db 1 ;定义公路颜色color1 db 0 ;定义小车颜色corlum dw 2 ;定义列变量count1 dw 0count2 dw 0count3 dw 0 ;车体模型car_8 db 00000011b,11100000bdb 00000010b,01010000bdb 00000110b,01011000bdb 01111111b,11111110bdb 11111111b,11111111bdb 11111011b,11101111b2db 00001010b,00101000bdb 00000100b,00010000bdata endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,80mov ah,0fhint 10hmov ax,0004hint 10hmov ah,0bhmov bh,1 ;选择1号调色板mov bl,0int 10hll: mov al,color ;设置公路颜色inc alcmp al,3jbe tt2sub al,3tt: mov color1,al ;设置小车颜色cmp al,1jz tt3inc alcmp al,3jz tt2tt3: inc altt2: mov color,almov ax,line ;计算机行坐标add ax,10cmp ax,180jbe tt1sub ax,180tt1: mov line,axmov ah,0ch ;写像素mov dx,lineadd dx,8 ;计算公路坐标mov cx,0mov al,color ;设置公路颜色repet: mov bx,3push axint 10h ;画公路pop axinc cxcmp cx,319 ;未到屏幕最右转jnz repetmov ah,0ch ;画车模mov dx,line ;设置行坐标mov cx,corlum ;设置列坐标mov si,offset car_8 ;取车模首坐标mov count1,8 ;8行retry1: mov count2,2 ;每行2字节retry2: mov count3,8 ;每字节8位retry3: rol byte ptr[si],1mov al,0 ;此位为0,置背景颜色jnc nextmov al,color1 ;此位为1,置背景颜色next: push axpush cxint 10h ;画一个点pop cxpop axinc cx ;列加1dec count3jnz retry3 ;未画完8个点转inc si ;取下一个字节的车模信息dec count2jnz retry2 ;车模信息未转完inc dxmov cx,corlumdec count1jnz retry1 ;未画完8行转mov count1,320-18 ;设置移动总次数mov cx,corlumadd cx,15 ;小车最右点的列坐标送cxrepet1: push cx ;小车横向有16个点,外加1个空白点mov count2,16+1repet2: mov dx,line ;车模向右移动1 个像素位mov count3,8repet3: mov ah,0dhint 10h ;读当前点mov ah,0chpush cxinc cxint 10h ;写当前右边的点pop cxinc dx ;行坐标加1dec count3 ;车模向右移动1个像素位未完转jnz repet3dec cx ;修改列坐标dec count2 ;小车移动1个车体位未完转jnz repet2pop cxinc cx ;修改列坐标mov ah,1int 16hjnz exit ;有键按下,转退出dec count1jnz repet1mov dx,line ;清除公路和车模call clearsjmp ll ;无键按下,继续执行exit: mov ah,0 ;恢复文本显示方式mov al,2int 10hmov ah,4chint 21hclears proc nearpush axpush cxpush bxmov ax,0c00hmov bx,10cls0: mov cx,0cls1: int 10hinc cxcmp cx,320jnz cls1inc dxdec bxjnz cls0pop bxpop cxpop axretclears endpcode endsend start三.程序的调试与运行1、程序的调试程序的分析、代码的编写完成后,开始对代码进行编译和调试,我们采用DOS 环境对所编代码进行调式、编译。

微机原理与接口技术课设报告

微机原理与接口技术课设报告

微机原理与接口技术课程设计报告2012年 12 月 15目录一、课程设计目的和意义 (3)二、设计任务 (3)三、设计思想 (3)四、设计原理 (3)1.8254 可编程间隔定时器 (4)2、8255可编程外围接口芯片 (6)3、音符与频率对照关系 (7)五、软件流程图 (8)六、硬件接线图 (9)七、心得体会 (10)八、代码 (10)一、课程设计目的和意义通过本次课程设计要掌握8254、8255芯片使用的方法,灵活运用课本知识,加深所学的知识,对所学的相关芯片的原理、内部结构、使用方法等有更加深刻的了解,学会利用课本知识联系实际应用及编程。

同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。

二、设计任务利用微机原理试验箱,设计简易电子琴,要求至少可以弹出7个音节,弹出音节可在计算机屏幕和数码管显示。

三、设计思想本系统设计的电子时钟以8086微处理器作为CPU,用8254做定时计数器产生时钟频率,8255做可编程并行接口显示弹奏音节。

在此系统中,8254的功能是定时计数,接入8254的CLK信号为周期性时钟信号。

8254采用计数器0工作于方式0和方式3。

四、设计原理本程序的主要设计原理是键盘数字键1~7按下控制选择不同的频率,实现计时结果的数码管和计算机屏幕显示,按SPACE退出程序。

程序先判断按键是否合法(在1~7),合法则键盘数字键1~7分别对应不同的子程序,8254写入不同的计数值,产生不同的频率,输出到发声单元发声。

1.8254 可编程间隔定时器图1 8254初始化字由此,本设计中的8254的初始化为:MOV AL, 30H ;采用计数器0,方式0,MOV DX, MY8254_ModeOUT DX, ALMOV AL, 37H ;计数器0,方式3MOV DX, MY8254_ModeOUT DX, AL8254 是Intel 公司生产的可编程间隔定时器。

微机原理与接口技术课程设计报告

微机原理与接口技术课程设计报告

实验一 接收年、月、日信息显示 一、课程(软件)设计内容显示输入提示信息并响铃一次,然后接收键盘输入的月/日/年信息,并显示。

若输入月份日期不对,则显示错误提示并要求重新输入。

二、程序框图一三、程序及分析CRLF MACRO MOV AH, 02H MOV DL, 0DH INT 21H MOV AH, 02HYY开 始初始化,清错标志 显示提示信息,响铃一次 调用键读入子信息,读月 有出错标志吗?调用键读入子信息,读日 有出错标志吗?有出错标志吗?调用键读入子信息,读年显示年、月、日返回DOSYNYN入口保持现场是回车或空格否输入字在1~9之间否返回DOS 中读取得键输入值将ASCII 码转换为四位十六进制数,存于DI返回置出错标志YMOV DL, 0AHINT 21HENDMDA TA SEGMENTMESS DB '按顺序输入月,日,年,每输完一样按回车(MM/DD/YY)',0DH,0AH,'$' MESS1 DB '月份错误,重新输入',0DH,0AH,'$'MESS2 DB '日期错误,重新输入',0DH,0AH,'$'ERROR DB '输入错误,重新输入',0DH,0AH,'$'MARK DB ?REG DW ?DA TA ENDSSTACK SEGMENTSTA DW 32 DUP ( ?)TOP DW ?STACK ENDSCODE SEGMENTASSUME CS: CODE, DS: DA TA,ES: DA TA,SS: STACKSTART: MOV AX, DA TAMOV DS, AXMOV ES, AXMOV SP,TOP ;初始化HEAD: MOV MARK,0 ;清错误标志MOV AH, 09HMOV DX, OFFSET MESSINT 21H ;显示提示信息MOV AH, 02HMOV DL, 07HINT 21H ;响铃1次CALL GETNUMJE HEADPUSH DXCALL GETNUMCMP MARK, 01HJNE K1POP DXJMP HEADK1: PUSH DXCALL GETNUM ;接收键入的月值,日值及年值CMP MARK, 01HJNE K2POP DXPOP DXJMP HEADK2: MOV AX, DXCALL DISP ;显示年值NOPMOV AH, 02HMOV DL,'-' ;显示`-`INT 21HPOP DXPOP AXPUSH DXMOV REG, AXAND AX, 00FFHCMP AX, 0012HJBE W1MOV AH, 09HLEA DX, MESS1JMP STARTW1: MOV AX, REGCALL DISPPMOV AH, 02HMOV DL,'-'INT 21HPOP AXMOV REG, AXAND AX, 00FFHCMP AX, 31HJBE W2MOV AH, 09HLEA DX, MESS2INT 21HJMP STARTW2: MOV AX, REGCALL DISPP ;显示日值MOV AX, 4C00HINT 21H ;返回DOS DISPP PROC NEARMOV BL, ALMOV DL, BLMOV CL, 04ROL DL, CLAND DL, 0FHCALL DISPLMOV DL, BLAND DL, 0FHCALL DISPLDISPP ENDPDISPL PROC NEARADD DL, 30HCMP DL, 3AHJB DDDADD DL, 27HDDD: MOV AH, 02HINT 21HRETDISPL ENDPDISP PROC NEARPUSH BXPUSH CXPUSH DXPUSH AXMOV AL, AHCALL DISPPPOP AXCALL DISPPPOP DXPOP CXPOP BXRET ;显示子程序DISP ENDPGETNUM PROC NEARPUSH CXXOR DX, DXGGG: MOV AH, 01HCMP AL, 0DHJZ PPPCMP AL, 20HJZ PPPSUB AL, 30HCMP AL, 0JB KKKCMP AL, 0AHJB GETSJMP KKKGETS: MOV CL, 04SHL DX, CLXOR AH, AHADD DX, AXJMP GGGKKK: PUSH AXPUSH DXMOV AH, 09HMOV DX, OFFSET ERRORINT 21HMOV MARK, 01HPOP DXPOP AXPPP: PUSH DXMOV AH, 02HMOV DX, 07HINT 21HCRLFPOP DXRETGETNUM ENDP CODE ENDSEND START四、课程设计总结掌握响铃符方法,掌握年、月、日输入方法,借以观察实验的结果。

微机原理与接口技术课程设计报告

微机原理与接口技术课程设计报告

微机原理与接口技术课程设计报告项目名称:十进制数计算器的设计与实现专业名称:计算机科学与技术(交通信息工程)学生:俊(201324020311)教师:马荣贵2016年1月1日一、项目名称及要求 (3)1项目名称 (3)2项目要求 (3)二、项目背景及设计目的 (3)1项目背景 (3)2项目目的 (3)三、设计思路 (3)1总体设计思路 (3)2设计流程图 (4)四、项目方案及原理图 (5)1项目方案 (5)2并行接口8255A (5)3键盘输入模块 (6)4LED数码管输出模块 (7)5原理图设计 (8)五、结果与分析 (8)1实现现象 (8)2现象分析 (8)六、总结及体会 (9)七、附录 (9)1参考文献 (9)2源代码 (9)一、项目名称及要求1 项目名称十进制数计算器的设计与实现2 项目要求运用学过的《微机原理与接口技术》课程以及本学期的上机实验操作经验,根据题目设计要求进行软硬件系统的设计和实现,从而加深对本课程知识点的理解。

通过具体项目的实践,来提高学生的动手能力以及实时解决问题的能力,使学生综合能力得到显著提升。

本课题要求学生熟练运用并行接口8255A芯片、4*4键盘输入模块以及LED 数码管输出模块的工作原理以及相应元件驱动程序的编写。

要求通过4*4键盘输入,LED数码管显示来完成简单计算器的功能(加减乘除操作)二、项目背景及设计目的1 项目背景大学课程设计是为了辅助学生加深对本课程的理论知识的理解和提高。

通过动手完成实际的项目设计及实现,减小理论与实践的距离,让同学对实际项目实现的流程有个大体的感受。

通过合作完成项目,提高同学的合作意识,以及模块化设计理念。

2 项目目的通过十进制数计算器的设计与实现,了解proteus软件使用;熟练掌握原理图的设计方法知道各硬件的功能以及电路实现三、设计思路1 总体设计思路4*4键盘输入模块:键盘“0~9”对应数字0~9键盘“A”对应符号“+”键盘“B”对应符号“-”键盘“C”对应符号“*”键盘“D”对应符号“/”键盘“E”对应符号“CE”键盘“F”对应符号“=”并行接口8255A:A口用于LED数码管的段码输出B口用于LED数码管的位码输出C口用于4*4键盘的输入LED数码管输出模块:采用动态显示的方式,将并行接口8255A中A口中的段码显示四、项目方案及原理图1 项目方案先设计原理图,然后用PCB布线仿真,最后去实验室用实验器材实现设计2 并行接口8255A并行接口8255A:8255A是通用可编程并行接口芯片,是有40个引脚的双列直插式组件,其基本功能为:8255A接口芯片有3个8位并行输入/输出端口,可利用编程方法设置3个端口是作为输入端口还是输出端口;8255A能适应CPU与I/O 接口之间的多种数据传送方式的要求,如无条件传送、查询方式传送、中断方式传送。

微型计算机原理与接口技术简易计算器系统设计

微型计算机原理与接口技术简易计算器系统设计

、学号××××××××《微型计算机原理与接口技术》课程设计(2008级本科)《题目:简易计算器系统设计系(部)院:××××××××××专业:电气工程及其自动化,作者姓名:×××××××指导教师:××职称:××完成日期:××年×月×日@课程设计任务书(目录一、设计目的 (1)二、设计任务与要求 (1)三、总体方案论证 (1)方案1 (1)8255A与键盘接口 (2)8255A与LED数码管接口 (5)方案2 (8)/使用设备 (6)参数定义 (6)使用方法 (6)四、硬件设计 (6)五、软件设计 (6)程序设计思路 (6)程序中的关键技术 (7)六、流程图设计 (7)&七、程序调试运行 (8)程序编写 (9)上机编译与调试 (9)运行结果 (10)八、总结 (11)参考文献 (12)微机原理与接口技术课程设计成绩评定表 (15)一、设计目的1、进一步加深对微机系统的理解和认识,提高微机系统的应用水平。

2、进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高编写汇编语言程序的水平和学习程序调试方法。

3、初步加强自己的科学研究方法训练和实践锻练,增强分析问题和解决问题的能力,了解微机原理和接口技术的新发展。

二、设计任务与要求1、可以进行十进制数四则运算。

用按键输入数据;具有清零和复位功能;具有连续运算功能。

2、在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。

学会掌握和使用各种已有的技术资料,不要盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。

微机原理与接口技术课程设计课程设计

微机原理与接口技术课程设计课程设计

微机原理与接口技术课程设计一、课程设计目的本次课程设计旨在让学生通过实际操作掌握微机原理与接口技术的相关知识和技能,培养学生的实际操作能力和解决实际问题的能力。

二、课程设计内容本次课程设计主要分为两个部分:1.微机原理部分在微机原理课程部分,主要包括以下内容:–CPU原理–内存原理–总线结构–输入输出控制器–DMA原理–系统时钟2.接口技术部分在接口技术课程部分,主要包括以下内容:–并行接口–串行接口–USB接口–网络接口–图形接口–嵌入式接口三、课程设计流程1.阅读相关文献资料,了解课程设计的相关知识和理论。

2.设计并搭建硬件实验环境,包括计算机系统和各类接口设备。

3.学习并掌握各类接口的标准规范、通信协议和相关驱动程序。

4.设计并实现各类接口的应用程序,测试和调试各接口设备的正常工作。

5.针对常见的应用场景设计实际应用方案,并实现应用程序的开发和调试。

6.完成课程设计报告,记录整个课程设计的思路、方案和实现过程,并撰写总结和心得体会。

四、课程设计要求1.大家需要采用C语言、C++、VB等编程语言完成具体的编码工作。

2.上机实验前,要确保安全,防止电脑硬件因过流、过压等原因受损。

3.完成上机实验后,要及时清理实验环境,保持机房整洁有序。

4.报告要求规范、结构科学、语句通顺、内容完整。

五、参考书目1.电子工业出版社,《微型计算机接口技术》,2003年。

2.电子工业出版社,《微型计算机原理与应用》,2005年。

3.机械工业出版社,《接口技术原理与应用》,2007年。

4.清华大学出版社,《微处理器原理与接口技术》,2009年。

六、总结微机原理和接口技术是现代计算机科学技术中非常重要的两个方面。

在本次课程设计中,我们将理论知识和实际操作紧密结合起来,通过具体的实验操作和相关的编程工作,更好地理解和掌握了微机原理和接口技术的相关知识和技能,提高了我们的综合素质和专业技能水平。

微机原理与接口技术课程设计(报告)

微机原理与接口技术课程设计(报告)

湖南科技大学潇湘学院信息与电气工程系《微机原理与接口技术》课程设计报告题目:基于D/A转换器DAC0832的波形发生器设计专业:通信工程班级:通信002班姓名:刘黎辉学号:0954040217指导老师:欧青立陈君宋芳课程设计任务书目录一、课程设计的目的及意义 (1)1.设计目的 (1)2.设计意义 (1)二、方案论证 (1)1.设计要求 (1)2.方案论证 (1)三、硬件电路设计 (2)1.波形产生电路 (2)2.按键控制电路 (4)3.地址译码电路 (6)四、程序设计 (7)1.波形发生原理 (7)2.程序流程图 (7)五、硬件连接及调试 (8)1.硬件连接 (8)2.电路调试 (8)六、体会与心得 (8)七、参考书目: (9)八、附录 (9)1.电路原理图............................................................................................ 错误!未定义书签。

2.程序源码................................................................................................ 错误!未定义书签。

一、课程设计的目的及意义1.设计目的(1)掌握计算机应用系统特别是微机接口系统的设计。

(2)掌握接口电路设计技术,初步掌握电子设计软件Protel99使用。

(3)掌握微机接口程序的编制与调试技术。

(4)掌握DAC0832芯片的使用方法。

(5)利用所学微机的理论知识进行软硬件整体设计,提高综合应用能力。

2.设计意义波形发生器作为一种常用的信号源,是现代测试领域内应用最为广泛的通用仪器之一。

在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都需要有信号源,由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。

微机原理与接口课程设计报告

微机原理与接口课程设计报告

目录一.问题描述 (3)二.基本要求 (3)三.实现分析与程序 (3)四.流程图 (6)五.程序源代码 (9)六.程序运行界面 (18)七.测试结果 (20)八.心得体会 (22)一、问题描述:系统提示输入数字的个数,并且这些数字已无序的方式放着,利用已掌握的编程方式将其“由小到大”或者是“由大到小”排列,最后输出排列后的数字,一旦输入数字超出范围,则提示错误。

在编完排序的程序后,觉得有点简易些,于是想制作一个应用型用户软件。

于是在排序的基础上加入了进入程序必须输入密码,输入密码正确,进入用小车做的开机画面,然后再进入排序程序。

完成好这些还是觉得有点平易近人,想来一点创新的意识。

个人喜好音乐,于是想到了用音乐来表达出排序的效果。

利用所学的扬声器发声原理,将输入排好的数据用音乐的音符表达出来,自己乐在其中。

二、基本要求:在考虑到输入输出程序的时候,应该利用“先进后出”的设计思路,试用堆栈技术,结合DOS的中断调用,实现输入字符串的显示,在考虑到由大到小或者是由小到大排序的时候,应该考虑到利用冒泡法。

在运用开机画面的时候,首先用DOS的中断调用,实现用字符组成的小车显示,然后实现小车的移动,表达类似windows开机的效果。

在运用扬声器发声的程序时,先输入计数初值,打开扬声器,将排序结果数字转换为音乐表中的对应数字,对应相应的发声频率,发车类似音乐的音调,达到想要的目的。

三、实现分析与程序冒泡排序分析:将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key 的气泡。

根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。

如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。

(1)初始R[1..n]为无序区。

(2)第一趟扫描从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。

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

微机原理与接口技术课程设计报告课题名称 4*4矩阵键盘计算器设计学院名称信息工程学院专业计算机科学与技术组员 2402090130 张婷婷2402090224 冯永青2402090226 邬伦春指导教师郭兰英时间 2012.6.4—2012.6.8目录一、概述 (3)二、硬件电路 (3)1、键盘输入设计 (3)2、总连线图设计 (4)3、可编程并行通信接口芯片8255A (5)三、软件设计框图 (6)四、源程序 (8)五、课程设计体会 (15)六、参考文献 (16)4*4矩阵键盘计算器设计一、概述设计思路:本次设计通过设置芯片8255A的方式字,使用方式0,使A口,B 口输出,C口输入,完成总线与键盘和数码管的连接。

计算器键盘按键为数字0-9,运算符号“+” “-” “*” “/”“=”和清零“C”键。

首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入。

利用汇编的程序核对输入键的数值,通过调用子程序实现1位十进制数的加减乘除运算。

四位LED数码管第一位显示运算的第一个操作数,第二位显示运算符,第三位显示第二个操作数,第四位显示运算结果,在此期间输入有误,可以按C键清屏重新输入。

二、硬件电路设计1、键盘及显示电路设计键盘是常用信息输入元件,其实键盘也是由一个个按钮组成,我们设计的是4*4行列式键盘,设计如图1所示:图1、键盘设计键盘编码采用共阴极编码,对应键盘编码如图2所示:3F 06 5B 4F66 6D 7D 077F 6F 77 7C39 5E 79 71图 2、键盘编码键盘有X1~X4四根列线,Y1~Y4四根行线,LED数码管有A,B,C,D,E,F, G,DP八根管脚,可以与8255A接口连接。

键盘及显示电路如图3:图3 键盘及显示电路2、总连线图设计:键盘输入及LED数码管通过8255A接口与系统总线连接,键盘的16个按键组成4*4矩阵,其中4根矩阵线作为8255A的输出线与PA3~PA0连接,4根矩阵线作为8255A的输入线与PC3~PC0接。

数码管A,B,C,D,E,F,G,DP作为8255A的输出线与PB0~PB7接,如图4所示:图4 总连线图3、可编程并行通信接口芯片8255A(1)并行输入/输出端口A,B,C8255A内部包括三个8位的输入输出端口,分别是端口A、端口B、端口C,相应信号线是PA7~PA0、PB7~PB0、PC7~PC0。

端口都是8位,都可以作为输入或输出。

(2)数据总线缓冲存储器三态双向8位缓冲器,是8255A与8086CPU之间的数据接口。

与I/O操作有关的数据、控制字和状态信息都是通过该缓冲器进行传送。

(3)读/写控制部件8255A完成读/写控制功能的部件。

能接收CPU的控制命令,并根据控制命令向各个功能部件发出操作指令。

图5、8255A芯片三、软件设计框图1、主流程图:2、显示键值DIS子程序的流程图:四、源程序;***************根据CHECK配置信息修改下列符号值*******************IOY0 EQU 9C00H ;片选IOY0对应的端口始地址;*****************************************************************MY8255_A EQU IOY0+00H*4 ;8255的A口地址MY8255_B EQU IOY0+01H*4 ;8255的B口地址MY8255_C EQU IOY0+02H*4 ;8255的C口地址MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENTKEYTABLE DB 6 DUP(0);0 1 2 3 4 5; 1 + 2 = 3INDEX DB 0;0 1 2 3 4 5 6 7 8 9 A B C D E F;3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H, 7CH, 39H,5EH,79H,71H;0 1 2 3 4 5 6 7 8 9 = Clear + - * /DTABLE DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDS ;键值表,0~F对应的7段数码管的段位值CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,MY8255_MODE ;初始化8255工作方式MOV AL,81H ;方式0,A口、B口输出,C口低4位输入OUT DX,ALBEGIN:CALL DIS ;显示刷新CALL CLEAR ;清屏CALL CCSCAN ;扫描按键,查看哪个按键按下 ,只是做检测有无键 ;但并不知道,是哪个键按下JNZ GETKEY1 ;有键按下则跳置GETKEY1MOV AH,1 ;判断PC键盘是否有按键按下INT 16HJZ BEGIN ;无按键则跳回继续循环,有则退出QUIT:MOV AX,4C00H ;返回到DOSINT 21HGETKEY1: ; 有键按下,再次确认有无按键按下CALL DIS ;显示刷新CALL DALLYCALL DALLYCALL CCSCAN ;再次扫描按键JNZ GETKEY2 ;有键按下则跳置GETKEY2JMP BEGIN ;否则跳回开始继续循环;四行四列键盘GETKEY2: ;检测当前键盘被按下键的具体位置MOV CH,0FEHMOV CL,00H ;设置当前检测的是第几列COLUM:MOV AL,CH ;选取一列,将X1~X4中一个置0 MOV DX,MY8255_A ; CL is the number of colum OUT DX,ALMOV DX,MY8255_C ;读Y1~Y4,用于判断是哪一行按键闭合IN AL,DX ; save the number of row to ALL1:TEST AL,01H ;是否为第1行JNZ L2 ;不是则继续判断MOV AL,00H ;设置第1行第N列的对应的键值JMP KCODEL2:TEST AL,02H ;是否为第2行JNZ L3 ;不是则继续判断MOV AL,04H ;设置第2行第N列的对应的键值JMP KCODEL3:TEST AL,04H ;是否为第3行JNZ L4 ;不是则继续判断MOV AL,08H ;设置第3行第N列的对应的键值JMP KCODEL4:TEST AL,08H ;是否为第4行JNZ NEXT ;不是则继续判断MOV AL,0CH ;设置第4行第N列的对应的键值KCODE:ADD AL,CL ;将第N行AL的值加上当前列CL数,确定按键值CALL PUTBUF ;保存按键值PUSH AXKON:CALL DIS ;显示刷新CALL CLEAR ;清屏CALL CCSCAN ;扫描按键,判断按键是否弹起JNZ KON ;未弹起则继续循环等待弹起POP AXNEXT:INC CL ;当前检测的列数递增MOV AL,CHTEST AL,08H ;检测是否扫描到第4列JZ KERR ;是则跳回到开始处ROL AL,1 ;没检测到第4列则准备检测下一列MOV CH,ALJMP COLUMKERR:JMP BEGINCCSCAN PROC NEAR ;扫描是否有按键闭合子程序MOV AL,00HMOV DX,MY8255_A ;将4列全选通,X1~X4置0 OUT DX,ALMOV DX,MY8255_CIN AL,DX ;读Y1~Y4NOT ALAND AL,0FH ;取出Y1~Y4的反值RETCCSCAN ENDPCLEAR PROC NEAR ;清除数码管显示子程序MOV DX,MY8255_B ;段位置0即可清除数码管显示MOV AL,00HOUT DX,ALRETCLEAR ENDPDIS PROC NEAR ;显示键值子程序PUSH AX ;以缓冲区存放的键值为键值表偏移找到键值并显示 PUSH BXPUSH CXPUSH DXPUSH SICALL CLEARMOV BL,INDEXCMP BL,0JE OUTD1; DISPLAY FISRT DATAMOV AL,0FEHMOV DX,MY8255_AOUT DX,ALMOV DX,MY8255_BMOV AL,KEYTABLE[1]MOV AH,0MOV SI, AXMOV AL,DTABLE[SI]CMP AL,7CHJZ GOD1OUT DX,ALCALL DALLYCMP BL,1JA DD2OUTD1:JMP OUTD2GOD1:JMP GOD2DD2:; DISPLAY SECOND DATAMOV AL , 0FDHMOV DX,MY8255_AOUT DX,ALMOV DX,MY8255_BMOV AL,KEYTABLE[2]MOV SI,AXMOV AL,DTABLE[SI]CMP AL,7CHJZ GOD2OUT DX,ALCALL DALLYCMP BL,2JA D3OUTD2:JMP OUTD3GOD2:JMP GOD3D3:; DISPLAY THIRD DATA MOV AL,0FBHMOV DX,MY8255_AOUT DX,ALMOV DX,MY8255_BMOV AL,KEYTABLE[3] MOV SI,AXMOV AL,DTABLE[SI]CMP AL,7CHJZ GOD3OUT DX,ALCALL DALLYCMP BL,3JA D4OUTD3:JMP OUTD4GOD3:JMP GOD4D4:; NEED TO COMPUTEMOV AL,KEYTABLE[4] MOV SI,AXMOV AL,DTABLE[SI] CMP AL,7CHJZ GOD4MOV AL,KEYTABLE[1] CMP AL,09HJA GOD4MOV AL,KEYTABLE[3] CMP AL,09HJA GOD4MOV AL,KEYTABLE[1] MOV CL,KEYTABLE[3] MOV BH,KEYTABLE[2] CMP BH,12JE MADDCMP BH,13JE MSUBCMP BH,14JE MMULCMP BH,15JE MDIVMDIV:MOV AH,0DIV CLMOV BH,ALJMP CDISMMUL:MUL CLMOV BH,ALJMP CDISMSUB:SUB AL,CLMOV BH,ALJMP CDISMADD:ADD AL,CLMOV BH,ALCDIS:MOV DX,MY8255_AMOV AL,0F7HOUT DX,ALMOV DX,MY8255_BMOV AL,BHMOV AH,0MOV SI,AXMOV AL,DTABLE[SI] OUT DX,ALCALL DALLYCMP BL ,4JA D5OUTD4:JMP OUTD5GOD4:JMP D5D5:; CLEARMOV KEYTABLE[1],0MOV KEYTABLE[2],0MOV KEYTABLE[3],0MOV KEYTABLE[4],0MOV KEYTABLE[5],0MOV INDEX,0CALL DALLYOUTD5:JMP OUT1OUT1:POP SIPOP DXPOP CXPOP BXPOP AXRETDIS ENDPPUTBUF PROC NEAR ;保存键值子程序 PUSH AXPUSH BXPUSH CXPUSH SI ; KEY IS AT THE ALMOV BL,INDEXINC BLMOV INDEX,BLCMP BL,6JB PUTINMOV INDEX,0JMP GOBACKPUTIN:MOV BL,INDEXMOV BH,0MOV SI,BXMOV KEYTABLE[SI] , AL; INDEX EQUAL TO 3 , IT IS NEEDED TO COMPUTE THE FORM GOBACK:POP SIPOP CXPOP BXPOP AXRETPUTBUF ENDPDALLY PROC NEAR ;软件延时子程序PUSH CXMOV CX,00FFHD1: MOV AX,00FFHD2: DEC AXJNZ D2LOOP D1POP CXRETDALLY ENDPCODE ENDSEND START五、课程设计体会本次课程设计是自由选择设计课题的,我们选择了简易计算加减乘除法计算的题目,看起来不是很难,但是真正做起来才发现其困难之处。

相关文档
最新文档