毕业设计(论文)-基于MC51单片机的简易计算器设计 - 图文 联系客服

发布时间 : 星期三 文章毕业设计(论文)-基于MC51单片机的简易计算器设计 - 图文更新完毕开始阅读

附录二:系统程序清单

;主程序 // Header: // File Name: // Author: // Date:

#include #include \#include \

void Header_printf(unsigned char *str) //规避WARNING L15 { }

void Header() { }

void Main() {

26

while(*str!='\\0') { }

BWR_data(*str); str++;

LCD_moveto(0,0);

Header_printf(\LCD_moveto(1,3);

Header_printf(\

LCD_init(); Header();

P2=P2|0x0F; P1=P1&0xC0;

/*开外部中断*/

IT0=1; //下降沿触发 EX0=1; EA = 1;

while(1);

}

void mINT0 (void) interrupt 0 { char i; EA=0;

for(i=5;i>0;i--) { if(INT0==1) break;

}

if(INT0==0) {

Key_press(); } EA=1;

}

;按键处理程序 #include

27

#include \#include \#include \void Key_press() {

char a[16];

//第一次输入数字存在b[16]里,按下中间计算符后,循环a[len]=b[len];

清空b[len]

char b[16]; char key; char i;

//再次输入数字仍存在b[16]里,按下等号后,计算a,b,结果存在b[len];

char arc; //运算符 char len; //数字长度 bit sign; //正负号 bit point; //小数点

key=Key_get(); //数字键处理

if(key==12) key='7'; else if(key==13) key='8'; else if(key==14) key='9'; else if(key==22) key='4'; else if(key==23) key='5'; else if(key==24) key='6'; else if(key==32) key='1'; else if(key==33) key='2'; else if(key==34) key='3'; else if(key==42) key='0';

else if(key==11) key='C'; else if(key==21) key='S'; else if(key==31) key='%';

else if(key==41) key=' '; //空格

28

//清空 //正负号

else if(key==43) key='.'; else if(key==44) key='='; else if(key==45) key='+'; else if(key==25) key='-'; else if(key==15) key='*'; else if(key==16) key='/'; else if(key==26) key='M'; //MRC else if(key==36) key='D'; //M- else if(key==46) key='A'; //M+

else key='E'; //错误

if(len<15) //前15个数字输入有效 {

if(len==0) {

LCD_init();

for(len=15;len>0;len--) { b[len]=' ';

}

b[0]='0';

b[1]='.';

LCD_moveto(1,14); LCD_printf(\

}

if(key>0x2F&&key<0x3A) { if(len==0&&key=='0') { LCD_moveto(1,14); LCD_printf(\ //第一位输入'0'不响应

}

29