基于单片机的简单计算器(5)

2020-02-20 22:51

sbit R_W=P3^5; sbit RS=P3^6;

/******************主函数*****************/ main() { EA=1; EX0=1; IT0=1; P2=0xff; display(0); init_LCM(); write_data(0x30); while(1) { } }

2、分块程序设计:

(1)键盘输入检测程序设计:

有键按下时,单片机响应外部中断0,转入外部中断0中断处理函数,在中断处理函数中完成对按键的判断,以进行下一步的程序处理。 /**********键值转化为键盘上按键值函数*************/ char translate(int keycode) {

switch(keycode) { case 0: return '7'; break; case 1: return '4'; break; case 2:

- 17 -

return '1'; break; case 3:

return 'c'; break; case 4:

return '8'; break; case 5:

return '5'; break; case 6:

return '2'; break; case 7:

return '0'; break; case 8:

return '9'; break; case 9:

return '6'; break; case 10:

return '3'; break; case 11:

return '='; break; case 12:

return '/';

break;

case 13:

基于单片机控制的简单计算器设计与仿真

- 18 -

}

return '*'; break; return '-'; break; return '+'; break; }

case 14:

case 15:

/***********外部中断0处理函数*************/ void INT_0(void) interrupt 0 using 0 {

key=translate(P2&0x0f);

if(key<='9'&&key>='0') //判断按下的键是否为数值 {

num=num*10+(key-'0'); if (operators>0) { y=num; iny=1; } else x=num;

if(num<134217728&&num>-134217728) //当前数值是否超出限定范围 {

display(num); } else

dataoverflow(); } else {

- 19 -

基于单片机控制的简单计算器设计与仿真

switch(key) { case 'c': x=0; y=0; num=0; iny=0; operators=0; display(num); break; case '=':

arithmetic(); iny=0; operators=0; num=0;

break;

case '+':

if (operators) arithmetic(); operators=1; num=0;

break;

case '-':

if (operators) arithmetic(); operators=2; num=0;

break;

case '*':

if (operators) arithmetic(); operators=3;

num=0;

- 20 -

} }

break; if (operators) arithmetic(); operators=4; num=0; break;

case '/':

}

(2)算术运算程序设计:

/**********算术运算函数*************/ void arithmetic() { if (iny) {

switch(operators) { case 1: x=x+y; num=x;

if(num<134217728&&num>-134217728) {

display(num); } else

dataoverflow(); break; case 2: x=x-y; num=x;

if(num<134217728&&num>-134217728) {

- 21 -


基于单片机的简单计算器(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:九年级物理全册 第18章 第2节 第2课时 电功率的综合计算教案(新

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: