版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于51单片机的简易计算器前言:本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除基本四则运算,并在LCD上显示相应的结果;设计电路采用STC90C51单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入;显示采用字符LCD静态显示;软件方面使用C语言编程,并用PROTUES仿真.设计任务:计算器软件程序要完成以下模块的设计:(1)键盘输入检测模块;(2)LCD显示模块;(3)算术运算模块;(4)错误处理及提示模块。3、主体设计部分:(1)、系统模块图:(2)、系统总流程图:4、硬件部分单片机部分+矩阵键盘+1602显示
如图所示为简易计算器的电路原理图。P3口用于键盘输入,接4*4矩阵键盘,键值与键盘的对应表如表--——所示,p0口和p2口用于显示,p2口用于显示数值的高位,po口用于显示数值的低位。简易计算器电路原理图矩阵键盘有16个按键,满足对简易计算器的计算实现,显示部分采用LCD1602,第一行显示计算的数值符号,第二行显示计算结果。LCD显示模块:本设计采用LCD液晶显示器来显示输出数据。通过D0—D7引脚向LCD写指令字或写数据以使LCD实现不同的功能或显示相应数据。5、软件部分#include<reg52。h>#include<intrins。h〉#defineucharunsignedcharsbitlcden=P2^7;sbitlcdrs=P2^6;sbitlcdrw=P2^5;sbitlcdbf=P0^7;uchartemp,key,i,j,flag,fh,k;longa,b,c;ucharcodetable[]={1,2,3,0,4,5,6,0,7,8,9,0,0,0,0,0};ucharcodetable2[]="123+456-789*000/";voiddelay(ucharms){ucharx,y;for(x=ms;x〉0;x--)for(y=110;y>0;y——);}/*——-—-—-——-—--对LCD1602的操作—--—--—————*/bitbusy(void)//判断忙碌{bitres;lcdrs=0;lcdrw=1;lcden=1;_nop_();_nop_();res=lcdbf;lcden=0;returnres;}voidwrite_inst(ucharcmd)//写命令{while(busy()==1);//忙碌就等待lcdrs=0;lcdrw=0;lcden=0;_nop_();_nop_();P0=cmd;_nop_();_nop_();lcden=1;_nop_();_nop_();lcden=0;}voidwrite_com(ucharcom)//写地址{write_inst(com|0x80);}voidwrite_date(uchardat)//写数据{while(busy()==1);lcdrs=1;lcdrw=0;lcden=0;P0=dat;_nop_();_nop_();lcden=1;_nop_();_nop_();lcden=0;}voidinit()//初始化{lcden=1;write_inst(0x38);//显示8位2行delay(5);write_inst(0x0c);//显示开,光标关,不闪烁delay(5);write_inst(0x06);//增量方式不位移delay(5);write_inst(0x80);//检测忙碌信号delay(5);write_inst(0x01);//delay(5);}/*—----—-—--—-键盘扫描-—-——--————*/voidkeyscan()//键盘扫描{P3=0xfe;if(P3!=0xfe){delay(100);if(P3!=0xfe){temp=P3&0xf0;switch(temp){case0xe0:key=0;break;case0xd0:key=1;break;case0xb0:key=2;break;case0x70:key=3;break;}}while(P3!=0xfe);if(key==0||key==1||key==2){if(j!=0){write_inst(0x01);j=0;}if(flag==0){a=a*10+table[key];}if(flag==1){b=b*10+table[key];}write_date(table2[key]);}else{if(k==0){flag=1;k=1;fh=1;write_date(table2[key]);}}}P3=0xfd;if(P3!=0xfd){delay(100);if(P3!=0xfd){temp=P3&0xf0;switch(temp){case0xe0:key=4;break;case0xd0:key=5;break;case0xb0:key=6;break;case0x70:key=7;break;}}while(P3!=0xfd);if(key==4||key==5||key==6){if(j!=0){write_inst(0x01);j=0;}if(flag==0){a=a*10+table[key];}if(flag==1){b=b*10+table[key];}write_date(table2[key]);}else{if(k==0){flag=1;k=1;fh=2;write_date(table2[key]);}}}P3=0xfb;if(P3!=0xfb){delay(100);if(P3!=0xfb){temp=P3&0xf0;switch(temp){case0xe0:key=8;break;case0xd0:key=9;break;case0xb0:key=10;break;case0x70:key=11;break;}}while(P3!=0xfb);if(key==8||key==9||key==10){if(j!=0){write_inst(0x01);j=0;}if(flag==0){a=a*10+table[key];}if(flag==1){b=b*10+table[key];}write_date(table2[key]);}else{if(k==0){flag=1;k=1;fh=3;write_date(table2[key]);}}}P3=0xf7;if(P3!=0xf7){delay(100);if(P3!=0xf7){temp=P3&0xf0;switch(temp){case0xe0:key=12;break;case0xd0:key=13;break;case0xb0:key=14;break;case0x70:key=15;break;}}while(P3!=0xf7);switch(key){case12:{write_inst(0x01);a=0;b=0;flag=0;fh=0;j=0;k=0;}break;case13:{if(flag==0){a=a*10;write_date(0x30);P1=0;}elseif(flag==1){b=b*10;write_date(0x30);}}break;case14:{j=1;if(fh==1){write_com(0x4f);write_inst(0x04);c=a+b;while(c!=0){write_date(0x30+c%10);c=c/10;}write_date(0x3d);a=0;b=0;flag=0;fh=0;k=0;}elseif(fh==2){write_com(0x4f);write_inst(0x04);if((a—b)〉0)c=a—b;elsec=b-a;if(c==0)write_date(0x30+0);while(c!=0){write_date(0x30+c%10);c=c/10;}if((a-b)*(—1)〉0)write_date(0x2d);write_date(0x3d);a=0;b=0;flag=0;fh=0;k=0;}elseif(fh==3){write_com(0x4f);write_inst(0x04);c=a*b;if(c==0)write_date(0x30+0);while(c!=0){write_date(0x30+c%10);c=c/10;}write_date(0x3d);a=0;b=0;flag=0;fh=0;k=0;}elseif(fh==4){write_com(0x4f);write_inst(0x04);i=0;c=(long)(((float)a/b)*1000);//计算c的数据if(c==0)write_date(0x30+0);while(c!=0){write_date(0x30+c%10);c=c/10;i++;if(i==3)write_date(0x2e);//写数据}if((a/b)〈=0)write_date(0x30);write_date(0x3d);a=0;b=0;flag=0;fh=0;k=0;}}break;case15:{if(k==0){write_date(table2[key
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB2894-2025《安全色和安全标志》培训解读
- 2026年人工智能校企合作基础考试题库及解析
- 肠道门诊管理考试题及答案
- 2026年煤矿井下冲击地压事故专项应急预案及现场处置方案
- 2026年人工智能体育服务智能化考试题库
- 2026年孕产妇宫内窘迫急救专项演练脚本
- 标量介子f0(980)光生过程:理论、实验与前沿探索
- 柴胡皂甙 - d 对人肝癌 HepG2 细胞恶性表型的逆转作用及机制探究
- 柱塞冲压挤出过程中固体熔融机制与影响因素的深度剖析
- 柔性非晶铟镓锌氧薄膜晶体管动态拉伸退化的频率依赖机制及优化策略研究
- 《建设强大国内市场 加快构建新发展格局》课件
- 浅谈供电企业的人力资源管理
- 车间稽核工作总结
- 地黄课件教学课件
- 2025年河北中烟工业有限责任公司招聘考试笔试试卷附答案
- 2024人教版七年级地理下学期期末质量检测试卷(含答案)
- 大学生身心健康自我关注与管理课程大纲
- 2025至2030中国血友病药物行业项目调研及市场前景预测评估报告
- 【轻型越野车制动器主要参数的确定案例1300字】
- 西华师范大学2024年《信号与系统》期末试卷(A 卷)
- 《AIGC应用实战:写作、绘图、视频制作、直播》-课件全套 王翎子 第1-9章 认识AIGC -即创的使用方法
评论
0/150
提交评论