微机原理课件设计简易计算器
微机原理课件设计简易计算器
微机原理课件设计简易计算器(总14页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--二○一一~二○一二学年第一学期信息科学与工程学院自动化系课程设计计划书课程名称:微机原理及应用课程设计班级:自动化 0901 姓名:王立学号: 4032指导教师:孟志华二○一一年十二月六日2一、课题名称简易计算器设计二、课题目的利用8088和8255设计一个简易计算器,并将其结果显示在LED数码管上。
熟悉系统设计的基本步骤,掌握8088与8255的接口设计,掌握通过8255设计键盘扫描技术,掌握通过8255显示七段共阴极数码管设计。
加强对8088数据总线,地址总线及接口寻址的理解,加深对8255的端口控制的理解。
三、需求分析(1)能够实现99以内的加减乘法运算,并显示在2位LED上。
(2)对于减法运算产生的负数,可在LED上显示“-”号,若负量超过9,则显示“E0”。
四、方案选择方案一:该方案将LED显示电路直接接在8088的DB上,而键盘则采用8255进行扫描。
3方案二:该方案则是将LED显示电路和键盘扫描电路分别接在两个不同的8255上,扫描和显示时,选中不同的8255。
方案三:该方案则只用一片8255驱动LED显示和键盘扫描电路。
方案评估:方案一:LED显示驱动电路实现起来较简单,但是很浪费系统总线资源,舍弃!方案二:释放了系统数据总线,但是方案缺乏经济性,因为采用了两片8255,与建设资源节约型社会初衷冲突!舍弃!方案三:此种方案较为经济,方便,具有模块化的特点(因为将计算和显示电路全部集成在了8255上,应用时,直接挂接8255即可实现要求!)综上所述:采用方案三!4五、程序流程图程序总流程图:5判断输入流程图:6六、系统原理图7注:1、复位电路单独画在旁边,其参数设置符合6MHZ。
2、74HC04反相器由于位置不够,本人自己画了一个小型的74HC04。
3、IOW,IOR信号线由于采用了最大系统组态,故由8288的IORC和AIOWC代替。
简易计算器
合肥学院计算机科学与技术系微机原理与接口技术课程设计报告2008~2009 学年第一学期课程微机原理与接口技术课程设计名称学生姓名学号0604032007专业班级班指导教师2009 年 2月一.题意需求分析及解决方案:1.题意分析:用STAR ES598PCI单板机开发机系列接口芯片设计一个可以进行2位数的四则运算的计算器。
(1)键输入数和运算符号;(2)LED显示运算过程和结果(十进制数); (3)表示出当前的运算类型;(4)具有清零和复位功能;(5)具有连续运算功能。
2.解决问题方法及思路:1 ) 硬件部分组号器件名称特 点1小键盘键盘(Keyboard)是常用的输入设备,它是由一组开关矩阵组成,结构相对复杂逻辑开关结构简单,使用方便,价格便宜28255A芯片8255芯片是可编程的并行接口芯片,不需要附加外部电路便可和大多数并行传输数据的外部设备相连,数据的各位同时传送,使用十分方便8279A芯片8279芯片可以实现对键盘/显示器的自动扫描,以减轻CPU负担,具有显示稳定,程序简单,不会出现误动作等L E DLED显示器与LCD显示器相比,LED在亮度、功耗、可视角度和刷新速率等方面,都更具优势。
3LED与LCD的功耗比大约为10:1,LED的最显著特点是使用寿命长,光电转换效能高,绿色环保L C D LCD占用空间小,低功耗,低辐射,能降低视觉疲劳,但是会出现闪烁问题表1-1 硬件器件选择结论:输入口用一片8279及小键盘实现,显示设备为LED显示器。
2 ) 软件部分8279是可编程接口芯片,通过编程使其实现相应的功能,编程的过程实际上就是CPU向8279发送控制指令的过程。
在软件设计中,显示方式采用了8个字符显示,从左输入方式,编码扫描键盘,双键锁定。
由于该系统对实时性及速度要求并不十分高,所以时钟频率采用6M Hz已足够了,故程序时钟命令字取为2AH,用以保证100kHz的内部工作频率。
微机课设简易计算器
微机课程设计报告题目简易计算器仿真学院(部)信息学院专业通信工程班级2011240401学生姓名张静学号3312 月14 日至12 月27 日共2 周指导教师(签字)吴向东宋蓓蓓单片机十进制加法计算器设计摘要本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。
软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。
编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。
引言十进制加法计算器的原理与设计是单片机课程设计课题中的一个。
在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。
单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。
关键词:单片机、计算器、AT89C52芯片、汇编语言、数码管、加减乘除目录摘要 (01)引言 (01)一、设计任务和要求.............................1、1 设计要求1、2 性能指标1、3 设计方案的确定二、单片机简要原理.............................2、1 AT89C51的介绍2、2 单片机最小系统2、3 七段共阳极数码管三、软件设计...................................4、1 系统设计四、调试与仿真.................................5、1 Keil C51单片机软件开发系统5、2proteus的操作五、心得体会....................................参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................一、设计任务和要求1.1 设计要求本次课程设计,我选择的课题是单片机十进制加法计算器软硬件设计,设计任务为:设计一键盘显示装置,键盘上除需定义10个十进制数字键外还要相应的功能键,其它键不定义无响应。
微机原理课设 计算器设计
摘要21世纪是一个信息化日益加快的时代,它对人才的需求也呈现出新的变化趋势。
对计算机的掌握已成为了当今时代对人才考验的一项重要指标;大学计算机公共课程也面临着新的机遇和挑战。
基于此事实,微机原理课程在计算机教学上强调了对当今学生在“难度—深度—强度”三维同步教学上的侧重,并极力注重学生的实践能力的培养,本次课程设计,老师通过给学生布置一定的设计任务,而学生分组实践完成,从而达到对学生计算机原理知识的教学和汇编语言程序的锻炼。
汇编语言是联系C等高级语言到机器语言的重要编程语言,其指令是机器指令的一种符号表示,具有很强的机器相关性;也正基于此,可以实现起执行效率的很大提高本次课设是基于汇编语言的计算器设计,通过编写相应的程序代码实现一个16进制的简单计算器设计。
其能够实现实现16进制整数的加减乘除计算,通过键盘输入两个数据及选择运算符,回车输出16进制的结果。
关键词:汇编语言计算器 16进制目录1 设计任务及要求 (3)2方案比较及论证 (3)3 软件设计说明 (4)3.1 程序流程图 (4)3.2 源程序设计及说明 (5)4 程序调试说明和结果分析 (15)4.1 程序调试及说明 (15)4.2 结果分析 (19)5心得体会 (20)参考文献 (21)附录 (22)附录一 ASCII码表 (22)附录二 DOS系统功能调用(INT21H) (23)十六进制计算器的设计1 设计任务及要求(1) 利用汇编语言,能实现基本的计算功能,回车得到正确结果。
(2)实现16进制整数的加减乘除计算,输出16进制数。
(3) 按照规范撰写、装订课程设计说明书。
2方案比较及论证(1) 本次课程设计要求实现16进制的加减乘除运算,并能够显示运算数、运算符以及正确显示最终的运算结果。
我们自然想到通过DOS功能调用的9号调用来实现界面的显示。
9号调用的功能是实现多个字符输出到屏幕上的显示,这可以使我们实现简易计算器的设计,将输入数据回显到计算机界面上,而为了使计算结果的顺利显示,则可以通过编写一个功能模块首先使计算结果转化为其对应ASCII值,再特别地通过2号功能的调用最终完成计算结果的显示。
《制作简易计算器》课件
本PPT课件将教你如何制作简易计算器。通过简单直观的讲解和演示,你将 学会使用PPT创建一个实用的计算器应用程序。
一、引言
目的和意义
介绍制作计算器PPT的目的和意义,以及为什么学习制作计算器是有益的。
使用场景
简述计算器的使用场景,包括商务、教育、日常生活等各个方面的应用。
二、制作工具
PPT制作工具
介绍使用的PPT制作工具,包括Microsoft PowerPoint和Google Slides等。
使用PPT创作计算器
详细讲解如何使用PPT来创建一个计算器应 用程序的演示,包括界面设计和功能实现。
三、计算器的部件
计算器需要的元素
简述计算器应用程序所需的基本元素,例如 屏幕、按钮、数字键盘等。
1
实现计算器功能
2
通过演示,展示如何在代码中实现计 算器的基本功能,如加法、减法、乘
法、除法等。
计算器代码编写过程
使用步骤演示如何编写计算器应用程 序的代码,从创建项目到实现基本功 能。
六、编写计算器UI
设计计算器界面
指导如何设计计算器应用程序的用户界面,包括 布局、颜色、字体和图标等。
计算器的样式
演示如何选择合适的样式,使计算器的界面更加 美观和易于使用。
七、添加计算器所需功能
1
添加更多功能
介绍如何为计算器应用程序添加更多
演示更高级功能
2
高级功能,如求平方、开平方、百分 比等。
通过演示,向观众展示如何添加和使
用计算器应用程序的更高级功能。
八、总结
总结制作计算器PPT的过程
简要总结制作计算器PPT的整个过程和所涵盖的内容。
微机原理课设--简易计数器设计
1.总体设计思想及主要功能1.1总体设计思想程序主要分为主程序,输入子程序,输出子程序,加法子程序,减法子程序,乘法子程序,除法子程序。
根椐输入的符号选用不同的运算子程序,最后调用输出子程序。
各个程序的具体做法,详见后面的流程图和分析。
本程序的关键是在输入、输出程序,值得特别注意的地方是call 和ret的调用,而且还要清楚跳转的返回地址;由于计算器比数学用表等计算工具要先进得多,应该积极倡导学生加速用计算器取代数学用表的进程。
从键盘输入数据与运算符;可以进行加、减、乘、除四则运算,输入和输出的数均必须为十进制的。
输入的数据最大为双字的,。
如果输入的除数为0;输出错误信息。
输入的表达式有误,输出错误信息。
输入的两个数,不能除尽时,输出除数输入错误信息。
如果输入了空格,同样输出错误信息。
输出的数据最大可输出4字,为的是输出乘除法的结果。
除法最后所得结果可为小数点后四位值。
1.2实现的主要功能(1)输入和输出的数均为十进制的。
(2)输入的数据最大为双字的且必须是数字,当输入字母或其他非数字符号时,输出错误信息。
(3)如果输入的除数为0;输出错误信息。
(4)输入的表达式有误,输出错误信息。
(5)输入的两个数,有一个大于双字,输出错误信息。
(6)如果输入了空格,输出错误信息。
(7)输出的数据最大可输出4字,为的是输出乘法的结果。
(8)除法有不能整除的情况时,输出小数结果保留小数点后四位并显示除数输入错误信息。
2.简单计算器的流程图2.1 主程序的流程图主程序设计思路说明:输入的数据如果超过双字,就会溢出,因为我定义的存储器为双字的。
输入什么样的数都会有一个范围,一定得有这个信息。
根据输入的符号调用相应的函数。
除法和别的不一样,还要输出余数,并且,除数不能是0。
所以我就在里面调用了输出函数,要输出两次,而外面只能输出一次,为了更好输出结果,我就只好这样了。
输入y可以继续进行运算,要注意的是,要把原来的数给清0,不然得不到答案。
微机原理简易计算器课程设计
告计报课程设简易计算器课程设计名称:三系系别:张梦瑶学生姓名:1 11通信班班级:20110306111 学号:成绩:指导教师:袁静开课时间:2013-2014 学年 1 学期微机原理课程设计——简易计算器一.设计题目简易计算器二.主要内容1、采用模块化程序结构设计软件,可将整个软件分成若干功能模块。
2、画出程序流程图。
3、根据流程图,编写源程序。
4、上机调试程序。
三.具体要求1、利用BIOS和DOS的中断来设计一个计算器,要求在屏幕上显示一个主菜单,提示用户输入相应的数字键,分别执行加、减、乘、除四种计算功能和结束程序的功能。
2、利用BIOS中断的10号功能调用来设置显示方式。
3、利用DOS中断的01号和02号子功能来完成键盘接收,结果显示。
四.进度安排五.成绩评定考核方法:现场验收(占50%),课程设计报告(占50%)。
考核内容:学习态度(出勤情况,平时表现等)、方案合理性、程序编制质量、演示效果、设计报告质量。
成绩评定:优,良,中,及格,不及格。
:如发现抄袭,按照不及格处理。
特别说明页24共页2第微机原理课程设计——简易计算器目录前言 .....................................................41、设计题目 (5)2、设计内容 (5)2.1 基本内容 (5)2.2 主要功能 (5)3、设计原理及方案 (6)3.1 总体方案 (6)3.2 程序流程图 (7)3.2.1 主程序 (7)3.2.2 计算子程序 (8)3.3 系统模块详细设计 (9)3.3.1 界面设置 (9)3.3.2 算法选择设置 (10)3.3.3 数制转换设置 (11)4.汇编源程序代码 ........................................135、调试运行结果 (20)5.1 操作说明 (20)5.2 调试运行结果 (20)6、心得体会 (23)7、参考文献 (24)页24共页3第微机原理课程设计——简易计算器前言课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。
微机原理课程设计_简易计算器的设计
目录一前言 (1)二总体设计 (2)三硬件设计 (2)3.1微处理器8086芯片 (2)3.2可编程并行接口芯片8255A (3)3.3 LED数码管 (4)3.4 4×4矩阵按键 (4)3.5硬件原理图 (6)四软件设计 (7)4.1程序流程图 (7)4.2源代码 (9)五仿真 (18)六课程设计体会 (18)七参考文献 (19)一前言1.1课程设计的目的和任务课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。
它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。
通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。
让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。
通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。
1.2课程设计指导及要求在课程设计时,2~3名同学组成1个设计小组,分别完成项目的功能设计、电路编辑及调试、编码及调试和课程设计报告编写工作。
同批次同学中选择同一题的不超过3组。
在教师指导下,可以相互讨论。
每设计小组提交1份设计报告,设计报告由设计小组同学独立完成,不得互相抄袭。
教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。
微型计算机原理与接口技术简易计算器系统设计
×××学号×××××《微型计算机原理与接口技术》计程课设2008级本科)(简易计算器系统设计目:题系(部)院:××××××××××电气工程及其自动化业:专作者姓名:×××××××职称:指导教师:××××完成日期:年月日××××课程设计任务书目录一、设计目的 (1)二、设计任务与要求 (1)三、总体方案论证 (1)3.1方案1 (1)3.1.1 8255A与键盘接口 (2)3.1.2 8255A与LED数码管接口 (5)3.2方案2 (8)3.2.1使用设备 (8)3.2.2 参数定义 (8)3.2.3使用方法 (8)四、硬件设计 (9)五、软件设计 (9)5.1程序设计思路 (9)5.2程序中的关键技术 (10)六、流程图设计 (11)七、程序调试运行 (13)7.1程序编写 (13)7.2上机编译与调试 (13)7.3运行结果 (14)八、总结 (16)参考文献 (17)微机原理与接口技术课程设计成绩评定表 (24)一、设计目的1、进一步加深对微机系统的理解和认识,提高微机系统的应用水平。
2、进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高编写汇编语言程序的水平和学习程序调试方法。
3、初步加强自己的科学研究方法训练和实践锻练,增强分析问题和解决问题的能力,了解微机原理和接口技术的新发展。
二、设计任务与要求1、可以进行十进制数四则运算。
用按键输入数据;具有清零和复位功能;具有连续运算功能。
2、在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。
微机原理课程设计任务书04(简易计算器)
2、能实现10以内的加、减、乘、除单步运算并显示结果,
3、能够显示“错误”提示;
4、能够中止还未输入完的计算式。
课程设计任务书
3.对本课程设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:
2、《数字电子技术基础》阎石高等教育出版社2001
3、《电子电路基础》童诗白高等教育出版社1995第2版
4、《电子技术课程设计指导》高等教育出版社 彭介华2002
课程设计任务书
5.本课程设计课题工作进度计划:起迄日期 Nhomakorabea工作内容
12年
12月21日~月日12月21日~12月25日12月26日~12月28日
皖西学院
课程设计任务书
系别:
机电学院
专业:
电气自动化
学生姓名:
学号:
课程设计题目:
简易计算器设计
起迄日期:
12月24日~1月4日
课程设计地点:
教学实验楼B楼
指导教师:
下达任务书日期: 12年12月21日
课程设计任务书
1.本次课程设计应达到的目的:
1、综合运用相关课程中所学到的理论知识去独立完成某一设计课题;
12月29日~1月3日
12月31日~1月4日
1月5日
下达设计任务书
完成原理设计
系统仿真
安装调试
撰写设计报告
答辩或成绩考核
教研室主任审查意见:
负责人签字:
年月日
1、根据技术指标及实验室条件自选方案设计出原理电路图(用propel 99),分析工作原理,选择元件参数。
单片微型计算机原理与设计1章PPT课件
单片微型计算机的应用领域
智能仪表
单片机可以用于实现各种智能 仪表的测控和数据处理,如水
表、电表、燃气表等。
工业控制
单片机在工业控制领域中有着 广泛的应用,如自动化生产线 、机器人等。
智能家居
单片机可以用于实现各种智能 家居设备的控制和监测,如智 能门锁、智能照明等。
物联网
单片机作为嵌入式系统的核心 ,在物联网中发挥着重要的作 用,如传感器节点、智能网关
工业自动化控制系统
工业自动化控制系统利用单片微型计 算机实现生产过程的自动化和智能化。
工业自动化控制系统还包括机器人、 自动化流水线等设备,这些设备通过 与单片微型计算机的连接,实现了高 效、精准的生产控制。
单片微型计算机在工业自动化控制系 统中扮演着重要的角色,它可以对生 产设备进行实时监测和控制,提高生 产效率和产品质量。
等。
02
单片微型计算机的基本组成
中央处理器
01
中央处理器(CPU)是 单片微型计算机的核心 部件,负责执行指令和 处理数据。
02
CPU由算术逻辑单元、 控制单元和寄存器组等 组成,通过内部总线连 接在一起。
03
CPU按照程序指令的要 求,对数据进行运算、 传输和存储等操作,并 输出结果。
04
CPU的性能指标主要包 括运算速度、字长和指 令集等。
单片微型计算机原理与设计1 章ppt课件
• 单片微型计算机概述 • 单片微型计算机的基本组成 • 单片微型计算机的工作原理
• 单片微型计算机的设计方法 • 单片微型计算机的实际应用案例
01
单片微型计算机概述
单片微型计算机的定义
• 单片微型计算机,也称为单片机,是一种集成了微处理器、存 储器、输入输出接口等功能的集成电路芯片。它具有体积小、 功耗低、可靠性高等特点,广泛应用于各种嵌入式系统中。
简易计算器设计PPT
4 1
5 2
6 3
/
=
C
× 0
计算器工作原理
• 1、不停的进行键盘扫描使其输入数据及控 制键 • 2、通过几个控制键调用控制键下的子程序 进行加减乘除运算 • 3、通过数码管进行数据显示
数码管显示原理
• 数码管是一类显示屏 通过对其不同的管脚 输入相对的电流,会 使其发亮,从而显示 出数字 • 本实验所用数码管为6 位8段数码管
• • • • • •
符号键值获取
• 定义symbol作为符号按键的返回值 • case KEY_3: symbol=0; • • • if(sum0>=0) add_sum0(); show_zero();
计算输入数值
• void add_sum0() //计算当前数码管上显示的 数值 • { • sum0=0; • for(i=0;i<=5;i++) • { • sum0+=uiData[i]*tenDecimal[i]; • *P_Watchdog_Clear = 0x0001; • } • }
显示 输出 结果
• • • • • • • • • • • • • • • • • • • • • •
if(sum0>=0) show_sum0=sum0; else
//对数值的输出处理; show_sum0=sum0*(-1); uiData[0] =show_sum0/100000; uiData[1]=(show_sum0%100000)/10000; uiData[2]=(show_sum0%10000)/1000; uiData[3]=(show_sum0%1000)/100; uiData[4]=(show_sum0%100)/10; uiData[5]=show_sum0%10; if(sum0<0) { //若小于0,找出负号的位置; for(i=0;i<=5;i++) if(uiData[i]>0) break; uiData[i-1]=10; for(j=0;j<=i-2;j++) uiData[j]=11;
微机原理 第一章 微型计算机基础PPT课件
4004 8008 8080 MC6800 Z-80
1971 1972 1973 1975 1976
第一章 微型计算机基础
第一节 概述
三、微处理器的发展
16位微处理器 Zilog Motorola Intel
Z-8000 MC68000 8086 8088(准16位)
80186\80286
32位微处理器 Intel Motorola
例:X= 45=00101101B X=-45
[X]反= 00101101B [X]反= 11010010B
3、补码 正数的补码与原码相同; 负数的补码为反码加 1 。
例:X= 45=00101101B X=-45
[X]补= 00101101B [X]补= 11010011B
第二节 计算机中的数制和编码
二、有符号数的表示及运算
1、原码 2、反码
பைடு நூலகம்
3、补码
4、符号扩展
在数据处理时,有时需要把8位二进制数扩展成16位 二进制数。对无符号数可直接补0,对有符号数则需要将 符号位扩展。
例: 127的8位二进制补码为01111111B 符号位扩展后16 位二进制补码为0000000001111111B
例: -127的8位二进制补码为10000001B 符号位扩展后16 位二进制补码为1111111110000001B
CPU Central Processing Unit—中央处理单元
第一章 微型计算机基础
第一节 概述
一、电子计算机的发展 二、电子计算机的结构 三、微处理器的发展
CPU,也称为微处理器MP(MicroProcessor)。
4位微处理器 Intel 8位微处理器 Intel
微型计算机课程设计-简易计算器
课程设计设计名称: 微型计算机技术及应用——简易计算器学院:信息工程学院课程:微型计算机技术及应用姓名:学号:班级:2014级计算机科学与技术二班目录摘要 (3)一、前言 (4)1.1背景 (4)1.2项目介绍 (4)二、课程设计的目的与任务 (5)2.1设计目的 (5)2.2设计任务 (5)三、设计过程 (5)3.1基础理论 (5)3.1.1DOSBox简介 (5)3.1.2中断 (8)四、设计 (11)4.1总体方案 (11)4.2原理框图 (12)4.3程序代码 (13)五、系统模块详细设计与调试 (24)5.1系统模块详细设计 (24)5.1.1设置屏幕显示方式 (24)5.1.2显示主菜单 (24)5.1.3从键盘接收一个数字 (24)5.1.4接收键入用于计算的数 (25)5.1.5显示结果 (25)5.1.6子程序A2——将数的ASCII码转为二进制数 (25)5.1.7将计算结果的二进制数转换为对应的十进制数ASCII码并输出显示(A3程序段) (27)5.2程序编译、运行与调试 (27)六、设计总结 (29)七、参考文献 (31)摘要本次课程设计是通过使用DOSBox汇编语言编程软件实现的利用汇编语言编写的较为复杂的程序设计。
该课程设计主要是设计一个较为简单的计算器,界面显示要求用户从键盘上分别输入两个随机数,完成四则运算,然后将运算结果显示到屏幕上。
该设计智能实现简单的正整数之间的四则运算,无法对小数进行精确地识别。
而除法运算可以精确到3位小数,减法可以显示出负数的结果。
采用DOS调用(INT 21H)来完成键盘的输入和屏幕的输出。
通过这次的课程设计能够进一步加深对专业知识和理论知识学习的认识和理解。
关键词:DOSBox;微机原理;计算器;汇编语言一、前言1.1背景计算器是现代人发明的可以进行数字运算的电子机器。
现代的电子计算器能进行数学运算的手持电子机器,拥有集成电路芯片,但结构比电脑简单得多,可以说是第一代的电子计算机(电脑),且功能也较弱。
微机课程设计--计算器
课程设计课程名称微机课程设计题目名称__ 计算器学生学院____ 自动化__ ______ 专业班级____ 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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
$二○一一~二○一二学年第一学期信息科学与工程学院自动化系:课程设计计划书课程名称:微机原理及应用课程设计班级:自动化 0901姓名:王立学号: 4032 ]指导教师:孟志华二○一一年十二月六日一、课题名称简易计算器设计二、课题目的利用8088和8255设计一个简易计算器,并将其结果显示在LED数码管上。
熟悉系统设计的基本步骤,掌握8088与8255的接口设计,掌握通过8255设计键盘扫描技术,掌握通过8255显示七段共阴极数码管设计。
加强对8088数据总线,地址总线及接口寻址的理解,加深对8255的端口控制的理解。
!三、需求分析(1)能够实现99以内的加减乘法运算,并显示在2位LED上。
(2)对于减法运算产生的负数,可在LED上显示“-”号,若负量超过9,则显示“E0”。
四、方案选择方案一:、该方案将LED显示电路直接接在8088的DB上,而键盘则采用8255进行扫描。
(方案二:该方案则是将LED 显示电路和键盘扫描电路分别接在两个不同的8255上,扫描和显示时,选中不同的8255。
方案三:)该方案则只用一片8255驱动LED 显示和键盘扫描电路。
方案评估:方案一:LED 显示驱动电路实现起来较简单,但是很浪费系统总线资源,舍弃!方案二:释放了系统数据总线,但是方案缺乏经济性,因为采用了两片8255,与建设资源节约型社会初衷冲突!舍弃!方案三:此种方案较为经济,方便,具有模块化的特点(因为将计算和显示电路全部集成在了8255上,应用时,直接挂接8255即可实现要求!)&综上所述:采用方案三!五、程序流程图程序总流程图:…判断输入流程图:六、系统原理图键盘映射图:-注:1、复位电路单独画在旁边,其参数设置符合6MHZ。
2、74HC04反相器由于位置不够,本人自己画了一个小型的74HC04。
3、IOW,IOR信号线由于采用了最大系统组态,故由8288的IORC和AIOWC代替。
4、8088的CLK由8284A提供,其电路连接方式参照Datasheet5、最大系统组态连接方式参照课本。
】6、LED与键盘扫描电路的上拉电阻阻值统一采用,保证数码管有足够亮度。
7、所有芯片的电源和GND均未标出。
8、7段数码管为共阴极连接方式。
9、74LS373和74LS245作为提高总线驱动能力的作用而存在。
10、8259A的INT信号和8088的INTR信号相连,由于纸张大小问题,用网络标号“INT8259A”表明他们是相连的。
11、CAD图纸见附件。
、七、元件清单八、程序源代码PAGE 60,132TITLE C alculator A program to calculate with 8088 and 8255;--------------------------------------------------------DISPLAY MACRO ;送至LED显示函数MOV DX,383H ;控制字寄存器的端口地址(8255)>MOV AL,80H ;方式选择字 BOUT DX,ALMOV DX,381H ;B端口的地址送DXMOV AL,HIGH_NUM ;段码送至B端口显示OUT DX,ALMOV DX,383HMOV AL,80H ;方式选择字 BOUT DX,AL>MOV DX,382H ;C端口地址送DXMOV AL,LOW_NUM ;段码送至C端口显示OUT DX,ALJMP Allscan_Key ;显示完成,跳至键盘扫描ENDM;--------------------------------------------------------CALC MACRO ;计算结果并存至HIGH_NUM,LOW_NUM中DIV TEN ;除10取余和商分别显示-MOV DX,AX ;保存计算结果CBW ;将商AL符号扩展至AXMOV BX,AXMOV CL,LED[BX]MOV HIGH_NUM,CL ;高位段码送至HIGH_NUM(乘结果)MOV AX,DXXCHG AH,AL ;交换AH和AL,将余数放在AL准备符号扩展 CBW ;将余数AL符号扩展至AX】MOV BX,AXMOV CH,LED[BX]MOV LOW_NUM,CH ;低位段码送至LOW_NUM(乘结果)ENDM;--------------------------------------------------------.MODEL SMALL ;程序大小为SMALL数据段和代码段均小于64KB .STACK 100 ;堆栈大小100个字.DATA ;数据段~KEYTAB DB 0E7H,0D7H,0DBH,0DDH,0B7H,0BBH,0DBH;键盘编码0~9 * + - =DB 77H,7BH,7DH,7EH,0BEH,0DEH,0EEHLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;LED显示字模(共阴极)OPERAND DB 0 ;用于存放运算符号TEN DB 10NUM1 DB 0 ;用于存放第一个计算数~NUM2 DB 0 ;用于存放第二个计算数HIGH_NUM DB 0 ;用于存放结果的高位段码LOW_NUM DB 0 ;用于存放结果的低位段码;--------------------------------------------------------.CODE ;代码段MAIN PROC FAR ;主程序开始MOV AX,@data ;将DS指向DATAMOV DS,AX{Allscan_Key:MOV DX,383H ;控制字寄存器地址的端口地址(8255)MOV AL,80H ;方式控制字 BOUT DX,ALMOV DX,380H ;端口A的地址送DXXOR AL,ALOUT DX,AL ;送0,全键盘扫描MOV DX,383H#MOV AL,90H ;方式控制字 B A输入OUT DX,ALMOV DX,380H ;端口AIN AL,DXAND AL,0FH ;屏蔽掉送回来的AL中的高四位CMP AL,0FHJZ Allscan_Key ;相等说明没有键按下,重新全键盘扫描 MOV BX,0!MOV AH,7FH ;保存扫描设定初量Scan_key:MOV DX,383HMOV AL,80H ;方式控制字,A输出OUT DX,ALMOV DX,380H ;端口AMOV AL,AH ;逐行扫描OUT DX,AL。
MOV DX,383HMOV AL,90H ;A输入OUT DX,ALMOV DX,380H ;端口AIN AL,DX ;读按键状态AND AL,0FH ;取数据的低四位CMP AL,0FHJNE Decode/ROR AH,1 ;向右循环移位,扫描下一行JMP Allscan_KeyDecode:AND AH,0F0HOR AL,AH ;AL,AH或操作组合编码CMP AL,KEYTAB[BX] ;比较编码JE NextINC BX]JMP DecodeNext:CMP BX,13 ;13的偏移量表示编码值为EE,即"="JE Calc ;检测到"=",计算结果CMP BX,10 ;10的偏移量表示编码值为7E,即"*"JNS Stroe ;比10大,表示按下"*"或"+"或"-"MOV AL,OPERANDCMP AL,0 ;OPERAND若为0,表示为按下运算符号-JNE Number ;OPERAND非0,说明按下过运算符号 MOV AL,NUM1MUL TEN ;NUM1*10+BLADD AL,BLMOV NUM1,AL ;将第一个运算数保存在NUM1中JMP Allscan_KeyStroe:MOV OPERAND,BL ;按下了运算符号并存入OPERAND中]JMP Allscan_KeyNumber:MOV AL,NUM2MUL TEN ;NUM2*10+BLADD AL,BLMOV NUM2,AL ;将第二个运算数保存在NUM2中Calc:CMP BL,10;JZ _Mul ;乘法CMP BL,11JZ _Add ;加法CMP BL,12JZ _Sub ;减法_Mul:MOV AL,NUM1MUL NUM2`CMP AL,100 ;结果超过99,则显示"E0"JAE OverflowCALC ;将计算结果存至HIGH_NUM,LOW_NUM中 DISPLAY ;送至LED显示Overflow:MOV HIGH_NUM,79H ;79H为"E"的段码MOV LOW_NUM,3FH ;3FH为"0"的段码JMP Allscan_Key:_Add:MOV AL,NUM1ADD AL,NUM2 ;NUM1+NUM2JAE Overflow ;溢出CALC ;将计算结果存至HIGH_NUM,LOW_NUM中DISPLAY ;送至LED显示_Sub:MOV AL,NUM1SBB AL,NUM2JC Negtive ;有借位,说明结果为负数CALC ;将计算结果存至HIGH_NUM,LOW_NUM中DISPLAY ;送至LED显示Negtive:CMP AL,-9 ;负量超过9了吗JS Overflow ;超过了,则溢出,显示"E0"MOV HIGH_NUM,40H ;40H为"-"的段码NEG AL ;求补CBW ;AL符号扩展至AXMOV BX,AXMOV CL,LED[BX]MOV LOW_NUM,CL ;低位段码送至LOW_NUMJMP Allscan_Key;--------------------------------------------------------MOV AX,4C00HINT 21HMAIN ENDPEND MAIN九、参考文献[1] 朱定华,《微机原理、汇编与接口技术》清华大学出版社,2005Page:163(8088引脚图)、171(最大系统组态连接方式)、176(最大系统组态时的I/O读写时序图)、221(4x4键盘扫描)、264(8255引脚图)、266~272(方式0输入输出程序例程)。
[2] 张毅刚,《新编MCS-51单片机应用设计(第3版)》哈尔滨工业大学出版社,2003Page:26(按键电平复位电路)[3] 8088pdf 8255pdf8088CLK时钟产生电路由8284产生。
十、心得与体会此次的微机原理课程设计从开始的方案设计,方案选择,到原理图的设计,原理图的绘制,再到最后的接口程序编写只用了两天的时间。