




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/*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; /* 数码管显示位控制寄存器 */ 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; /* 定义变量【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=0; /* 小数点个数的记录变量 */uchar xo=0; /* 控制开始计数小数点的变量 */long int result;void Delay(uint o) /* 延时函数 delay() 的定义 */uint i,j;for(i = 0; i =0g+;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+;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=10000000*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+) / 数据显示清零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 ) /判断键值(那一个键按下) 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_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 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 if(g2=1 if(g3=1 if(g4=1if(g1=2if(g2=2if(g3=2if(g4=2if(L=1) Out_put=Number0-Number1+Number2;if(L=2) Out_put=Number0*Number1+Number2;if(L=3) Out_put=Number0/Number1+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/Number2;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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小班穿衣服课件
- 支付产品培训
- 如何制作高质量护理查房
- 直肠恶性肿瘤治疗原则
- 《危险化学品企业安全生产数据采集报送规范(征求意见稿)》编制说明
- 《汽车维护》课件 模块二 汽车底盘系统的检查与维护
- 学校抗日主题教育活动
- 小学蜗杆传动课件
- 2025年公共卫生与预防医学考试题及答案
- 招聘模块培训会议
- 绿色施工管理体系及管理制度(土木)
- 护理与风险防范课件
- 2025年高考安徽卷物理真题(解析版)
- 标准件项目管理制度
- 十五五智慧校园建设发展规划
- 中医眼科学绿风内障课件
- 暑假安全家长会课件
- 2025年中小学生安全知识竞赛试题及答案
- 2024年山西烟草专卖局考试真题试卷及答案
- SOP-15天视频起号流程图
- 出口原产地管理制度
评论
0/150
提交评论