基于511602的可连续运算计算器.docVIP

  • 22
  • 0
  • 约7.55千字
  • 约 11页
  • 2018-02-24 发布于河南
  • 举报
基于511602的可连续运算计算器

#include reg51.h #include stdio.h #include stdlib.h #include string.h #include math.h #include LCD1602.h #define uchar unsigned char uchar k=0,result1; void shortdelay(uchar i)//短延时 { for(;i0;i--); } //长延时 void longdelay(uint i) { uint j; for(;i0;i--) {for(j=100;j0;j--);} } //延时程序 void delay(int i) {int j; for(;i0;i--) for(j=0;j100;j++); } //初试状态 void io_init() {P1=0xff; } //?---------------------------键盘扫描部分-----------------------------// unsigned char key_scan() { unsigned char key; unsigned char temp; uint flag; io_init(); P1=0xf0; flag=0; loop: temp=P1^0xf0; while(temp) { P1=0xfe; delay(1); if((P10xfe)!=0xfe) switch(P1) { case 0xee: key=0x11;flag=1;break;//读7键和值 case 0xde: key=0x12;flag=1;break; case 0xbe: key=0x13;flag=1;break; case 0x7e: key=0x14;flag=1;break;//读除键的值 } if(flag) goto exit; else P1=0xfd; delay(1); if((P10xfd)!=0xfd) switch(P1) { case 0xed: key=0x21;flag=1;break; case 0xdd: key=0x22;flag=1;break; case 0xbd: key=0x23;flag=1;break; case 0x7d: key=0x24;flag=1;break; //读4到乘的键值 } if(flag) goto exit; else P1=0xfb; delay(1); if((P10xfb)!=0xfb) switch(P1) { case 0xeb: key=0x31;flag=1;break; case 0xdb: key=0x32;flag=1;break; case 0xbb: key=0x33;flag=1;break; case 0x7b: key=0x34;flag=1;break;//读1到减的键值 } if(flag) goto exit; else P1=0xf7; delay(1); if((P10xf7)!=0xf7) switch(P1) { case 0xe7: key=0x41;flag=1;break;//后退 case 0xd7: key=0x42;flag=1;break;//0 case 0xb7: key=0x43;flag=1;break;//等于 case 0x77: key=0x44;flag=1;break;//加 } exit: return key; } if(temp==0) goto loop; } //---------------------------------键盘扫描完--------------------------------------------// //---------------------------------显示初始化?----------------------------------------// //P0口初始化 void initpindata(bit i) { if(i==1) pindata=0xff

文档评论(0)

1亿VIP精品文档

相关文档