如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
#include<reg52.h>#include<intrins.h>#include<math.h>#defineuintunsignedint#defineucharunsignedchar#defineBUSP2unsignedcharcodestr1[]="ENTER1TOSTART";voidkeyscan();voidkeyscan_0();sbitE=P1^3;sbitRS=P1^4;sbitRW=P1^0;chari,j,temp,num,num_0,num_1;longa,b,c;ucharflag,fuhao;ucharcodetable[]={1,2,3,0x2f-0x30,4,5,6,0x2a-0x30,7,8,9,0x2d-0x30,0x01-0x30,0,0x3d-0x30,0x2b-0x30};voiddelay(ucharm)//延时子函数{uchary;for(m;m>0;m--)for(y=0;y<110;y++);}unsignedcharTest_busy(void)//检测遇忙函数{unsignedcharBusy;BUS=0xff;RS=0;RW=1;E=1;_nop_();Busy=BUS&0x80;E=0;returnBusy;}voidwrite_cmd(unsignedcharcommand)//写命令函数{while(Test_busy());RW=0;RS=0;E=0;BUS=command;E=1;_nop_();E=0;}voidwrite_dat(unsignedchardat)//写数据函数{while(Test_busy());RW=0;RS=1;E=0;BUS=dat;E=1;_nop_();E=0;}voidLcd_init(void)//LCD液晶复位函数{write_cmd(0x38);write_cmd(0x01);write_cmd(0x06);write_cmd(0x0c);write_cmd(0x80);num_1=0;i=0;j=0;a=0;b=0;c=0;flag=0;fuhao=0;}voidkeyscan_0(){P3=0xf7;if(P3!=0xf7){temp=P3&0xf0;switch(temp){case0xe0:num_0=0;write_cmd(0x01);break;}}}voidkeyscan()//键盘扫描程序操作{P3=0xf7;if(P3!=0xf7){delay(20);//延迟20msif(P3!=0xf7){temp=P3&0xf0;switch(temp){case0xe0:num=0;break;case0xd0:num=1;break;case0xb0:num=2;break;case0x70:num=3;break;}}while(P3!=0xf7);if(num==0||num==1||num==2)//如果按下的是'1','2'或'3'{if(j!=0){write_cmd(0x01);j=0;}if(flag==0)//没有按过符号键{a=a*10+table[num];}Else//如果按过符号键{b=b*10+table[num];}}Else//如果按下的是'/'{flag=1;fuhao=4;//4表示除号已按}i=table[num];write_dat(0x30+i);}P3=0xfb;if(P3!=0xfb){delay(5);if(P3!=0xfb){temp=P3&0xf0;switch(temp){case0xe0:num=4;break;case0xd0:num=5;break;case0xb0:num=6;break;case0x70:num=7;break;}}while(P3!=0xfb);if(num==4||num==5||num==6&&num!=7)//如果按下的是'4','5'或'6'{if(j!=0){write_cmd(0x01);j=0;}if(flag==0)//没有按过符号键{a=a*10+table[num];}else//如果按过符号键{b=b*10+table[num];}}else//如果按下的是'/{flag=1;fuhao=3;//3表示乘号已