基于51单片机的简易计算器设计--中国矿业大学

2026/4/30 7:57:13

void fuhao(uchar s) {

if(jjcc<5) {

if(Num_str[0]!='A') {

if(Num_str[0]<=0x39&&Num_str[0]>=0x30&&jjcc != 2) {

num1=atof(Num_str); // 从数组中取第二个数字 // XS_JG(0x8a,num1);

} }

if(jjcc==0) {

Num_str[Lcd_dis1_i] = s ;

Lcd_dis1_i++;

Lcd_num2_add = Lcd_dis1_i ;

} else {

if(Num_str[Lcd_num2_add]==0) Num_str[Lcd_dis1_i-1] = s ; }

Dis_str(0x80,Num_str);

}

if(jjcc==5) {

Lcd_dis1_i = 4 ; Lcd_num2_i = 0 ; Lcd_num2_add = 4; memset(Num_str,0,16);

20

}

Num_str[0] = 'A'; Num_str[1] = 'n'; Num_str[2] = 's'; Num_str[3] = s;

Dis_str(0x80,\ Dis_str(0x80,Num_str); }

void main(void) {

uchar num_key1; init_1602(); write_1602dat('0'); memset(Num_str,0,16); while(1) {

num_key1=saom(); delayms(10); if(num_key1<18) {

batt = 0; delayms(30);batt = 1; switch(num_key1) {

case

11:

//是否有按键按下,小于16时有按键按下

//读按键值

if(Num_str[Lcd_num2_add]<=0x39&&Num_str[Lcd_num2_add]>=0x30)

num2=atof(Num_str+Lcd_num2_add); // 从数组中取第

二个数字

else break; Lcd_num2_i=0 ;

XS_JG(0x8a,num2);

switch(jjcc) {

21

case 1: num1+=num2;

// 加

break; case 2: num1-=num2;

break;

// 减

break;

case 12: if(Num_str[0]==0||Lcd_num2_i>0) break; fuhao('+'); jjcc=1;Dian_i=0 ; break;

case 13: if(Num_str[0]==0||Lcd_num2_i>0) break; fuhao('-');

jjcc=2;Dian_i=0 ; break;

case 14: if(Num_str[0]==0||Lcd_num2_i>0) break; fuhao('*');

break;

case 15: if(Num_str[0]==0||Lcd_num2_i>0)

case 3: num1*=num2;

break; case 4: num1/=num2;

break;

// 按下加号键

// 按下减号键

// 按下乘号键22

// 乘

// 除

等号标志

}

XS_JG(0xc0,num1);

Dis_str(0x80+Lcd_dis1_i,\

jjcc=5; //

jjcc=3;Dian_i=0 ;

break; fuhao('/');

jjcc=4;Dian_i=0 ; break;

// 按下除号键

case 10: if(Dian_i==0&&(Lcd_num1_i != 0||Lcd_num2_i != 0)) // 输入小数点时前面必须有数字

{

Dian_i++;

// 小数点

Num_str[Lcd_dis1_i] = '.' ; Lcd_dis1_i++;

Dis_str(0x80,Num_str); }

break;

case 16: jjcc = 0;

Dian_i = 0;

Lcd_dis1_i = 0 ; Lcd_num1_i = 0 ;

Lcd_num2_i = 0 ; Lcd_num2_add = 0; memset(Num_str,0,16);

Dis_str(0x80,\清除显示 Dis_str(0xc0,\

/********************* 删除一个数字*******************/

case 17: if(Lcd_dis1_i==0) break;

//删除一个数字;删除小数点;按等号后不再撤销

if(((Num_str[Lcd_dis1_i-1]<=0x39&&Num_str[Lcd_dis1_i-1]>=0x30)||Num_str[Lcd_dis1_i-1]=='.')&&jjcc!=5)

{

if(Num_str[Lcd_dis1_i-1]=='.')

{ Dian_i = 0; } else

23


基于51单片机的简易计算器设计--中国矿业大学.doc 将本文的Word文档下载到电脑
搜索更多关于: 基于51单片机的简易计算器设计--中国矿业大学 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

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