基于8086与Proteus仿真的44键盘计算器的设计

合集下载

proteus仿真计算器课程设计

proteus仿真计算器课程设计

proteus仿真计算器课程设计一、课程目标知识目标:1. 学生能理解Proteus仿真软件的基本原理和操作流程;2. 学生能掌握利用Proteus进行简单计算器电路设计与仿真;3. 学生能了解并描述计算器电路中的基本电子元件及其功能;4. 学生掌握基本的数字电路知识,如逻辑门、触发器等。

技能目标:1. 学生能独立使用Proteus软件进行电路设计;2. 学生能通过Proteus软件进行电路仿真,并对结果进行分析;3. 学生能运用已学知识解决实际计算器电路设计中遇到的问题;4. 学生能通过团队协作,共同完成一个具有基本功能的计算器电路设计。

情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发创新意识和实践欲望;2. 学生在团队合作中学会沟通、协作,培养团队精神和责任感;3. 学生通过动手实践,体验成功的喜悦,增强自信心;4. 学生树立正确的价值观,认识到科技发展对国家和社会的重要性。

本课程针对高年级学生,结合电子技术课程内容,以Proteus仿真软件为载体,使学生掌握基本电子元件和数字电路知识。

课程注重实践操作和团队协作,旨在提高学生的实际动手能力和创新能力,为后续深入学习电子技术打下坚实基础。

通过本课程的学习,学生将能够独立完成一个简单计算器电路的设计与仿真,并在过程中培养良好的情感态度和价值观。

二、教学内容1. 计算器电路设计基础理论:- 简介计算器电路的组成和原理;- 学习基本电子元件:电阻、电容、二极管、三极管等;- 了解并掌握数字电路基础知识:逻辑门、触发器、计数器等。

2. Proteus仿真软件操作:- 学习Proteus软件的基本界面和功能;- 掌握Proteus软件的电路设计、仿真和调试方法;- 学习如何利用Proteus软件绘制电路图、设置元件参数等。

3. 计算器电路设计与仿真:- 根据计算器功能需求,设计电路原理图;- 利用Proteus软件进行电路仿真,观察并分析仿真结果;- 针对仿真过程中出现的问题,进行调试和优化。

4x4键盘实验报告

4x4键盘实验报告

单片机及DSP课程设计报告专业:班级:姓名:学号:指导教师:时间:一、设计目的为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的课程设计。

通过设计使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。

1、通过本设计,使学生综合运用《单片机技术原理与应用》、《DSP原理与应用》《C语言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。

2、学会使用KEIL C和PROTEUS等软件,用C语言或汇编语言编写一个较完整的实用程序,并仿真运行,保证设计的正确性。

3、了解单片机接口应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等。

二、硬件电路方案设计1、4X4键盘设计4x4键盘工作原理:每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。

矩阵的行线和列线分别通过两并行接口和CPU通信。

键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。

键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。

两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

2、数码管显示电路设计数码管显示原理:动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。

这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。

选亮数码管采用动态扫描显示。

所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。

动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。

8086汇编语言实现简易计算器

8086汇编语言实现简易计算器

8086汇编语⾔实现简易计算器8086汇编语⾔实现简易计算器本周看了⼀个很有意思的知识。

C语⾔的编译器最初是怎么来的?最初应该是由汇编语⾔实现⼀个简化版C语⾔,然后使⽤简化版的C语⾔进⾏多次迭代,功能更新,从⽽出现了如今强⼤的C语⾔。

本⼈找到了⼀个古⽼的课程设计,当时学汇编时候的⼀个⼩demo分享出来。

1.概述为了更深⼊地理解计算机⼯作原理以及CPU的功能和结构,掌握汇编语⾔的使⽤。

本⽂以简易计算器程序的汇编语⾔实现为主要任务,进⾏对程序的⼀些算法和汇编语⾔语法的论述。

计算器是最简单的计算⼯具,简单计算器具有加、减、乘、除四项运算功能。

想要⽤汇编语⾔实现简单的计算器,就必须通过对数据存储,寄存器的使⽤,加减乘除相关指令以及模块的调⽤等汇编语⾔知识进⾏运⽤,以实现⼀个基本功能完善,界⾯友好,操作简便易⾏的计算器。

⽤汇编语⾔实现简单计算器还涉及到输⼊输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。

通过对各种指令的合理使⽤,设计各个功能模块。

当实现各个程序模块后,通过程序的调⽤最终实现⼀个简单的计算器。

本⽂以⽤8086汇编语⾔实现简易计算器为⽬标,对程序的算法以及结构进⾏分析和解释。

汇编语⾔的语句类型有指令语句、伪指令语句和宏指令语句。

在实现简易计算器的过程中暂不需要宏指令语句,故对此语句不进⾏介绍。

计算器的实现需要使⽤输⼊输出,DOS系统的01H,02H,09H号调⽤可以完成所需功能。

由于简易计算器对结果没有很⾼的范围要求,故对四则运算只需考虑ADD,SUB,MUL,DIV等指令。

在计算器中,输⼊的是10进制数字,⽽在汇编语⾔中读⼊字符只能⼀位⼀位的读取,故需要使⽤MUL设置⼀个循环算法,将输⼊的数字以16进制形式放⼊寄存器中,⽽输出则是使⽤MOD设置⼀个循环算法,将16进制转化为10进制后处理为ASCII码进⾏输出。

2.程序算法结构简易计算器程序的任务主要有处理输⼊数据,选择运算⽅式进⾏计算,显⽰算式结果。

4×4_矩阵键盘计算器设计

4×4_矩阵键盘计算器设计

西华大学课程设计说明书题目4×4 矩阵键盘计算器设计系(部) 电气信息学院专业(班级) 自动化3班姓名学号指导教师胡红平起止日期2012.6.10-2012.6.30计算机接口及应用课程设计任务书系(部):电气信息学院专业:09自动化指导教师:日期:2012-6-20西华大学课程设计鉴定表摘要近几年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面的知识是不够的,还应根据具体硬件结合,加以完善。

本任务是个简易得三位数的减法运算,用4×4 矩阵键盘及计算器设计,利用数码管实现255内的减法运算。

程序都是根据教材内和网络中的程序参考编写而成,在功能上还并不完善,限制也较多。

本任务重在设计构思与团队合作,使得我们用专业知识,专业技能分析和解决问题全面系统的锻炼。

关键词:单片机,AT89C51,矩阵键盘,数码管ABSTRACTIn recent years, along with the rapid development of science and technology, the application of SCM is unceasingly thorough, it causes the traditional control test technology increasingly updates. In real-time detection and automatic control of single-chip microcomputer application system, often as a core component to use, only microcontroller aspects of knowledge is not enough, should according to specific hardware combined, and perfects.This task is a simple three digits, subtract with 4 * 4 matrix keyboard and a calculator design, use digital tube realization within the 255 subtract. Program is according to the teaching material and within the network reference and compiled program, on the function is not perfect, restrictions also more. This task focuses on design conception and team cooperation, make us with professional knowledge, professional skills to analyze and solve problems of full system exercise.Keywords:Single-chip,AT89C51,Matrix keyboard,digital tube目录摘要 (I)ABSTRACT (II)第1章课题概述 (1)1.1 课题概述 (1)1.2 课题要求 (2)第2章系统设计 (3)2.1 设计思路 (3)2.2 框图设计 (3)2.3 知识点 (3)2.4 硬件设计 (4)2.4.1 电路原理图 (4)2.4.2 元件选择 (5)2.4.3 PCB制版及效果 (9)2.5 软件设计 (10)2.5.1 程序流程图 (10)2.6 系统仿真及调试 (11)2.6.1 硬件调试 (11)2.6.2 软件调试 (11)2.6.3 软硬件调试 (11)结论 (11)参考文献 (14)附录 (15)第1章课题概述1.1 课题概述随着当今时代的电子领域的发展,尤其是自动化的控制领域,传统的分立元件或数字逻辑电路构成的控制系统正被智能化的单片机所取代。

如何利用proteus来仿真emu8086下编写的EXE程序教学文案

如何利用proteus来仿真emu8086下编写的EXE程序教学文案

如何利用p r o t e u s来仿真e m u8086下编写的E X E程序如何利用proteus来仿真emu8086下编写的EXE程序1.安装proteus和emu8086,都采用默认安装方式2.打开proteus,在其中设置emu8086编译器1)打开“源代码”菜单中的“设定代码生成工具”弹出下面所示对话框2)选中上面所示对话框中左下角的“新建”按钮,然后打开c盘下emu8086文件夹,选中emu8086.exe。

3)按照下图所示,填写源程序扩展名为“ASM”目标代码扩“EXE”,命令行“%1”,然后点击确定。

2.使用emu8086,生成可执行文件1)打开emu8086,会出现下图所示,在其中选择NEW2)单击new按钮后会弹出如下所示对话框,选择empty workspace3)再出现的空白编辑区部分敲入代码如:实验二中给的EX2_1.ASM4)利用FILE菜单中的save as对源程序进行存盘,利用assembler菜单下并编译,注意文件名和路径,请注意生成的可执行文件EXE一定要和仿真电路图DSN在同一文件夹下。

5)如果编译时提示有错误,则修改反色部分,再重新编译,直至没有错误编译成功生成可执行EXE文件为止。

3.打开仿真电路图,设置仿真运行环境。

1)以EX2_1.DSN为例,双击电路图中U1:8086单元2)弹出如下图所示对话框3)双击第三行 program file 右侧打开按钮,选择同文件夹下EX2_1.EXE,其他参数如上图设置。

4)下面如下图所示,设置内部存储器的容量Internal Memory Size 为0x1f0h,(注:内部存储器的容量还可以加大,根据情况设置即可,但因为本实验中用得到了外部扩展存储器,所以注意不能超过4000H)又因为本程序中有INT 3;断点中断,故要设置断点Stop on int 3 YES4.以上都做完,即可仿真执行程序并调试了,并可观察结果。

单片机(44按键与数码管制作的简易计算器,含原理图)

单片机(44按键与数码管制作的简易计算器,含原理图)
{
return (i+j*4);//返回键码
}
temp <<= 1;
}
}
}
#endif
#ifndef _wei_h_
#define_wei_h_
int mei;
int wei(int num1,int num2,int num3,int num4,int num5,int num6,int num7 )
if(P1 != 0xf0)//第三次判断有无按键按下
{
m = Keyscan();
if(0<=m && m<=9)
{
if(ch==1)
{Key_Value= Key_Value*10+m;}
else{Key_Value=m;ch=1;}
}
else
{
if(m==15)
{
Key_Value=0;n=0;l=0;
简易计算器(矩阵键盘+数码管)
#include <reg52.h>
#include <as.h>
#include<sd.h>
#include<math.h>
#include<df.h>
#define uint unsigned int
#define uchar unsigned char
long int Key_Value,n;
{mei=4;return mei;}
else
{
if(num6!=0)
{mei=3;return mei;}
else
{
if(num7!=0)
{mei=2;return mei;}

微机原理与接口技术——基于8086和Proteus仿真

1电子社新书信息表发布日期:2011年 9 月 10 日微机原理与接口技术——基于8086和P r o t e u s 仿真作 译 者 顾 晖 等编著 出版日期 2011年8月估 价 35.00元 页 数 304 教辅资源电子课件 程序源代码 习题解答请访问 免费注册下载本书从微型计算机系统应用的角度出发,以Intel 8086微处理器和IBM PC 系列微机为主要对象,系统介绍了微型计算机的基本组成、工作原理、接口技术及应用。

全书共13章,包括:微型计算机系统概述、计算机中的数和数制、8086微型计算机系统、8086寻址方式与指令系统、8086汇编语言程序设计、存储器、输入/输出接口、可编程接口芯片8255A 、可编程定时器8253、可编程串行通信接口芯片8251A 、中断与中断管理、数模与模数转换及应用、总线、Proteus 仿真平台的使用和Proteus ISIS 仿真实例。

本书内容全面、实用性强,原理、技术与应用并重,并特别介绍了利用EDA 工具——Proteus ISIS 的实验方法,讲述有特点和新意。

书中提供了较多的实例,这些实例全部在Proteus 中调试通过,设计方案同时适用于实验箱实验的教学方式。

本书可作为高等院校工科电气与电子信息类各专业本科生的教材,也可作为研究生教材或供有关工程技术人员参考使用。

“微机原理与接口技术”是高等学校电子信息工程、通信工程、自动化、电气工程及其自动化等工科电气与电子信息类各专业的核心课程。

本课程的任务是使学生从系统的角度出发,掌握微机系统的基本组成、工作原理、接口电路及应用方法,使学生掌握微机系统的开发能力。

为了适应教学的需要,编者在总结了多年的教学科研实践经验、对有关微型计算机技术资料进行综合提炼的基础上,编写了本书。

本书特别考虑了内容的选取与组织,注意从微机应用的需求出发,以Intel 8086微处理器和IBM PC 系列微机为主要对象,系统、深入地介绍了微型计算机的基本组成、工作原理、接口技前 言内容简介术及应用,把微机系统开发过程中用到的硬件技术和软件技术有机地结合起来。

Intel8086软件仿真器的设计与实现

Intel8086软件仿真器的设计与实现.txt -你脚踏俩只船,你划得真漂亮。

- 每个说不想恋爱的人心里都装着一个不可能的人。

我心疼每一个不快乐却依然在笑的孩子。

(有没有那么一个人,看透我在隐身,知道我在等人。

本文由bear8899贡献pdf文档可能在WAP端浏览体验不佳。

建议您优先选择TXT,或下载源文件到本机查看。

?50 ?系统仿真学报1996 年 9 月Intel 8086 软件仿真器的设计与实现北京计算机应用和仿真技术研究所 , 100854 贺红卫摘要本文以软件仿真系统在航天、航空及其它领域的实际需求为背景 , 介绍了嵌入式软件仿真系统的工作原理 , 对其中一种层次化的软件仿真器模型进行了描述 , 并讨论了该模型在实现过程中遇到的一些关键性技术问题。

关键词嵌入式系统软件仿真器建模引言目前 , 以嵌入式微处理器为核心的嵌入式计算机系统得到了越来越广泛的应用。

特别是集中了高、精、尖技术的航天控制领域更是如此。

因而 , 迫切需要一整套完备的手段来支持嵌入式软件的设计开发工作。

lator) 为核心。

这类开发手段存在以下缺陷 :制无法并发进行。

往往是软件研制滞后于硬件系统开发的过程。

开发效率 , 也无法满足航天系统软件所要求的高质量与高可靠性。

的是要提高技术人员对系统软件的开发和调试效率 , 对嵌入式软件的分析设计、编码调试、测试分析、可靠性评估和维护等各阶段提供强有力的支持 , 从根本上保证软件的质量 , 提高嵌入式软件的可靠性与安全性。

嵌入式软件全过程支持环境是以软件仿真器为核心。

软件仿真器是用软件的手段对运行嵌入式应用而 , 可以在没有真实硬件环境的情况下 , 实现程序的仿真运行。

软件仿真器技术的引入 , 有着它存在的价值 : 程序所需的特定硬件环境 ( 包括 CPU 芯片 , 内存及其它外围硬件设备 ) 及其活动进行描述 ( 仿真 ) 。

进发。

它完全脱离具体的硬件限制 , 提高了系统开发效率 , 相对减少了一些不必要的额外开销。

基于8086和proteus课程设计

基于8086和proteus课程设计一、课程目标知识目标:1. 理解8086微处理器的内部结构、工作原理及其指令系统;2. 掌握使用Proteus软件进行8086微处理器电路设计与仿真;3. 学会分析并设计简单的微处理器控制系统。

技能目标:1. 能够运用8086微处理器的指令集进行基本的编程;2. 能够利用Proteus软件绘制8086微处理器电路图,并进行仿真测试;3. 能够通过课程学习,提高动手实践能力和问题解决能力。

情感态度价值观目标:1. 培养学生对微处理器技术的兴趣,激发学习热情;2. 培养学生团队协作意识,提高沟通与协作能力;3. 引导学生认识到微处理器在现代科技领域的重要地位,树立正确的科技观。

课程性质:本课程为电子信息类专业的实践性课程,注重理论知识与实践操作的结合。

学生特点:学生具备一定的电子技术基础和编程能力,对微处理器技术有一定了解。

教学要求:结合学生特点,课程目标分解为具体学习成果,强调实践操作,注重培养学生的动手能力和问题解决能力。

在教学过程中,教师应引导学生主动探索,激发学习兴趣,提高课程教学效果。

二、教学内容1. 8086微处理器基础知识:包括8086内部结构、工作原理、寄存器组、指令系统等;- 教材章节:第3章“8086微处理器结构及其工作原理”,第4章“8086指令系统”;- 进度安排:2课时。

2. Proteus软件使用:介绍Proteus软件的基本操作、电路图绘制、仿真测试等;- 教材章节:第5章“Proteus软件及其应用”;- 进度安排:2课时。

3. 8086微处理器电路设计与仿真:结合实例,讲解如何使用Proteus软件进行8086微处理器电路设计与仿真;- 教材章节:第6章“基于Proteus的微处理器电路设计与仿真”;- 进度安排:4课时。

4. 基于微处理器的控制系统设计:分析并设计简单的微处理器控制系统;- 教材章节:第7章“微处理器控制系统设计”;- 进度安排:4课时。

基于PROTEUS软件的计算器设计

基于PROTEUS软件的计算器设计摘要近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,在很多先进的系统中,单片机往往是作为一个核心部件来使用。

在日常生活中,计算器的应用更是极为普遍,已经成为我们日常生活中必不可少的计算工具,而它的主要部分就是单片机。

本设计介绍了单片机在计算器领域的应用技术,以常用的MCS-51系列(本次选用8051)单片机为基础,简单介绍了单片机与键盘之间以及与显示器之间的应用技术。

本次设计中的键盘的识别是一个非常重要的部分,我们此次所用的是非编码键盘,只需要预先写入识别程序,这种方法使得我们的硬件设计变的简洁许多。

在设计过程中由于实际情况的要求,我们利用部分器件对单片机进行了数据扩展,以满足计算器系统的工作要求。

设计中利用键盘进行数据的输入,然后通过单片机对其进行处理,最后就可以通过LCD显示器显示出来。

关键词:单片机;键盘;显示器;LCD如需程序/Word版本,请访问: 嵌入式软件院。

The calculator design based on PROTEUSAbstractWith the infiltration in the social field of the computer in recent years, the application of the one-chip computer is moving towards deepening constantly, in very many advanced systems, the one-chip computer often was took a core part used. In the daily life, the calculator application is extremely universal, already became in our daily life the essential computation tool, and further its main part was the one-chip computer.This design introduced the one-chip computer in the calculator domain application technology, take the commonly used MCS-51 series the one-chip computer as a foundation(this time selects 8051), introduced between the one-chip computer and the keyboard as well as with the monitor between application technology simply.In this design keyboard recognition is an extremely important part, this time we use the right and wrong code keyboard, only needs to read in the recognizer in advance, this method causes our hardware design to change succinct many. In the design process as a result of the actual situation request, we used the partial components to carry on the data expansion to the one-chip computer, satisfied the calculator system the work requirement.In the design carries on the data input using the keyboard, then carries on processing through the one-chip computer to it, finally may demonstrate through the LCD monitor. Keywords: the one-chip computer; Keyboard; Display; LCD2目录引言 (6)第1章概述 (7)第2章硬件设计 (8)2.1 MCS-51单片机的硬件结构 (8)2.1.1 MCS-51单片机的逻辑结构 (8)2.1.2 MCS-51的外部引脚 (9)2.1.3 数据存储器的扩展 (11)2.2 门电路 (13)2.2.1 74LS373芯片 (14)2.2.2 74LS00芯片 (15)2.2.3 7407芯片 (16)2.3 键盘 (17)2.3.1 键盘简介 (17)2.3.2 非编码键盘 (18)2.3.3 非编码键盘的控制方式 (19)2.3.4 非编码键盘接口技术 (20)2.3.5 键盘实例分析 (22)2.4 LCD显示器 (23)2.4.1 液晶显示器概述 (23)2.4.2 LCD的分类及特点 (24)2.4.3 LCD显示模块 (25)2.4.4 所选器件讲解 (26)第3章软件部分 (28)3.1 总程序流程图 (28)3.2 键盘扫描程序流程图 (28)3.3 显示程序流程图 (30)第4章PROTEUS介绍 (31)4.1 Proteus 介绍 (31)4.2 Keil 与proteus 连接调试 (32)4.2.1 Proteus 与Keil 联机 (32)4.2.2 界面简介 (33)结论与展望 (36)致谢 (37)参考文献 (38)附录A 电气原理总图 (39)附录B 外文文献及其译文 (40)附录C 参考文献及其摘要 (44)附录D 源程序 (46)插图清单图1-1 硬件结构框图 (7)图2-1 MCS-51单片机的内部结构框图 (8)图2-2 8051引脚图 (10)图2-3 MCS-51内、外部时钟连接方式 (11)图2-4 数据存储器6264引脚图 (12)图2-5 MCS-51扩展RAM的示意图 (12)图2-6 扩展8KB数据存储器电路 (13)图2-7 74LS373芯片引脚图 (14)图2-8 74LS373原理结构 (15)图2-9 74LS00逻辑图 (16)图2-10 7407逻辑图 (17)图2-11 独立连接式非编码键盘 (19)图2-12 4行4列矩阵式键盘连接线 (19)图2-13 编码键盘例图 (22)图2-14 点阵式LCD显示字母“A”的情况 (25)图2-15 LCD显示模块的内部结构 (25)图2-16 LCD显示引脚图 (26)图2-17 LCD连接线路图 (27)图3-1 总程序流程图 (28)图3-2 键盘扫描流程图 (29)图3-3 显示程序流程图 (30)图4-1 Keil 目录下的TOOLS.ini 文件 (33)图4-2 使用ISIS打开的原理图 (33)图4-3 选择Keil工程 (34)图4-4 调试程序 (34)图4-5 运行前的界面 (35)图4-6 运行结果显示 (35)4表格清单表2-1 P3口的第二功能 (10)表2-2 6264芯片控制操作 (13)表2-3 74LS373主要电器特性 (14)表2-4 74LS373真值表 (14)表2-5 74LS00主要电特性 (15)表2-6 74LS00功能表(Y=AB) (16)表2-7 7407主要电特性 (16)表2-8 7407功能表(Y=A) (17)表2-9 1602显示器引脚说明 (26)引言可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。

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

基于8086与Proteus仿真的4*4键盘计算器的设计一、设计目的本次课程设计的实验目的是通过该实验掌握较复杂程序的设计。

能够独立完成用程序对8086、8255控制键盘和LED显示的控制,完成计算器加减法的应用。

独立编写程序,明白和掌握程序的原理和实现方式。

为以后的设计提供经验。

学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。

通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。

二、设计内容设计计算器,要求至少能完成多位数的加减乘除运算。

独立完成用程序对8086、8255控制键盘和LED显示的控制,完成计算器加减乘除的应用。

三、设计原理与硬件电路设计的思路是:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序完成数据的储存或者是加减的运算。

运算完成后将运算的结果储存并显示到LED显示器上。

各部分硬件功能:可编程并行通信接口芯片8255A 8255A内部结构:1. 并行输入/输出端口A,B,C8255A内部包括三个8位的输入输出端口,分别是端口A、端口B、端口C,相应信号线是PA7~PA0、PB7~PB0、PC7~PC0。

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

通常将端口A和端口B定义为输入/输出的数据端口,而端口C则既可以作数据端口,又可以作为端口A和端口B的状态和控制信息的传送端口。

2.A组和B组控制部件端口A和端口C的高4位(PC7~PC4)构成A组;由A组控制部件实现控制功能。

端口B和端口C的低4位(PC3~PC0)构成B组;由B组控制部件实现控制功能。

A组和B组利用各自的控制单元来接收读写控制部件的命令和CPU通过数据总线(D0~D7)送来的控制字,并根据他们来定义各个端口的操作方式。

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

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

4. 读/写控制部件8255A完成读/写控制功能的部件。

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

CS 片选信号:由CPU输入,有效时表示该8255A被选中。

RD, WR 读、写控制信号:由CPU输入。

RD有效表示CPU读8255A,WR有效表示CPU写8255A。

RESET 复位信号:由CPU输入。

RESET信号有效,清除8255A中所有控制字寄存器内容,并将各个端口置成输入方式。

定义工作方式控制字:工作方式0:8255A中各端口的基本输入/输出方式。

5.键盘输入模块键盘是常用信息输入元件,其实键盘也是由一个个按钮组成,如果是独立按钮的话必须要需要一个I/O口对它进行检测,而键盘往往这需要键盘按钮数一半的I/O口数对它进行检测,也许对一个比较简单的系统I/O口数一般不是问题,但对于一个大型、复杂的系统来说I/O资源就显得非常珍贵了,尽量减少I/O使用是非常利于降低成本,另外一方面键盘比用独立按键要美观,这也是键盘能够长期得到人们青睐的原因,可是硬件上的节省必然导致软件上编程的复杂,那就来看看键盘到底使软件编程有多复杂?下图是一个4*4键盘的结构图,它是四条I/O线作为行线,四条I/O线作为列线组成的键盘。

在键盘的行线和列线的每一个交点上,设置一个按键,这样键盘中按键的个数是4*4个。

这种行列式键盘结构能够有效地提高单盘及系统中I/O口的利用率。

于是将键盘接8255A的PC口,至于为什么选择PC是有原因的,进行键盘扫描一般要求有一部分的I/O口的工作方式是输入,另一部分I/O是输出,具体到4*4键盘则要求4个I/O口输入,另外4个输出,这一点PC口刚好符合,而PA、PB口要么全部输入或输出,所以只能是PC口接键盘。

4*4键盘结构图五、设计流程图六、实验程序DATA SEGMENTX DB ?,?,?,? ;存放数据的每一位X1 DW ? ;存放第一个数据值X2 DW ? ;存放第二个数据值Y DW ? ;存放运算结果S DB ? ;存放运算符号值E DB ? ;按下等号键标记CC DB ? ;存放运算数据位数H DB 0 ;存放按键行号L DB 0 ;存放按键列号DISCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,3 9H,5EH,79H,71H ;段码表DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,90H ;设置为A口输入,B口输出,C口输出OUT 46H,ALMOV DI,OFFSET X+3 ;DI指向X的高位KKK: CALL KEY ;扫描按键JMP KKK;以下为按键扫描子程序,程序返回后,在变量H和L中存放当前按键的行列号KEY PROC CHECK: CALL DISP ;等待按键按下的同时进行显示MOV AL,0F0H ;所有行输出低电平OUT 44H,ALIN AL,40HCMP AL,0FFH ;读列值JZ CHECK ;若都为高电平则无键按下,等待MOV CX,50LOOP $ ;延时消抖IN AL,DX ;重读列值CMP AL,0FFHJZ CHECK ;无键按下一直等待MOV H,0 ;有键按下,先把行列号变量清0MOV L,0MOV BL,01HMOV BH,0FEH ;扫描法读键值:从第一行开始测试,即PC0输出低电平NEXT: MOV AL,BHOUT 44H,ALNEXTH: IN AL,40H ;读列值,判断是第几列有键按下TEST AL,BL ;从第一列开始判断JZ WAIT0ROL BL,1CMP BL,10H ;当前行状态下没有任何列有键按下,则转为对下一行的测试JZ NEXTLINC H ;每判断一列,列号加1JMP NEXTH ;再对下一列进行判断NEXTL: MOV H,0MOV BL,01HROL BH,1 ;对下一行测试,让下一个PC 口输出低电平CMP BH,0EFHJZ EXITINC LJMP NEXTWAIT0: IN AL,40H ;若有键按下,则等该按键松开后再计算键值CMP AL,0FFHJNZ WAIT0MOV CX,50LOOP $ ;延时消抖IN AL,40HCMP AL,0FFHJNZ WAIT0CALL KEYVALUE ;调计算键值子程序EXIT: RETKEY ENDP;以下为计算键值子程序,通过行列号计算键值(键值=列号*4+行号);键值存放在DL寄存器中KEYVALUE PROCMOV DL,LMOV DH,HSHL DL,1SHL DL,1 ;列号乘4ADD DL,DHCMP DL,9 ;按下的是数字键JNG NUM_CALLCMP DL,14JL CONT_CALL ;按下的是运算键CMP DL,14JZ OUTP_CALL ;按下的是等于键CMP DL,15JZ CLR_CALL ;按下的是清除键NUM_CALL: CALL NUMBER ;调数字键处理子程序JMP EXIT1CONT_CALL: MOV S,DL ;存放运算键的键值MOV E,0CALL COUNT ;调运算键处理子程序,计算第一个加数JMP EXIT1OUTP_CALL: CALL OUTP ;调等号键处理子程序JMP EXIT1CLR_CALL: CALL CLEAR ;调清除键处理子程序EXIT1: RETKEYVALUE ENDP;以下为清除键处理子程序,按下清除键后,X变量全部清0 CLEAR PROCMOV X[3],0MOV X[2],0MOV X[1],0MOV X[0],0CALL BITPRETCLEAR ENDP;以下为等号键处理子程序,该子程序负责将第二个运算数据的数值计算出来存入X2变量;并根据运算符号,调用相应的运算子程序OUTP PROCPUSH AXPUSH DXPUSH BXINC ECALL COUNT ;调运算键处理子程序,计算第二个运算数据CMP S,10JZ ADD_CALL ;运算符为加号,则调用加法子程序CMP S,11JZ SUB_CALL ;运算符为减号,则调用减法子程序CMP S,12JZ MUL_CALL ;运算符为乘号,则调用乘法子程序CMP S,13CALL DIVP ;运算符为除号,则调用除法子程序JMP STORE1ADD_CALL: CALL ADDPJMP STORE1SUB_CALL: CALL SUBPJMP STORE1MUL_CALL: CALL MULPSTORE1: MOV AX,Y ;以下程序将各运算子程序返回的运算结果,按位分解,送入X变量MOV DX,0MOV BX,1000DIV BXMOV X[0], ALMOV AX,DXMOV BL,100DIV BLMOV X[1],ALMOV AL,AHMOV AH,0MOV BL,10DIV BLMOV X[2],ALMOV X[3],AHPOP BXPOP DXPOP AXRETOUTP ENDP;以下为运算键处理子程序,该程序将第一个运算数据的数值计算出来并存入X1变量;或者将第二个运算数据的数值计算出来并存入X2变量;将运算符的值存入S变量COUNT PROCPUSH AXPUSH BXPUSH DXMOV DX,0CALL BITP ;测试X中的数据是多少位CMP CC,4 ;输入的数据是4位数?JZ C4CMP CC,3 ;输入的数据是3位数?JZ C3CMP CC,2 ;输入的数据是2位数?JZ C2JMP C1 ;输入的数据是1位数?C4: MOV AX,0MOV AL,X[0]MOV BX,1000MUL BXMOV DX,AXC3: MOV AL,X[1]MOV BL,100MUL BLADD DX,AXC2: MOV AL,X[2]MOV BL,10MUL BLADD DX,AXC1: MOV AL,X[3]MOV AH,0ADD DX,AXCMP E,1JNZ X1_SMOV X2,DX ;按下的是等号,则将第二个运算数据的值存入X2变量JMP EXIT3X1_S: MOV X1,DX ;按下的是运算符号,则将第一个运算数据的值存X1变量MOV X[3],0 ;清空X变量MOV X[2],0MOV X[1],0MOV X[0],0EXIT3: POP DXPOP BXPOP AXRETCOUNT ENDP;以下为数字键处理子程序;该程序,将输入的数据按位存放在X变量中,并由CC记录数据的位数NUMBER PROCCMP E,1JNZ CONTINUEMOV E,0CALL CLEARCONTINUE: CMP CC,0 ;目前数据为0位,即没有数据,则转到SSSJZ SSS;若已有数据,以下程序将X左移8位。

相关文档
最新文档