基于单片机实现的简易计算器课程设计word格式.docx
《基于单片机实现的简易计算器课程设计word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机实现的简易计算器课程设计word格式.docx(38页珍藏版)》请在冰豆网上搜索。
基于单片机实现的简易计算器课程设计word格式
徐州师范大学物电学院
课程设计报告
课程名称:
单片机课程设计
题目:
简易计算器
专业班级:
07电科
学生姓名:
刘俊
学生学号:
07223010
日期:
2010.6.27
指导教师:
游春霞
摘要…………………………………………………………………………………2
Abstract……………………………………………………………………………2
概述…………………………………………………………………………………2
二、设计方案简述…………………………………………………………………4
2.1、功能介绍….………………………………………………………………….……..4
2.1.1、基本功能…………………………………………………………………..…4
2.1.2、扩展功能…………………………………………………………………..…4
2.2、总体设计方案…………………………………………………………………..……4
2.2.1、总体设计思路……………………………………………………………...…4
2.2.2、方案论证与比较………………………………………………………...……4
2.2.3、系统组成………………………………………………………………………8
三、详细设计…………………………………………………………………………9
3.1、设计目标和实现方法…………………………………………………………………9
3.2、设计…………………………………………………………...……………...…...…9
3.2.1、输入模块:
键盘扫描…………………………………………………...…...10
3.2.2、运算模块:
单片机控制………………………………………....…...…...…10
3.2.2、显示模块:
LCD1602显示………………………………………....…...…...…10
3.3、硬件电路设计………………………………………………………………………11
3.3.1、硬件连接………………………………………………………………………11
3.4、软件设计………………………………………………………………………………12
3.5、仿真和调试……………………………………………………………………………12
3.5.1、KEILuVision调试………………………………………....…...…...……...13
3.5.2、Proteus对于本设计的仿真…...………………………....…...…...……....14
3.6、元件的介绍……………………………………………………………………………15
3.6.1、MCS-51单片机组成………………………………………....…...…...……...15
3.6.2、MCS-51单片机引脚功能…...………………………....…...…...……....…...16
3.6.3、复位和复位电路…...………………………....…...…...……...…...………...18
3.6.4、LCD1602显示器……………....…………………....…...…...……...………...18
四、设计结果及分析………………………………………………………………23
4.1、功能和操作……………………………………………………………………………23
4.2、硬件调试………………………………………………………………………………23
4.3、技术要点………………………………………………………………………………23
5、总结………………………………………………………………………………………24
6、参考资料
附录主要程序代码
摘要
本设计采用单片机作为控制芯片,用C语言对其进行编程实现,输入由4*4矩阵式键盘控制,输出采用人性化的LCD1602型液晶实现。
在未进行计算时,它显示一段话,ON/O切换进入计算模式。
对于计算这个部分我采用的是矩阵键盘,10个数字键,一个等于号键,四个符号键,一个清零键,计算最高达到小数点后三位。
由于C语言库函数繁多,所以我采用调用C语言库函数来解决多种运算类型,这样编程更简单,运行起来也更可靠。
关键字:
单片机,1602液晶,矩阵键盘,C语言库函数。
Abstract
Thedesignusesasingle-chipmicrocomputerasthecontrolchip,usingCprogramminglanguageofitsinputfrom4*4matrixkeyboardcontrol,theoutputoftheuseofhumanLCD1602-typeliquidcrystaltoachieve.Beforethecalculation,itshowedsomewords.andtheclearbuttonisusedtoswitchintothemodeofcalculation.
ForthispartofthecalculationIusedthekeyboardmatrix,10numerickeys,anequalkey,foursymbolkeys,aclearkey,calculateduptothreedecimalplaces.Clanguagelibraryfunctionasaresultofmany,soIusedtocallClanguagelibraryfunctiontosolveawiderangeofoperatortypes,suchprogrammingismuchsimpler,itisalsomorereliable.
Keywords:
Single-chip,1602LCD,matrixkeyboard,Clanguagelibraryfunction.
1.概述
计算器(calculator)是微型电子计算机的一种特殊类型,它与一般通用计算器主要区别在于程序输入的方式不同。
计算器的程序一般都已经固定,只要输入数据和运算符号就会得出结果,很容易就能掌握。
而一般计算机的程序可以根据需要随时改动,或重新输入新程序。
简易计算器主要用于加减乘除,我所做出的就是按键与显示结合(即在显示器上显示数字键和加减乘除),程序已经完整实现。
2.设计方案简述
2.1、功能介绍
2.1.1、基本功能
根据所学知识,自行设计一个计算器,要求自行设计供电电源,该计算器能够实现加减乘除四则混合运算,能够实现连续计算。
2.1.2、扩展功能
(1)、该计算器能够实现精确到小数点三位的运算。
(2)、该计算器在不进行计算时能够显示文字。
2.2、总体设计方案
2.2.1、总体设计思路
本设计主要采用以下基本模块来实现,控制器模块,输入模块,输出模块和电源模块。
通过对控制器进行编程。
使其对输入模块的信号进行处理计算,然后通过输出模块反馈给使用者以计算结果。
2.2.2、方案论证与比较
2.2.2.1、控制部分的设计方案论证与选择
根据设计要求,控制器主要用于红外信号的接收和辨认、控制步进电机的动作,控制显示步进电机的转速等。
对于控制器的选择有以下三种方案。
方案一:
采用计算器专用芯片实现。
用计算器专用芯片进行设计并编程实现。
这种设计方案计算效率高、速度快、而且成本也相对较低,是厂家做计算器的最佳方案。
但是本人对计算器专用芯片掌握的不够,还不足以实现设计计算器,所以这个方案不可去。
方案二:
采用FPGA(现场可编程门阵列)作为系统的控制器。
FPGA将所有器件集成到一块芯片上,体积小,节省空间,提高了稳定性;直接面向用户,具有极大的灵活性和通用性,使用方便,硬件测试和实现快捷,开发效率高,工作可靠性好。
可以实现各种复杂的逻辑功能,规模大,密度高,采用并行的输入输出方式,系统处理速度高,适合作为大规模实时系统的控制核心。
由FPGA内部编程实现计算器功能,本设计对数据处理速度的要求不是很高,FPGA的高速处理的优势得不到充分的体现,由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物电路板布线复杂,加重了电路设计和实际焊接的工作。
并且FPGA的价格相对较高,性价比太低。
方案三、用单片机实现。
由于单片机集成了运算器电路、控制电路、存储器、中断系统、定时器/计数器以及输入/输出口电路等,所以用单片机设计控制电路省去了很多分立元器件。
由于单片机是可编程芯片,并且它可以运用C语言编写,对于一些复杂的计算功能,可以调用C语言库函数。
使编写程序变得非常简单。
所以该课题用单片机实现,不仅功能易于实现,而且精确度高,稳定性好,抗干扰能力强。
并且由于其成本低、体积小、技术成熟和功耗小等优点,且技术比较成熟。
性价比也相当高。
更重要的是本人经过几年的学习,对单片机已有深刻的理解,并且可以灵活运用。
综上所述,并通过各个方面综合比较为达到最佳效果。
我们采用方案三利用单片机控制器。
2.2.2.2、显示电路的设计方案论证与选择
方案一:
数码管显示方案。
数码管显示使用两个四位一体动态数码管显示方案,此设计电路如图1-1所示。
采用动态数码管显示,具有程序简单,对外界环境要求低,易于维护,同时其精度比较高,精确可靠,操作简单。
显示直观的特点。
但只能显示数字和一些代码,不能显示汉字及一些常用的符号,且硬件设计比较复杂。
图1-1、两个四位一体数码电路图
方案二;采用AT1602型液晶显示
(一)、基本特性
a、显示特性
b、物理特性
c外形尺寸如图1-2所示
图1-2、液晶的外形尺寸
(二)、接口定义
综上所叙,AT1602的显示效果好、功能齐全,所以我们选用AT1602液晶显示。
其与单片机的接口电路如图1-4所示。
AT1602与单片机的接口电路如图1-3所示,该液晶有16个引脚,它能显示32个字符,并且硬件电路设计简单,显示美观。
图1-3、AT1602与单片机接口电路
2.2.2.3、键盘设计方案与选择
方案一:
独立键盘。
独立键盘为一端接地,另一端接I/O口,并且要接上拉电阻。
这种键盘的硬件都很容易实现,但每一个按键就要用一个I/O口,非常的浪费单片机的I/O口资源,不适合本次设计。
方案二:
通过PS2协义,用键盘同单片机相接,从而实现单片机与键盘通信。
其电路如图1-4所示。
现在PC机广泛采用的PS/2接口为miniDIN6引脚的连接器。
1—数据线(DATA);—未用;3—电源地(GND);4—电源(+5V);5—时钟(CLK);6—未用。
图1-4、键盘与单片机接口图
由此图可知,使用键盘硬件结构比较简单,但键盘的体积太大,所以此系统不采用此方案。
方案三:
自制编码键盘。
编码键盘的电路如图1-5所示,这种键盘有编程简单,占用资源少,但其硬件比较复杂,要用很多的二极管,不是很理想。
图1-5、自制编码键盘电路图
方案四:
4*4矩阵式键盘。
其电路图如图图1-6所示,这种键盘的硬件简单,使用的I/O口也不多,而且这种键盘的编程方法已很成熟。
所以本次设计采用这种矩阵式键盘。
其电路图如图
图1-6、4*4矩阵式键盘电路图
2.2.3、系统组成
经过方案比较与论证,最终确定的系统组成框图如图1-7所示。
其中单片机作为主控设备对采集输入信号后并进行处理,最后通过输出设备输出给使用者。
,该系统的结构框图如图。
图1-7、系统组成方框图
3.详细设计
3.1、设计目标和实现方法
为了满足计算器的基本要求,可以基本的运算(加减乘除),数据归零和出错警告提示,我们采用基于单片机设计计算器,并用LED数码管显示数据,4*4的矩阵键盘实现数据输入。
设计仿真和调试要用到Protues、Keil和ProtelDXP等软件。
3.2、设计
根据功能和指标要求,本系统选用MCS51单片机为主控机。
通过扩展必要的外围接口电路,实现对计算器的设计。
具体设计考虑如下:
①由于要设计的是简单的计算器,可以进行四则运算,对数字的大小范围要求不高,故我们采用可以进行四位数字的运算,选用LCD1602显示数据和结果。
②另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16个按键即可。
3.2.1、输入模块:
键盘扫描
计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O口资源,因此在很多情况下都不采用这种方式。
为此,我们引入了矩阵键盘的应用,采用四条I/O线作为行线,四条I/O线作为列线组成键盘。
在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为4×4个。
这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
矩阵键盘的工作原理:
计算器的键盘布局如图2-1所示:
一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。
图2-1键盘布局图2-2矩阵键盘内部电路
由图2-2矩阵键盘内部电路图可以知道,当无按键闭合时,P10~P13与P14~P17之间开路。
当有键闭合时,与闭合键相连的两条I/O口线之间短路。
判断有无按键按下的方法是:
第一步,置列线P14~P17为输入状态,从行线P10~P13输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。
第二步,行线轮流输出低电平,从列线P14~P17读入数据,若有某一列为低电平,则对应行线上有键按下。
综合一二两步的结果,可确定按键编号。
但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。
3.2.2、运算模块:
单片机控制
MCS-51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。
单片机是靠程序运行的,并且可以修改。
通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!
因此我们采用单片机作为计算器的主要功能部件,可以进行很快地实现运算功能。
3.2.3、显示模块:
LCD1602显示
LCD1602是单片机应用系统中的一宗简单而常用的输出设备,其在系统中的主
要作用是显示单片机的输出数据、状态等。
因而作为典型的外围器件,LCD1602显示单元是反映系统输出和操作输入的有效器件。
3.3、硬件电路设计
主要器件:
单片机采用80S51单片机,它能够满足数据的采集、控制和数据处理的需求。
显示LCD1602,输入采用按键方式。
3.3.1硬件连接
图3-1所示为简易计算器的电路原理图。
P3口用于键盘输入,接4*4矩阵键盘,键值与键盘的对应表如表----所示,p0口和p2口用于显示,p2口用于显示数值的高位,po口用于显示数值的低位
图3-1简易计算器电路原理
3.4、软件设计
在程序设计方法上,模块化程序设计是单片机应用中最常用的程序设计方法。
设计的中心思想是把一个复杂应用程序按整体功能划分成若干相对独立的程序模块,各模块可以单独设计、编程和调试,然后组合起来。
这种方法便于设计和调试,容易实现多个程序共存,但各个模块之间的连接有一定的难度。
根据需要我们可以采用自上而下的程序设计方法,此方法先从主程序开始设计,然后再编制各从属程序和子程序,层层细化逐步求精,最终完成一个复杂程序的设计。
这种方法比较符合人们的日常思维,缺点是一级的程序错误会对整个程序产生影响。
程序流程图如下:
结束断开电源
启动计算器(接通电源,按下ON/C键)
是否结束
按下ON/C键
LCD显示初始值
是否继续
输入数
否否
LCD显示
LCD显示
计算结果
按下功能键
是
按下功能键
按下功能键
LCD显示
输入数字
程序流程图
3.5、仿真和调试
下面用KEILuVision与porteus仿真软件实现简易计算器的仿真与调试。
3.5.1、KEILuVision调试
根据上述操作可得图5-1
编译调试程序后,从Build一栏可以看到
“creatinghexfilefrom‘jsq’…”
“‘jsq’-0Error(s),0Warning(s).”
下一步就可以在Proteus软件了调用hex文件及烧入单片机。
3.5.2、Proteus对于本设计的仿真
操作步骤如下:
(1)进入proteusISIS集成环境,在工作前,在systerm菜单下设置界面的颜色、图形界面大小等项目,我采用了系统默认值。
(2)
(2)通过工具栏中的
(从库中选择元件命令)命令,在pickdevices窗口中选择电路所需的元件,放置元件到编辑区并调整其相对位置,进行元件参数设置,元器件间连线。
器件库如表5-1所示。
器件库
器件名称
MicroprocessorICs
89C51
Switches&Relays
BUTTON
Optoelectronics
LM016L
Resistors
RESPACK-8
Resistors
POT-LIN
TerminalsMode
POWER
表5-1器件库及所选器件
(3)连线并加上需要的说明,并完成仿真原理图,如图5-3所示。
操作说明:
(1)本计算器实现8位数的加、减、乘、除运算。
(2)按下数值键,显示按下的“数字”按运算符,再,按第2个操作数,显示,按“=”键,得到运算结果。
(3)按“清零”键清除运算结果,可重新开始。
图5-3仿真原理
(4)加载程序。
将编译调试完成的简易计算器机器码程序(hex文件)加载到AT89C51单片机中。
(5)单击仿真工具栏中的仿真键
,观察仿真结果。
可以按暂停、继续、单步、等按钮,查看效果。
(6)调试与思考
图5-2器件列表
3.6、元件的介绍
MCS-51系列单片机产品有8051,8031,8751,80C51,80C31等型号(前三种为CMOS芯片,后两种为CHMOS芯片)。
它们的结构基本相同,其主要差别反映在存储器的配置上。
8051内部设有4K字节的掩模ROM程序存储器,8031片内没有程序存储器,而8751是将8051片内的ROM换成EPROM。
3.6.1、MCS-51单片机组成
MCS-51单片机是在一块芯片中集成了CPU,RAM,ROM、定时器/计数器和多种功能的I/O线等一台计算机所需要的基本功能部件。
MCS-51单片机内包含下列几个部件:
◆一个8位CPU;
◆一个片内振荡器及时钟电路;
◆4K字节ROM程序存储器;
◆128字节RAM数据存储器;
◆两个16位定时器/计数器;
◆可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;
◆32条可编程的I/O线(四个8位并行I/O端口);
◆一个可编程全双工串行口;
◆具有五个中断源、两个优先级嵌套中断结构。
可编程
串行口
频率基准源计数器
串行串行
中断控制并行I/O口输入输出
图6-18051单片机框图
8051单片机框图如图2-1所示。
各功能部件由内部总线联接在一起。
3.6.2、MCS-51单片机引脚功能
MCS单片机都采用40引脚的双列直插封装方式。
图6—2为引脚排列图,40条引脚说明如下:
1、主电源引脚Vss和Vcc
①Vss接地
②Vcc正常操作时为+5伏电源
2、外接晶振引脚XTAL1和XTAL2
①XTAL1内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。
当采用外部振荡器时,此引脚接地。
②XTAL2内部振荡电路反相放大器的输出端。
是外接晶体的另一端。
当采用外部振荡器时,此引脚接外部振荡源。
3、控制或与其它电源复用引脚RST/VPD,ALE/
,
和
/Vpp
①RST/VPD当振荡器运图6—28051引脚排列图
行时,在此引脚上出现两个机器周期的高电平(由低到高跳变),将使单片机复位在Vcc掉电期间,此引脚可接上备用电源,由VPD向内部提供备用电源,以保持内部RAM中的数据。
②ALE/
正常操作时为ALE功能(允许地址锁存)提供把地址的低字节锁存到外部锁存器,ALE引脚以不变的频率(振荡器频率的
)周期性地发出正脉冲信号。
因此,它可用作对外输出的时钟,或用于定时目的。
但要注意,每当访问外部数据存储器时,将跳过一个ALE脉冲,ALE端可以驱动(吸收或输出电流)八个LSTTL电路。
对于EPROM型单片机,在EPROM编程期间,此引脚接收编程脉冲(
功能)
③
外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数据)期间,
在每个机器周期内两次有效。
同样可以驱动八LSTTL输入。
④
/Vpp、
/Vpp为内部程序存储器和外部程序存储器选择端。
当
/Vpp为高电平时,访问内部程序存储器,当
/Vpp为低电平时,则访问外部程序存储器。
对于EPROM型单片机,在EPROM编程期间,此引脚上加21伏EPROM编程电源(Vpp)。
4、输入/输出引脚P0.0-P0.7,P1.0-P1.7,P2.0-P2.7,P3.0-P3.7。
①P0口(P0.0-P0.7)是一个8位漏极开路型双向I/O口,在访问外部存储器时,它是分时传送的低字节地址和数据总线,P0口能以吸收电流的方式驱动八个LSTTL负载。
②P1口(P1.0-P1.7)是一个带有内部提升电阻的8位准双向I/O口。
能驱动(吸收或输出电流)四个LSTTL负载。
。
③P2口(P2.0-P2.7)是一个带有内部提升电阻的8位准双向I/O口,在访问外部存储器时,它输出高8位地址。
P2口可以驱动(吸收或输出电流)四个LSTTL负载。
④P3口(P3.0-P3.7)是一个带有内部提升电阻的8位准双向I/O口。
能驱动(吸收或输出电流)四个LSTTL负载。
3.6.3、复位和复位电路
MCS-51单片机的复位电路如图6-3所示。
在RESET(图中表示为RST)输入端出现高电平时实现复位和初始化。
MCS-51
RES
MCS-51
RES
+5V+5V
10μF1K10μF
8.2K5.1K
地地
(a)(b)
图6-3复位电路
在振荡运行的情况下,要实现复位操作,必须使RES引脚至少保持两个机器周期(24个振荡器周期)的高电平。
CPU在第二个机器周期内执行内部复位操作,以后每一个机器周期重复一次,直至RES端电平变低。
复位期间不产生ALE及PSEN信号。
内部复位操作使堆栈指示器SP为07H,各端口都为1(P0-P3口的内容均匀0FFH),特殊功能寄存器都复位为0,