用单片机实现简易计算器的设计报告_第1页
用单片机实现简易计算器的设计报告_第2页
用单片机实现简易计算器的设计报告_第3页
用单片机实现简易计算器的设计报告_第4页
用单片机实现简易计算器的设计报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1华北水利水电学院课程设计报告课程名称: 简 易 计 算 器姓 名: 学 号: 班 级: 专 业: 电子信息工程 日 期: 2010 年 1 月 21 日2目 录1.前言32.课程设计目的和要求33.总体设计34.硬件设计45.软件设计56.操作说明97.设计感3想98.参考文献10一前言单片机课程设计是单片机原理课程的实践性环节。是在我们学习了单片机原理等课程的基础上进行的综合性训练,我们组这次训练的课题是基于单片机简易计算器。此次课程设计的课题是针对我们学习单片机原理这门课程的基础上,并在其辅助下完成的。此次进行的综合性训练,不仅培养了我如何合理运用课本中所学到的理论知识与实践紧密结合,独立解决实际问题的能力二课程设计的目的和要求1.课程设计的目的首先,综合运用单片机原理与接口技术课程中所学到的理论知识来独立完成此次设计课题,培养我们查阅手册和文献资料的良好习惯,以及培养我们独立分析和解决实际问题的能力。其次,在学习了理论知识的基础上进一步熟悉常用电子器件的类型和特征,并掌握合理选用的原则。再次,就是学会电子电路的安装与调试技能,以及与同组的组员的团结合作的精神。42.课程设计要求利用 89c51 作为主控器组成一个四则运算的计算器。三总体设计1.基本工作原理本设计利用 AT89C51 单片机来控制液晶显示器和矩阵式键盘,实现了简易的计算器功能。通过键盘输入需要计算的计算式子,该式子会显示在液晶的第一行,当键入等于号后,计算结果会显示在液晶的第二行。本设计中液晶选用 1602 字符型液晶显示器,显示参与运算的数字以及最终的运算结果,键盘采用 4*4 矩阵式键盘。2.系统组成单元中央处理单元CPU 选用 AT89C51 对整个系统进行控制:它将数据输出到显示屏,实现键入、输出的显示;根据键盘输入调用相应键处理子程序,实现数据的计算;单片机的管脚如下所述:AT89C51 的管脚分布如下:VCC: 供 电 电 压 。GND: 接 地 。P0 口 : P0 口 为 一 个 8 位 漏 级 开 路 双 向 I/O 口 , 每 脚 可 吸 收 8TTL 门 电 流 。P1 口 : P1 口 是 一 个 内 部 提 供 上 拉 电 阻 的 8 位 双 向 I/O 口 , P1 口 缓 冲 器 能 接 收输 出 4TTL 门 电 流 。 P2 口 : P2 口 为 一 个 内 部 上 拉 电 阻 的 8 位 双 向 I/O 口 , P2 口 缓 冲 器 可 接 收 , 输出 4 个 TTL 门 电 流 。P3 口 : P3 口 管 脚 是 8 个 带 内 部 上 拉 电 阻 的 双 向 I/O 口 , 可 接 收 输 出 4 个 TTL门 电 流 。RST: 复 位 输 入 。 当 振 荡 器 复 位 器 件 时 , 要 保 持 RST 脚 两 个 机 器 周 期 的 高 电 平时 间 。ALE/PROG: 当 访 问 外 部 存 储 器 时 , 地 址 锁 存 允 许 的 输 出 电 平 用 于 锁 存 地 址 的 地位 字 节 。 /PSEN: 外 部 程 序 存 储 器 的 选 通 信 号 。 在 由 外 部 程 序 存 储 器 取 指 期 间 ,每 个 机 器 周 期 两 次 /PSEN 有 效 。 但 在 访 问 外 部 数 据 存 储 器 时 , 这 两 次 有 效 的 /PSEN信 号 将 不 出 现 。/EA/VPP: 当 /EA 保 持 低 电 平 时 , 则 在 此 期 间 外 部 程 序 存 储 器 ( 0000H-FFFFH), 不 管 是 否 有 内 部 程 序 存 储 器 。XTAL1: 反 向 振 荡 放 大 器 的 输 入 及 内 部 时 钟 工 作 电 路 的 输 入 。XTAL2: 来 自 反 向 振 荡 器 的 输 出 。电源电路部分在各种电子设备中,直流稳压电源是必不可少的组成部分,它是电子设备唯一能量来源,它的设计思路是根据我们以前学过的模电电子技术,要想得到我们所要的+6V输出电压,就需将交流 220V 的电压经过变压器、整流电路、滤波电路和稳压电路四个部分。LCD 输出显示部分1602 采用标准的 16 脚接口,其管脚功能介绍如下:1:VSS 为电源地52:VDD 接 5V 电源正极3:V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。4:RS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择指令寄存器。5:RW 为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6:E(或 EN)端为使能(enable)端。714:D0D7 为 8 位双向数据端。1516:空脚或背灯电源。15 脚背光正极,16 脚背光负极。四硬件设计键盘输入部分矩阵式键盘由行线和列线组成,按键位于行和列的交叉点上,很明显,在所需按键数量较多时能节省很多的 I/O 口。如图所示为简易计算器的电路原理图。简易计算器电路原理图系统选用的主要元器件有:单片机(AT89C51),LCD 显示器(1602),按钮开关(SW-PB),排阻(9 管脚,1k),电阻、电容、晶振、发光二极管等若干。五软件设计该计算器系统的软件设计分为以下几个模块:(1)主程序模块 ,(2) 键盘扫描及识别子程序, (3)显示子程序,(4) 计算程序。主程序流程图如下:6总程序框图如下总程序如下:can() / 键盘扫描程序P3=0xfe; if(P3!=0xfe)delay(20); 延迟 20ms if(P3!=0xfe) temp=P3switch(temp)case 0xe0:num=0;break;case 0xd0:num=1;break; 7case 0xb0:num=2;break;case 0x70:num=3;break;while(P3!=0xfe);if(num=0|num=1|num=2)/如果按下的是7,8或9 if(j!=0) write_com(0x01);j=0;if(flag=0)/没有按过符号键 a=a*10+tablenum; else/如果按过符号键 b=b*10+tablenum; else/如果按下的是/ flag=1; fuhao=4;/4 表示除号已按i=table1num; write_date(0x30+i);P3=0xfd;if(P3!=0xfd)delay(5); if(P3!=0xfd)temp=P3switch(temp)case 0xe0:num=4;break;case 0xd0:num=5;break;case 0xb0:num=6;break;case 0x70:num=7;break;while(P3!=0xfd);if(num=4|num=5|num=6 j=0; if(flag=0)/没有按过符号键a=a*10+tablenum; else/如果按过符号键b=b*10+tablenum; else/如果按下的是/flag=1;fuhao=3;/3 表示乘号已按8i=table1num;write_date(0x30+i);P3=0xfb;if(P3!=0xfb)delay(5);if(P3!=0xfb)temp=P3switch(temp) case 0xe0:num=8;break;case 0xd0:num=9; break;case 0xb0:num=10; break;case 0x70:num=11;break;while(P3!=0xfb);if(num=8|num=9|num=10)/如果按下的是1,2或3 if(j!=0) write_com(0x01);j=0;if(flag=0)/没有按过符号键a=a*10+tablenum; else/如果按过符号键b=b*10+tablenum; else if(num=11)/如果按下的是 - flag=1;fuhao=2;/2 表示减号已按i=table1num;write_date(0x30+i);P3=0xf7;if(P3!=0xf7) delay(5); if(P3!=0xf7)temp=P3switch(temp)case 0xe0:num=12;break;case 0xd0:num=13; break;case 0xb0:num=14;break;case 0x70:num=15;break;while(P3!=0xf7); switch(num) case 12:write_com(0x01);a=0;b=0;flag=0;fuhao=0;/按下的是“清零“break;case 13: /按下的是“0“if(flag=0)/没有按过符号键a=a*10;write_date(0x30); P1=0;9else if(flag=1)/如果按过符号键b=b*10; write_date(0x30); break;case 14:j=1;if(fuhao=1)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=2)write_com(0x80+0x4f);/光标前进至第二行最后一个显示处write_com(0x04); /设置从后住前写数据,每写完一个数据,光标后退一格 (这个照理说顺序不对,可显示和上段一样)if(a-b0) c=a-b;else c=b-a;while(c!=0) write_date(0x30+c%10);c=c/10; 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)(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);10write_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();六操作说明用软件对程序进行编译,当出现下图所示情况时,说明编译成功,然后将程序直接下进单片机内,设计完成。七设计感想我们在该设计还有待改进的地方,输出显示的位数确定不变,对某些运算可能带来一定的误差,由于程序原因没有设置括号和小数点等,运算起来受到限制!还有很大的空间去提升

温馨提示

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

评论

0/150

提交评论