版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘 要单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心。如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。计算器的出现给我们的生活带来了巨大的便利,计算器在我们的生活中随处可见,也是我们日常生活中不可缺少的工具。本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除简单的基本四则运算,并在lcd上显示相应的结果。设计电路采用at89c51单片机为主要控制电路,利用按键作为计算器的键盘的输入。显示采用字符lcd静态显示。软件方面使用c语言编程,并用protues仿真。单片微型计算机简称单片机。它是在一块芯片上
2、集成中央处理器(cpu)、随机存取存储器(ram)、只读存储器(rom)、定时/计数器及i/o接口电路等部件,构成一个完整的微型计算机。它的特点是:高性能,高速度,体积小,价格低廉,稳定可靠,应用广泛。单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。本文介绍了单片机的产生发展、功能特点、应用开发等内容。【关键词】 简单计算器 单片机 lcd 应用发展背景近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。影响可靠性的因素是多方面的,如构成系
3、统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。其中系统的抗干扰性能是系统可靠性的重要指标。本设计采用80c51 芯片,实现了利用单片机进行了一个简单计算器设计。允许对输入数据进行加减乘除运算及lcd 显示如果设计对象是更为复杂的计算器系统,其实际原理与方法与本设计基本相同。lcd液晶显示器是 liquid crystal display 的简称,lcd 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置tft(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过tft上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的。现在lcd已经
4、替代crt成为主流,价格也已经下降了很多,并已充分的普及。故采用lcd设计的关键所在,必须非常熟悉单片机的原理与结构,同时还要对整个设计流程有很好的把握,将单片机和其他模块完整的衔接。本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除基本四则运算,并在lcd上显示相应的结果;设计电路采用at89c51单片机为主要控制电路,显示采用字符lcd静态显示;软件方面使用c语言编程,并用protues仿真。目录摘要背景1.绪论11.1设计的目的意义11.2.设计的任务和要求11.3 计算器设计所用的方法12. 方案设计22.1 方案论述22.2 方案论证3
5、3.整体设计34.硬件系统框架44.1 lcd1602显示器44.2单片机64.3复位电路74.4 按键电路75. 软件设计程序框图85.1程序流程图85.2 程序模块化编写95.3主函数程序设计106软件仿真与调试126.1 proteus 仿真软件的介绍126.2 proteus 电路仿真图126.3 软件调试136.4 测试分析13总结14【参考文献】附录1.绪论1.1设计的目的意义随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。电子产品的更新速度快就不足惊奇了, 单片机的应用已经越来越贴近生活,电子计算器在我们的生活中随处可见,给我
6、们的生活带来了巨大的便利,随着技术的不断更新,用单片机来实现一些电子设计也变得容易起来。通过本次项目设计,应用所学相关知识资料,来完成简易计算器的设计,以达到理论与实际更好相结合进一步提高综合运用所学知识和设计能力的目的。通过本次设计的训练,可以使我在基本思路和基本方法上对基于51 单片机的嵌入式系统有一个比较感性的认识,并具备一定程度的设计能力。1.2.设计的任务和要求为了满足计算器的基本要求,可以基本的运算(加减乘除),数据归零和出错警告提示,我们采用基于单片机设计计算器,并用lcd字符液晶显示器显示数据,4*4 的矩阵键盘实现数据输入分别对键盘输入检测模块;lcd显示模块;算术运算模块;
7、按键处理及提示模块进行设计,并用设计了系统方框图,同时使用了keiluvision4与proteus软件进行了仿真分析其设计结果1.3 计算器设计所用的方法 以单片机为控制器件,采用c语言进行程序设计,采用单片机智能控制,结合外围电子电路,可以进行“加、减、乘、除”四则运算。 使用单片机最小系统设计计算器系统,系统以单片机为主控单元, 借助proteus软件,进行仿真,对设计原理、检测方法进行验证。 借助了keiluvision4软件对程序进行了调试和修改。 在基于51单片机的开发板上进行了测试。2.方案设计 2.1 方案论述 方案一 根据功能和指标要求,本系统选用mcs-51系列单片机at8
8、9c51为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。计算器电路包括三个部分:显示电路、4*4键扫描电路、单片机微控制电路。用七段数码管作为显示电路,矩阵键盘作为输入电路。模块图如图1.1所示。 图2.1.1 方案一模块图 方案二根据计算器的功能要求,选择at89c51为主控机,通过扩展必要的外围接口电路,实现对计算器的设计。外部主要由4*4按键键盘和一个液晶显示屏构成,内部由一块at89c51单片机构成。计算器电路包括四个部分:选用lcd作为显示部分,键盘作为输入部分,运算模块,单片机控制部分。模块图如图2.2所示。 图2.1.2 方案二模块图2.2 方案论证方案一: 这种方案功
9、能简单,在生活中使用较少,缺乏实际于运用价值,用数码管显示,不能显示字符,所以不能显示运算过程。方案二: 此种方案较为经济,方便,具有模块化的特点,因为将计算运算电路全部集成在了51单片机上,具有高效率,运算功能强大。lcd1602字符液晶显示器可以显示运算过程,便于计算,随着价格的下降,已经成为了生活中计算器的主流配置。综上所述:所以我们小组采用方案二,采用89c51单片机为运算处理模块,使用lcd1602字符液晶显示器来做显示模块,矩阵键盘为输入模块,这种设计便于观看,大大提升了我们使用计算器的便利度。3.整体设计根据简易计算器的功能和指标要求,本设计系统选用mcs-51系列单片机at89
10、c51为主控机。通过扩展必要的外围接口电路,实现对简易计算器的设计。计算器电路包括三个部分:显示电路、4*4按键电路、单片机微控制电路。具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用lcd1602字符液晶显示器,显示数据和结果。(2)另外键盘包括数字键(09)、符号键(+、-、)、.和等号键,故只需要16 只按键即可。(3)执行过程:开机显示零,等待键入数值,当键入数字,通过lcd显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在lcd上输出运算结果。(4)数据溢
11、出或出现错误,会进行出错提示。整体设计框图如下图所示图1.3 线路原理框图4.硬件系统框架4.1 lcd1602显示器4.1.1 lcd1602显示器lcd1602已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于hd44780液晶芯片的,控制原理是完全相同的。字符型lcd通常有14条引脚线或16条引脚线的lcd,多出来的2条线是背光电源线vcc(15脚)和地线gnd(16脚),其控制原理与14脚的lcd完全一样。如下图: 图 4.1.1 lcd1602显示器4.1.2 引脚功能图4.1.2 引脚功能图液晶显示的原理是利用液晶的物理特性, 通过电压对其显示区域进行控制,有电就有显示
12、,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、pda移动通信工具等众多领域。4.1.3 lcd1602的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如下表所示:序号指令rsr/wd7d6d5d4d3d2d1d01清显示00000000012光标返回000000001*3置输入模式00000001i/ds4显示开/关控制0000001dcb5光标或字符移位000001s/cr/l*6置功能00001dlnf*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001
13、显示数据存贮器地址9读忙标志或地址01bf计数器地址10写数到cgram或ddram)10要写的数据内容11从cgram或ddram读数11读出的数据内容 图4.1.3 控制指令4.14 液晶显示模块液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙判别标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图4.1.4是1602的内部显示地址。图4.1.4 1602lcd内部显示地址4.2单片机at89s52是一种低功耗、高性能cmos8位微控制器,具有8k 在系统可编程flash 存储器。使用atmel 公司高密度非易失性
14、存储器技术制造,与工业80c51 产品指令和引脚完全兼容。片上flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位cpu 和在系统可编程flash,使at89s51为众多嵌入式控制应用系统提供高灵活、更有效的解决方案。引脚结构如下图 图4.2 引脚结构4.3复位电路当单片机工作于内部时钟模式的时候,只需在xtal1和xtal2引脚连接一个晶体振荡器或者陶瓷振荡器,并接两个电容后接地即可,在使用时对于电容的选择有一定的要求:当外接晶体振荡器的时候,电容值一般选择c1=c2=30+10pf或30-10pf;当外接陶瓷振荡器的时候,电容值一般选择c1=c2=40+10
15、pf或40-10pf; 图 4.3 复位电路4.4 按键电路在按键输入方面,我们采用4*4的矩阵键盘来实现,具体连接电路如图4.4所示。通过基于状态机的按键扫描程序设计可实现4*4矩阵键盘的按键监控。 图4.4 按键输入电路5. 软件设计程序框图 5.1程序流程图5.1.1主流程图和算术运算流程图图5.1.1 (1 )主流程图图5.1.1 (2) 算术运算流程5.1.2 键盘输入流程图 图5.1.2 键盘输入流程图5.2 程序模块化编写keil uvision4是美国keil software公司出品的51系列兼容单片机c语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,c语言在
16、功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期程序采用模块化编写,分为了主程序模块、lcd1602显示模块、键盘程序模块和延时程序模块。如下图所示: 图 5.2 程序模块化5.3 主函数程序设计#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include#include1602.h#includedelay.h#includekeyboard.hsbit beep=p20;sbit led=p21;/*-主程序-*/main () unsigned char num,i,sign; unsigned c
17、har temp16; /最大输入16个 bit firstflag; float a=0,b=0; unsigned char s; lcd_init(); /初始化液晶屏 delayms(10); /延时用于稳定,可以去掉 lcd_clear(); /清屏 lcd_write_string(0,0,welcome to use!); /写入第一行信息,主循环中不再更改此信息,所以在while之前写入 lcd_write_string(0,1,cxk,wxx,zyc); /写入第二行信息,提示输入 for(s=0;s25;s+)/延时5s delayms(40); lcd_clear();
18、lcd_write_string(0,0, lcd calculator); /写入第一行信息,主循环中不再更改此信息lcd_write_string(0,1,press butten.); /写入第二行信息,提示输入while (1) num=keypro(); /扫描键盘 if(num!=0xff) /如果扫描是按键有效值则进行处理 beep=0; led=0; delayms(500); beep=1;led=1; if(i=0) /输入是第一个字符的时候需要把改行清空,方便观看 lcd_clear();if(+=num)| (i=16) | (-=num) | (x=num)| (/=
19、num) | (=num)/输入数字最大值16,输入符号表示输入结束 i=0; if(firstflag=0) /如果是输入的第一个数据,赋值给a,并把标志位置1,到下一个数据输入时可以跳转赋值给b sscanf(temp,%f,&a); firstflag=1; else sscanf(temp,%f,&b); for(s=0;s16;s+) /赋值完成后把缓冲区清零,防止下次输入影响结果 temps=0; lcd_write_char(0,1,num); / if(num!=) /判断当前符号位并做相应处理 sign=num; /如果不是等号记下标志位 else firstflag=0;
20、/检测到输入=号,判断上次读入的符合 switch(sign) case +:a=a+b;break;case -:a=a-b;break;case x:a=a*b;break;case /:a=a/b;break;default:break; sprintf(temp,%g,a); /输出浮点型,无用的0不输出 lcd_write_string(1,1,temp);/显示到液晶屏 sign=0;a=b=0; /用完后所有数据清零 for(s=0;s16;s+) temps=0; elseif(i16) if(1=i)& (temp0=0) )/如果第一个字符是0,判读第二个字符 if(num
21、=.) /如果是小数点则正常输入,光标位置加1 temp1=.;lcd_write_char(1,0,num);/输出数据i+; /这里没有判断连续按小数点,如0.0.0 else temp0=num; /如果是1-9数字,说明0没有用,则直接替换第一位0 lcd_write_char(0,0,num);/输出数据 else tempi=num; lcd_write_char(i,0,num);/输出数据 i+; /输入数值累加 6软件仿真与调试6.1 proteus 仿真软件的介绍proteus软件是英国labcenter electronics公司出版的eda工具软件(该软件中国总代理为广
22、州风标电子技术有限公司)。它不仅具有其它eda工具软件的仿真功能,还能仿真单片机及外围器件。proteus是世界上著名的eda工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到pcb设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、pcb设计软件和虚拟模型仿真软件三合一的设计平台。6.2 proteus 电路仿真图本设计选用at89c51单片机为主控单元; 显示部分:采用lcd静态显示;按键部分:采用4*4键盘,据有按键指示灯和提示声;读取输入的键值。总体设计效果如下图: 图 6.2 计算器的总体仿真图6.3 软件调试利用仿真软件proteus
23、的仿真功能可以有效地检验所设计的原理图是否在理论上正确合理。分别进行“加、减、乘、除”计算,来进行测试。运行proteus按下按键进行死则计算,即可在显示器中观测到显示结果。在联机调试的过程中,一开始没有做数值溢出方面的控制,导致lcd显示的输入数据或计算结果与实际不相符。后来经过计算得到有符号长整型的表示范围为-21474836482147483647为本计算器的最大表示范围,以此来控制数值溢出。 加法计算 减法计算 乘法计算 除法计算 图 6.3 测试过程6.4测试分析 优点: 通过仿真测试,我们发现,我们编写的计算机c语言程序,只要在程序里修改端口,键盘可以接在单片机的任意i/o口,进行输入;利用lcd1602自负液晶显示器,显示效果更加清晰,运算过程更加明显;在运算过程方面,可以计算小数,使用起来更加方便。 不足:通过不端的调试,我们发现输出的结果不能接着进行下一次计算,也就是输出结果不能作为输入使用,这是需要我们改进的地方;设计属于简易计算器范围,不能进行乘方和开方的运算。 总结课程设计是培养我们综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。随着科学技术发展的日
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 充电基础设施项目申请报告
- 地下室防渗漏培训课件
- 高支模搭设专项培训课件
- 沥青摊铺试验检测培训课件
- 加气站重大危险源评估报告
- 创新思维训练课程设计
- 2026年学年甘肃省平凉市临床执业医师其它模拟题二卷及答案详解
- 变电站智能化升级工程实施方案
- 2026年全国计算机等级考试一级专项模拟题模拟专项模拟题模拟试卷及答案详解
- 2026年护士执业资格考试基础护理学模拟试卷及答案详解
- 服装设计的美学原理《服装设计基础》教学
- DB45T 1625-2024 地质灾害危险性评估规程
- 家装园林设计合同范例
- 第五课活动A、姓氏大探秘寻根问祖
- DL∕T 1671-2016 火力发电厂空冷岛钢结构安装及验收标准
- DL-T5334-2016电力工程勘测安全规程
- 零星维修工程服务方案设计
- 统计与概率《义务教育数学课程标准》解读
- 【新大纲新教材】2022年初级会计职称《经济法基础》精讲课件(1-8章完整版)
- 1956年的教授评级
- 人教版高一英语必修一《Workbook》教学设计
评论
0/150
提交评论