1、基于51单片机计算器设计设计题目: 计 算 器 系 别: 应用电子与通信技术系 班 级: 0991321 学生姓名: 石 晴 晴 指导教师: 姜滨、徐秋景 成 绩: 2012年 7 月 12 日课 程 设 计 任 务 书课程设计题目计算器功能技术指标要求设计一个4*4键盘,实现+、-、*、%的基本运算,运算结果用液晶进行显示。工作量2周工作计划完成设计时间分配:第1周:分析并设计电路、进行软件仿真验证。第2周:调试,写答辩论文,准备答辩。指导教师评语 2012年 7 月 2日目录第1章 绪论 11.1 课题简介 11.2 设计目的 11.3 设计任务 1第2章 电路结构及工作原理 32.1 总
2、体设计方案 32.2 51系列单片机简介 32.3 矩阵按键 42.4 LCD显示 52.5运算模块 62.6总设计图 6第3章 软件设计 73.1软件流程图 73.1.1 键盘模块设计流程图 73.1.2显示模块流程图 83.1.3计算模块程序流程 83.2程序设计 9第4章 调试与仿真 194.1 C51单片机软件开发系统 Keil 194.2 proteus的操作 19结论 20心得体会 21致谢 22参考文献 23第1章 绪论1.1 课题简介 当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活还是学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力
3、是人脑所不能胜任的,而且比较容易出错。计算器作为一种快速通用的计算工具方便了用户的使用。计算器可谓是我们最亲密的电子伙伴之一。本设计 着重在于分析计算器软件可开发过程中的环节和步骤, 并从时间经验出发对计算 器设计做了详细的分析和研究。 单片机由于其微小的体积和极低的成本,广泛的应用于家电、工业控制等领域中。在工业生产中,单片微型计算机是微型计算机的一个重要的分支,也是颇具生命力的机种。单片微型计算机简称单片机,特别适用于控制领域,故又称微 控制器。 本系统就是充分利用了 AT89C51 芯片的 I/O 引脚。系统以采用 51 单片机 实现能根据实际输入值显示并存储的功能,计算程序是参照课件。
4、至于数和功能,如果需要可以通过设计扩充系统来实现。1.2 设计目的通过本次项目设计,应用所学相关知识资料,来完成简易计算器的设计,以达到理论与实际更好相结合进一步提高综合运用所学知识和设计能力的目的。通过本次设计的训练,可以使我在基本思路和基本方法上对基于 51 单片机的嵌入式系统有一个比较感性的认识,并具备一定程度的设计能力。1.3 设计任务 在本次的项目设计中,主要完成如下的设计任务: 1、简要阐述单片机技术发展的国内外现状及 LCD 动态显示和矩阵键盘基本原理。 2、掌握 51 单片机系列某种产品的最小电路及外围扩展电路的设计方法。 3、完成主要功能模块的硬件电路设计及必要的参数确定;
5、4、用软件完成原理电路图的绘制;5、实现+、-、*、%的基本运算,运算结果用液晶进行显示。第2章 电路结构及工作原理2.1 总体设计方案根据功能和指示要求,本系统选用 51 单片机为主控机。通过扩展必要的外围电路接口 实现计算的设计。具体如下: 1、 由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用 LCD 显示数据和结果。 2、 另外键盘包括数字键(09) 、符号键(+、-、*、/) 、清除键和等号键,故采用 4*4 按键。 3、 执行程序:开机显示字符串,等待键入数值,当键入数值,通过 LCD 显示,当键入+、 -、* 、 /时计算器在内部执行数值转换和存储,并等
6、待再次键入数值并等待执行等号程序。 整个系统可分为三个主要的功能模块:一、实时键盘扫描;二、数据转换成显示器显示;三、显示器的动态显示。其系统结构框图如下:图2-1 系统结构框图2.2 51系列单片机简介AT89C51是51系列单片机的典型产品,以这一代表性的机型进行系统的 讲解。AT89C51 单片机包含中央处理器、程序存储器、数据存储器、定时/计数 器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总 线等三大总线,其内部结构如图 2-2 所示:图2-2 AT89C51内部结构图2.3 矩阵按键 键盘是单片机系统中最常用的人机对话输入设备, 用户通过按键向单片机输入指令和
7、数据。键盘控制程序需完成的任务有:检查是否有按键按下,有键按下时,如无硬件去抖动电路时,应用软件延时方法消除按键抖动;当有多个按键按下时,只响应一个按键,不管持续多长时间,仅执行一次按键功能程序。现用矩阵按键用作计算器的键盘,其结构图如2-3所示:图2-3矩阵按键结构图2.4 LCD显示本电路采用的是 LCD 液晶显示输出数据。液晶显示器 LM016L 液晶显示器 如下图所示:图2-4 液晶显示图2.5运算模块51 单片机是一块芯片集成了 CPU、RAM、ROM、定时/计数器和多功能的 I/O 口。 运算模块由键盘和显示屏组成。 单片机通过按键来实现输入数据和操作方式 的控制,在运算过程中,对
8、所设的数据进行四则运算时,首先确定选用的是哪一 个运算,若是+或*,则要判断是否会溢出;若是/则要判断除数是否是零。2.6总设计图根据对以上各部分的描述,把他们连接在一起,形成如下图所示的总设计图:图2-5 总设计图第3章 软件设计3.1软件流程图软件设计和硬件设计一样也由三部分组成,其中包括:键盘模块、显示模块、计算模块,现分别对这三部分分别介绍。3.1.1 键盘模块设计流程图矩阵键盘需要初始化,并且分别对其行、列进行扫描,在扫描过程中判断是否有键按下,根据以上要求,键盘模块设计的流程图如图3-1所示:图3-1键盘模块设计流程图3.1.2显示模块流程图本电路采用的是 LCD 液晶显示输出数据
9、,在流程图中应包括对LCD液晶显示器初始化,取要显示的数据,要是有两位数据需要显示,则在显示完第一位数据后需要进行延迟来显示第二位数据,则根据以上要求,显示模块的流程图如图 3-2所示:图3-2显示模块流程图3.1.3计算模块程序流程在计算模块中,必须保证按键按下的数和LCD液晶显示的数保持一致,则需要把+、-、*、/等字符转换成数据,根据以上要求,计算模块的程序流程图如图3-3所示:附:A代表按下运算符号前的数,B代表按下运算符后的数。图3-3计算模块流程图3.2程序设计根据3.1节的各部分的软件程序流程图,则编写的C语言程序如下:#include /头文件#define uint unsi
10、gned int / 定义无符号整形#define uchar unsigned char/ 无符号字符sbit lcden=P23; /定义引脚sbit rs=P24;/ 数据或命令选择端sbit rw=P20; / 读或写sbit busy=P07;/ 忙或闲 标志char i,j,temp,num,num_1;/定义5个字符标志位long a,b,c; /a,第一个数 b,第二个数 c,得数float a_c,b_c;uchar flag,fuhao;/flag表示是否有符号键按下,fuhao表征按下的是哪个符号uchar code table=7,8,9,0,4,5,6,0,1,2,3
11、,0,0,0,0,0;uchar code table1=7,8,9,0x2f-0x30, /按键标值 0x2f-0x30是将字符转化为数字,与后面的0x30+i抵消,得i值4,5,6,0x2a-0x30,1,2,3,0x2d-0x30,0x01-0x30,0,0x3d-0x30,0x2b-0x30;/0x01是清屏命令void delay(uchar z) / 延迟函数uchar y;for(z;z0;z-) /延时z*y for(y=0;y0) c=a-b;/减法 a b 大小处理以下 else c=b-a; while(c!=0) write_date(0x30+c%10); c=c/1
12、0; if(a-b0) write_date(0x2d);/写“-” write_date(0x3d); /再写= a=0;b=0;flag=0;fuhao=0; else if(fuhao=3)write_com(0x80+0x4f); write_com(0x04); c=a*b;/乘法 while(c!=0) write_date(0x30+c%10); c=c/10; write_date(0x3d); a=0;b=0;flag=0;fuhao=0; else if(fuhao=4)write_com(0x80+0x4f); write_com(0x04); i=0; c=(long)
13、(float)a/b)*1000);/除法 强制类型转换 while(c!=0) write_date(0x30+c%10); c=c/10; i+; if(i=3)/设置小数点位数 write_date(0x2e); if(a/b=0)/结果位小数 write_date(0x30);/先写“0”再“.” write_date(0x3d); a=0;b=0;flag=0;fuhao=0; break; case 15:write_date(0x30+table1num);flag=1;fuhao=1; break; main()init();while(1) keyscan();第4章 调试与
14、仿真下面用Keil与 porteus仿真软件介绍数字计算器的仿真与调试。4.1 C51单片机软件开发系统 Keil 采用KEIL 开发的89c51单片机应用程序步骤: (1) 在keil 集成开发环境中创建新项目(Project),扩展文件名为.UV2, 并为该项目选定合适的单片机CPU器件(本设计采用ATMEL 公司下的AT89C51) (2)用keil的文本编辑器编写源文件,可以是汇编文件(.c),并将该文件添加到项目中去。一个项目文件可以包含多个文件,除了源程序文件外,还可以是库文件、头文件或文本说明文件。(3)通过keil 的相关选择项,配置编译环境、连接定位器以及Debug调试 器的
15、功能。(4)对项目中的源文件进行编译连接,生成绝对目标代码和可选的HEX文 件,如果出现编译连接错误则返回到第2步,修改源文件中的错误后重构整个 项目。 (5)对没有语法错误的程序进行仿真调试,调试成功后将HEX文件写入到 单片机应用系统的ROM中。4.2 proteus的操作1.硬件电路图的接法操作 (1).放置选择(删除)元器件 (2).移动元器件 (3).缩放视图 (4).连接导线 (5).仿真,调试 2. 单片机系统PROTEUS设计与仿真过程 . Proteus强大的单片机系统设计与仿真功能,使它可成为单片机系统应用 开发和改进手段之一。全部过程都是在计算机上通过Proteus来完成
16、的。其过 程一般也可分为三步: (1)在ISIS平台上进行单片机系统电路设计、选择元器件、接插件、连接 电路和电气检测等。简称Proteus电路设计。 (2)在Keil平台上进行单片机系统程序设计、编辑、汇编编译、代码级调 试,最后生成目标代码文件(*.hex) 。简称Proteus源程序设计和生成目标代 码文件。 (3)在ISIS平台上将目标代码文件加载到单片机系统中,并实现单片机系 统的实时交互、 协同仿真。 它在相当程度上反映了实际单片机系统的运行情况。 简称Proteus仿真。结论基于单片机的设计至今为止已经进入了令人鼓舞的阶段,在进行了两周 时间的摸索与设计,使我不仅仅对于单片机软件
17、与硬件的常用设计与功能有所认识,如AT89C51 单片机包含中央处理器、程序存储器、数据存储器、定时/计数 器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,。键盘控制程序需完成的任务有:检查是否有按键按下,有键按下时,如无硬件去抖动电路时,应用软件延时方法消除按键抖动;当有多个按键按下时,只响应一个按键,不管持续多长时间,仅执行一次按键功能程序。还使我对于一项设计研究的制作过程所需要的详细步骤和具体实现方法 有了进一步的掌握。由于我们的初步尝试,当中的缺点是无可非议地存在着。 当然在这次宝贵的设计活动中,经验才是对于我们最大的收获,而且还 增强了自身对未知问
18、题以及对知识的深化认识的能力,但是,仅仅是完成了作 品还是不可以自我满足的,我们要认真的思考设计过程中遇到的问题,多查资料,将理论与实际相结合思考,并在以后的学习中更要加倍注意犯过的错误。总之,这次设计从软件编写调试到软硬件联机调试,发现了自己的许多不足,在以后的学习中,我一定会注意。心得体会课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题, 锻炼实践能力的重要环节, 是对学生实际工作能力的具体训练和考察过程。 随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的 领域,在生活中可以说得是无处不在。因此作为自动化专业的学生来说掌握单 片机的开发技术是十分重要的
19、。我的题目是简易计算器硬软件的设计,对于我们这些工科学生来说,这是 一次考验。怎么才能找到课堂所学与实际应用的最佳结合点?怎样让自己的业余更接近专业?怎样让自己的计划更具有序性,而不会忙无一用?这都是我们 所要考虑和努力的。这次课程设计我学到很多很多的东西,学会了怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上 的不良情绪。不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有 学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。通过 这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远 不够的,只有把所学的理论知识与实践相结合起来,从理
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2