《微机接口技术》课程设计报告--计算器设计

合集下载

微机接口技术课程设计报告word精品文档11页

微机接口技术课程设计报告word精品文档11页

河北科技大学课程设计报告学生姓名:学号:专业班级:课程名称:微机接口技术学年学期:2019—2019学年第二学期指导教师:2019年6月课程设计成绩评定表目录1、设计任务与要求---------------------------------------------------------42、总体方案设计------------------------------------------------------------43、硬件电路分析------------------------------------------------------------53.1设计思路-------------------------------------------------------------53.2基本工作原理-------------------------------------------------------54、程序设计-----------------------------------------------------------------64.1程序流程图---------------------------------------------------------64.2设计思路------------------------------------------------------------65、调试说明-----------------------------------------------------------------75.1硬件电路调试------------------------------------------------------75.2软件程序调试------------------------------------------------------75.3 遇到的问题及解决办法----------------------------------------76、结论---------------------------------------------------------------------86.1设计结果及分析---------------------------------------------------86.2学到的知识及个人体会------------------------------------------87、参考文献----------------------------------------------------------------96、附录1——原程序清单及注释--------------------------------------10附录2——电路原理图-----------------------------------------------121 设计任务与要求本设计通过简单的A/D转换接口电路,配合汇编语言程序设计,实现最基本的信号波形采集与存储,并通过简单的D/A转换接口电路,将存储的数据还原为信号波形,在普通示波器的屏幕上显示出来。

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

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

-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与键盘扫描电路的上拉电阻阻值统一采用,保证数码管有足够亮度。

微机接口技术课程设计

微机接口技术课程设计

湖北教育学院课程设计报告课程名称:微机接口技术课程设计设计题目:系别:专业:组别:学生姓名: 学号:起止日期:指导教师:教研室主任:摘要随着计算机软硬件的不断发展,计算机技术正在和已经广泛的运用到我们学习生活以及社会的方方面面。

作为计算机的远程控制技术来说,它的应用更是在军事、水利以及商业等各个领域发挥着举足轻重的作用!因此,作为当代大学生,我们有义务和责任来研究和学习计算机远程技术及其应用。

2006年9月,我院在积极的组织和有力的教育改革推动下,我们才能够在一定的时间里,挑选我们的课程设计项目并予以行动。

在大学已学软硬件知识的基础上,我们小组研究的课题是《声-光报警系统设计与制作》,为了很好的完成我们的课程设计,我们小组四个成员互相协助,以及各个小组之间相互探讨,使得我们的设计任务都能按计划进行。

当然,我们也遇到很多自己不懂的技术问题,在我们的指导老师以及其他项目老师的帮助下,我们学到了很多的新的知识。

总的说来,通过这次课程设计,我们既锻炼了自己,同时又检验了自己在团队合作中自己作用的充分发挥和强弱互补!我们的课程设计的硬件部分包括以下几个方面的内容:并行接口的8255芯片与74LS04芯片的连接,还有在双机通信中串并口的接入接出,这是整个硬件与软件相结合的关键所在,也是一个难点!另外,面包板上电路的线路连接也是成功的一个好的开始。

软件设计方面,我们主要依靠各个芯片的结构特性来设计程序。

比如8255的A、B、C口的连接,以及8255并行芯片的端口使用。

具体的程序中包括由小键盘控制二极管的发光情况和扬声器发出的高低频率声音。

关键字:声光报警器 8255A import outport目录1 需求分析 (1)1.1 设计题目 (1)1.2 设计任务及要求 (1)1.2.1 任务 (1)1.2.2 要求 (1)2概要设计 (2)2.1 主要硬件 (2)2.2 功能模块 (5)2.3 设计方法及其原理 (6)3详细设计 (6)3.1 硬件设计 (6)3.2 软件设计 (9)4调试与操作说明 (14)4.1硬件测试 (14)4.2 软件调试 (15)5总结 (16)6致谢 (17)参考文献 (18)附录A 声-光报警器电路板图 (19)附录B 评定表 (20)1 需求分析1.1 设计题目通过可编程并行接口芯片8255A开关量控制的原理与方法,设计一个声-光效果报警器1.2 设计任务及要求1.2.1 任务1.进行声-光效果(报警器)系统电路硬件设计,画出电路原理图、PCB图或元器件布线图;2.安装或焊接元器件;3.进行声-光效果控制程序设计(采用ASM或CPP语言)4.系统联调,提交一个符合上述4种要求的声-光效果的系统设计。

微机接口课程设计报告

微机接口课程设计报告

微机接口课程设计报告学号:20121004357姓名:李世荣班级:191123指导老师:墙威摘要微机接口技术是采用硬件与软件相结合的方法,使微处理器与外部设备进行最佳的匹配,实现CPU与外部设备之间的高效、可靠的信息交换的一门技术。

接口技术把由处理器、存储器等组成的基本系统与外部设备连接起来,从而实现计算机与外部设备通信。

处理器通过总线与接口电路连接,接口电路再与外部设备连接,因此CPU总是通过接口与外部设备发生联系。

微机的应用是随着外部设备的不断更新和接口技术的发展而深入到各个领域的,因此接口技术是组成任何实用微机系统的关键技术,任何微机应用开发工作都离不开接口的设计、选用和连接。

微机与接口技术是一门实践性和实用性都很强的课程,学习的目的在于应用。

这次课程设计是计算机专业学生的一次较全面的的设计训练,是配合微机与接口技术课堂教学的最后一个重要的实践教学环节,它将起到巩固课堂和书本上所学的知识、加强综合能力、提高系统设计水平、启发创新思想的作用。

本次设计任务是利用实验室的试验箱和VC6.0的环境设计出我们的小系统。

而我们这次设计的是模拟汽车行驶系统。

通过该系统,我们可以模拟汽车的行驶过程。

关键字:微机接口技术,VC6.0,试验箱,模拟汽车行驶系统。

一、需求分析进行系统设计,首先要对系统的现状进行分析。

根据系统的目标、需求和功能,制定和选择一个较好的系统方案,从而达到一个合理的优化系统。

需求分析是在于要弄清用户对开发的系统的确切要求。

本次实验准备在VC6.0和实验室的试验箱的环境下模拟出汽车的行驶过程。

正如我们所知,汽车的行驶过程非常复杂,在小小的试验箱上不能完全实现,所以这次实验中,我们只能准备完成一些基本的功能。

我们的目标功能有汽车的开关,速度的控制,以及倒车等功能。

二、设计分析经过需求分析之后,我们在观察试验箱后,试验箱上有控制功能的有A/D转换器,应用小键盘,以及拨键开关。

显示效果的部件有LED显示器,步进电机。

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

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

、学号××××××××《微型计算机原理与接口技术》课程设计(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. 理解微机接口技术的基本概念、功能及分类;2. 掌握常用微机接口芯片的内部结构、工作原理及编程方法;3. 学会分析微机接口电路的原理图,并进行简单的设计与调试;4. 了解微机接口技术在现代计算机系统中的应用及发展趋势。

技能目标:1. 能够正确使用微机接口芯片进行电路设计与连接;2. 熟练运用汇编语言或C语言进行微机接口编程;3. 能够对微机接口电路进行故障分析与调试;4. 培养学生的团队协作能力,提高沟通与表达能力。

情感态度价值观目标:1. 培养学生对微机接口技术学习的兴趣,激发学生的学习热情;2. 增强学生的动手实践能力,培养严谨的科学态度;3. 提高学生的创新意识,鼓励学生勇于探索新知识;4. 培养学生的爱国情怀,关注我国微机接口技术领域的发展。

本课程针对高年级学生,课程性质为理论与实践相结合。

通过本课程的学习,使学生掌握微机接口技术的基本知识和技能,提高解决实际问题的能力,为后续相关专业课程学习打下坚实基础。

同时,注重培养学生的团队协作精神、创新意识和情感态度,使其成为具有全面素质的计算机技术人才。

教学要求包括:理论教学与实验操作相结合,课堂讲授与课后实践相结合,培养学生自主学习、合作学习的能力。

课程目标分解为具体学习成果,以便于教学设计和评估。

二、教学内容本课程教学内容分为以下四个部分,确保学生全面系统地掌握微机接口技术:1. 基础理论:- 微机接口技术概述:接口功能、分类及发展趋势;- 常用接口芯片原理:如8255、8251、8259等;- 接口编程基础:汇编语言与C语言接口编程。

2. 接口电路设计与分析:- 接口电路设计方法:原理图绘制、器件选型与连接;- 常用接口电路实例分析:并行接口、串行接口、中断接口等;- 接口电路故障分析与调试技巧。

3. 实践操作:- 软件模拟:使用仿真软件进行接口电路模拟;- 硬件实验:搭建实际接口电路,进行编程与调试;- 综合设计:结合实际需求,完成微机接口技术应用项目。

微机接口技术课程设计报告范文

微机接口技术课程设计报告范文

微机接口技术课程设计报告范文河北科技大学12020年4月19日文档仅供参考,不当之处,请联系改正。

课程设计报告学生姓名:范雅茹学号:专业班级:电信091班课程名称:微机接口技术年学期:2 011 — 2 0 12 年第二学期指导教师:马洪涛睢丙东2 0 12 年 6 月课程设计成绩评定表22020年4月19日目录1 设计任务与要求 (1)2 总体方案设计 (1)32020年4月19日3 硬件电路分析 (2)4 程序设计 (3)5 调试说明 (4)6 结论 (5)7 参考文献 (6)附录(原始程序清单及电路原理图)42020年4月19日1 设计任务与要求本设计经过简单的A/D转换接口电路,配合汇编语言程序设计,实现最基本的信号波形采集与存储,并经过简单的D/A转换接口电路,将存储的数据还原为信号波形,在普通示波器的屏幕上显示出来。

被测信号产生电路参见“A/D、D/A接口实验扩展卡电路原理图”。

当按下S1时,电容C5完全放电,A/D转换器输入电压为零;抬起S1时,电容C5开始充电,A/D转换器输入电压按RC过渡过程开始上升,最终达到+5V。

图中RC时间常数约为10ms,整个充电过程需要3~5倍的RC时间常数时间。

设计要求使用A/D转换器捕捉电容C5充电的完整过程,并将采样数据存储起来。

然后依次将采样数据经过D/A转换器循环输出,产生一定频率的重复波形,送到普通示波器显示。

基本要求:使用一个D/A转换器通道,将信号波形施加到示波器的Y轴,X轴扫描信号由示波器产生并调节,实现RC充电过程的波形稳定显示。

发挥部分:将示波器调整在X-Y方式,采样数据的D/A转换器输出接到Y 轴输入端,增加一个D/A转换器通道,产生频率可变的X轴扫描信号,接到示波器X轴外部输入端,使RC充电过程的波形稳定显示。

2 总体方案设计电路由四部分组成:输入电路、控制电路、A/D转换、D/A转换。

输入电路:即采集电路部分,本设计为RC充电过程采样实验。

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

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

微型计算机原理与接口技术简易计算器系统设计计算器是一种能够进行基本算术运算的设备,它通常包括数字输入、运算功能、显示屏和输出等部分。

在设计计算器系统时,我们首先需要确定计算器的硬件结构和组成,然后再考虑如何实现各个功能模块之间的接口。

首先,我们需要确定计算器的硬件结构,包括中央处理器(CPU)、存储器、输入设备、输出设备和控制器等。

其中,CPU负责执行计算器的运算逻辑,存储器用于存储运算过程中的数据,输入设备用于接收用户的输入,输出设备用于显示计算结果,控制器用于控制各个部件之间的数据传输和协调工作。

接下来,我们需要考虑如何实现输入设备和CPU之间的接口。

常见的计算器输入设备有键盘和按钮,这些设备通常以二进制码的形式将输入的数字和操作符传输给CPU。

在接口设计中,我们可以使用行列扫描和键盘编码等技术,将键盘上每个按钮与一个独立的编码对应,通过扫描键盘的行和列,可以确定用户按下的是哪个按钮,并将对应的编码传输给CPU。

接着,我们需要考虑如何实现CPU和存储器之间的接口。

存储器通常分为寄存器和内存两部分,寄存器用于存储CPU运算过程中的中间结果,内存用于存储用户输入的数据和计算结果。

在接口设计中,我们可以使用地址线和数据线来实现CPU与存储器之间的数据传输。

通过选择不同的地址线,CPU可以读取和写入不同的数据,从而实现数据的存储和读取等操作。

最后,我们需要考虑如何实现CPU和输出设备之间的接口。

输出设备通常是液晶显示屏或数码管等,它们用于显示计算结果。

在接口设计中,我们可以使用数据线和控制线来实现CPU与输出设备之间的数据传输和控制。

通过向输出设备发送指定的数据和控制信号,CPU可以控制输出设备实现相应的显示功能。

综上所述,微型计算机原理与接口技术是一个涉及计算机硬件结构、工作原理和接口设计的重要课程。

在本简易计算器系统设计中,我们考虑了计算器的硬件结构和组成,以及输入设备、存储器、CPU和输出设备之间的接口。

微机课程设计报告-计算器的实现(william)

微机课程设计报告-计算器的实现(william)

微机课程设计报告(2010—2011年度第二学期)名称:微机课程设计报告_______学号: 200810314302 _______学生姓名: _林伟炼_______导师:张敏成绩:______________________日期:2010年3月25日一、课程设计的目的(1)掌握汇编语言各种基本指令(2)熟悉DOS系统功能调用方法以及BIOS系统系统功能的调用方法(3)学会使用MASM汇编软件,并会对程序的开发,并且进行调试以及运行功能二、课程设计的内容(1)设计内容设计一个能实现四则运算的计算器,将键盘输入的表达式预存入一缓冲区内,数值与运算符分开存储,数值存放在数据段中标号为NUM的缓冲区中,而运算符则存放在数据段中标号为MARK的缓冲区中。

然后对两个缓冲区的字符进行读取判断,当读到一个有效地表达式时,进行相应的运算后,以十进制数表示运算结果。

(2)目标要求该程序接受从键盘输入的十六进制数,可执行整数的加减乘除运算,还可实现多括号嵌套运算,计算结果以十六进制输出,以十进制数显示。

(3)设计框架(4)程序解析本程序中有两个宏定义,分别为字符串输出DISP、给运算符赋权值CHOICE;三个子程序,分别为四则运算子程序MATCH、定义优先级子程序ADVANCE以及回车换行子程序CR;同时对于输入字符的判断正误,并且附带有帮助文档可供参考。

1.主函数MAIN在主函数中,运用指令LEA DI,NUMB ; LEA SI,MARK ;将NUMB的偏移地址传送到DI,NUMB存储单元中存放输入的数值;将MARK的偏移地址传送到SI,MARK存储单元中存放输入的运算符输出已定义的字符串。

输出数据段定义的字符串,数据寄存器AX、BX、CX、DX 清零。

当输入的是数字时,SIGN1自动加1,接着进行数值处理;当处理的是运算符号时,则进行括号是否匹配等相关操作;而在输入的过程中,同时会对输入的字符进行判别,如果是无规则字符,则会出错,并且可以通过c进行清除数据,也可以通过h来取得帮助文档,或者通过q退出程序。

微型计算机接口技术课程设计

微型计算机接口技术课程设计

微型计算机接口技术课程设计一、引言微型计算机是现代计算机领域中的重要一环,被广泛应用于各行各业中的数据处理、控制、通讯等领域。

在微型计算机中,接口技术是重要的组成部分之一,其作用是将计算机与外部设备相连接,实现设备控制及数据交换等功能。

本文介绍了一种设计微型计算机接口技术的课程方法,旨在帮助学生深入了解微型计算机接口技术的理论与实践,提高他们的实践能力和创新能力。

二、课程目标本课程目标是使学生:•掌握微型计算机接口技术的基本概念和原理;•熟悉各种标准接口的特点和应用;•能够设计并实现简单的接口电路;•了解各种接口技术的最新发展和趋势。

三、课程内容本课程的内容主要包括以下部分:1. 微型计算机接口基础•接口的基本概念、种类和分类;•计算机接口的特点和应用;•接口电路的基本原理和设计方法;•接口数据传输的方式和技术。

2. 标准接口•RS-232C串行接口;•USB接口;•并行接口;•SCSI接口。

3. 定制接口•程序控制接口;•直接存储器存取接口(DMA);•高速输入输出接口(EIO)。

4. 接口设计与实现•接口电路设计和实现方法;•接口硬件和软件的结合;•接口测试和故障排除。

5. 接口技术的应用•数据采集和控制系统的设计和实现;•多媒体技术中的接口应用;•嵌入式系统中的接口应用。

四、课程实施本课程注重理论和实际相结合,采用理论讲解、设计实践和项目实战等多种方式进行教学。

•理论讲解:通过教师授课和课程PPT等方式,让学生掌握微型计算机接口技术的基本概念、原理和应用。

•设计实践:通过课程设计实践,让学生熟悉各种接口的设计和实现方法,提高他们的实践能力和创新能力。

•项目实战:在课程结束前,组织学生进行一个完整的项目实战,让他们感受到接口技术在实际应用中的重要性和实用性。

五、评估与考核为了评估学生在本课程中的学习效果和能力提升情况,本课程采取以下评估和考核方式:•平时成绩:包括课堂参与、课后作业和实验报告等。

微机原理课程设计之计算器程序设计报告

微机原理课程设计之计算器程序设计报告
MOV AH,0AH
MOV DX,OFFSET BUF ;BUF为数据段中定义的数据缓冲区
INT 21H
显示单个字符命令:
MOVAH,02H
INT 21H
显示一串字符串的命令:
MOV AH,09H
MOVDX,OFFSET BUF ;BUF为被显示字符串的首地址
INT 21H
十进制数显示过程:将十进制数送到BX中,BX除以1000,余数送BX中,商在AL中,范围为0~9,显示AL中的内容。BX除以100,余数送BX中,商在AL中,显示AL中的内容,依次类推,直到分出个位数字。
利用DOS中断的01号、02号子功能来完成键盘接受、结果显示。
设置屏幕显示方式。
MOV AH,00H
MOV AL,NUM (NUM为显示方式属性字)
INT 10H
接着从键盘上接受键值,并判别后转到相应的子模块进行运算,并显示结果。
MOV AH,01H
INT 21H ;AL=键入字符的ASCII码
从键盘上接收一串字符串命令:
二)程序编译、运行与调试
在DOS环境下,键入EDIT。启动全屏幕编辑软件EDIT,输入源程序。输入完毕,按alt+F选择SAVE保存程序(规定扩展名为*.ASM),按alt+X退出EDIT状态。
2、显示主菜单:
MOV AH,09H
MOV DX,OFFSET TOP
INT 21H
先在数据段中定义主菜单中要显示的字符串,再通过调用DOS系统的09H号功能——显示字符串(串尾字符为$,但不显示)来完成。
3、从键盘接收一个数字:
MOV AH,01H
INT 21H
通过调用DOS系统的01H号功能——键入字符并回车来实现,其出口参数为键入字符的ASCII码,存在AL中。

微机接口技术课程设计

微机接口技术课程设计

微机接口技术课程设计一、背景简介微机接口技术是计算机科学与技术中重要的一部分,也是计算机科学与技术专业中的必修课程之一。

在课程学习中,学生需要掌握微机接口技术的基本理论、基础知识和应用技能,能够对各种微机接口接口进行分析、设计和调试。

二、课程设计目的本次微机接口技术课程设计的主要目的是培养学生对于微机接口技术的理论知识与实践能力,同时也是为了实现本课程的各项目标:1.掌握各种微机接口的基本原理和应用场景。

2.熟悉微机接口的硬件电路设计流程。

3.掌握微机接口的编程调试技巧。

三、课程设计需求1. 设计内容•针对给出的需求进行微机接口硬件电路的设计。

•编写应用程序,实现与设计的硬件接口的数据通信,对输入的数据进行处理输出。

•设计实验报告,包含设计思路、电路实现、程序编写等内容。

2. 硬件电路设计要求硬件电路设计要求符合以下三个特性:1.电路的可行性:所设计的电路在实现上要符合可行的方案;2.电路的可靠性:所设计的电路要具备良好的安全性和可靠性;3.电路的可扩展性:所设计的电路要具备良好的扩展性方案。

3. 程序设计要求•熟悉汇编语言、C语言等语言的基本语法和编程规范;•确定与硬件电路设计相对应的数据传输协议格式,明确通信模式;•设计程序,完成数据读写操作,实现对数据的处理。

四、课程设计步骤本次课程设计分7个步骤,具体如下:第一步:了解所需硬件设备设计前先了解所需的硬件设备,熟悉各种硬件设备的技术参数和功能特性。

第二步:确定需求结合课程要求,确定具体项目的需求,考虑需要实现什么功能,在此基础上进行电路设计和程序编写。

第三步:电路设计根据需求,设计符合电路实现要求的电路方案。

要注意电路的可行性、可靠性和可扩展性。

第四步:布线和焊接将所设计的电路方案制作成实物,确保焊接安全、稳定。

第五步:程序编写根据所设计的硬件电路,编写相应的驱动程序和应用程序。

确保程序编写的正确性和稳定性。

第六步:调试测试将编写好的程序与制作好的硬件进行联调,测试程序特性和硬件性能,保证正常运行。

微机接口课程设计报告

微机接口课程设计报告

〈〈微机接口技术〉〉课程设计报告设计题:地铁收费系统指导老师:学生姓名:学号:所在班级:网络工程一. 课程设计目的结合一个实际的接口技术问题在实验台上编程模拟实现。

二. 课程设计要求由一个主控机监控和若干个下位机组成,主控机负责数据处理,下位机负责访问接口。

三. 课程设计内容及步骤(1) 题目: 地铁收费系统(2) 系统功能:A. 乘客进入地铁站刷卡,记录起始站点,出站也要刷卡,记录终点站,根据距离计算车费,并判断乘客是否买足了票,若票款不足,则发出警报。

B. 下位机从接口上接收到卡号数据,并将该下位机的编号传到主控机,主控机保存. 当主控机再次收到该卡号的时候,计算该下位机和已经存储的下位机之间的距离计算出车费,用该卡号的金额减去车费,如果大于0则扣除费用,否则报警.(3). 系统接口框图主控机保存,查询,计算余额,临时保存卡号信息等程序。

主控机与下位机通信程序。

下位机与主控机通信程序。

下位机访问接口程序。

(5) . 系统流程(设计)说明首先主控机启动程序,开始监听下位机,一旦收到数据就进行处理,首先分割出低3位作为站点编号,中间4为作为卡号.然后主控机查询数据库,得到该卡号的信息,包括是否是第一次进站,卡上的余额等等.接下去主控机返回该卡号的余额给下位机,下位机接受到余额判断是否小于零,如果是则报警(响铃),否则显示余额,下位机不进行判断用户到底是进站还是出站.所有判断都是交给主控机,下位机还需要从接口读取数据,前3位表示站点编号,中间4位表示卡号,最高位为标志位,只有它为1时表示已经插卡并且已经ready可以读数据了.下位机读取数据后通过com通信和主机建立连接,下位机对于接口的监听是主动的,这里我们程序中开了一个线程用于专门监听读取接口上的数据,而且同时设计了标志以防止反复读取,反复将同一数据发送至服务器端(主控机).(6) . 部分关键程序源码程序包括客户端和服务器端程序A . COM通讯:1. 连接初始化:m_com1.SetCommPort(1);m_com1.SetInBufferSize(1024);m_com1.SetOutBufferSize(512);if(!m_com1.GetPortOpen()){m_com1.SetPortOpen(true);}m_com1.SetInputMode(1);m_com1.SetSettings("9600,n,8,1");m_com1.SetRThreshold(1);m_com1.SetInputLen(0);2. 发送数据int CKou1Dlg::SendComMessage(CString msg){CByteArray sendstr;WORD sLength;sLength=msg.GetLength();sendstr.SetSize(sLength);for(int i=0;i<sLength;i++){sendstr.SetAt(i,msg.GetAt(i));}m_com1.SetOutput(COleVariant(sendstr));return 0;}3. 接收数据void CKou1Dlg::OnOnCommMscomm1(){UpdateData(true);V ARIANT variant_ins;COleSafeArray safearray_ins;long i=0;int len;char rxdata[1000];CString tmp;switch(m_com1.GetCommEvent()){case 2:{variant_ins=m_com1.GetInput();safearray_ins=variant_ins;len=safearray_ins.GetOneDimSize();for (i=0;i<len;i++){safearray_ins.GetElement(&i,&rxdata[i]);}rxdata[i]='\0';}// m_recv+=rxdata;UpdateData(false);break;default:break;}}B . 下位机监听接口首先通过增开一个线程,线程中死循环来不断监听接口, 然后在死循环开头先初始化8255,接着通过标志位来判断是否为同一个数据,以决定是否重新向主控机发送数据.在用户抽卡时程序变换标志位,只有在插卡时才会将数据重新发送到主控机(此时接口的标志位也改变,两者相等时表明是有效数据).void CKou1Dlg::OnButton2(){CString a0=" 刷啊刷~~~";//m_recv=a0;//CKou1Dlg::UpdateData(false);CWnd *btn = CKou1Dlg::GetDlgItem(IDC_BUTTON2);btn->EnableWindow(false);/*HANDLE Hthread1;Hthread1=CreateThread(NULL,0,CKou1Dlg::Fun1Proc,this,0,NULL);*/AfxBeginThread(Fun1Proc,this);}UINT CKou1Dlg::Fun1Proc(LPVOID lpparameter) //开线程{int flag0=0;int i=0;OpenPortTalk();//system("music.exe"); //播放音乐//设置控制方式//outportb(CTRL_8255,0x82); //0x303 使读a口写B 口while(1){outportb(CTRL_8255,0x82);unsigned char c=inportb(PB_8255);::Sleep(200);CString a0=" 刷啊刷~~~";if((c&0x80)==0){flag0=0;continue;}if(c==flag0) //判断是否为有效数据continue;flag0=c;CString a;a.Format("%d",(c&0x78)>>3);((CKou1Dlg *)lpparameter)->SetDlgItemText(IDC_EDIT1,(LPCTSTR)a); ((CKou1Dlg *)lpparameter)->UpdateWindow();CByteArray sendArr;WORD wLength;//wLength = (CString)c.GetLength();sendArr.SetSize(1); //发送数据到主控机((CKou1Dlg *)lpparameter)->m_com1.SetOutput(COleV ariant(sendArr));}ClosePortTalk();}C . 下位机数据处理接受主控机返回的数据(账户余额),如果大于0正常,如果小于0则响铃报警void CKou1Dlg::OnOnCommMscomm1(){UpdateData(true);V ARIANT variant_ins;COleSafeArray safearray_ins;long i=0;int len;char rxdata[1000];CString tmp;switch(m_com1.GetCommEvent()){case 2:{variant_ins=m_com1.GetInput();safearray_ins=variant_ins;len=safearray_ins.GetOneDimSize();long j=0;short recvicedate=0;safearray_ins.GetElement(&j,&recvicedate);//for (i=0;i<len;i++)//{// safearray_ins.GetElement(&i,&rxdata[i]);//}//rxdata[i]='\0';//m_recv+=rxdata;//接收到回馈进行数据处理if(recvicedate&0x80){//余额不足,报警m_recv="余额不足,报警! ";//for(int n=0;n<3;n++)system("music.exe");}else{int res;if(recvicedate>127)res=-128+recvicedate-128;else if(recvicedate<=127&&recvicedate>0)res=recvicedate;char * ccc=new char[10];CString a(itoa(recvicedate,ccc,10));m_recv="您的余额是:"+a;}}UpdateData(false);break;default:break;}}D . 主控机处理程序接收下位机传送过来的卡号和站点编号,通过卡号查询数据库得到该卡号的信息(包括余额和状态),如果是出站则计算余额并返回给下位机,同时改变该卡状态为出站.如果是进站,则登记为进站,同时直接返回当前余额给下位机.程序如下: (其中status表示进站还是出站)void CKou1Dlg::OnOnCommMscomm1(){m_recv="";UpdateData(true);V ARIANT variant_ins;COleSafeArray safearray_ins;long i=0;int len;char rxdata[1000];CString tmp;switch(m_com1.GetCommEvent()){case 2:{variant_ins=m_com1.GetInput();safearray_ins=variant_ins;len=safearray_ins.GetOneDimSize();long j=0;short recvicedate=0;safearray_ins.GetElement(&j,&recvicedate);//将接收数据显示出来char * c3=new char[10];CString a3(itoa(recvicedate,c3,10));m_recv+=a3+" ";//查询数据库,获取该卡号信息_variant_t Raffected,cardnum0,count0,status0;int cardnum=(recvicedate&0x78)>>3;CString y2,str0;str0.Format("%d",cardnum);y2="select * from card where cardnum="+str0;m_pRset->Open(_variant_t((LPCTSTR)y2),m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);CString str;while (!m_pRset->adoEOF){cardnum0=m_pRset->GetCollect("cardnum");count0=m_pRset->GetCollect("count");status0=m_pRset->GetCollect("status");//str=(LPCTSTR)(_bstr_t)cardnum0;//GetDlgItem(IDC_EDITID)->SetWindowText( str );//m_pRset->PutCollect(_variant_t("cardnum"),_variant_t((long)2000));//UpdateWindow();m_pRset->MoveNext();Sleep(100);// (*cardcurrent).cardnum=(short)vid;// (*cardcurrent).count=(short)vpsw;// (*cardcurrent).zhan =(short)vmon;}m_pRset->Close();short yue=-1;if((short)status0!=-1){int zhan2=recvicedate&0x7;yue=(short)count0-abs(((short)zhan2-(short)status0)*10);//重置status为-1status0=(short)-1;}else{status0 =(short)(recvicedate&0x7);yue=(short)count0;}if(yue>=0){//先回写数据库,改变statusCString yue2,status2,sql;yue2.Format("%d",yue);status2.Format("%d",(short)status0);sql="update card set [count]="+yue2+",status="+status2+" where cardnum="+str0;m_pConnection->Execute(_bstr_t((LPCTSTR)sql),&Raffected,adCmdText);}//发送余额到客户端CByteArray sendArr;sendArr.SetSize(1);sendArr.SetAt(0, yue);CKou1Dlg::m_com1.SetOutput(COleVariant(sendArr));//将发送信息显示出来char * c=new char[10];CString a(itoa(yue,c,10));//char * c2=new char[10];//CString a2(itoa(str0,c2,10));m_edit+="向卡号为:"+str0+"发送余额:"+a+"元\n\r ";}UpdateData(false);break;default:break;}}(7) . 部分程序截图主控机接受下位机发送的卡号等数据,同时查询数据库返回该卡余额,主控机在进行充值操作的截图四. 实验心得这次接口的课程设计可获收获颇大, 首先是更加清晰地认识了一些接口芯片的使用,比如说8255,8250芯片, 最重要的是学会了两微机com口的通讯,这是本次课程设计的关键!觉得以前接口的实验还是蛮简单,这一次算是系统地又复习了遍一些基础知识.其次因为对C++语言不是很熟悉,也算是学习C++,下位机程序中用到了线程来实现监听,同时也控制了不会重复发送相同数据,这一点实现了下位机的主动查询,而无需人工按下按钮.觉得这段代码写的还可以,也是本次实验的收获之一.同时程序也用到了数据库,不过比较基本,但也到位了,报警也采取了响铃的方式,总体来说比较完美,自己也从中学到了不少东西,在这里我为我的另外3个同伴感到很欣慰,也是大家一起合作努力的结果,也非常感谢老师的指导!五. 参考文献《单片机原理及应用》中国铁道出版社《现代微机系统与接口技术》高等教育出版社《微机接口实验指导书》华中科技大学出版社。

《微机接口技术》课程设计报告(范文)

《微机接口技术》课程设计报告(范文)

《微机接口技术》课程设计报告(范文)河北科技大学课程设计报告学生姓名:范雅茹学号:090701134专业班级:电信091班课程名称:微机接口技术学年学期: 2 011 — 2 0 12 学年第二学期2 0 12 年6 月课程设计成绩评定表目录1 设计任务与要求 (1)2 总体方案设计 (1)3 硬件电路分析 (2)4 程序设计 (3)5 调试说明 (4)6 结论 (5)7 参考文献 (6)附录(原始程序清单及电路原理图)1 设计任务与要求本设计通过简单的A/D转换接口电路,配合汇编语言程序设计,实现最基本的信号波形采集与存储,并通过简单的D/A转换接口电路,将存储的数据还原为信号波形,在普通示波器的屏幕上显示出来。

被测信号产生电路参见“A/D、D/A接口实验扩展卡电路原理图”。

当按下S1时,电容C5完全放电,A/D转换器输入电压为零;抬起S1时,电容C5开始充电,A/D转换器输入电压按RC过渡过程开始上升,最终达到+5V。

图中RC时间常数约为10ms,整个充电过程需要3~5倍的RC时间常数时间。

设计要求使用A/D转换器捕捉电容C5充电的完整过程,并将采样数据存储起来。

然后依次将采样数据通过D/A转换器循环输出,产生一定频率的重复波形,送到普通示波器显示。

基本要求:使用一个D/A转换器通道,将信号波形施加到示波器的Y轴,X轴扫描信号由示波器产生并调节,实现RC充电过程的波形稳定显示。

发挥部分:将示波器调整在X-Y方式,采样数据的D/A转换器输出接到Y轴输入端,增加一个D/A转换器通道,产生频率可变的X轴扫描信号,接到示波器X轴外部输入端,使RC 充电过程的波形稳定显示。

2 总体方案设计电路由四部分组成:输入电路、控制电路、A/D转换、D/A转换。

输入电路:即采集电路部分,本设计为RC充电过程采样实验。

控制电路:本设计采用MCS-51实验教学系统板,输入编写的程序后用来控制数字存储示波器的采样、存储、ADC0809及DAC0832的及工作。

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

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

. . . .课程设计报告课程设计名称:简易计算器系别:三系学生XX:X梦瑶班级:11通信1班学号:成绩:指导教师:袁静开课时间:2013-2014学年1学期一.设计题目简易计算器二.主要内容1、采用模块化程序结构设计软件,可将整个软件分成若干功能模块。

2、画出程序流程图。

3、根据流程图,编写源程序。

4、上机调试程序。

三.具体要求1、利用BIOS和DOS的中断来设计一个计算器,要求在屏幕上显示一个主菜单,提示用户输入相应的数字键,分别执行加、减、乘、除四种计算功能和结束程序的功能。

2、利用BIOS中断的10号功能调用来设置显示方式。

3、利用DOS中断的01号和02号子功能来完成键盘接收,结果显示。

四.进度安排五.成绩评定考核方法:现场验收(占50%),课程设计报告(占50%)。

考核内容:学习态度(出勤情况,平时表现等)、方案合理性、程序编制质量、演示效果、设计报告质量。

成绩评定:优,良,中,及格,不及格。

特别说明:如发现抄袭,按照不及格处理。

目录前言41、设计题目52、设计内容62.1 基本内容62.2 主要功能63、设计原理及方案73.1 总体方案73.2 程序流程图83.2.1 主程序83.2.2 计算子程序103.3 系统模块详细设计113.3.1 界面设置113.3.2 算法选择设置123.3.3 数制转换设置134.汇编源程序代码165、调试运行结果255.1 操作说明255.2 调试运行结果256、心得体会287、参考文献30前言课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。

它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。

计算器在我们日常生活中应用是相当普遍的,可以说它已经成为现代社会生活不可或缺的一部分。

本次课程设计就是根据微机原理与接口的相关知识,利用BIOS和DOS的中断来设计一个简易计算器,能够实现加减乘除四则运算,并在屏幕上显示一个主菜单,提示用户输入相应的数字键,分别执行加、减、乘、除四种计算功能和结束程序的功能。

微机课程设计--计算器

微机课程设计--计算器

课程设计课程名称微机课程设计题目名称__ 计算器学生学院____ 自动化__ ______ 专业班级____ 12电力(2) _2015 年 1月 7日一.目的1. 巩固和加深对《微机原理及应用》课程内容的认识和理解,提高应用水平; 2. 掌握汇编语言程序的编程方法; 3. 熟悉键盘控制和七段数码管的使用。

二.设计要求课程设计内容按下图接线上机编程:1、编程 将储存器的数据F 、D 、B 、9、7、5共6个数经XLAT 查表后,在六位七段数码管LED 上显示出来;2、 编程按学号实现下面键盘,在显示器上显示对应键值,要求显示值能左移;上两行下两行1~5号 6~10号 3、编程实现:a).定义键盘按键,12个为数字键0~F ,4个功能键:加号+,除号÷,等号=,CLEAR 清零键;a) 可进行四位16进制除法运算。

b) 可进行五位10进制加法运算;4、电路框图5、课程设计报告课程设计完成后,交课程设计报告一份(内容包括:系统设计说明、系统原理图、程序设计流程图、源程序、注解)。

目录一、源程序 (3)1.程序一 (3)1.1 题目 (3)1.2 源程序 (4)2.程序二 (5)2.1题目 (5)2.2 源程序 (6)3.程序三 (11)3.1题目 (11)3.2 源程序 (13)二、心得与体会 (19)三、参考文献 (19)一、源程序1.程序一1.1题目:编程将储存器的数据F、D、B、9、7、5共6个数经XLAT查表后,在六位七段数码管LED上显示出来。

流程图:1.2源程序:STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDA TA SEGMENTT1 DB 0FH, 0DH, 0BH, 09H, 07H, 05HT2 DB 0FCH, 60H, 0DAH, 0F2H, 66H, 0B6H, 0BEH, 0E0H ;设置0~F数码管段码DB 0FEH, 0F6H, 0EEH, 3EH, 9CH, 7AH, 9EH, 8EHDA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TASTART: MOV AX, DATAMOV DS, AXMOV AL, 82H ;8255A初始化MOV DX, 0606HOUT DX, ALA1:MOV AH, 0FEH ;移位代码LEA SI, T1MOV CX, 0006HA2:MOV AL, AHMOV DX, 0600HOUT DX, ALMOV AL, [SI]LEA BX, T2XLATMOV DX, 0604HOUT DX, AL ;查表的段码送C口显示INC SIROL AH, 01HCALL DALL YLOOP A2JMP A1DALL Y: ;延时PUSH AXPUSH CXMOV CX, 0002HA3:MOV AX,0FFFHA4:DEC AXJNZ A4LOOP A3POP CXPOP AXRETCODE ENDSEND START2.程序二2.1 题目:编程按学号实现下面键盘,在显示器上显示对应键值,要求显示值能左移;B A 9 8 7 6 5 40 1 2 3上两行下两行1~5号6~10号流程图:2.2源程序:STACK SEGMENT STACKDW 64 DUP (?)STACK ENDSDA TA SEGMENTTABLE DB 0FCH, 60H, 0DAH, 0F2H, 66H, 0B6H, 0BEH, 0E0H DB 0FEH, 0F6H, 0EEH, 3EH, 9CH, 7AH, 9EH, 8EHV AR1 DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEHV AR2 DB 0FCH,0FCH,0FCH,0FCH,0FCH,0FCHV AR3 DB 00H,00H,00H,00H,00H,00H,00H,00HDA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TASTART:MOV AX, DA TAMOV DS, AXMOV AL, 82H ;8255A初始化MOV DX, 0606HOUT DX, ALMOV BX, 0000HSTT: ;键盘测试MOV AL, 00HMOV DX, 0600HOUT DX, ALMOV DX, 0602HIN AL, DXAND AL, 60HCMP AL, 60HJNZ KEYKEYCALL DISP ;调用显示程序JMP STTKEYKEY:CALL TIME ;延时,去抖动MOV DX, 0602HIN AL, DXAND AL, 60HCMP AL, 60HJNZ KEYJMP STTKEY: ;键盘扫描识别MOV DX, 0600HMOV AL, 0FEHOUT DX, ALMOV DX, 0602HIN AL, DXTEST AL, 40H ;测试PCB6JNZ KEY_7CALL KEY0JMP STTKKEY_7:TEST AL, 20HJNZ KEY_1CALL KEY7JMP STTKKEY_1:MOV DX, 0600HMOV AL, 0FDHOUT DX, ALMOV DX, 0602HIN AL, DXTEST AL, 40HJNZ KEY_6CALL KEY1JMP STTKKEY_6:TEST AL, 20HJNZ KEY_2CALL KEY6JMP STTKKEY_2:MOV DX, 0600HMOV AL, 0FBHOUT DX, ALMOV DX, 0602HIN AL, DXTEST AL, 40HJNZ KEY_5CALL KEY2JMP STTKKEY_5:TEST AL, 20HJNZ KEY_3CALL KEY5JMP STTKKEY_3:MOV DX, 0600HMOV AL, 0F7HOUT DX, ALMOV DX, 0602HIN AL ,DXTEST AL, 40HJNZ KEY_4CALL KEY3JMP STTKKEY_4:TEST AL, 20HJNZ ABCCALL KEY4ABC:JMP STTK;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~KEY0: ;按键0处理子程序CALL LP1 ;低4位字节前移MOV AL, 00HMOV [DI+5],ALLEA BX, TABLE ;查表取出要显示数字的数码管段码XLATMOV [SI+5],ALCALL DISP ;显示RET ; 返回KEY7:CALL LP1MOV AL, 07HMOV [DI+5],ALLEA BX, TABLEXLATMOV [SI+5],ALCALL DISPRETKEY1:CALL LP1MOV AL, 01HMOV [DI+5],ALLEA BX, TABLEXLATMOV [SI+5],ALCALL DISPRETKEY6:CALL LP1MOV AL, 06HMOV [DI+5],ALLEA BX, TABLEXLATMOV [SI+5],ALCALL DISPRETKEY2:CALL LP1MOV AL, 02HMOV [DI+5],ALLEA BX, TABLEXLATMOV [SI+5],ALCALL DISPRETKEY5:CALL LP1MOV AL, 05HMOV [DI+5],ALLEA BX, TABLEXLATMOV [SI+5],ALCALL DISPRETKEY3:CALL LP1MOV AL, 03HMOV [DI+5],ALLEA BX, TABLEXLATCALL DISPRETKEY4:CALL LP1MOV AL, 04HMOV [DI+5],ALLEA BX, TABLEXLATMOV [SI+5],ALCALL DISPRET;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~LP1: ;数据移位保存子程序(前移四位)MOV CX, 0005HMOV SI, OFFSET V AR2MOV DI, OFFSET V AR3LP2:MOV AL, [SI+4]MOV [SI+5],ALMOV AL, [DI+4]MOV [DI+5],ALDEC SIDEC DILOOP LP2RET;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~DISP: ;显示子程序MOV SI, OFFSET V AR1MOV DI, OFFSET V AR2MOV CX, 0006HDIR:MOV AL, [SI]MOV DX, 0600HOUT DX, ALMOV AL, [DI]MOV DX, 0604HCALL TIMEINC SIINC DILOOP DIRRETTIME: ;延时程序PUSH AXPUSH CXMOV CX, 0005HTIME1:MOV AX, 00F0HTIME2:DEC AXJNZ TIME2LOOP TIME1POP CXPOP AXRET;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~STTK: ;放键测试CALL DISPMOV AL, 00HMOV DX, 0600HOUT DX, ALMOV DX, 0602HIN AL, DXAND AL, 60HCMP AL, 60HJNZ STTKJMP STTCODE ENDSEND START3.程序三3.1 题目:编程实现:a). 定义键盘按键,12个为数字键0~F,4个功能键:加号+,除号÷,等号=,CLEAR 清零键;b). 可进行四位16进制除法运算。

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

《微机接口技术》课程设计报告-----计算器设计姓名:学号:指导老师:一、目录1、目录 (2)2、概论 (3)2.1 计算器意义 (3)2.2 软硬件环境要求 (3)2.3 AT89S51单片机概述 (4)3、计算器的基本功能与设计 (6)3.1 计算器基本实现功能 (6)3.2 电路原理图 (7)3.3 设计方案与实现方法 (7)4、计算器模块设计 (8)4.1 输入模块 (8)4.2 运算模块 (10)4.3 显示模块 (10)5、硬件电路设计 (11)5.1 主要器件 (11)5.2 功能和操作 (11)5.3 硬件调试 (11)6、软件设计 (12)6.1 程序流程图 (13)6.2 软件主要程序设计 (13)7、课程设计心得体会 (18)8、参考文献 (19)二、概述2.1 计算器意义随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。

单片机的应用已经越来越贴近生活,用单片机来实现一些电子设计也变得容易起来。

计算器在人们的日常中是比较的常见的电子产品之一。

可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机来设计的计算器。

该设计系统是以AT89C51为单片机,P0口作为输入端,用8279或8155做键盘和LED显示接口芯片,通过键盘扫描来对输入数的控制,在P1口,P2口接了驱动电路。

用来保证LED的工作正常。

计算器将完成“+、-、*、/ ”功能。

2.2 软硬件环境要求1、软件:集成开发软件IDE;2、硬件:试验仪一台,编程器一台,msc51单片机一块,示波器一台。

AT89S51单片机引脚图如下:2.3 AT89S51单片机概述AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

1.主要特性:• 8031 CPU与MCS-51 兼容• 4K字节可编程FLASH存储器(寿命:1000写/擦循环)• 全静态工作:0Hz-33MHz• 三级程序存储器保密锁定• 128*8位内部RAM• 32条可编程I/O线• 两个16位定时器/计数器• 6个中断源• 可编程串行通道• 低功耗的闲置和掉电模式• 片内振荡器和时钟电路2.管脚说明:VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL 门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。

I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。

读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。

只有读端口时才真正地把外部的数据读入到内部总线。

上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作。

这是由硬件自动完成的,不需要我们操心,1然后再实行读引脚操作,否则就可能读入出错,为什么看上面的图,如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1,该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1,也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1。

若先执行置1操作,则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入,由于在输入操作时还必须附加一个准备动作,所以这类I/O口被称为准双向口。

89C51的P0/P1/P2/P3口作为输入时都是准双向口。

接下来让我们再看另一个问题,从图中可以看出这四个端口还有一个差别,除了P1口外P0P2P3口都还有其他的功能。

RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE 的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

AT89SXX系列单片机实现了ISP下载功能,故而取代了89CXX系列的下载方式,也是因为这样,ATMEL公司已经停止生产89CXX系列的单片机,现在市面上的AT89CXX多是停产前的库存产品。

三、计算器基本功能与设计3.1计算机器基本实现功能1. 计算器可显示8位数字,开机运行时,只有数码管最低位显示为“0”,其余位全部不显示;2. 设计4×4键盘,分别表示0~9、+、-、×、/ 、=和清零键CL,输入的数字从设计的键盘输入;3.第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三次按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音,并且输入的第九个数不接收,仍然显示原来的八位数;4.可以对计算结果小于256的两个无符号数进行加法运算,并显示计算结果。

对于×、/、和—的运算为提高部分。

3.2 电路原理图图1电路原理图3.3 设计方法和实现方法为了满足计算器的基本要求,可以基本的运算(加减乘除),数据归零和出错警告提示,我们采用基于MSC-51单片机设计计算器,并用LED数码管显示数据,4*4的矩阵键盘实现数据输入。

根据功能和指标要求,本系统选用MSC-51单片机为主控机。

通过扩展必要的外围接口电路,实现对计算器的设计。

具体设计考虑如下:1、由于要设计的是简单的计算器,可以进行四则运算,对数字的大小范围要求不高,故我们采用可以进行四位数字的运算,选用8个LED数码管显示数据和结果。

2、另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16个按键即可。

3、故设计此系统模块图图2 系统模块图四、计算器模块设计4.1输入模块:键盘扫描计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O口资源,因此在很多情况下都不采用这种方式。

为此,我们引入了矩阵键盘的应用,采用四条I/O线作为行线,四条I/O线作为列线组成键盘。

在行线和列线的每个交叉点上设置一个按键。

这样键盘上按键的个数就为4×4个。

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

矩阵键盘的工作原理:计算器的键盘布局如图3所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。

图3 键盘布局图由图4矩阵键盘内部电路图可以知道,当无按键闭合时,P10~P13与P14~P17之间开路。

当有键闭合时,与闭合键相连的两条I/O口线之间短路。

判断有无按键按下的方法是:第一步,置列线P14~P17为输入状态,从行线P10~P13输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。

相关文档
最新文档