51单片机如何做出科学计算器 10C

AT89C51单片机 LCD1602 4*4矩阵键盘 8个独立按键 如何做出科学计算器

0

4个回答

0
0

普通加减乘除的还行,科学计算器没戏,

0

我觉得还是可以实现的,但首先你得明确你所设计的计算器需要有哪些计算功能。毕竟单片机什么的天生就是用来做运算的,最多只是运算速度的问题。对于一些数需要的精度过高
或者数字过大,可以使用字节拼接或科学记数法的方法实现

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
《手把手教你学51单片机》程序资料
本目录下提供的是《手把手教你学51单片机(C语言版)》教材中所有例程与作业习题的源代码。 请将整个目录复制到电脑硬盘上使用,如直接在光盘路径下打开工程可能会导致软件报错。 运行目录下的Clean.bat可以清理程序编译过程中产生的中间文件和临时文件。 lesson2 (第2章): 点亮一个LED示例,所在章节2.4 lesson3 (第3章): LED闪烁示例,所在章节3.5 lesson4 (第4章): 4_1:用P0口控制LED的示例,所在章节4.8 4_2:用P0口控制实现流水灯效果,所在章节4.8 4_t4:作业题4,逐次右移的流水灯效果,所在章节4.9 4_t5:作业题5,左右往复移动的流水灯效果,所在章节4.9 lesson5 (第5章): 5_1:基于定时器查询模式的LED闪烁,所在章节5.2.3 5_2:静态点亮数码管的某几段,所在章节5.3.2 5_3:数码管静态显示一位字符,所在章节5.3.3 5_t3:作业题3,定时器查询模式实现左右移动的流水灯,所在章节5.4 5_t5:作业题5,变更lesson5_3的正计数为倒计数,所在章节5.4 lesson6 (第6章): 6_1:数码管动态显示原理示例(if...else if...语句示例),所在章节6.4 6_2:数码管动态显示原理示例(switch...case...语句示例),所在章节6.4 6_3:基于中断带消隐的数码管动态显示示例,所在章节6.5 6_t4:作业题4,在lesson6_3多位数字显示的基础上不显示高位的0,所在章节6.6 6_t5:作业题5,变更lesson6_3的正计数为倒计数,所在章节6.6 lesson7 (第7章): 7_1:基于数码管计时程序的静态变量演示,所在章节7.2 7_2:点亮LED点阵上的一个点,所在章节7.3 7_3:点亮LED点阵上的一行,所在章节7.3 7_4:点亮LED点阵上的全部点,所在章节7.3 7_5:LED点阵显示静态图形,所在章节7.4 7_6:LED点阵显示纵向移动的动画,所在章节7.5.1 7_6_h:LED点阵显示横向移动的动画(掉转板子方向的取巧方式),所在章节7.5.2 7_7:LED点阵显示横向移动的动画,所在章节7.5.2 7_t3:作业题3,lesson7_6的向上移动改为向下移动,所在章节7.6 7_t4:作业题4,lesson7_7的向左移动改为向右移动,所在章节7.6 7_t5:作业题5,基于LED点阵的9~0倒计数,所在章节7.6 7_t6:作业题6,独立LED、数码管、点阵LED同时全亮,所在章节7.6 lesson8 (第8章): 8_1:基于数码管计时程序的函数调用演示,所在章节8.2 8_2:按键基本原理演示例程,所在章节8.4.3 8_3:独立按键扫描原理演示例程,所在章节8.4.3 8_4:独立按键消抖原理演示例程,所在章节8.4.4 8_5:独立按键扫描并消抖的演示例程,所在章节8.4.4 8_6:矩阵按键扫描并消抖的演示例程,所在章节8.4.5 8_7:基于矩阵按键和数码管实现的简易加法计算器,所在章节8.5 8_t4:作业题4,变更lesson8_5的递增计数为递减计数,所在章节8.6 8_t5:作业题5,在lesson8_7基础上实现简易加减计算器,所在章节8.6 lesson9 (第9章): 9_1:步进电机驱动的基础示例,所在章节9.3.3 9_2:步进电机转动任意角度的示例,所在章节9.3.4 9_3:实用的步进电机驱动示例,所在章节9.3.5 9_4:按键控制步进电机转动的示例,所在章节9.3.6 9_5:蜂鸣器驱动的基础示例,所在章节9.4 9_6:蜂鸣器演奏简单乐谱——“两只老虎”,所在章节9.4 lesson10 (第10章): 10_1:基于数码管显示的数字秒表,所在章节10.1 10_2:基于PWM方式控制LED的亮度,所在章节10.2 10_3:基于PWM方式控制LED实现呼吸灯效果,所在章节10.2 10_4:交通信号灯示例,所在章节10.3 10_5:长短按键/连续按键功能实现示例,所在章节10.5 10_t3:作业题3,数码管计时与流水灯同时运行的示例,所在章节10.6 lesson11 (第11章): 11_1:普通IO口模拟实现串口通信的示例,所在章节11.4 11_2:单片机硬件UART查询方式实现串口通信的示例,所在章节11.5.3 11_3:单片机硬件UART中断方式实现串口通信的示例,所在章节11.5.3 11_4:UART串口通信及控制数码管显示的示例,所在章节11.6 11_t5:作业题5,UART串口控制流水灯流动和停止,所在章节11.7 11_t6:作业题6,UART串口控制蜂鸣器的开关,所在章节11.7 lesson12 (第12章): 12_1:指针作为函数参数的示例,所在章节12.1 12_2:指向变量的指针与变量关系的示例,所在章节12.2 12_3:指针、字符串、字符数组、ASCII码演示示例,所在章节12.3 12_4:1602液晶基本操作演示示例,所在章节12.4 lesson13 (第13章): 13_1:1602液晶显示两行字符串,并实现整屏的重复左移,所在章节13.2 13_2:多c文件示例,1602液晶显示两行字符串,并实现整屏的重复左移,所在章节13.3 13_3:整型数为操作数的简易+-*/计算器,所在章节13.4 13_4:基于帧模式的实用串口程序示例,所在章节13.5 13_t2:作业题2,1602液晶显示两行字符串,并实现整屏的重复右移,所在章节13.6 lesson14 (第14章): 14_1:寻址I2C总线上存在的和不存在的地址,将应答状态显示到液晶上,所在章节14.2 14_2:用单字节读写模式访问EEPROM,每次+1后写回,所在章节14.3.1 14_3:用多字节读写模式访问EEPROM,依次+1,+2,+3...后写回,所在章节14.3.2 14_4:用连续读与分页写模式访问EEPROM,依次+1,+2,+3...后写回,所在章节14.3.3 14_5:读取EEPROM中的数据显示到液晶,并可通过UART修改EEPROM中的数据,所在章节14.4 14_t3:作业题3,以lesson10_4为基础实现可通过UART设定时间的交通灯示例,所在章节14.5 14_t4:作业题4,基于液晶、按键、EEPROM的密码锁示例,所在章节14.5 lesson15 (第15章): 15_1:用单次读写模式访问DS1302,并将日期时间显示在液晶上,所在章节15.3.4 15_2:用突发读写模式访问DS1302,并将日期时间显示在液晶上,所在章节15.3.5 15_3:DS1302实现简易电子钟,通过按键校时,所在章节15.5 lesson16 (第16章): 16_1:接收NEC协议的红外编码并将用户码和键码显示到数码管上,所在章节16.3 16_2:控制DS18B20测量温度并将温度值显示到液晶上,所在章节16.4 16_t2:作业题2,用遥控器控制步进电机正反转,所在章节16.5 16_t4:作业题4,带温度显示的电子钟,所在章节16.5 lesson17 (第17章): 17_1:将模拟输入通道0、1、3的电压值显示到液晶上,所在章节17.4 17_2:由按键控制DA输出可调电压值,所在章节17.6 17_3:由按键控制DA输出可变化的波形,所在章节17.7 17_t3:作业题3,可调频率的信号发生器,所在章节17.8 lesson18 (第18章): 18_1:RS485基本示例,接收任意数据帧并添加回车换行后送回,所在章节18.1 18_2:基于RS485的Modbus通信示例,支持寄存器读写操作,所在章节18.3 18_t3:作业题3,基于Modbus协议实现电子钟校时,所在章节18.4 lesson19 (第19章): 19_1:多功能电子钟例程,所在章节19.4
基于51单片机的完整版计算器仿真
本程序实现了完整版计算器,包括加减乘除、带小数点显示、带小数点输入、此外还有带时钟功能。当然也可以实现函数功能,只是东西太多了,放不开了。。就没有加上。以后在上传吧.带仿真文件的,一定要用Proteus7.8版本,或者以上,否则可能版本过低,仿真出现问题。
51单片机计算器的编写及实现
code:/* S16 S12 S8 S4分别是123+ S15 S11 S7 S3分别是456- S14 S10 S6 S2分别是789* S13 S9 S5 S1分别是0 CLR = / */ /* 实现两个数的运算,每个数的位数至少可以八位 */ #include typedef unsigned char uint8; typedef unsigned int uint1
基于51单片机和LCD1602的计算器
具有记忆功能的简易计算器,支持加减乘除和括号运算,且可判断算式的正确性。
基于51单片机的计算器程序
用51单片机制作计算器 #include //í·???t #define uint unsigned int #define uchar unsigned char sbit lcden=P2^7; //LCD1602????òy?? sbit rs=P2^6; sbit rw=P2^5; char i,j,temp,num,num_1; long a,b,c; //a,μú
51单片机的完整计算器汇编语言程序
;$$$$变量定义区(30H-)$$$$$ OUTBIT EQU P2 ; 位控制口 OUTSEG EQU P0 ; 段控制口 ROW_COLUMN EQU P1 ; 读键盘行线口 VARIABLE_DELAY1 EQU 30H        ;延时变量 VARIABLE_DELAY2 EQU 31H VARIABLE_STORE1        EQU 32H        ;存储第...
基于51单片机的智能计算器
        其实,说智能也不算智能,就是在计算器上加上了日历、时钟和温度显示而已。具体用到的也是51很基础的模块,一个键盘,一个1602,温度显示那块用到了DS18B20,硬件调试的部分也很少,主要是代码的书写。 功能简介: 1、打开电源时,显示欢迎字样 2、计算器功能 3、日历及时钟功能 4、温度实时测量 然后用代码依次实现各个功能 刚开始只用矩阵键盘来控制计算器的时候是很简单...
用51单片机实现计算器功能
用51单片机实现整数的加减乘除,通过矩阵按键实现数据的输入和处理,通过8个数码管实现数据及结果的显示。
基于51单片机的矩阵计算器设计
      当初本科的毕业设计不是很完美,一直想把它完善一下,这学期刚开始有点时间,就以一个小项目的方式,综合自己这一年多来的代码阅读收获,重写了这个工程。一,平台的重新搭建Ø  在win7上重新安装了proteus7.8用于仿真阶段的测试,并从以前的资料中找到了仿真模型;Ø  为了生成单片机可执行文件,选择使用了Ubuntu系统下的sdcc编译器,安装使用都很简单(想多在Ubuntu下进行编程)...
基于51单片机的计算器设计
能做计算器的单片机 单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。本次设计是设计一个简易计算器,能够进行多位的加减乘除运算。它主要由51单片机的数码管,键盘等模块组成。本计算器是将键盘输入信息经处理通过缓存,送入数码管显示,数码管采用动态扫描方式,计算功能通过软件实现,用C语言对单片机可编芯片进行编程...
基于51单片机的简单计算器
在上一篇中,我们已经说过了基于51单片机的简单拨号器,在下边,我们将写一个计算器程序,原理很简单,只需要在拨号器的基础上,算出拨号器所表示的数字,并进行计算即可。 代码如下; #include"reg51.h" #include<intrins.h> typedef unsigned char u8; //对数据类型进行声明定义 typedef unsigned...
51 单片机 计算器 简单加减乘除
一个基于51单片机做的课程设计 源代码 原理图PCB 附带开题报告 到手参考即做
51单片机定时器计算器
到处收集的4个51单片机计时器计算器,输入想要的额计时器配置,可自动生成配置计时器的代码,复制粘贴即可用。
基于51单片机的科学计算器
科学计算器1.任务 设计制作一个科学计算器。 2. 要求 (1)按数字 0-9 时应发出蜂鸣器声音,数越大,频率越高。 (20 分) (2) 完成任意两位数(范围 0-99)的加减乘除运算,结果只需显示整数部分,但如果结果为负数应显示负号。 (20 分) (3) 完成任意两位数(范围 0-99)的加减乘除运算, 结果要求有小数部分,显示为 xxxx.xxxx(小数点前不超过四位,小数点后若多于四位...
基于51单片机的简易计算器制作
基于51单片机的简易计算器制作 51单片机可以实现的功能很多,今天笔者介绍一种使用4*4矩阵键盘和八位共阴数码制作的简易计算器。数码管使用的是CL3641AH。原理图如下: S15 S11 S7 S3分别是4,5,6,- S14 S10 S6 S2分别是7,8,9,* /* S16 S12 S8 S4分别是1,2,3,+ ​``` S15 S11 S7 S3分别是4,5,6,- S1...
51单片机——简易计算器设计(源码、protues仿真)
实现一简易的加减法计算器的功能,要求该计算器能够进行6位无符号数的加减计算(也可以乘除)
51单片机_LCD1602+计算器
这个是本人写的51单片机基于LCD1602的计算器代码,由矩阵键盘控制按下的数或运。算符
51单片机计算器代码
51计算器程序#include<reg52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int sbit lcden=P3^4; sbit lcdrw=P3^6; sbit lcdrs=P3^5; uchar num,temp,jia=0,cheng=0,chu=0,jian=0,qing=0; uint key,key1,shu; uchar fuhao,flag1,flag=0; uchar table[]={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,}; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=114;y>0;y--); } bit lcd_bz() { bit result; lcdrs = 0; lcdrw= 1; lcden = 1; _nop_(); _nop_(); _nop_(); _nop_(); result=(bit)(P0&0x80;); lcden=0; return result; } void write_com(uchar com) { while(lcd_bz()); lcdrs=0; lcden=0; lcdrw=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; } void write_date(uchar date) { while(lcd_bz()); lcdrs=1; lcden=0; lcdrw=0; P0=date; delay(5); lcden=1; delay(5); lcden=0; } void lcd_init() { lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); } void keyscan() { P3=0xfe; temp=P3; temp=temp&0xf0; while(temp!=0xf0) { delay(5); temp=P3; temp=temp&0xf0; while(temp!=0xf0) { temp=P3; switch(temp) { case 0xee:key=1;num=0;break; case 0xde:key=2;num=0;break; case 0xbe:key=3;num=0;break; case 0x7e:num=1;break; //¼ÓºÅ } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } } } P3=0xfd; temp=P3; temp=temp&0xf0; while(temp!=0xf0) { delay(5); temp=P3; temp=temp&0xf0; while(temp!=0xf0) { temp=P3; switch(temp) { case 0xed:key=4;num=0;break; case 0xdd:key=5;num=0;break; case 0xbd:key=6;num=0;break; case 0x7d:num=2;break; //¼õºÅ } while( temp!=0xf0) { temp=P3; temp=temp&0xf0; } } } P3=0xfb; temp=P3; temp=temp&0xf0; while(temp!=0xf0) { delay(5); temp=P3; temp=temp&0xf0; while(temp!=0xf0) { temp=P3; switch(temp) { case 0xeb:key=7;num=0;break; case 0xdb:key=8;num=0;break; case 0xbb:key=9;num=0;break; case 0x7b:num=3;break; //³ËºÅ } while( temp!=0xf0) { temp=P3; temp=temp&0xf0; } } } P3=0xf7; temp=P3; temp=temp&0xf0; while(temp!=0xf0) { delay(5); temp=P3; temp=temp&0xf0; while(temp!=0xf0) { temp=P3; switch(temp) { case 0xe7:key=0;num=0;break; case 0xd7:num=6;break; //Çå³ýºÅ case 0xb7:num=5;break; //µÈºÅ case 0x77:num=4;break; //³ýºÅ } while( temp!=0xf0) { temp=P3; temp=temp&0xf0; } } } } void display0(uint shu) { uint ge; ge=shu; write_date(0x30+ge); } void display1(uint shu) { uint shi,ge; shi=shu/10; ge=shu; write_date(0x30+shi); write_date(0x30+ge); } void display2(uint shu) { uint bai,shi,ge; bai=shu/100; shi=shu0/10; ge=shu; write_date(0x30+bai); write_date(0x30+shi); write_date(0x30+ge); } void display3(uint shu) { uint qian,bai,shi,ge; qian=shu/1000; bai=shu00/100; shi=shu0/10; ge=shu; write_date(0x30+qian); write_date(0x30+bai); write_date(0x30+shi); write_date(0x30+ge); } void display4(uint shu) { uint wan,qian,bai,shi,ge; wan=shu/10000; qian=shu000/1000; bai=shu00/100; shi=shu0/10; ge=shu; write_date(0x30+wan); write_date(0x30+qian); write_date(0x30+bai); write_date(0x30+shi); write_date(0x30+ge); } void display_key1(uint result) { if(flag1==1) { write_com(0x01); flag1=0; } shu=result; write_com(0x80); if(result<10) display0(result); if(result>=10&&result;<100) display1(result); if(result>=100&&result;<1000) display2(result); if(result>=1000&&result;<10000) display3(result); if(result>=10000) display4(result); } void dis_key(result) { if(result<10) display0(result); if(result>=10&&result;<100) display1(result); if(result>=100&&result;<1000) display2(result); if(result>=1000&&result;<10000) display3(result); if(result>=10000) display4(result); } void display_key(uint result) { if(shu<10) { write_com(0x80+2); dis_key(result); } if(shu>=10&&shu;<100) { write_com(0x80+3); dis_key(result); } if(shu>=100&&shu;<1000) { write_com(0x80+4); dis_key(result); } if(shu>=1000&&shu;<10000) { write_com(0x80+5); dis_key(result); } if(shu>=10000) { write_com(0x80+6); dis_key(result); } } void display_fuhao() { switch(fuhao) { case 1:write_date(0x2b);break; case 2:write_date(0x2d);break; case 3:write_date(0x2a);break; case 4:write_date(0x2f);break; } fuhao=0; } void fuhao_pan() { if(flag1==1) { flag1=0; write_com(0x01); write_com(0x80+1); display_fuhao(); } if(shu<10) write_com(0x80+1); if(shu>=10&&shu;<100) write_com(0x80+2); if(shu>=100&&shu;<1000) write_com(0x80+3); if(shu>=1000&&shu;<10000) write_com(0x80+4); if(shu>=10000) write_com(0x80+5); display_fuhao(); flag=1; } void fuhao_deng() { write_com(0x80+0x40); write_date(0x3d); flag1=1; flag=0; } void display_result(uint result) { write_com(0x80+0x40+1); if(result<10) display0(result); if(result>=10&&result;<100) display1(result); if(result>=100&&result;<1000) display2(result); if(result>=1000&&result;<10000) display3(result); if(result>=10000) display4(result); } void jia1() { jia=1; jian=cheng=chu=qing=0; key1=key; fuhao=1; fuhao_pan(); } void jian1() { jian=1; jia=cheng=chu=qing=0; key1=key; fuhao=2; fuhao_pan(); } void cheng1() { cheng=1; jia=jian=chu=qing=0; key1=key; fuhao=3; fuhao_pan(); } void chu1() { chu=1; jia=cheng=jian=qing=0; key1=key; fuhao=4; fuhao_pan(); } void qing1() { lcd_init(); } void deng1() { if(jia) key=key1+key; if(jian) key=key1-key; if(cheng) key=key1*key; if(chu) key=key1/key; fuhao_deng(); display_result(key); jia=jian=cheng=chu=qing=0; } void deal() { switch(num) { case 0: { switch(flag) { case 0:display_key1(key);break; case 1:display_key(key);break; } } break; case 1:jia1();break; case 2:jian1();break; case 3:cheng1();break; case 4:chu1();break; case 5:deng1();break; case 6:qing1();break; } } void main() { lcd_init(); while(1) { keyscan(); deal(); } }
基于51单片机和四位数码管的智能计算器算法
前段时间,本人写了基于51单片机和四位数码管的智能计算器算法,由于时间关系,算法没能实现小数部分,但已为小数部分留出空间,有兴趣的可以添加进去 下面是源代码(矩阵键盘的检测部分参考了普中科技的实验例程)                                                                               #include "reg5
51单片机自学--可连续运算的加减乘除数码管显示计算器
教程及网络上大部分只有单一简单的4则运算的例子,这里写一个可以连续运算功能的,清零则重新开始.代码如下: 可在=运算后还能连续运算,除非清零从新开始,都可以连续运算,如:1+2+3+4+5+6+7+8+9=45-5=40+1+2+10=53可以做这样的连续运算。 代码可优化: 运算符选择 减少判断语句与次数,使整个代码更简约,绝对经典连续运算功能之作,改变输出也可节省。优...
基于51单片机的简易计算器
1.简介 本计算器是以MCS-51系列AT89C51单片机为核心构成的简易计算器系统。该系统通过单片机控制,实现对4*4键盘扫描进行实时的按键检测,并由LCD1602显示屏将过程与结果显示出来。 2.硬件原理图 硬件主要由四部分组成 单片机最小系统 4*4矩阵键盘 LCD1602显示屏 系统电源 3.程序设计 (1)矩阵键盘驱动程序 /*---------------------------...
基于51单片机的简单计算器(数码管显示,附仿真图)
使用6位数码管显示,可以实现加减乘除,当计算结果超过所能显示的位数时,显示错误。
51单片机汇编计算器
计算器,实现简单计算功能,用的是汇编代码写的
基于51的串口计算器程序
#include <reg52.h> #include <intrins.h> unsigned char tmp; unsigned char data1 = 0; unsigned int num1 = 0,num2 = 0,num3 = 0,fu = 0; int q[100] = {0}; int printf_flag = 0; int a = 0; int c = 0; void send_char(unsigned char txd); void send(unsigned int u); void main() { // EA = 1; //总开关 // ES = 1; //IE寄存器 通信开关 SCON = 0x50; // 设定串行口工作方式 0101 0000 工作方式1 TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率 TH1 = 0xFD; // 波特率9600 TL1 = 0xFD; PCON = 0x00; // 波特率不倍增 TR1 = 1; // 启动定时器1 while(1) { if(RI == 1) // 是否有数据到来 { RI = 0; data1 = SBUF; //P1 = data1; // 数据传送到P0口 // send_char(data1); // 回传接收到的数据 if(( data1>='0') && (data1<='9')) { num1 = 10*num1+(data1 -'0'); } else if(data1 == '+'||data1 =='-'||data1 == '*'|| data1 == '/') { fu = data1; num2 = num1; num1 = 0; } else if(data1 == '='&&fu; == '+')// { num3 = num1+num2; printf_flag = 1; } else if(data1 == '='&&fu; == '-')// &&fu; == '-' { num3 = num2-num1; printf_flag = 1; } else if(data1 == '='&&fu; == '*')//&&fu; == '*' { num3 = num1*num2; printf_flag = 1; } else if(data1 == '='&&fu; == '/')// '&&fu; == '/' { num3 = num1/num2; printf_flag = 1; } if(printf_flag == 1) { send(num3); num1=0; num2=0; num3=0; // fu=0; // data1=0; printf_flag = 0; } } } } 更多代码详见文件
基于51单片机的液晶显示屏LCD1602简单计算器程序
/*     S16 S12 S8 S4分别是123+ S15 S11 S7 S3分别是456- S14 S10 S6 S2分别是789* S13 S9 S5 S1分别是0 CE =/*//* 实现两个数的运算,每个数的位数至少可以八位 (在液晶显示屏上显示) */#include&amp;lt;reg52.h&amp;gt; typedef unsigned char uint8;typedef unsig...
基于51单片机的简易计算器设计
实现三位数计算(0-999加减乘除)、电子时钟(年月日显示)和秒表计时功能(十条记录保存)。
51单片机—计算器(包含小数计算)
51单片机:计算器(包含小数计算) 编写语言:C 运行情况:完美运行,尚未发现bug 备注:同普通实现小数计算程序不一样(浮点型数据计算存在精度丢失的情况),本程序全部采用整形进行计算,对小数点进行记录,最后显示再数码管上,保留有3位小数(可自行设置)
基于51单片机的超强科学计算器(数字可处理10e-38~10e38,7位有效数字,精确到小数后六位)
基于51单片机的超强科学计算器,用LCD1602显示, 键盘6X6共36个键,可以实现一般科学计算器的大部分功能,具体指标如下: 1、数字可处理10e-38~10e38 2、7位有效数字 3、精确到小数后六位 4、操作出错提醒 5、用户可很方便的自行DIY增加功能
基于51单片机的红外遥控计算器程序(附电路图
基于51单片机的红外遥控计算器程序(附电路图
基于51单片机的c语言编写的计算器程序(4x4按键)
c语言编写的基于51单片机的计算器程序(4x4按键);0~9十个数字键,加减乘除四个键,等号按键和清零按键。实现长度最长为6位数的加、减、乘、除,可根据自己的硬件,进行改写,增加计算数字的长度。
80c51单片机4位数码管计算器设计
工作原理:单片机具有较强的计算功能,利用控制器上的键盘显示即可设计简单的计算器。把16个键分别赋予0~9十个数字键、+号键、—号键、×号键、÷号键、=键等,如键不够,也可以采用双功能键方式,即按下双功能键Shift,则下一次按的键为第二功能键。根据平时操作的习惯,设计出具有加减乘除运算的电子计算器,输入为4位,输出为8位,分为二次输出,利用等于键分别显示高4位及低4位。 设计要求: 1.参加运算的数据由按键输入; 2.要求能进行四位十进制数的加减乘除运算; 3.要求能进行双字节十六进制数的加减乘除运算; 4.运算结果大于四位时,采用自动分屏显示。
51单片机计算器(程序+AD+仿真)
51单片机计算器(程序+AD+仿真)本人花3周完成,已经打样出板子
基于单片机和LCD12864的简易计算器
本设计以单片机为核心,用LCD12864显示编写而成的简易计算器,能实现10以内的加减乘除,硬件电路采用Protues搭建,程序采用Keil编写,用两者的连调实现计算器的效果。
基于单片机的智能计算器
这是一款基于89C51单片机的智能计算器程序,使用的语言是C语言
单片机: 简易计算器的实现(键盘)
利用矩阵键盘实现一个简易的计算器。 为了简化问题,我们假设只支持小于100的非负整数之间的加、减、乘的运算,并且支持连续运算(结果的数值可以再进行运算)。 本程序中C为加号,D为减号,E为乘号,F为等于号。 代码中有详细的注释。 /* 注:本程序 C 为+, D 为- E为* F 为=号,支持非负整数连续运算。 输入的数值小于100,运算结果不超过1000. by Tach ----
51单片机实现计算器
16按键模拟计算器,1602显示 含protuse图 、
手把手教你学51单片机-C语言版(宋雪松).PDF
《手把手教你学 51 单片机-C 语言版》是一本由金沙滩工作室宋雪松老师等人员编著、由清华大学出版社正式出版的单片机学习教材。
51单片机波特率计算器
51单片机波特率计算器 51单片机波特率计算器 51单片机波特率计算器 51单片机波特率计算器
单片机c51设计简易计算器数码管显示
本实验设计的计算器可完成加减乘除四则运算,压缩包中含有纤细资料,包括protuse仿真,PCB板图设计和源代码。程序简单易懂。
51定时器计算器
51定时器计算,C51单片机程序编程时使用,方便计算定时器的初值,对使用定时器计时的设计起很大的帮助,只要输入系统频率,定时器类型和需定时多少ms,就可以得到一个数值,直接代入就可以。