简易计算器制作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简易计算器制作
汇报人:汪洋 时 间:2017.1.17
目 录
1.总体设计 2.简易计算器功能及原理 3.STC89C52单片机 4.独立按键检测 5.数码管显示 6.系统的主程序
1.总体设计
整个电路系统分为检测、计算、显示三个模块。首先利用独立按键 输入数据及符号,然后将其送给软件控制模块进行实时计算,控制输出相 应的信号给驱动芯片驱动数码管显示结果,实现计算器的功能。系统方案 方框如下: 检测(按键) 软件计算、控制 数码管显示
4.独立按键检测
弹性小按键被按下时闭合,松手后自动断开。单 片机检测按键的原理是:单片机的I/O口既可以作输出 也可以作输入使用,当检测时用的是它的输入功能。 把按键的一端接地,另一端与I/O口相连。开始时先给 I/O 口赋一高电平,然后让单片机不断检测 I/O 口是否 变为低电平,当按键闭合时,即相当于按键通过I/O口 与地相连,变成低电平。程序一旦检测到I/O口变为低 电平即说明键被按下,然后执行相应的指令。
ቤተ መጻሕፍቲ ባይዱ
4.独立按键检测
unsigned char KeyScan(void) {unsigned char t; if(P2!=0xff) { delayms(10); if(P2!=0xff) {
t=P2; while(P2!=0xff); switch(t) //P2口作为独立按键输入端,检测端口电平并做如下判断 { case 0xfe:return 0;break;//0xfe = 1111 1110, //说明连接在P2.0端口的按键被按下,显示对应的数字然后跳出循环 case 0xfd:return 1;break;/ case 0xfb:return 2;break; case 0xf7:return 3;break; case 0xef:return 4;break; case 0xdf:return 5;break; case 0xbf:return 6;break; case 0x7f:return 7;break; default:break; //如果都没按下,直接跳出 }
2.简易计算器功能及原理
简易计算器的功能包括正整数的加、减、乘、除。利用8个独立按键 作为数字以及符号的输入设备,将数据及符号传送给单片机进行计算,最 后用4个单位共阴数码管显示输出数据和结果。 输入的数据包括0-9,+-*/=,一共有15个,而独立按键只有8个。本人 只利用其中7个键,其中5个数据键,一个切换键,一个确认键。输入数字09时,5个数据键分别代表0-4或5-9,按下切换键在这两者之间切换。输入符 号时,前4个数据键分别代表+-*/,第5个按键空置不用。每当数字或符号输 入完成按下确认键进行确认。
6.系统的主程序流程图
3.STC89C52单片机
STC89C52是宏晶科技推出的新一代高速 /低功 耗/超强抗干扰的单片机,指令代码完全兼容传统的 8051 单片机。工作电压: 5.5V ~ 3.3V 。工作频率范 围: 0 ~ 40MHz ,相当于普通 8051 的 0 ~ 80MHz ,实 际工作频率可达 48MHz。用户应用程序空间为 8K字 节。
6.系统的主程序流程图
可以把计算器的工作过程分为4个阶段:输入第一个数,输入符号,输入第二个数, 输出结果。是否进入某个阶段用一个标志位secondflag控制,例如当secondflag为1时表 示进入第一阶段,以此类推。采用这种做法的原因是因为程序是顺序执行的,如果不 对每一阶段加以区分则每输入一个数据,单片机会按顺序执行完4个阶段所有程序,不 符合计算器的功能。而采用了这种方法,编程时可以利用if语句。 比如if(secondflag==1) {第一阶段子程序}; if(secondflag==2) {第二阶段子程序}; … S0-S4为数据键,代表0-4或5-9,S5空置不用,S6为数字切换键,S7为确认键。每按下确 认键,secondflag+1,进入下一个阶段。firstflag为数字切换标志位,firstflag=0表示输入 数字为0-4, firstflag =1表示输入数字为5-9。
}
} else return 0xff; }
5.数码管显示
数码管的内部结构如左图所示,一个数码管有 7 段和一个小数点,所以其内部有8个发光二极管和一 个公共端。本人所用数码管公共端为共阴极,即数 码管的阴极连接在一起,并连接到地。而它们的阳 极是独立的,给数码管任意一个阳极加高电平,相 应的二极管就亮了。 因为计算器显示 4 位数需要 4 个数码管,所以把 所有数码管相同的阳极连接在一起,并连接至 P0 口。 再使用P3.4-P3.7分别控制 4个数码管的公共端。从而 达到独立控制每个数码管的目的。 数码管的显示方式分为静态显示和动态扫描两 种,本人采用的是动态扫描的方法进行显示。
相关文档
最新文档