用C语言设计一个多功能计算器

上传人:宝路 文档编号:18171392 上传时间:2017-11-13 格式:DOCX 页数:6 大小:23.08KB
返回 下载 相关 举报
用C语言设计一个多功能计算器_第1页
第1页 / 共6页
用C语言设计一个多功能计算器_第2页
第2页 / 共6页
用C语言设计一个多功能计算器_第3页
第3页 / 共6页
用C语言设计一个多功能计算器_第4页
第4页 / 共6页
用C语言设计一个多功能计算器_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《用C语言设计一个多功能计算器》由会员分享,可在线阅读,更多相关《用C语言设计一个多功能计算器(6页珍藏版)》请在金锄头文库上搜索。

1、用 C 语言设计一个多功能计算器实现功能:1)具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。依次输入第一个运算数、运算符(+,-,*,/),第二个运算数,然后输出结果。结果可以作为下一个运算的第一运算数。按C清屏,按X 退出。例如:输入:2+5输出:72)实现单运算符表达式计算的功能。输入的操作数可以包含整数或浮点数。如果遇到错误的表达式,应输出错误提示信息。输入表达式如下:例如:输入:2+5输出:7目 录摘要.1第一章 引言.31.1 计算器概述.3第二章 设计任务及要求.52.1 设计任务.52.2 设计要求.6第三章 计算器硬件设计.73.1 方案说明.73.2 设计单片机主

2、体电路图.8第四章 软件设计.94.1 模块介绍.94.2 程序流程图.104.3 程序部分.11第五章 总结.16参考文献.17摘要:目录 一、课程设计题目及任务要求二、设计思路三、部分程序介绍四、程序框图五、汇编程序六、参考资料原文一、课程设计题目及任务要求请设计十进制加减法计算器。要求能(不同时)显示 3 位输入和 4 位输出。二、设计思路 1、操作显示设备显示设备采用八片七段共阴极 LED 显示器,共设置 16 个键,其中数字键 09 共十个,接下来依次是加号键、减号键、等于号、清除键。操作设备是两行八列共 16 键的简单键盘。第一行从左至右分别为 0、1、2 、3、4、5、6 、7,

3、第二行分别为 8、9、A(+ ) 、B(- ) 、C(=) 、D(清除键) 、E(清除键) 、F(清除键) , “清除键”表示程序初始化,为下次输入准备。2、程序实现功能(1)十进制加减法计算:输入范围为( 1999) ,该程序输入两个定点数,每个 3 位,输出 4 位;A 为加,B 为减,C 为等于,输出为四位计算结果。数据输入采用规范化输入,即必须输入 3 个数才算完成一个运算数的输入,两个运算数之间输入运算符 A或者 B,输入完成按 C 显示计算结果;(2)计算机复位功能: DEF 均为清零重启,任何时候按下 DEF 中一个将重新开始;三、部分程序介绍(1)主程序(START )程序开始

4、运行初始化程序,设置输入输出口 PA、PB、PC,扫描键盘,输入两个待求数据和运算符,存入寄存器,等待输入等号同时显示第二个数,运行计算程序,并将计算结果分离,输出到显示器;(2)读键子程序(RD_KB)程序分别扫描两行键盘,若有键按下则通过移位的方式计算键码;若无键按下,则将键码缓存设置为 10H,判断后进行相应的跳转。具体实现形式见程序的注释。 (3)计算子程序( CACULATE)程序是在按下等号的时候通过判断计算标志符的大小来跳转至乘法和除法两个分支。由于需要保持一位小数,所以在计算之前要对被乘数和被除数分别乘以 10 来保证计算不需要小数计算。如果计算的小数位数过多则计算结果就是零。

5、关键词:AT89S52,8155, 计算器,矩阵键盘第 1 章 引 言目前,51 系列单片机在我国的各行各业得到了广泛应用,各大专院校、职业培训学校,均开设了单片机原理与应用方面的课程,这是一门技术性和实践性很强的学科,必须通过一系列的软硬件实验、理论联系实际,才能学好、学懂,取得较好的学习效果。1.1 计算器概述1、加数和被加数的输入位数固定为 4 位;2、相加结果显示要考虑进位的输出显示;3、注意对“0 ”“9”、 “+”、 “-” 、 “*”、 “/”、 “”以外按键输入的处理;4、注意对相加结果进行十进制处理;5、输入加数和被加数时,显示器上显示的数字要像平时用的计算器输入一样,即:每

6、输入一个数字,原来显示的数字要往左移。2.2 设计要求(1 )基本功能:利用 89c51 作为主控器组成一个四则运算的计算器。(2 )发挥部分:增加一种以上的科学计算功能。(3 )可选器件:51 系列单片机、6264、7 段 LED 数码管、74LS244 或 74LS240、与非门等第四章 软件设计4.1 模块介绍该计程计价系统的软件设计分为以下几个模块:(1)主程序模块主程序主要完成初始化、检查有无按键按下、计算求答、以及调用显示等等。主程序的流程图如下所示。(2)键盘扫描及识别子程序键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程

7、序处理,处理结束再返回。其程序流程如图所示.(3)显示子程序采用动态显示,一位一位的轮流显示各显示管。我们采用了 8155 扩展,所以只须用 PA 口控制字段,PB 口的低位控制其位段。(4)计算程序根据输入的符号采取不同的算法,当然也是本程序的关键所在。对应输入数值,计算出输入量,供显示子程序使用,而对符号量则根据前次和后次的数值计算其结果。4.3 程序部分#include#include#define COM8155 XBYTE 0x7ff0#define PA8155 XBYTE 0x7ff1#define PB8155 XBYTE 0x7ff2#define PC8155 XBYTE

8、0x7ff3Code unsigned char ledmap=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char keydata,rr,k,flag2,fuhao;int count,number,num;int ge,shi,bai,qian;void key_scan(void); /键盘函数定义段;unsigned char key_tab(unsigned char k);void delay(void);void key_in(unsigned char k);、单片机计算器基本功能介绍:简单的加减乘除的运

9、算。时间显示功能,而且能实现计算器模块和时间模块之间的任意切换。按键音却换功能。原理;多功能单片机计算器是一个实现加减乘除的和时间功能的计算器,主要的硬件组成由,一个 AT89s52 单片机芯片,一个 LED 液晶(1602 液晶) ,一个 4*4 键盘,和 4 个特殊功能按键。一个时钟芯片(DS1302) ,一个蜂鸣器。单个硬件模块个的介绍AT89S52:主要控制芯片,它是由 8kflash,256BRAM,6 个中断源,详情参考 AT89S52 的技术文档.1602 液晶1602 液晶模块内部的字符发生存储器(CGROM)已经存储了 160 个不同的点阵字符图形,这些字符有:阿拉伯数字、英

10、文字母的大小写、常用的符号等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是 01000001B(41H) ,显示时模块把地址 41H中的点阵字符图形显示出来,我们就能看到字母“A” ,而且可以实现一些复杂的字符操作:1:清显示, 光标复位到地址 00H 位置,2 :光标和显示模式设置 光标移动方向,高电平右移,低电平左移,屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 3:显示开关控制,控制整体显示的开与关,高电平表示开显示,低电平表示关显示,控制光标的开与关,高电平表示有光标,低电平表示无光标,控制光标是否闪烁,高电平闪烁,低电平不闪烁 4:光标或显示移位,高

11、电平时移动显示的文字,低电平时移动光标 5:功能设置命令 DL:高电平时为 4 位总线,低电平时为 8 位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示 5x7 的点阵字符,高电平时显示 5x10 的点阵字符(高低电平在相应的指令上实现) ,详情可参考 1602 的技术文档。1602 采用标准的 16 脚接口: 第 1 脚:VSS 为地电源第 2 脚:VDD 接 5V 正电源第 3 脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影” ,使用时可以通过一个 10K 的电位器调整对比度第 4 脚:RS 为寄存器选择,高电平时

12、选择数据寄存器、低电平时选择指令寄存器。第 5 脚:RW 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS 和 RW 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 RW 为高电平时可以读忙信号,当 RS 为高电平 RW 为低电平时可以写入数据。第 6 脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。 第 714 脚:D0D7 为 8 位双向数据线。 第 1516 脚:空脚。1602 液晶和单片机的接法4*4 键盘,和 4 个特殊功能按键K(切换键) No(复位键)(时间设置键) C(清除键) +1 2 3 4 5 6 *7 8 9 %(除)/

13、+ 0 。 =前 4 个为特殊功能键,后十六个采用键盘扫描接法,扫描原理:首先给 p3 口赋 11111110(0xfe) ,然后再读取 p3 口的值,如果为 11101110(0xee)说明是第一排第一个被按下,如果是 11011110(0xde)说明是第一排第二个被按下,如果是10111110(0xbe )说明是第一排第三个被按下,如果是 0111110(0x7e)说明是第一排第四个被按下,判断二三四排的按键,都采用同样的方法,只要分别给 P3 口赋不同的值即可,在读取 p3口的值,在判断。用这样的方法即可实现 4*4 键盘的扫描,只要有键按下,就可以知道是那个键按下,通过这种方法可大大节

14、省单片机的 io 口的资源。详情可参考网上的键盘扫描原理时钟芯片(DS1302)DS1302 是 DALLAS 公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和 31 字节静态 RAM ,通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过 AM/PM 指示决定采用 24 或 12 小时格式 DS1302 与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线 1 RES 复位 2 I/O 数据线 3 SCLK 串行时钟时钟/RAM 的读/ 写数据以一个字节或多达31 个字节的字符组方式实时时钟具有能计算 2100 年之前的秒分时日日期

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号