版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算器程序要求:用矩阵按键实现简单的加减乘除运算。程序代码:#include#includesbitcol_1=P1A4;sbitcol_2=PlA5;sbitcol_3=P1A6;sbitcol_4=PlA7;unsignedcharcodetable=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;共阴极数码管unsignedcharkeynum,flag;unsignedcharnuml,num2,flagl,flag2,flag3,flag4;voidkeyscan(void);voiddisplay();void
2、keyfind(unsignedchar);voidkeyprocess(void);voiddelay(unsignedintz)/延时lmsunsignedintx,y;for(x=ll0;x0;x-)for(y=z;y0;y-);voidmain(void)while(l)keyscan();/按键扫描函数keyprocess();/数据处理display();/数据显示voidkeyscan(void)col_l=0;col_2=0;col_3=0;col_4=0;if(P1&0 x0f)!=0 x0f)/判断行线是否全为1,不是则处理col_1=0;/第一列输出0col_2=1;co
3、l_3=1;col_4=1;keyfind(0);col_1=1;/第二列输出0col_2=0;col_3=1;col_4=1;keyfind(4);col_1=1;/第三列输出0col_2=1;col_3=0;col_4=1;keyfind(8);col_1=1;/第四列输出0col_2=1;col_3=1;col_4=0;keyfind(12);col_1=0;/列线输出全为0col_2=0;col_3=0;col_4=0;flag+;/每按一下标志位加1while(P1&0 x0f)!=0 x0f);/等待按键释放voidkeyfind(unsignedcharcol_dat)unsig
4、nedchartemp;temp=(P1)&0 x0f;/求取各行状态switch(temp)/键值计算case1:keynum=1+col_dat;break;case2:keynum=2+col_dat;break;case4:keynum=3+col_dat;break;case8:keynum=4+col_dat;break;voidkeyprocess(void)switch(keynum)case1:if(flag=1)/flag=1表示是第一次按下,按得是被除数num1=7;/第一个键按下对应是数字7if(flag=3)/flag=3表示是第三次按下,按的是除数num2=7;br
5、eak;case2:if(flag=1)num1=4;if(flag=3)num2=4;break;case3:if(flag=1)num1=1;if(flag=3)num2=1;break;case5:if(flag=1)num1=8;if(flag=3)num2=8;break;case6:if(flag=1)num1=5;if(flag=3)num2=5;break;case7:if(flag=1)num1=2;if(flag=3)num2=2;break;case8:if(flag=1)num1=0;if(flag=3)num2=0;break;case9:if(flag=1)num1
6、=9;if(flag=3)num2=9;break;case10:if(flag=1)num1=6;if(flag=3)num2=6;break;case11:if(flag=1)num1=3;if(flag=3)num2=3;break;case4:flagl=l;“C”清除键按下,用flag1=1来记下break;casel2:flag1=2;“=”等号键按下,用flag1=2标记下break;case13:flag2=1;/“/”除号键按下,用flag2=1来标记break;case14:flag2=2;/“*”break;case15:flag2=3;/-“”break;case16:
7、flag2=4;/“+”break;keynum=0;/清除keynum的值voiddisplay()unsignedcharnum,num_shi,num_ge;if(flag1=1)/清除键按下了,将所有的数据清0num1=0;num2=0;num=0;flag=0;flag1=0;flag2=0;flag3=0;flag4=0;P2=0 xff;if(flag=1|flag3=1)/第一次按下的是被除数,在数码管的第一位来显示按下的数据,并用flag3=1来标记flag3=1;P2=0 xfe;P0=tablenum1;delay(10);if(flag=3|flag4=1)/除数按下,
8、在数码管的第二位来显示按下的数据,并用flag4=1来标记flag4=1;P2=0 xfd;P0=tablenum2;delay(10);if(flag2=1&flag1=2)/第二次按下的是运算符键,判断是哪个运算符被按下,并执行相应的操作num=num1/num2;if(flag2=2&flag1=2)/乘号和等号被按下num=num1*num2;if(flag2=3&flagl=2)/减号和等号被按下num=num1-num2;if(flag2=4&flag1=2)/加号和等号被按下num=num1+num2;num_shi=num/10;将所得结果数据分离,用来在数码管上显示num_ge=num%10;if(flag=4)等号以按下,显示结果P2=0 xfb;PO=tablenum_shi;第三个数码管显示十位数delay(10);P2=0 xf7;PO=tablenum_ge;第四个数码管显示个位数delay(10);实验结果iJSXSPE-af-CXKliUblilf&ALIKIE,lL中tbcLii日叫的尚trwi苣略kkraryTqylMA-詡rJLj趣E)国占T*爲鱼赠口Zz9Urri:tJKF.-5MjWWXRrauxiO.i-KT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大班听评课记录15篇
- 2024年秋学期第二次学情检测九年级道法试题
- 《房性室性心律失常》课件
- 《儿科基础》课件
- 2024年呼吸内科护理计划
- 嘉定工程钢平台施工方案
- 2024年乡镇扶贫工作计划年度工作计划
- 新幼儿园园长工作计划
- 行政事务部工作计划总结及计划
- 如何制定寒假计划
- DB32/T 4463-2023水域状况评价规范
- 泵的基础知识讲座课件
- 教学查房-急性胰腺炎
- 银行借款受托支付合同范本
- 《故事新编》之阅读试题
- Part+3-4+Unit+7+Natural+Disasters+课件-【中职专用】高二英语同步课堂(高教版2021基础模块3)
- 《道德与法治课堂情景教学的实践研究》课题结题汇报课件
- 二面角 全国优质课一等奖
- 《临床输血学检验技术》15第十六章 输血管理
- 家用电器的使用PPT
- 生物圈中的绿色植物 单元作业设计
评论
0/150
提交评论