51单片机数码管显示计算器程序.docVIP

  • 15
  • 0
  • 约7.14千字
  • 约 7页
  • 2019-07-27 发布于江西
  • 举报
/***************************计算器程序***********************************/ #includereg52.h #include intrins.h #includestring.h #include math.h #include stdio.h #define uchar unsigned char #define uint unsigned int uchar key,sym,sumsz[13],adders=0; // 定义变量 float sum,number1=0,number2=0; // 定义变量 bit flag=0; // 定义位变量标志位 sbit lcdrs=P2^5; // 定义液晶的读IO口 sbit lcdwr=P2^6; // 定义液晶的写IO口 sbit lcden=P2^7; // 定义液晶的使能IO口 uchar lcd_s[]={0,1,2,3,4,5,6,7,8,9,+,-,*,0xfd,.,=};// void keyscan(); //函数声明 void delayms(uchar z); void write_com(uchar com); void write_data(uchar dat); void init(); void delay(int z); bit buzz(); void yuans(); void clear(); /***********************主函数*****************************/ void main() { init(); //液晶初始化 while(1) //循环函数 { keyscan(); //调用键盘扫描函数 } } /**********************键盘扫面*************************/ void keyscan() { uchar temp=0; P1=0xfe; //第1次判断函数 temp=P1; temp=temp0xf0; if(temp!=0xf0) { delayms(15); temp=P1; temp=temp0xf0; if(temp!=0xf0) { temp=P1;adders++; //确定按键按下,执行if函数 switch(temp) { case 0xee: key=1;write_data(lcd_s[key]);if(flag==0){number1=number1*10+key;} else number2=number2*10+key;break;//显示字符1,并记入相加的变量 case 0xde: key=2;write_data(lcd_s[key]);if(flag==0){number1=number1*10+key;} else number2=number2*10+key;break;//显示字符2,并记入相加的变量 case 0xbe: key=3;write_data(lcd_s[key]);if(flag==0){number1=number1*10+key;} else number2=number2*10+key;break;//显示字符3,并记入相加的变量 case 0x7e: key=10;write_data(lcd_s[key]);sym=+;flag=1; break;//显示‘+’号,并将sym付‘+’ } while((P10xf

文档评论(0)

1亿VIP精品文档

相关文档