用AT89C52单片机设计基本功能的简易计算器毕业设计文档格式.docx
- 文档编号:17063168
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:25
- 大小:98.17KB
用AT89C52单片机设计基本功能的简易计算器毕业设计文档格式.docx
《用AT89C52单片机设计基本功能的简易计算器毕业设计文档格式.docx》由会员分享,可在线阅读,更多相关《用AT89C52单片机设计基本功能的简易计算器毕业设计文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
LCD的显示方式19
5.3仿真和调试22
Keil调试22
protues对于本设计的仿真24
结论25
致谢26
参考文献27
附录(源代码)28
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时倒动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构,软硬件结合,来加以完善。
计算器在人们的日常生活中是比较常见的电子产品之一,基于这样的理念,本次设计是用AT89C52单片机,LCD显示器,控制按键为元件来设计的具备基本功能的简易计算器,利用此设计熟悉单片机微控制器及C语言编程,对其片资源及各个I/O端口的动能和基本用途的了解,掌握keil,protues等开发软件,以及常用的LCD显示器的使用方法和一般简单的使用方法。
Abstract
Withtherapiddevelopmentofsicenceandtechnologyinrecentyears,theapplicationofSCMisagrowing,whiledrivingmoretraditionalcontorldetectioentechnologyupdates.Inreal-timedetectionandautomaticcoontrolofmicrocomputerapplicationsyystem,themicrocontrollerisofenusedasacorecomponent,butonlySCMknowledgeisnotenough,thestructureshouldbebasedonspecifichardware,softwareandhardwarecombinationtobeimproved
Calculatorinpeople’sdailylivesisoneofthemorecommonelectronicprotucts.Basedonthisconcept,thisdesignisAT89C51microcontroller,LCDdisplay,controlbuttonsdesignedforthebasedfunctionwithasimplecalculator.FamiliarwithusingthismicrocontrollerdesignandClanguageprogrammingmicrocontrollers,resourcesandallofitschipi/0portfunctionsandbasicuseoftheunderstanding.MastertheKEIL,PROTUESandthecommonuseofLCDdisplaysandgeneraluseofthekeyboard
Keywords
AT89C51LCDcontrolbuttons
引言
当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣,几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且比较容易出错。
计算器作为一种快速通用的计算工具方便了用户的使用。
计算器可谓是我们最亲密的电子伙伴之一。
本设计着重在于计算器的设计和开发,为人们的生活带来了便利。
1绪论
1.1系统开发的背景
随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋的变化。
计算器在人们的日常生活中是比较常见的电子产品之一,如何将常见的计算器技术更加成熟,充分利用已有的软件和硬件条件,设计出更加出色的计算器,使其更好的为各行业服务,成了如今电子领域重要的研究课题。
1.2系统的开发意义
人们的日常生活中已经离不开计算器了,社会的各个角落都有它的身影,比如商店,办公室,学校等等。
因此设计一款简单使用的计算器会有很大的实际意义。
1.3设计内容和章节分配
随着嵌入式的快速发展,单片机本着它简单,功能强大,抑郁设计等优点被设计者使用。
通过此次设计的完成,对字符液晶显示模块的工作原理,比如初始化,清屏,显示,调用及外特性有较清楚的认识,并会使用LCD实现计算结果的显示,在充分分析内部逻辑的改练的同时,进行软件编译和调试。
第一章为设计的背景,意义介绍,简明扼要的阐述设计的理念和成果,第二章为系统方案设计介绍,主要从设计的功能,方案的确定以及选择原因和系统设计组成来介绍。
第三章为主要芯片内介绍,详细介绍了芯片的内部结构和引脚分布。
第四章为设计的核心,即硬件电路设计,此章将硬件电路分成为若干模块,分别解释好了模块的硬件设计电路,第五章为软件设计,冲语言的悬着,控制字的确定,流程图的介绍到最后的仿真与调试,通过这几章的介绍,完成简易计算器的设计。
2系统方案设计
2.1功能介绍
基本功能
根据所学知识,自行设计一个计算器,该计算器能够实现加减乘数四则运算。
能
1.该计算器能够实现精确到小数点三位的运算;
2.该计算器可显示负数。
2.2方案论证与比较
控制部分的设计方案论证与选择
方案一:
采用计算器专用芯片实现。
用计算器专用芯片进行设计并编程实现。
这种设计方案计算效率高,速度快,而且成本也相对较低,是厂家做计算器的最佳方案。
但是由于本人对计算器专用芯片掌握的不够,还不足以实现设计计算器,所以这个方案不可取。
方案二:
采用FPGA(现场可编程门阵列)作为系统的控制器。
FPGA将所有器件集成到一块芯片上,体积小,节省空间,提高了稳定性,直接面向用户,既有极大的灵活性和通用性,使用方便,硬件测试和实现快捷,开发效率高,工作可靠性好,可以实现各种复杂的逻辑功能,规模大,密度高,采用并行的输入输出方式,系统处理速度高,适合作为大规模实时系统的控制核心。
由FPGA内部编程实现计算器功能,本设计对数据处理速度的要求不是很高,FPGA的告诉处理的有事得不到充分的体现,由于集成度高,使其成本偏高,同时由于芯片的引脚较多,实物电路板布线复杂,加重了电路设计的工作,并且FPGA的价格相对比较高,性价比太低,所以这个方案不考虑。
方案三:
用单片机实现
由于单片机集成了运算器电路,控制电路,存储器,终端系统,定时器、计数器以及输入、输出口电路等,所以单片机设计控制电路省去了很多分立元器件,由于单片机是可编程芯片,并且它可以运用C语言编写,对于一些复杂的计算功能,可以调用C语言库函数。
使编写程序变得非常简单,所以该课题用单片机实现,不仅功能抑郁实现,而且精确度高,稳定性好,抗干扰能力强,并且由于其成本低,体积小,技术成熟和功耗小等有点,切技术比较成熟,性价比也相当高,更重要的是本人经过几年的学习,对单片机已有深刻的理解,并且可以灵活运用。
综上所述,并通过各个方面综合比较为达到最佳效果,我们采用方案三利用单片机控制器来实现。
路的设计方案论证与选择
数码管显示是使用8段数码管来显示,采用动态数码管显示,具有程序简单,对外界环境要求低,易于维护,同时其精准的也较高,操作简单。
显示直观的特点,但是数码管仅仅只能显示一些数字,无法显示出一些常用的字符,并且硬件设计复杂,程序算法等缺点,所以不适合用来做本设计。
采用LM1602液晶显示
(一)基本特性
1.+5v电压,对比度可调;
2.内部含有复杂电路
3.提供各种控制命令,如:
清屏,字符闪烁,光标闪烁,显示移位等多种功能;
4.有80字节显示数据存储器DDRAM;
5.内建有160个5*7点阵的字型的字符发生器CGROM;
6.8个可由用户自定义的5*7的字符发生器CGRAM。
(二)接口定义
LM1602接口定义如下所示;
引脚号标识说明PIN1?
GND接0VPIN2?
VCC接4.8V-5VPIN3V0对地接电阻470-2KPIN4RSRS0,指令寄存器;
RS1,数据寄存器PIN5R/WR/W0,写;
R/W1,读PIN6E允许信号PIN7D0数据0PIN8D1数据1PIN9D2数据2PIN10D3数据3PIN11D4数据4PIN12D5数据5PIN13D6数据6PIN14?
D7数据7PIN15LED+背光正极,接4.8V-5VPIN16LED-背光负极,接0V
图2-1简易计算器的系统框图
硬件电路是采用结构化系统设计方法,该方法保证设计电路的标准化,模块化。
硬件电路的设计最重要的选择在于控制的单片机,并确定与之配套的外围芯片,使所设计的系统实用性强,操作简单。
软件设计的方法与开发环境的选取有着直接的关系,本系统由于是采用51系列单片机,因此使用KeilC语言进行开发,protues仿真软件进行仿真。
此编程工具相比汇编语言具有结构化,适用范围大,可移植性好,开发效率高等优点。
本系统软件设计采用模块化系统设计方法,先编写各个功能模块子程序,然后进行组合调整,经过keil调试后,达到设计功能要求,并在protues中仿真。
在设计中采用AT89C51单片机作为微处理器,低电压,高性能CMOS8为单片机,片内含有4k的可反复擦写的Flash只读程序存储器和128B的随机存取数据存储器(RAM),兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元。
硬件方面完成包括键盘控制,LCD屏幕显示控制,预算控制等设计
2.4总体设计思想
1.可以进行四则运算,采用LCD显示数据和结果;
2.键盘包括数字键(0-9),符号键(+,-,*,/),清零键和等号键,设计中采用4*4键阵;
3.执行程序:
键入数字,通过LCD显示出来,当键入运算符号键时确定选择的符号切将前面键入的数储存,等待下一个数字的键入,按等号键就会先查询运算的符号,在进行运算,最后显示出结果在LCD上。
3主要芯片的介绍
3.1AT89C51选择及介绍
随着集成电路工艺的发展,出现了单片机,DSP.RAM等多种单片机。
DSP:
它从16~32位,内部采用哈佛结果体系,特别适合数据处理。
16位DSP适合中高级工程控制到简单语音/图片(不含视频)处理,32位DSP设个复杂的语音/图片/视频处理。
ARM:
是32位单片机。
由于结构和计算速度的原因,目前适合做事务处理或者中低端的应用和中高级工程控制。
而AT89C51是AT89C51是一种带4K字FLASH存储器(FPEROM―FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案
图3-2AT89C51的引脚图
本设计原理图绘制采用的是protues完成的仿真电路。
Protues软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具仿真软件,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译
4硬件电路设计
硬件电路主要包括单片机的时钟电路,外围电路有显示电路和按键电路,通过各电路,详细的介绍了电路的组成。
4.1时钟电路
AT89C51芯片内部有一个高增益反向放大器,用于构成震荡电路,反向放大器的输入端为XTAL1,输出端为XTAL2,两端跨接石英体及两个电容就可以构成稳定的自激振荡器,电容器C1和C2通常取用30pf左右,可稳定频率并对振荡频率有微调作用,振荡脉冲频率范围为0~24MHZ。
时钟接口电路如图4-1所示:
图4-1晶振电路图
4.2显示电路
图4-2LCD显示电路图
本设计采用LCD1602液晶显示器来显示数据,既可以两行每行16个字符。
本设计通过P0-P7口引脚向LCD写指令或者写数据以使LCD实现不同的功能或者显示相应的数据,其接口电路如图4-2所示。
4.3按键电路
计算机输入数字和其他功能按键时要用很多的按键,在这种情况下,编程会很简单,但是占用I/O口资源很多,因此在很多情况下都不采用常用的独立按键方式,而是采用矩阵键盘的方式,矩阵键盘采用四条I/O线为行线,四挑I/O口为列线组成键盘,在行线和列线的每个交叉点设置一个按键,这样键盘上按键的数量就是4*4个,这样行列式键盘接口能有效的提高但潘集的系统中I/O口的利用率。
如图4-3所示。
图4-3按键输入电路图
5软件设计
本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的换件。
在单片机的应用系统程序设计时,常用的是汇编和C语言,汇编语言程序可读性和可移植性,还有开发周期都比较差。
而C语言虽然执行效率没有汇编语言高,但是语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性好等特点。
由于现在单片机的发展已经达到了很高的水平,内部的各种资源相当的丰富,CPU的处理速度非常快,用C语言来控制单片机无疑是一个理想的选择。
所以在本设计中采用C语言编写软件程序。
5.1LCD1602
LCD1602字符发生存储器(CGROM)
表5-1字符码表
1602液晶模块内部的祖父发生存储器(CGROM)已经存储了160个不同的点阵字符。
这些字符有:
阿拉伯数字,英文字母的大小写,常用的字符,和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母’A’的代码是0100000(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就是能看到字母A。
1602显示数据寄存器(DDRAM)
1.清屏指令如表5-2所示:
表5-2清屏指令寄存器
功能;
清除液晶显示器,既清屏操作数为0X01
2.进入模式设置指令如表5-3所示:
表5-3模式指令寄存器
功能:
设定每次定人1位数据后光标的以为方向,并且设定每次写入的一个字符是否移动。
此设计规定光标右移,显示屏不移动,及操作数0X06。
参数设定的情况如下表所示:
位名设置
D0显示功能关1显示功能开
C0关光标1有光标
B0光标闪烁1光标不闪烁
4功能设定指令如5-4表所示:
表5-4功能指令寄存器
设定数据总线位数,显示的行数及字型。
此设计规定数据总线为8位,显示2行,操作数为0先8.参数设定的情况如下:
DL0数据总线为4位1数据总线为8位
N0显示1行1显示2行
F05*7点阵/每字符15*10点阵/每字符
5液晶屏显示位置如表5-5所示:
表5-5液晶显示地址
0x31(数字1的代码)并不能显示1出来。
原因就是如果你要想在DDRAM的00H地址处显示数据,则必须将00H加上80H,既80H,若要在DDRAM的01H处显示处显示数据,则必须将01H加上80H即80H+01H。
依次类推。
5.2计算器软件设计
显示生活中人们熟知的计算器,其功能如下:
键盘输入
数值显示
加,减,乘,除四则运算
图5-1系统流程图
算程序设计
算数运算程序设计的过程为:
先判断输入的运算符号是+-*/中的哪一种,若是/,则要先判断除数是否小于被除数,来选择,要不败要在前面补零。
若是是减号,则要判断被减数与减速的大小,来判断是否需要加负号,如果都没有被按下的话,那么就表示没有按过运算键,那么就直接将第一个数a直接赋给C,然后在将其显示出来。
如一下程序
switchfuhao
case1:
ca+b;
//'
+'
break;
case2:
//'
-'
ifa-b0
ca-b;
else
cb-a;
case3:
ca*b;
//'
*'
case4:
clongfloata/b*1000;
i0;
//'
/'
ifc0
write_date0x30;
else
whilec!
0
write_date0x30+c%10;
cc/10;
iffuhao4//做触发显示小数点后的3位
i++;
ifi3
write_date0x2e;
//显示小数点
//当ab时前面补0
iffuhao4&
&
ab
for;
i3;
i++
write_date0x30;
write_date0x2e;
write_date0x30;
elseiffuhao2&
write_date0x2d;
write_date0x3d;
a0;
b0;
flag0;
fuhao0;
这段函数的作用就是在等号按下后先判断符号位是什么,如果是没有按过符号位,则显示的就是第一个数,如果按下了在判断是其中的哪一种,在根据符号的不同做不同的运算a和b得到C,其中有2中比较特殊有多种情况的在上面已经说明了。
组成
在数值的组成中,每一次按下一个键就会有一个数字显示,但是要让电脑知道这几个数字是连续的则需要单独用一个变量来存储这个数;
如下程序所示:
voidkey789void
P30xfe;
//7,8,9/
ifP3!
0Xfe
delay5;
//延时20ms
ifP3!
0XFE
tempP3&
0xf0;
switchtemp
case0xe0:
num0;
break;
case0xd0:
num1;
case0xb0:
num2;
case0x70:
num3;
break;
whileP3!
0xfe;
ifnum!
3//按下的不是‘/’键
ifj!
0//如果等号被按下了过
write_com0x01;
j0;
ifflag0//没有按过符号键
aa*10+table[num];
else//如果按过符号键
bb*10+table[num];
else
flag1;
fuhao4;
//4表示除号已按
itable1[num];
write_date0x30+i;
该函数就是当键入7,8,9和除号的函数。
当一个按键按下时先查询该输入是数字还是运算字符。
如果是数字则会进行a*10+键入的数,那么a就变成了我们人认识的连续的数。
如果是除号或者其他的运算字符()等号除外,则表示第一个数已经完成,那么我们就需要在换一个数b来存储第2个数。
LCD的显示方式
(一)LCD的初始化
在前面我们已经讲解了LCD的读命令和读数据的方式,同时还介绍了它的一些相关功能的初始化,在这里我们要做的初始化就是如下程序:
voidinit//初始化
num-1;
lcden1;
//使能信号为高电平
write_com0x38;
//8位,2行
write_com0x0c;
//显示开,光标关,不闪烁*/
write_com0x06;
//增量方式不移位显示屏移。
write_com0x80;
//检测忙信号
write_com0x01;
//清屏
num_10;
i0;
j0;
a0;
//第一个参与运算的数
b0;
//第二个参与运算的数
c0;
flag0;
//flag表示是否有符号键按下,
fuhao0;
//fuhao表征按下的是哪个符号
通过以上设定是LCD屏幕有以下功能:
光标关,不显示,不闪烁,输入后全屏自动右移等功能。
(二)LCD的写命令和数据
voidcheck//判断忙或空闲
do
P00xFF;
rs0;
//指令
rw1;
//读
lcden0;
//禁止读写
delay1;
//等待,液晶显示器处理数据
//允许读写
whilebusy1;
//判断是否为空闲,1为忙,0为空闲
voidwrite_comucharcom//写指令函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AT89C52 单片机 设计 基本功能 简易 计算器 毕业设计