硬件课程设计报告(电子计算器)

合集下载

系统硬件综合设计实验报告

系统硬件综合设计实验报告

系统硬件综合设计实验报告# 系统硬件综合设计实验报告## 实验目的本实验的主要目的是综合运用课程中所学的硬件设计知识,设计一个具有一定功能的系统硬件。

通过实践,加深对硬件设计原理的理解,提高硬件设计能力。

## 实验原理在本实验中,我们将使用FPGA作为硬件平台,通过Verilog HDL语言进行设计。

FPGA可以灵活重构硬件电路,方便在实验过程中进行调试和修改。

在设计过程中,我们将使用数电模块以及FPGA内部资源实现所需的功能。

## 实验内容本次实验要求设计一个功能齐全的计算器。

计算器需要实现基本的加减乘除运算功能,并且能够显示运算结果。

具体功能要求如下:1. 输入:使用8位开关模拟输入两个8位二进制数。

2. 输出:输出两个输入数以及运算结果,并在数码管上显示。

3. 加法:实现两个八位二进制数的加法。

4. 减法:实现两个八位二进制数的减法。

5. 乘法:实现两个八位二进制数的乘法。

6. 除法:实现两个八位二进制数的除法。

## 实验过程与结果根据实验要求,我们首先设计了输入部分。

通过读取8个开关的状态,我们可以获得两个8位二进制数。

然后我们使用Verilog HDL语言编写了加法、减法、乘法和除法的模块。

这些模块使用了逻辑运算和算术运算来实现相应的功能。

最后,我们将输出结果显示在数码管上。

为了实现数码管的显示功能,我们使用了FPGA提供的数码管驱动模块。

在设计过程中,我们将运算结果转换成BCD 码,然后将BCD码输入到数码管驱动模块中进行显示。

经过调试和修改,我们成功实现了计算器的基本功能。

通过改变开关的状态,我们可以输入不同的二进制数,并获得正确的运算结果。

同时,结果也能够正确地显示在数码管上。

## 实验总结通过本次实验,我们深入学习了硬件设计的原理和方法,并且实践中提高了我们的设计能力。

本次实验的设计过程中,我们灵活运用了课程中所学的知识,并且通过调试和修改,解决了一些问题。

在实验中,我们也意识到硬件设计需要细致入微,每一个步骤都要认真对待。

c课程设计计算器报告

c课程设计计算器报告

c 课程设计计算器报告一、教学目标本课程的教学目标是使学生掌握C语言的基本语法,熟练使用C语言进行程序设计。

具体分为三个部分:1.知识目标:学生需要掌握C语言的基本语法,包括数据类型、运算符、控制结构、函数等。

2.技能目标:学生能够使用C语言编写简单的程序,解决实际问题。

3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力。

二、教学内容教学内容主要包括C语言的基本语法和程序设计的基本方法。

具体安排如下:1.第一章:C语言概述,介绍C语言的历史和发展,理解C语言的特点。

2.第二章:数据类型和运算符,学习C语言的基本数据类型和运算符。

3.第三章:控制结构,学习C语言的条件语句和循环语句。

4.第四章:函数,学习C语言的函数定义和调用。

5.第五章:数组和字符串,学习C语言的数组和字符串操作。

6.第六章:指针,学习C语言的指针概念和应用。

7.第七章:结构体和文件,学习C语言的结构体和文件操作。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法:1.讲授法:讲解C语言的基本语法和概念。

2.案例分析法:通过分析实际案例,让学生理解C语言的应用。

3.实验法:安排实验课程,让学生动手编写C语言程序。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》2.参考书:《C Primer Plus》、《C和指针》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境五、教学评估本课程的评估方式包括平时表现、作业、考试等。

具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。

2.作业:占课程总评的30%,包括课后练习、编程任务等。

3.考试:占课程总评的40%,包括期中考试和期末考试。

评估方式要求客观、公正,能够全面反映学生的学习成果。

我们将根据学生的实际情况,及时给予反馈,帮助学生提高。

六、教学安排本课程的教学进度安排如下:1.每周一次课,每次课2小时。

计算机硬件课程设计报告---简单计算机的设计

计算机硬件课程设计报告---简单计算机的设计

计算机硬件课程设计报告一-简单计算机的设计计算机硬件基础课程设计学号:121407103姓名:蔡松成班级:软件1201指导老师:葛桂萍2013 年6 月一、设计目的与要求目的:通过对一个简单计算机的设计,对计算机的基本组成,部件的设计,部件间的连接,微程序控制器的设计,微指令和微程序的编制与调试等过程有了更深的了解,加深对理论课程的理解。

要求:1.运算器:釆用单累加器多寄存器结构(开关KA、KB、KC、KR分别置左、右、右、左)。

2.指令系统:多于16条指令,外设和内存统一编址、统一操作指令。

3.内存寻址方式:寄存器直接寻址寄存器间接寻址直接寻址立即数寻址二、设计原理1.样机逻辑框图:见图一2.样机指令系统和指令执行流程:见表一3.样机微指令格式和指令微程序:见表二三、设计微操作信号1、运算器模块(ALU)SA 接X0 接M16SB 接XI 接M17P0 接CYP1 接A0接SRP2 接A7接SLCA 接①非S3~S0 接M23~M20Cn的非接M19M 接M18 CG 接Mil CC 接①非0B 接M80T 接M10CT 接+5V2、寄存器堆模块(REG)RR 接MlA 接10B 接113.指令部件模块(I-PC)P+1 接M6GI 接M7CI 接①非CK 接eCLR 接+5V01 接M154.内存模块(MEM)RC=M2+O 非WC=M3+O 非5、总线缓冲模块(BUS)Bl、B3 接RFB2=RC+IAB2 • IAB10KA 接IABOPA 接IAB1 6、启停和时停模块(R-P)DR 接M5RCP 接①非7.微程序控制模块(MPG)MLD 接M4MP+1 接+5VMCLR 接R0MCLK 接 PO MIG 接地 MD1OT4D6 接地 MD5 接 17 MD4 接 16 MD3 接 15 MD2 接 12 $件接线SA-X0-M16 M-M18 CK 一①Pl-AO-SR 0T-M10 B1-B3-RF P2-A7-SL CT-+5VKA-IABOCA -①非-CC RR-M1 KB-IAB1 S3-M23 A-IODR-M5 S2-M22 B-IlMLD-M4S1-M21 P+1-M6 MP+1-+5VS0-M20 GI-M7 MCLR-RO Cn 的非-M19 CI-<D 非一 RCP MCLK-POSB-X1-M17 CG-M19 CLR-+5V PO-CY 0B-M8 0I-M15 MIG-GND MD10-GND MD9-GND MD8-GND MD7-GNDMD6-GND MD5-I7 MD4-I6 MD3-I5 MD2-I2 MD1-MD0-+5V接线图VccCPM14 CL14 13 12 11 10 9 874 LS 001 2 3 4 5 6 7i~~nn~~nrM12 ZC MOVcc祁 地五、调试1、根据计算机硬件实验及课程设计指导书,先内存,读内存;写控存,读控存,看看所用的机器是否有问题;2、将自己所连得线路连入机器中;3、将所有的微指令输入所用的机器中,然后依次调试存取类指令、调试算逻类运算类指令、调试跳转类I/O设备操作类指令,看机器是否可以运行存取指令、加减指令、移动指令;4、若不行,检査自己输入的程序是否正确以及检査电路是否有误;若电路成功,就可以做老师的题目了。

硬件课程设计报告

硬件课程设计报告

硬件课程设计报告班级:计08-2班姓名:王海峰,豆剑波指导老师:苏晓龙目录硬件课程设计报告 (1)摘要 (3).1设计任务与要求 (4)1.1设计任务 (4)1.2性能指标 (4)2总体方案与说明。

(5)2.1 设计模块 (5)2.2设计思路 (5)3系统硬件设计 (5)3.1 8279结构及功能介绍 (5)3.2键盘接口介绍 (7)3.3数码管显示电路 (8)4系统软件设计 (9)4.1主程序设计 (9)4.2键盘扫描子程序设计 (11)4.3输入子程序及结果计算子程序设计 ............... 错误!未定义书签。

5实验体会:.. (12)摘要本设计是一个实现加、减、乘、除的计算器,由于采用试验箱,它的内部硬件主要由四部分组成,一个8279单片机芯片,一个8位共阳极数码管,一个4*4键盘,可以进行简单的一位运算,若超出范围,则自动报错。

显示部分:由8位共阳极数码管与8279相连,但只能显示六位,将写入8279显示RAM的数据显示出来。

按键部分:采用4*4键盘。

通过软件识别键值并执行相应的操作,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键按下就等待,在进入键盘扫描程序。

执行过程:开机什么都不显示,等待输入数值,当键入数字,将通过数码管显示出来,在键入+、—、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当键入数值后将显示键入的数值,按等号就会在数码管上显示出运算结果。

完成第一次计算后,按c键开始下一次计算。

注:只能进行一位运算。

(具体操作见后面仿真图)用8279实现计算器.1设计任务与要求1.1设计任务利用16/32位微机接口技术试验系统设计制作一个计算器用LED显示计算值及结果。

要求写出硬件原理图、软件程序流程图,并给出程序清单,还要写出试验体会。

能够利用键盘显示区上的键输入数值来进行简单的计算,并且将结果输出到LED 显示灯上。

课程设计——电子计算器设计1

课程设计——电子计算器设计1

××大学××学院××系××课程设计电子计算器设计学生姓名学号所在系专业名称班级指导教师成绩××大学××学院二○一二年七月摘要:智能仪器是计算机技术与测量技术以及仪器仪表技术相结合的产物。

它具有传统仪器无法比拟的优点。

在精度,可靠性方面都有了本质性的改变。

仪器硬件都趋于采用嵌入式系统、片上系统等结构。

电子计算器是能进行数学运算的手持机器,拥有集成电路芯片,采用来实现电子计算器的各个功能。

该电子计算器由按键输入的数值显示在7段数码管上,但只限4位数;按加、减、乘、除键时,第一次输入的值被存放在缓冲区中,当做被加、减、乘、除数,且加、减、乘、除相对的运算指示灯会亮;接着输入一个数,之后若是按下“=”键,则此加、减、乘、除数被存放于另一个缓冲区中,与刚才输入的数做运算,且相对应的运算指示灯熄灭;运算结果显示在7段数码管上。

关键字:智能仪器片上系统电子计算器集成电路芯片缓冲区Abstract:Intelligent instrument is the computer technology and measurement technology and instrumentation technology combined with the product. It has the incomparable advantage of traditional instruments. In the accuracy, reliability are all essential changes. Instrument hardware are tending to use embedded system, system on chip structure. An electronic calculator is able to perform mathematical operations on handheld machine, has integrated circuit chip, used to realize each function of the electronic calculator. The electronic calculator from the key input values displayed in the7digital tube, but only4 digits; according to plus or minus, multiplication, addition to the key, the first input value is stored in the buffer, as is plus or minus, multiplication, addition, subtraction, division, and, in addition to take relative operation indicator light; and then enter a number, then press" if = " button, the plus, minus, multiplication, the divisor is stored in a buffer, and just the number of inputs to do arithmetic, and the corresponding operation indication lamp is extinguished; calculation results in the7 digital tube on.Key words: Intelligent instrument system on chip electronic calculator integrated circuit chip buffer目录前言 (1)1. 概述 (1)1.1 应用背景 (1)1.2 课题设计目标 (1)1.3 课题设计任务与思路 (1)2. 设计方案论述 (2)2.1 系统总体方案设计 (2)2.2 系统设计框图 (2)3. 系统硬件设计 (3)3.1 单片机最小系统 (3)3.2 矩阵键盘 (3)3.3 显示部分 (4)4. 程序设计 (4)4,1 具体设计内容 (5)4.1.1 四则运算 (5)4.1.2 键盘 (5)4.1.3 执行过程 (5)4.1.4 错误提示 (5)4.2 主程序流程图 (5)4.3 算数运算程序设计 (7)5.系统调试 (7)6. 设计总结 (8)7. 参考文献 (9)附录 (9)前言智能仪器是一种先进的技术产品,是计算机技术与测试技术相结合的产物,仪器内部带有处理能力很强的智能软件。

单片机课程设计报告(简易计算器).

单片机课程设计报告(简易计算器).

简易计算器摘要:计算器是人们的日常生活中是最常见的电子产品之一,它应用极广、发展迅猛,并且不断出现着拥有更加强大功能的计算器。

为了解和研究计算器,本次课设设计制作了一个简易计算器,能够在十四位的计算范围内进行“+”、“-”、“*”、“/”的基本运算,能进行负数以及小数点后两位的精确结果显示。

该计算器以AT89C51单片机芯片作为核心。

采用LCD1602工业字符液晶进行显示。

完成的计算器经过检验能够完整的实现预设功能,各种细节完善,具有很高的使用价值。

关键词:单片机;简易计算器;AT89C51;LCD1602Simple CalculatorAbstract:Calculator is People's Daily life is one of the most common electronic products, used very wide, developing rapidly, and constantly appear more powerful function with have calculators. In order to understand and study calculator, this class set design made a simple calculator, can the calculation in within 14 "+" and "-" and "*", "/" the basic computing, can carry out negative and two decimal places accurate results are shown. This calculator with AT89C51 chips as the core. Using liquid LCD1602 industrial characters displayed. Complete calculator after inspection can complete realization, various details preset functions to perfect, have high use value.Keywords:MCU; Simple calculator;AT89C51;LCD1602目录中文摘要............................................................1英文摘要............................................................2单片机课程设计......................................................4 1 课程设计任务.....................................................41.1 主要功能设计................................................41.2 任务目的....................................................42 整体设计方案......................................................42.1 方案论证....................................................42.2 系统框图....................................................53 硬件电路的设计...................................................63.1 计算机Protel总图............................................63.2 显示电路设计方案............................................93.3 键盘设计方案................................................93.4 复位电路设计...............................................103.5 晶振电路设计...............................................104 控制软件设计....................................................114.1 程序时序总图...............................................114.2 液晶显示软件设计...........................................124.3 键盘输入软件设计...........................................134.4 计算函数设置...............................................155 系统调试........................................................185.1 硬件调试...................................................185.2 软件调试...................................................18 参考文献...........................................................20 个人小结...........................................................21 附录...............................................................24 附录1..........................................................24 附录2..........................................................251课程设计任务1.1 主要功能设计以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602工业字符型液晶显示屏构成,内部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。

硬件课程设计实验报告

硬件课程设计实验报告

计算机学院硬件课程设计报告1 课程设计指导教师评阅书指导教师评语:成绩:指导教师签字:年月日计算机学院硬件课程设计报告2摘要单片机是指一个集成在一块芯片上的完整计算机系统。

尽管它的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。

同时集成诸如通讯接口、定时器,实时时钟等外围设备。

而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。

本设计是基于芯片为AT90C516RD的单片机和点阵控制芯片74HC573共同来控制8*8的点阵显示屏的过程。

介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。

通过该芯片控制一个列驱动74HC573来驱动显示屏显示。

该电子显示屏可以显示各种文字或单色图像,选用1块8×8点阵LED来进行显示。

显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。

文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。

单片机控制系统程序采用C语言进行编辑,通过编程控制显示点对应LED阳极和阴极端的电平,就可以有效的控制显示点的亮灭。

所显示字符的点阵数据可以自行编写(即直接点阵画图),也可从标准字库中提取。

关键词:单片机,AT90C51RD,LED8*8点阵显示屏,点阵控制,锁存器,驱动电路计算机学院硬件课程设计报告3目录摘要 (2)第0章绪论 (4)1、引言 (4)2、单片机的发展和现状 (4)第1章 LED显示屏的介绍 (6)1.1 LED显示屏的发展历程 (6)1.2 LED显示屏的应用 (6)1.3 LED显示屏的分类 (7)1.4 LED显示屏的选择 (8)第2章基于单片机的LED广告牌原理 (10)2.1 LED显示屏原理 (11)2.2点阵LED扫描法介绍 (11)2.3 MCS-51的引脚及相关功能 (12)2.4 74HC573芯片的逻辑连接表 (14)第3章系统设计 (15)3.1 设计任务及要求 (15)3.2 总的电路连接 (15)3.3 硬件电路连线 (15)3.4 LED电路说明 (16)第4章软硬件设计 (18)4.1 硬件设计方案 (19)4.2 软件设计 (19)4.3 程序设计 (20)第5章调试及性能分析 (29)5.1 开发环境介绍 (29)5.2 理论性能分析 (29)5.3 系统调试 (30)第6章总结 (31)第7章实验心得体会 (32)参考文献 (33)附录程序 (35)计算机学院硬件课程设计报告4 绪论1引言单片微型计算机简称单片机,是典型的嵌入式微控制器,常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。

嵌入式课程设计报告--电子计算器

嵌入式课程设计报告--电子计算器

重庆科技学院《嵌入式体系结构与接口技术》课程设计报告学院:_电气与信息工程学院_ 专业班级:计科2012-04学生姓名:杜江龙学号: 2012442090设计地点(单位):电气与信息工程学院I302实验室设计题目:_________________ 电子计算器_____ ___ __完成日期: 2014 年 7 月 4 日指导教师评语: ______________________ _________________ ___________________________________________________________________________________ ___________________________________________________________________________________ ___________________________________________________________________________________成绩(五级记分制):指导教师(签字):课程设计任务书设计题目:电子计算器教研室主任:指导教师:冯骊骁2014年6月30日摘要嵌入式系统是后PC时代被广泛使用的计算机平台,它通常都具有低功耗、体积小、功能强、集成度高等优点。

此设计一个具有加减乘除功能的计算器,硬件采用TQ2440板子LCD触摸屏,此计算器能够实现整数和小数的加减乘除的计算功能,并且动态显示,操作简单、实用。

通过此课程设计,对TQ2440板子操作更加熟悉,对ADS1.2的编程和调试更加灵活。

较好的熟悉并掌握了对LCD的操作显示原理和编程,对以后学习有一定的帮助。

关键词:TQ2440 ADS1.2 LCD目录课程设计任务书 (I)摘要 (I)目录 (II)1 系统需求分析 (1)1.1 设计内容与要求 (1)1.2 设计参数 (1)2 概要设计 (2)3 详细设计 (3)3.1 键盘部分和显示部分 (3)3.2 流程图 (4)3.3 功能函数 (5)4 测试 (13)5 总结致谢 (14)6 参考文献 (15)1 系统需求分析1.1 设计内容与要求设计一个具有能进行加减乘除运算,操作数可为整数、小数,可进行连续运算,比如按键输入“1+2*3”,按下“*”后应该显示1+2的运算结果,系统无明显bug的简易计算器。

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

计算机科学与技术学院硬件课程设计报告姓名:学号:专业:计算机科学与技术班级:计科班设计题目:电子计算器成员:指导教师:职称:年月课程设计指导教师评阅书指导教师评语:成绩:指导教师签字:年月摘要电子计算器的设计主要分为键盘扫描与读取编码、七段LED数码管显示和四则运算的编写。

这次设计中我们采用可编程接口芯片8255链接4*4键盘和LED显示屏,从键盘扫描读入数字,在显示屏上面显示出来,并通过cpu运算出结果显示在屏幕上。

由于对汇编语言也不甚了解,只是进行一些简单的自然数的四则运算。

由于本次实验中,实验箱是TPC-ZK综合微机开放式实验系统,微机接口实验仪采用模块化、积木式的结构,各实块互不影响。

但可通过连线将各实验模块有机组合起来,进行微机外围接口实验。

这个实验选择的是4*4键盘连接上8255A然后控制LED显示。

关键词:8255A ;七段LED数码管;键盘;汇编语言;四则运算目录1 设计任务与要求 (3)1.1选题 (3)1.2需求分析 (3)1.3设计任务 (3)2硬件方案 (3)2.1微处理器8086芯片 (3)2.2 可编程并行接口8255A芯片 (4)2.3 4*4矩阵键盘 (6)2.4 七段LED数码管 (7)2.5 电路及其功能模块图 (8)3软件方案 (10)3.1流程图 (10)3.2源程序代码 (11)4 问题与解决方案 (26)5 成果展示 (26)6 总结 (27)7 心得体会与收获 (27)8参考文献 (27)1 设计任务与设计要求1.1选题我选的题目是电子计算器,电子计算器的设计主要分为键盘编码、七段数码管显示、和四则运算法则这三部分。

设计时用可编程接口芯片8255A链接4*4键盘和七段LED数码管,8255扫描键盘并通过数码管显示相应的数字,这其中需要一定的汇编程序作为核心支撑,才能正确的使各种功能运行正常。

1.2需求分析通过对选题的深入了解,电子计算器基本功能可以概括为:1.可以进行简单的加、减、乘、除四则运算;2.为了显示的人性化,按下每个数字都要进行反馈显示;3.数码管只有四位显示,运算数和结果应尽量小于四位数,不然显示不全;4.计算器能判断个别简单的错误,如除数为零,显示报错;5.计算器要有清零功能,可以在按键失误后重新按键。

在显示屏上可以及时反馈按下数字,这需要扫描程序模块一直运行着,并能够及时调用显示程序模块,当有运算符号按下时还要及时给之前按下的数字进行组装成一个数值,组装键值模块也是程序的重要所在。

等等这些都是在主程序下合理安排、运用流畅的,才能带来较完美的计算器体验。

1.3设计任务本次实验我分为电路设计和编码设计这两个任务模块来设计的。

电路设计主要研究键盘按键位置设计和各个芯片器件之间的连线。

编码设计主要分为键盘扫描读取编码、七段数码管显示编码和四则运算编码。

2 硬件方案2.1微处理器8086芯片当引脚接高电平时,CPU工作于最小模式。

此时,引脚信号24~31的含义及其功能如下:(1)IO/M:存储器、I/O端口选择控制信号。

信号指明当前CPU是选择访问存储器还是访问I/O端口。

为高电平时访问存储器,表示当前要进行CPU与存储器之间的数据传送。

为低电平时,访问I/O端口,表示当前要进行CPU与I/O端口之间的数据传送。

(2)WR:写信号,输出,低电平有效。

信号有效时,表明CPU正在执行写总线周期,同时由信号决定是对存储器还是对I/O端口执行写操作。

(3)INTA:可屏蔽中断响应信号,输出,低电平有效。

CPU通过信号对外设提出的可屏蔽中断请求做出响应。

为低电平时,表示CPU已经响应外设的中断请求,即将执行中断服务程序。

(4)ALE:地址锁存允许信号,输出,高电平有效。

CPU利用ALE信号可以把AD15 ~AD0地址/数据、A19/S6~A16/S3地址/状态线上的地址信息锁存在地址锁存器中。

(5)DT:数据发送/接收信号,输出,三态。

DT/信号用来控制数据传送的方向。

DT/为高电平时,CPU发送数据到存储器或I/O端口;DT/为低电平时,CPU接收来自存储器或I/O端口的数据。

(6)DEN:数据允许控制信号,输出,三态,低电平有效。

信号用作总线收发器的选通控制信号。

当为低电平时,表明CPU进行数据的读/写操作。

(7)HOLD:总线保持请求信号,输入,高电平有效。

在DMA数据传送方式中,由总线控制器8237A发出一个高电平有效的总线请求信号,通过HOLD引脚输入到CPU,请求CPU让出总线控制权。

(8)HLDA:总线保持响应信号,输出,高电平有效。

HLDA是与HOLD配合使用的联络信号。

在HLDA有效期间,HLDA引脚输出一个高电平有效的响应信号,同时总线将处于浮空状态,CPU让出对总线的控制权,将其交付给申请使用总线的8237A控制器使用,总线使用完后,会使HOLD信号变为低电平,CPU又重新获得对总线的控制权。

2.2 可编程并行接口8255A芯片8255A可为8086微处理器与外部设备之间提供并行输入/输出的通道。

通过编程可以设置芯片的工作方式,因此,用8255A连接外部设备时,通常不用再附加外部电路。

并行接口是在多根数据线上,以数据字节/字与I/O设备交换信息。

在输入过程中,输入设备把数据送给接口,并且使状态线“输入准备好”有效。

接口把数据存放在“输入缓冲寄存器”中,同时使“输入回答”线有效,作为对外设的响应。

外设在收到这个回答信号后,就撤消数据和“输入准备好”信号。

数据到达接口中后,接口会在“状态寄存器”中设置输入准备好标志,或者向CPU 发一个中断请求。

CPU可用查询方式或中断方式从接口中读取数据。

接口中的数据被读取后,接口会自动清除状态寄存器中的标志,且撤消对CPU的中断请求。

在输出过程中,每当输出寄存器可以接收数据,接口就会将状态寄存器中“输出准备好”状态置1或向CPU发一个中断请求,CPU可用查询或中断方式向接口输出数据。

当CPU输出的数据到达接口后,接口会清除“输出准备好”状态,把数据送往外设,并向外设发一个“数据输出准备好”信号。

外设受到驱动后,便接收数据,并向接口电路发一个“输出回答”信号,接口收到该回答信号后,又将状态寄存器中“输出准备好”置位,以便CPU输出下一个数据。

(1)8255A的一些引脚RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O 口均被置成输入方式。

PA0~PA7:端口A 输入输出线,一个8 位的数据输出锁存器/缓冲器,一个 8 位的数据输入锁存器。

PB0~PB7:端口B 输入输出线,一个8 位的I/O 锁存器,一个 8 位的输入输出缓冲器。

PC0~PC7:端口C 输入输出线,一个8 位的数据输出锁存器/缓冲器,一个 8 位的数据输入缓冲器。

端口C 可以通过工作方式设定而分成2 个4 位的端口,每个 4 位的端口包含一个4 位的锁存器,分别与端口A 和端口B 配合使用,可作为控制信号输出或状态信号输入端口。

CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255 与CPU 进行通讯。

图2-1 8255A管脚图RD:读信号线,当这个输入引脚为低电平时,允许8255 通过数据总线向CPU 发送数据或状态信息,即CPU 从8255 读取信息或数据。

WR:写入信号,当这个输入引脚为低电平时,允许CPU 将数据或控制字写8255。

D0~D7:三态双向数据总线,8255 与CPU 数据传送的通道,当CPU 执行输入输出指令时,通过它实现8 位数据的读/写操作,控制字和状态信息也通过数据总线传送。

(2)8255A的读写控制:8255A的读/写控制逻辑电路接受CPU 发来的控制口号RD、WR、RESET 和地址信号A1~A0。

然后根据命令端口,控制信号的要求,将端口的数据读出选信CPU 或者将CPU送来的数据写入端口,各端口的工作状态。

通过用输出指令对8255A 的控制字寄存器编程,写入设定工作方式的控制字,可以让3个数据口以不同的方式工作,端口A 可工作于3 种方式的任一种,端口B 只能工作于方式0 和方式1,端口C 除了用于输入输出端口外,还能配合A 口和B 口工作,为这两个端口的输入输出操作提供联系信号。

图2-2 8255A控制字本次设计实验采用的控制字是10010000,A口输入、B口输出、C口输出。

2.3 4*4矩阵键盘键盘是信息输入元件,由一个个按钮组成,如果是独立按钮的话必须要需要一个I/O口对它进行检测。

因为4×4矩阵键盘有8个管脚,为了扫描键盘判断键值的方便将八个管脚中的列接PA和行接PC。

因为进行键盘扫描一般要求有一部分的I/O口的工作方式是输入,另一部分I/O是输出,具体到4×4键盘则要求4个I/O 口输入,另外4个输出,这一点PC口刚好符合,低四位接行作为键盘I/O输入,PA低四位接列作为键盘I/O输出。

键盘有16个按键,我们设计为0~9为数字键,ABCD分别为+、-、*、/,E为=号,F为清零键CL。

识别键盘上哪个键被压下的过程的扫描步骤:1.检测是否所有键都都松开了,若没有则反复检测。

2.但所有键都松开了,再检测是否有键压下,若无键按下则反复检测。

3.如有键压下,要消除键抖动,确认有键压下。

4.对压下的键位置进行判断,先判断是第几行有键按下,再判断第几列有键按下,键值=行号*4+列号。

至此确定了哪个键按下,再接着进行后面的操作。

0 1 2 34 5 6 78 9 + -* / = CL图2-3 4*4矩阵键盘表2-1 键盘设计2.4 七段LED数码管LED由7个字符段和一个小数点段组成,每段对应一个发光二极管,当发光二极管点亮时,相应的字符段点亮。

LED有共阴极和共阳极两种供应状态。

共阴极显示时,将LED显示的COM接地,将八个字符段端a、b、c、d、e、f、g、dp依次与一个8位I/O口的最低到最高位连接,当I/O给LED的哪个字符段送入一个高电平时,该段就被点亮,从而可从这7个字符段中被点亮的构成相应的字符显示出来。

同理,COM阳极即将COM端接Vcc,其显示原理与COM阴极的基本相同,但I/O口送入低电平是相应的段才被点亮。

图2-4七段数码管实物图图2-5 数码管管脚图表2-2 数码管显示数字对应表2.5 电路及其主要功能2.5.1 电路连接实物图图2-6 电路实物图2.5.2实验电路图图2-7 电路实验模拟图2.5.3 功能模块图图2-8 功能模块图3 软件方案3.1 流程图3.1.1键盘扫描流程图图3-9 扫描流程图3.1.2 计算器运算流程图图3-10 运算流程图3.2 程序源代码port_a equ 280Hport_b equ 281Hport_c equ 282Hport_ctl equ 283Hdata segmentx db 0,0,0,0; 存放数据的每一位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,39H,5EH,79H,71H,40H,;段码表,最后一个是负号data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov al,90h ;A口输入 B口输出 C口输出 10010000B即mov dx,port_ctlout dx,almov di,offset x+3; di指向X[3]kkk:call key; 扫描按键jmp kkk;key proc ;按键扫描子程序,程序返回后,在变量H和L中存放当前按键的行列号check:call disp; ;等待按键,按下的同时进行显示mov al,10h; ;PC0-PC3对应行号,输出低电平mov dx,port_cout dx,almov dx,port_ain al,dx ;读列值,即PA0-PA3的值and al,0fhcmp al,0fh;jz check ;ZF=1,即运算结果为0,相等,都为高电平则无键按下,等待mov cx,50loop $; ;消除键抖动in al,dx; ;重复读列值and al,0fhcmp al,0fhjz check; ;若无键按下则一直等待mov h,0; ;有键按下,先把行列号清0mov l,0mov bl,01hmov bh,0feh; ;扫描键值,从第一行开始检测,PC0输出低电平next:mov al,bhmov dx,port_cout dx,alnextl:mov dx,port_ain al,dx; 读列值,判断第几列有键按下test al,bl; 判断是否是第1列jz waito ;是则跳转rol bl,1 ;左移一位cmp bl,10h; 当前行状态下没有任何列有键按下,则转为对下一行的测试jz nexthinc l; ;每判断一列,列号加1jmp nextl; 再对下一列进行判断nexth:mov l,0mov bl,01hrol bh,1;cmp bh,0efhjz exitinc hjmp nextwaito:mov dx,port_a ;若有键按下,则等该键松开后再计算键值in al,dx;and al,0fhcmp al,0fhjnz waitocall keyvalue; 调计算键值子程序exit:retkey endp;keyvalue proc ;计算键值子程序,通过行列号计算键值(键值=行号*4+列号)mov dl,h ;键值存放在DL寄存器中mov dh,lxor ax,axmov al,4mul dlmov dl,aladd dl,dhcmp dl,9jng num_call ;小于等于,则转移即按下的是数字键cmp dl,14jl cont_call; ;大于9小于14,即加减乘除的时候,运算键cmp dl,14 ;等于15,即等于键jz 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;clear proc ;一下为清除键处理子程序,按下清除键后,X变量全部清0mov x[3],0mov x[2],0mov x[1],0mov x[0],0call bitpcall dispcall dely ;分析数据位数retclear endp;outp proc ;等号键处理子程序,该子程序负责将第二个运算数据的数值计算出来存入X2变量push ax ;并根据运算符号,调用相应的运算子程序push dxpush bxinc ecall count ;调用运算键处理子程序,计算第二个运算数据cmp s,10jz add_call; ;加号cmp s,11jz sub_call ;减号cmp s,12jz mul_call; ;乘号cmp s,13jz divp_call ;除号add_call:call addpjmp store1sub_call:call subpjmp store1mul_call:call mulpjmp store1divp_call:cmp x2,0 ;判断除数是否为零,为零跳入报错子程序jz disp1call divpjmp store1disp1 proc ;报错显示子程序push bxpush axmov bh,0lea si,discode ;si指向段码表头mov ah,00010000bmov al,ahmov dx,port_cout dx,almov bh,00hmov bl,14mov al,[si+bx]mov dx,port_bout dx,alpop axpop bxkkk1:mov dx,port_ain al,dx ;报错后扫描键盘等待按键跳出and al,0fhcmp al,0fh;jz kkk1jmp kkkretdisp1 endp;store1:call clearmov ax,y ;将各运算子程序返回的运算结果,按位分解,送入X变量cmp ax,0 ;判断是否小于0,是跳转jl ccccmp ax,1000jnz ddd1mov x[0],1mov x[1],0mov x[2],0mov x[3],0jmp jieshuddd1:cmp ax,1000jl ddd2mov bx,1000mov dx,00hdiv bxmov x[0],almov ax,dxmov ah,00hjmp dddccc:mov x[0],10hmov ax,yneg ax ;取反ddd2:cmp ax,100jnz dddmov x[0],0mov x[1],1mov x[2],0中国矿业大学计算机科学与技术学院硬件课程设计报告mov x[3],0jmp jieshuddd:cmp ax,100jl gggmov bl,100div blmov x[1],almov al,ahmov ah,00hcmp ax,10jnz gggmov x[0],0mov x[1],0mov x[2],1mov x[3],0jmp jieshuggg:cmp ax,10jl jjjmov bl,10div blmov x[2],almov al,ahmov ah,00hjjj:mov x[3],aljieshu:pop bxpop dxpop axretoutp endp;count proc ;运算键处理子程序,该程序将第一个运算数据的数值计算出来,并存入X1变量push ax ;或将第二个运算数据计算出来存入X2变量中国矿业大学计算机科学与技术学院硬件课程设计报告push bx ;将预算符存入S变量push dxmov dx,0call bitp ;测试有多少位cmp cc,4jz c4cmp cc,3jz c3cmp cc,2jz c2jmp c1c4: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,1 ;判断是否为等号jnz x1_s ;不是mov 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 endpnumber proc ;数字键处理子程序cmp e,1 ;将输入的数据按位存放在X变量中,并由CC记录数据的位数jnz continuemov e,0call clearcontinue:cmp cc,0 ;目前数据为0位,没有数据则转到SSSjz ssspush ax ;若已有数据,程序将X左移8位,例如先输入1,再输入2,先要将1从各位移到十位,再将2存放到个位push dxmov al,x[3]mov ah,x[2]mov dl,x[1]mov dh,x[0]mov x[3],00hmov x[2],almov x[1],ahmov x[0],dlpop dxpop axsss:mov [di],dl; 将当前键入的数据存放到X的最低位inc cc; 数据位数加1cmp cc,4; 判断数据位数jng exit2mov cc,0 ;超过4位,重新从最低位开始存mov x[2],0mov x[1],0mov x[0],0exit2:call disp; 调用显示子程序,显示输入的数据retnumber endp;addp proc ;加法子程序push ax;mov ax,x1;add ax,x2;mov y,axpop axretaddp endp;subp proc ;减法子程序push axmov ax,x1sub ax,x2mov y,axpop axretsubp endp;mulp proc ;乘法子程序push axpush dxmov ax,x1mov dx,x2mul dxmov y,axpop dxpop axretmulp endp;divp proc ;除法子程序push axpush bxpush dxmov dx,0mov ax,x1mov bx,x2div bxmov y,axpop dxpop bxpop axretdivp endpdisp proc ;显示子程序,将X中的数值按位显示出来push bxpush axmov bh,0lea si,discode ;si指向段码表头begin:call bitp ;测试X的位数cmp cc,4jz qian ;cc等于4跳转cmp cc,3jz bai ;cc等于3跳转cmp cc,2jz shi ;cc等于2跳转cmp cc,1jz g ;cc等于1跳转jmp none ;否则跳转到没有数字qian:mov ah,10000000b;mov al,ahmov dx,port_cout dx,almov bh,00hmov bl,x[0] ;x[0]即千位数字mov al,[si+bx] ;默认是DS数据段首地址,中括号内位段码表的偏移量,将数字所对应的段码送到锁存器mov dx,port_bout dx,almov al,0out dx,albai:mov ah,01000000bmov al,ahmov dx,port_cout dx,almov bh,00hmov bl,x[1]mov al,[si+bx]mov dx,port_bout dx,almov al,0out dx,alshi:mov ah,00100000bmov al,ahmov dx,port_cout dx,almov bh,00hmov bl,x[2]mov al,[si+bx]mov dx,port_bout dx,almov al,0out dx,alg:mov ah,00010000bmov al,ahmov dx,port_cout dx,almov bh,00hmov bl,x[3]mov al,[si+bx]mov dx,port_bout dx,almov al,0out dx,almov al,00hmov dx,port_cout dx,alout dx,almov dx,port_ain al,dx ;读列值,即PA0-PA3的值and al,0fhcmp al,0fh;jnz exit4jmp beginnone:mov ah,00010000bmov al,ahmov dx,port_cout dx,almov al,3fh ;X中没有数据则显示0mov dx,port_bout dx,alexit4:pop axpop bxretdisp endp;bitp proc ;分析数据位数的子程序,判断有多少个位cmp x[0],0jnz fourbit ;如果x[0]不为0,则数据为4位数cmp x[1],0jnz threebit ;如果x[1]不为0,则数据为3位数cmp x[2],0jnz towbit ;如果x[2]不为0,则数据为2位数cmp x[3],0jnz onebit ;如果x[3]不为0,则数据为1位数jmp zerobit ;如果x[3]为0,则没有数据fourbit:mov cc,4jmp exit5threebit:mov cc,3jmp exit5towbit:mov cc,2jmp exit5onebit:mov cc,1jmp exit5zerobit:mov cc,0 ;将数据位数存入cc存放数据位数的地方exit5:retbitp endp; 结束dely proc ;延时子程序push cxmov cx,100loop $ ;$表示当前地址即原地循环pop cx ;入栈目的是保存cx的值防止多次调用的时候cx的值变化!!!!retdely endpcode endsend start4 问题与解决方案1.此次课程设计显示器件本想采用ST7920,结果纠结于显示屏的启动程序和电泳程序,每次显示都控制不好在屏幕的位置,最终采用了LED七段数码管,这个启用很方便只要给S0~S3高电平就能点亮相应的数码管,再通过da~dp给入相应数据显示数字。

相关文档
最新文档