ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:16.26KB ,
资源ID:10243702      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10243702.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机计算器程序.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机计算器程序.docx

1、单片机计算器程序/*89C51单片机【计算器】C语言程序*/* P2位选 P0段选 时钟 12MHZ */#include /*包含的头文件 */#define uchar unsigned char /* 宏定义 */#define uint unsigned int uchar Led17 = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00; /* 数码管段选 */long float Number=0,0,0,0; /* 数码管显示位控

2、制寄存器 */ uchar A=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;long int D = 0,0,0,0,0,0,0,0; /数码管显示内容寄存器 uchar code C = 0x0, 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F; /* 数码管位选 */ /* 列扫描控制 LED 1位 2位 3位 4位 5位 6位 7位 8位 */ uchar k=16; /* 按键对外控制 */uchar b; /* 按键【+】【-】 【*】 【/】对外的控制 */long float Out_put; /*

3、 定义变量【Out_put】作为结果 */uchar e=0; /* 数字的位存储递进的控制 */ uchar g=0; /* 运算方式的控制变量 */uchar L=0; /* 运算方式的控制变量 */uchar g1=0; /* 运算方式的控制变量 */uchar g2=0; /* 运算方式的控制变量 */uchar g3=0; /* 运算方式的控制变量 */uchar g4=0; /* 运算方式的控制变量 */char j=-1; /* 与Number数组连用 */uchar m=0; /* 按键【=】的控制变量 */uchar n=0; /* 按键【.】的控制变量 */uchar x=

4、0; /* 小数点个数的记录变量 */uchar xo=0; /* 控制开始计数小数点的变量 */long int result;void Delay(uint o) /* 延时函数 delay() 的定义 */ uint i,j; for(i = 0; i o; i+) for(j = 0; j 121; j+) ; void show(long float Out_put) uchar r; uchar k; long int q,p; uchar s=0; uchar i; long int temp; temp=Out_put ; if( (Out_put-temp)!=0) resu

5、lt=Out_put*10000; r=4; else result=Out_put; r=0; p=result; if(m=1) if(result0) result=-result; p=result; q=result; for(i=1;i=0&k=11&k=15&b=1) switch(k) case 11: g1+;g+;if(g2=1) L=1; if(g3=1) L=2; if(g4=1) L=3;break; / + case 12: g2+;g+;if(g1=1) L=4; if(g3=1) L=5; if(g4=1) L=6;break; / - case 13: g3+

6、;g+;if(g1=1) L=7; if(g2=1) L=8; if(g4=1) L=9;break; / * case 14: g4+;g+;if(g1=1) L=10;if(g2=1) L=11;if(g3=1) L=12;break; / / j+; Numberj=*D7+1000000*D6+100000*D5+10000*D4+1000*D3+100*D2+10*D1+D0; for(i=1;i=x;i+) Numberj=(float)Numberj/10; x=0; for(i=0;i=7;i+) / 数据存储器清零 Di=0; for(i=0;i=8;i+) / 数据显示清零

7、 Ai=0x00; b=0;e=0;xo=0; void Key_scan() / 键盘扫描函数 Key_scan() unsigned char X,Y,Z; P3 = 0xff; P3 = 0x0f; /先对P2置数 行扫描 if(P3!=0x0f) /判断是否有键按下 Delay(20); /延时10ms,软件去干扰 if(P3!=0x0f) /确认按键按下; X=P3; /保存行扫描时有键按下时状态 P3=0xf0; /列扫描 Y=P3; /保存列扫描时有键按下时状态 Z=X|Y; /取出键值 while(P3!=0xf0); / 按键防止抖动 switch ( Z ) /判断键值(那

8、一个键按下) case 0xe7: k=0; e+; In_put(); break; /数字 【0】 case 0xd7: k=1; e+; In_put(); break; /数字 【1】 case 0xdb: k=2; e+; In_put(); break; /数字 【2】 case 0xdd: k=3; e+; In_put(); break; /数字 【3】 case 0xb7: k=4; e+; In_put(); break; /数字 【4】 case 0xbb: k=5; e+; In_put(); break; /数字 【5】 case 0xbd: k=6; e+; In_

9、put(); break; /数字 【6】 case 0x77: k=7; e+; In_put(); break; /数字【7】 case 0x7b: k=8; e+; In_put(); break; /数字 【8】 case 0x7d: k=9; e+; In_put(); break; /数字 【9】 case 0xeb: n=1; In_put(); break; /小数点 【 .】 case 0x7e: k=11;b=1; In_put(); break; /字符 【B +】 case 0xbe: k=12;b=1; In_put(); break; /字符 【C -】 case

10、0xde: k=13;b=1; In_put(); break; /字符 【D *】 case 0xee: k=14;b=1; In_put(); break; /字符 【E /】 case 0xed: k=15;m=1;b=1;In_put();break; /字符 【F =】 void Yun_suan() if(g1=1&g=1) Out_put=Number0+Number1; if(g2=1&g=1) Out_put=Number0-Number1; if(g3=1&g=1) Out_put=Number0*Number1; if(g4=1&g=1) Out_put=Number0/

11、Number1; if(g1=2&g=2) Out_put=Number0+Number1+Number2; if(g2=2&g=2) Out_put=Number0-Number1-Number2; if(g3=2&g=2) Out_put=Number0*Number1*Number2; if(g4=2&g=2) Out_put=Number0/Number1/Number2; if(L=1) Out_put=Number0-Number1+Number2; if(L=2) Out_put=Number0*Number1+Number2; if(L=3) Out_put=Number0/N

12、umber1+Number2; if(L=4) Out_put=Number0+Number1-Number2; if(L=5) Out_put=Number0*Number1-Number2; if(L=6) Out_put=Number0/Number1-Number2; if(L=7) Out_put=Number0+Number1*Number2; if(L=8) Out_put=Number0-Number1*Number2; if(L=9) Out_put=Number0/Number1*Number2; if(L=10) Out_put=Number0+Number1/Numbe

13、r2; if(L=11) Out_put=Number0-Number1/Number2; if(L=12) Out_put=Number0*Number1/Number2; void Xian_shi() if(m!=1) Key_scan(); /* 显示函数 与Ai有关 */ P0=A0; P2=C8;Delay(1); P0=A1; P2=C7;Delay(1); P0=A2; P2=C6;Delay(1); P0=A3; P2=C5;Delay(1); P0=A4; P2=C4;Delay(1); P0=A5; P2=C3;Delay(1); P0=A6; P2=C2;Delay(1); P0=A7; P2=C1;Delay(1); void main() while(1) Xian_shi(); Yun_suan(); show( Out_put ); /

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1