单片机实现计算器c语言,!!!!单片机,一个小型计算器。。。。。。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//----jisuanqi.c-------//

#include

uchar code tableduan[]={ //数码表,方便调用

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,

0x76,0x38,0x3f,0

};

uchar code tablewei[]={

0xFE,0XFD,0XFB,

0XF7,0XEF,0XDF

};

long tempnum,num3; //以此为临时输入数,最终输出数

uchar num,temp,i,keydown,qing,fen,flag1,flag2; //flag1,flag2是两个标记为

uchar list[6]={0}; //好吧,我承认我不太会起名字。

uchar fenjie[6]={0}; //两个数组,一个是记录按键的每一位的数

void init(); //初始化函数//另一个是分解num3的;

void shudefenjie();

void display();

void getkey();

void getnum();

void fuzhi();

void qingchu();

long mi(uchar a);

void panduan();

void main()

{

init();

while(1)

{

display();

getkey();

}

}

///

void init()

{

duan=0; //初始化函数。

wei =0;

num=0;

keydown=0;

flag1=0;

flag2=1;

}

void getnum() /

{ //getnum()函数是getkey()函数的子函数

keydown++; //好吧,不知道这样说是否正确。

if(keydown==7) //我用的是键盘扫描的方法,当一个键被按下时;

keydown=1; //首先,我们记录按键次数,当按键达到7时被置1;

switch(num) //好吧,其实我不知道到底是到7还是到6置零或置一,

{ //但是运行没有出错,就成了。

case 13: //13代表着清零。当十三按下时,清零。

keydown=0; //14代表着=,此时输出结果。

num2=0; //15,12,11,10,依次代表加,减,乘,除。

num3=0; //0,1,2,3,4,5,6,7,8,9,就代表本身。

tempnum=0; //好吧,每个句子都有子函数,我不知道假如不写子函数它们到底多长。

for(i=0;i<6;i++) //当按下=时,

{ //它将首先判断,你最近的一次运算符是什么,比如说加减乘除

list[i]=0; //它能判断,因为,不同的运算符对应不同的标志,我用flag2标志。

} //flag2=1,2,3,4分别对应着加减乘除,假如你按了加又按了减,那么flag2标志最终将是2;

flag1=0; //然后是15,12,11,10,分别对应加减乘除,你会发现,它们同样也会检测最近一次运算符是什么

clear(); //然后运算,但是不同之处在于,它们判断后改变了flag2的值。

break; //之所以把0单独拉出来, 因为我们不会希望用户输入00000吧。

case 14: //每次判断后数的分解(shudefenjie())函数,其实作用是不希望你

panduan(); //按下加减乘除后,屏幕一片空白,就是为了好看, 也是为了让用户

shudefenjie(); //知道,他们输入的数确实是这个。

flag1=1; //你将看到flag1的值被改变。

qingchu(); //在display()函数中,实际上我设置了,输入屏幕,输出屏幕

break; //当然,我也想弄个欢迎屏幕,不过觉得没必要。

case 15: //flag1=0时,你将看到,它执行的时“输入屏幕”所以,事实上,你

panduan(); //每输入一个数(有用的0,1,2,3,4,5,6,7,8,9)将把flag1置0,维持

flag2=1; // 输入屏幕

shudefenjie(); //而加减乘除,及等于等键的按下,将会调入输出屏幕,即flag1=1;

含C源程序、Proteus原理图、PCB图、报告 本设计是实现一个有加、减、乘、除、函数计算功能和电子时钟的多功能计算器。它的硬件主要由四部分组成,一个STC89C52单片机芯片,一块LCD1602液晶显示器,一个4*4的键盘,各种功能设置按键。 软件设计采用C语言编写,实现了14位浮点数内的加、减、乘、除基本的四则运算,带有‘sin’、‘cos’、‘tan’、‘exp’、‘ln’、‘lg’、‘倒数’、‘x^y’、‘sqrt’、‘fmod ’10个常用数学函数运算。此外该计算器除了计算功能以外还具有时钟的功能 设计实物操作说明 1)、开机默认为时钟模式,按CS键在计算器和时钟模式之间切换。 2)、时钟:按TS&s键可以进行时间的设置,输入格式为 xx。xx。xx , 按‘=’键确认,按cs退出设置。 3)、计算器: (1)、’0‘~’9‘、‘.’为数字键;+ - * /为运算符号;C 是计算器复位键; DEL退格键撤销上次键入,可连续撤销 M+ 存储有上次运算计算结果和数据Men,按M+输出上次结果, 按TS&s 后再按此键输出Men,’M+‘ 加‘TS&s’加‘M+'对数据Men进行更新; TS&s键在计算器模式为复用功能键,按 一下它在按数字键可以调用数字键所代表的 函数,可以在复用和非复用模式之间转换;标志在左下角 (2)、运算的流程 :(符号)A 运算符 (符号)B A、B是参与运算的数据,可以是键入的 数字,也可 以是函数 除了2、3的)和 M+中的数据; 符号即+、-号,可带可不带;如果不是按等号键得结果而是按运算符,则 本次的运算结果和按的这个运算符成为下次的A 和运算符,从而进行连续计算。 函数说明:Func (符号)C Func为函数,符号为+-,C只能是数字、M+、π 另:fmod和想x^y函数因为要两个参数,当运算符使用。 函数:sin 正弦函数 cos余弦函数 tan正切函数 exp 以e为底的指数函数 ln 自然对数值 lg 以10为底的对数 sqrt 平方根 dao 倒数 π 圆周率当数据使用,前面可以带加权,例 0.5π 度 角度输入 (双参数) x^y x的y次方 (双参数) f% A/B的余数(双精度)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值