单片机课程设计计算器_第1页
单片机课程设计计算器_第2页
单片机课程设计计算器_第3页
单片机课程设计计算器_第4页
单片机课程设计计算器_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告题 目 计算器课程设计 课 程 名 称 单片机原理及接口技术 院部名称专业班 级 学 生 姓 名 学 号 地点学时指 导 教 师 目录摘要2第一章绪论31.1 课题简介31.2 设计目的31.3 设计任务3第二章课题背景52.1 单片机发展现状52.2 计算器发展现状52.3 单片机简介52.4 矩阵键盘72.5 计算器设计思路7第三章硬件系统设计93.1 键盘接口电路93.2 LED显示模块103.3 运算模块11第四章软件设计124.1 C语言的特点124.2 键盘扫描程序设计124.3 算术运算程序设计134.4 显示程序设计14第五章系统调试与存在的问题155.1 软件调试

2、155.2 硬件调试15总结16参考文献17附录一C语言源程序18主函数:18键盘扫描函数:21数码管输出函数:25附录二 PROTEL仿真电路27附录三 PROTEUS仿真电路28摘要计算机在人们的日常生活中是比较常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机设计计算器。该设计系统是以AT89C51单片机为核心,外接矩阵键盘,通过键盘扫描输入数据,经过单片机执行处理,再由LED数码管作为显示输出,软件程序用C语言编写,具有较好的移植性。实验报告详细介绍了整个计算器系统的硬件组成结构,工作原理以及软件程序设计。计算其具有简单的整数加

3、减乘除功能。整个计算器系统的工作过程为:首先存储单元初始化,显示初始值和键盘扫描,判断按键位置,查表得出按键值,单片机则对数据进行储存与相应处理转换,之后送入LED显示器动态显示。整个系统可分为三个主要功能模块:功能模块一,实时键盘扫描;功能模块二,数据转换成显示器显示;功能模块三,显示器动态显示。关键字:计算器AT89C51 C语言第一章 绪论1.1 课题简介当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且比较容易出错。计算器作为一种快速通用的计算工具方便了用户的使用。计算器

4、可谓是我们最亲密的电子伙伴之一。本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。在工业生产中。单片微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。本系统就是充分利用了8051芯片的I/O引脚。系统以采用MCS-51系列单片机Intel8051为中心器件来设计计算器控制器,实现了能根据实际输入值显示并存储的功能,计算程序则是参照教材。至于位数和功能,如果有需要可以通过设计扩充原系统来实现。1

5、.2 设计目的通过本次课题设计,应用单片机应用基础、计算机应用基础等所学相关知识及查阅资料,完成简易计算器的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。通过本次设计的训练,可以使我在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。1.3 设计任务在本次课程设计中,主要完成如下方面的设计任务:(1)简要阐述单片机技术发展的国内外现状及LED动态显示和矩阵键盘基本原理;(2)掌握AT89C51的最小电路及外围扩展电路的设计方法;(3)了解单片机数据转换功能及工作过程;(4)完成主要功能模块的硬件电路设计

6、及必要的参数确定;(5)自学Protel、Proteus等在课程设计中要用到的软件。第二章 课题背景目前,51系列单片机在我国的各行各业得到了广泛应用,各大专业院校、职业培训学校,均开设了单片机原理与应用方面的课程,这是一门技术性和实践性很强的学科,必须通过一系列的软硬件实验、理论联系实际,才能学好、学懂,取得较好的学习效果。2.1 单片机发展现状单片机的发展趋势:低功耗CMOS化;微型单片化;主流与多品种共存;单片机从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。2.2 计算器发展现状计算器一般由运算

7、器、控制器、存储器、键盘、显示器、电源和一些可选外围设备及电子配件通过人工或机器设备组成。低档计算器的运算器、控制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。高档计算器由微处理器和只读存储器实现各种复杂的运算程序,有较多的随机存储单元以存放输入程序和数据。键盘是计算器的输入部件,一般采用接触式或传感式。为减小计算器的尺寸,一键常常有多种功能。显示器是计算器的输出部件,有发光二极管显示器和液晶显示器等。除显示计算结果外,还常有溢出指示、错误指示等。计算器电源采用交流转换器或电池,电池可用交流转换器或太阳能转换器再充电。为节省电能,计算器都采用CMOS工艺制作的

8、大规模集成电路(见互补金属-氧化物-半导体集成电路),并在内部装有定时不操作自动断电电路。计算器可选用的外围设备有微型打印机、盒式磁带机和磁卡机等。2.3 单片机简介8051是MCS-51系列单片机的典型产品,以这一代表性的机型进行系统的讲解。8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,其内部结构如图2.1所示,现在分别加以说明:图2.1 8051内部结构图中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负

9、责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(RAM):8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。程序存储器(ROM):8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。定时/计数器:8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断,用于控制程序转向。并行输入输出(I/O)口:8051共有4组8位I/O口(P

10、0、 P1、P2和P3),用于对外部数据的传输。全双工串行口:8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统:8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。时钟电路:8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一

11、的结构,即普林斯顿(Princeton)结构。INTEL的 MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。2.4 矩阵键盘键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。键盘控制程序需完成的任务有:监测是否有键按下,有键按下时,若无硬件去抖动电路时,应用软件延时方法消除按键抖动影响;当有多个键同时按下时,只处理一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。矩阵按键扫描程序是一种节省I/O口的方法,按键数目越多节省I/O口就越可观,思路:先判断某一列(行)是否有按键按下,再判断该行(列)是哪

12、一只键按下。但是,在程序的写法上,采用了最简单的方法,使得程序效率最高。本程序中,如果检测到某键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能节省大量的CPU时间。2.5 计算器设计思路根据功能和指示要求,本系统选用以MCS-51单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到教好的显示效果,采用LCD显示数据和结果。(2) 另外键盘包括数字键(0-9)、符号键(+、-、*、/)、清除键和等号键,故只需要16个按键即可,设计中采用集成的计算机键盘。(3) LED开始显示零,等待输入数值,当输

13、入第一个数字,LED显示输入值,当输入+、-、*、/运算符后,LED显示0,输入第二个数字,LED显示第二个输入数字,按“=” 就会在LED上显示运算结果。(4)由于只进行整数运算,当计算9÷4结果只显示整数部分,即结果只显示2。(5)计算最大数字为255,当输入256时,将显示0。第三章 硬件系统设计硬件系统是指构成微机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统

14、。本设计选用以AT89S51单片机为主控单元。显示部分:采用LCD静态显示。按键部分,采用4*4键盘。硬件电路原理图如图3-1所示:图3-1 硬件电路原理图3.1 键盘接口电路计算机输入数字和其他功能按键时要用到很多按键,在这种情况下,编程会很简单,但是会占用大量的I/O口资源,因此在很多情况下都不采用这样的方式,而是采用矩阵键盘的方式。矩阵键盘采用四条I/O线作为行线,四条I/O线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的数量就为4*4个。这样行列式键盘结构能有效的提高单片机系统中I/O口的利用率。计算器的键盘布局:一般有16个键组成,在单片机中正好有一个P端

15、口实现16个按键功能,这种形式在单片机系统中最常用。3.2 LED显示模块发光二极管LED是单片机应用中简单而常用的输出设备,其在系统中的主要作用是显示单片机的输出数据、状态等。因而作为典型的外围设备,LED显示单元是反映系统输出和操作输入的有效器件。LED具备数字接口可以方便的和系统连接。3.3 运算模块MCS-51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等计算机所需要的基本功能部件。如果按功能划分,它由以下功能部件组成,即微处理器(CPU),数据存储器(RAM),程序存储器(ROM/EPROM),并行I/O口,串行口,定时器/计数器,中断系统及特殊功能

16、寄存器(SFR)。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的一些功能,通过使用单片机编写的程序可以实现高智能、高效率以及高可靠性,因此采用单片机作为计算器的主要功能部件,可以很快的实现运算功能。第四章 软件设计4.1 C语言的特点本设计是硬件电路和软件编程相结合的设计方案,选择的编程语言是C语言。C语言语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。4.2 键盘扫描程序设计键扫程序的过程为:开始时,先判断是否有键闭合,无键闭合时,返回继续判断,有键闭合时,先去抖

17、动,然后确定是否有键按下,若无键按下,则返回继续判断是否有键闭合,若有键按下,则判断键号,然后释放,若释放按键完毕,则返回,若没有释放按键,则返回继续释放。其流程图如图所示。4.3 算术运算程序设计首先初始化参数,送LED低位显示“0”,高位不显示。然后扫描键盘看是否有键盘输入,若有,读取键码。判断键码是数字键、清零键还是功能键(+ - * =),是数值键则送LED显示并保存数值,是清零键则做清零处理,是功能键就判断是“=”还是运算键,若是“=”则计算出最后结果并送LED显示,若是运算键则保存相对运算程序的首地址。运算程序框图如图所示:4.4 显示程序设计LED开始显示零,等待输入数值,当输入

18、第一个数字,LED显示输入值,当输入+、-、*、/运算符后,LED显示0,输入第二个数字,LED显示第二个输入数字,按“=” 就会在LED上显示运算结果。第五章 系统调试与存在的问题5.1 软件调试软件调试一般分为以下四个阶段:(1)编写程序并检查;(2)编写源程序;(3)进行编译生成可执行程序。在本次调试中出现的问题有:(1)在程序中有的函数名未定义;(2)在抄录程序时,少录入一些字符,如:“;”、“”、“-”等符号,而出现错误;(3)有一些函数名录入时少写一个字母或顺序颠倒;(4)没有注意函数名的调用及定义;(5)芯片引脚定义出错而导致没有实验现象。在软件调试过程中,对出现的错误进行了认真

19、的分析和修改,多次调试成功后,能够很好的达到既定的设计效果。5.2 硬件调试在AT89C51中载入编写好的程序,运行电路,观察是否执行命令,运算结果是否正确。如果不正确,检查电路、修改程序,反复磨合,最终得到理想结果。总 结我的题目是简易计算器的设计,对于我们这些实践中的新手来说,这是一次考验。怎样才能找到课堂所学与实际应用的最佳结合点,怎样让自己的业余更接近专业,怎样让自己的计划更具有序性,而不会忙无一用,这都是我们所要考虑和努力的。这次课程设计我学到很多很多的东西,学会了怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。不仅巩固了以前所学过的知识,而

20、且学到了很多在书本上没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。同时在设计的过程中发现了自己的不足之处,例如对以前所学过的知识理解得不够深刻,掌握得不够牢固,对C语言掌握得不够好等。在这里真诚地对所有关心我、帮助我、鼓励我的老师和同学们。参考文献1徐爱钧.智能化测量控制仪表原理与设计(第二版)北京航天航空大学出版社,2004.9 2孙育才等.MCS-51系列单片微型计算机及

21、其应用(第4版)东南大学出版社,2004.33李萍等.智能仪器实验指导书大连交通大学,2007.94单片机应用技术(C语言).中国劳动社会保障出版社,2006.65武庆生,仇梅等著.单片机原理与应用.电子科技大学出版,1998.12 6朱定华著.单片机原理与接口技术.电子工业出版社,2001.4 7王宜怀,刘晓升等著.嵌入式应用技术基础教程.北京清华大学出版社,2005.7 8王威著.HCS12微控制器原理及应用.北京航空航天大学出版社,2007.10 9龚运新著.单片机C语言开发技术.北京清华大学出版社,2006.10 10周立功.单片机实验与实践.北京航空航天大学出版社,2004.3附录一

22、C语言源程序主函数:#include<reg51.h>#include<intrins.h>#include"key.h"#include"display.h"unsigned char tempdata6=11,11,11,11,11,11,temp6;bit firstflag;void main(void) unsigned char keynum,i,sign,a,b;while(1)keynum=KeyPro();if(keynum!=0xff)if(keynum='+')|(keynum='-&

23、#39;)|(keynum='*')|(keynum='/')|(keynum='=')|(keynum='c')i=0;if(firstflag=0)firstflag=1; for(i=0;i<6;i+)tempi=0;i=0;if(keynum!='=')sign=keynum;if(sign='c')a=b=0;sign=0;firstflag=0;i=0;elsefirstflag=0;switch(sign)case'+':a=a+b;break;case'

24、-':a=a-b;break;case'*':a=a*b;break;case'/':a=a/b;break;default:break;b=0;else if(i<6) if(i=1)&&temp0='0')temp0=keynum-'0'i=0;elsetempi=keynum-'0'if(firstflag=0)a=a*10+tempi;elseb=b*10+tempi;i+; if(firstflag=0)tempdata3=a/100;tempdata4=a/10%10;te

25、mpdata5=a%10;if(a<100)tempdata3=11;if(a<10)tempdata4=11;tempdata3=11;elsetempdata3=b/100;tempdata4=b/10%10;tempdata5=b%10;if(b<100)tempdata3=11;if(b<10)tempdata4=11;tempdata3=11;display(tempdata);键盘扫描函数:#ifndef _KEY_H_#define _KEY_H_#define KeyPort P3/*-将跳线帽套在J5的BIN针上独立按键扫描函数,返回扫描键值左边一列从

26、上向下对应P30,P31,P32,P33分别是0,1,2,3号键-*/void delay50us(unsigned int t) /50us 延时unsigned char j; for(;t>0;t-) for(j=19;j>0;j-) ;unsigned char KeyScan(void) /键盘扫描函数,使用行列逐级扫描法unsigned char Val;KeyPort=0xf0;/高四位置高,低四位拉低if(KeyPort!=0xf0)/表示有按键按下 delay50us(200); /去抖if(KeyPort!=0xf0) /表示有按键按下 KeyPort=0xfe

27、; /检测第一行if(KeyPort!=0xfe) Val=KeyPort&0xf0; Val+=0x0e; while(KeyPort!=0xfe); delay50us(200); /去抖 while(KeyPort!=0xfe); return Val; KeyPort=0xfd; /检测第二行if(KeyPort!=0xfd) Val=KeyPort&0xf0; Val+=0x0d; while(KeyPort!=0xfd); delay50us(200); /去抖 while(KeyPort!=0xfd); return Val; KeyPort=0xfb; /检测第

28、三行if(KeyPort!=0xfb) Val=KeyPort&0xf0; Val+=0x0b; while(KeyPort!=0xfb); delay50us(200); /去抖 while(KeyPort!=0xfb); return Val; KeyPort=0xf7; /检测第四行if(KeyPort!=0xf7) Val=KeyPort&0xf0; Val+=0x07; while(KeyPort!=0xf7); delay50us(200); /去抖 while(KeyPort!=0xf7); return Val; return 0xff;unsigned cha

29、r KeyPro(void) switch(KeyScan() case 0xbe:return '9'break;/4 9 case 0xbd:return '6'break;/5 6 case 0xbb:return '3'break;/6 3 case 0xde:return '8'break;/8 8 case 0xdd:return '5'break;/9 5 case 0xdb:return '2'break;/a 2 case 0xd7:return '0'break;/b 0 case 0xee:return '7'break;/c 7 case 0xed:return '4'break;/d 4 case 0xeb:return '1'break;/e 1 case 0xe7:return 'c'break;/f ccase 0x7e:return '/'break;/0 按下相应的键显示相对应的码值 / case 0x7d:return '*'break;/1 x case 0x7b:return '-'break;/2 -

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论