- 0
- 0
- 约2.52千字
- 约 8页
- 2026-01-29 发布于山东
- 举报
STC89c52单片机计算器C语言程序
c
//执行运算
voidcalculate(void)
{
overflow_flag=0;
div_zero_flag=0;
switch(operator)
{
case+:result_num=first_num+second_num;break;
case-:result_num=first_num-second_num;break;
case*:result_num=first_num*second_num;break;
case/:
if(second_num==0)
{
div_zero_flag=1;
}
else
{
result_num=first_num/second_num;//整数除法
}
break;
default:break;
}
//此处可根据实际情况添加溢出判断逻辑
}
//按键处理与状态机管理
voidkey_process(void)
{
if(new_key_flag)
{
new_key_flag=0;
if(key_value==C)//清除
{
first_num=0;
second_num=0;
result_num=0;
operator=0;
state=STATE_FIRST_NUM;
lcd_clear();
lcd_show_string(0,0,Clear);
delay_ms(500);
lcd_clear();
return;
}
switch(state)
{
caseSTATE_FIRST_NUM:
if(key_value=0key_value=9)//数字键
{
first_num=first_num*10+(key_value-0);
lcd_clear();
lcd_show_num(0,0,first_num);
}
elseif(key_value==+||key_value==-||key_value==*||key_value==/)//运算符
{
operator=key_value;
state=STATE_OPERATOR;
lcd_show_string(10,0,operator);//在第一行末尾显示运算符
}
break;
caseSTATE_OPERATOR:
if(key_value=0key_value=9)//数字键
{
second_num=second_num*10+(key_value-0);
lcd_show_num(0,1,second_num);//第二行显示第二个数
state=STATE_SECOND_NUM;
}
elseif(key_value==C)
{
//已在前面处理
}
//忽略其他键或提示错误
break;
caseSTATE_SECOND_NUM:
if(key_value=0key_value=9)//数字键
{
second_num=second_num*10+(key_value-0);
lcd_clear();
lcd_show_num(0,0,first_num);
lcd_show_string(10,0,operator);
lcd_show_num(0,1,second_num);
}
elseif(key_value===)//等号,执行运算
{
calculate();
state=STATE_RESULT;
lcd_clear();
lcd_show_num(0,0,first_num);
lcd_show_string(10,0,operator);
lcd_show_num(0,1,second_num);
lcd_show_string(10,1,=);
if(div_zero_flag)
{
lcd_show_string(12,1,Err);
}
elseif(overflow_flag)
{
lcd_show_string(12,1,OVF);
}
else
{
lcd_show_num(12,1,result_num);
}
}
elseif(key_value==C)
{
//已在前面处理
}
//忽略其他键或提示错误
break;
caseSTATE_RESULT:
if(key_value=0key_value=9)//输入新的第
您可能关注的文档
最近下载
- (通用)领导班子2025年民主生活会“五个带头”对照检查材料.docx VIP
- 公司2025年度民主生活会领导班子对照检查材料(五个带头) (3).docx VIP
- 工程勘察设计收费标准-勘测收费标准-(最新版-修订).pdf VIP
- 交付工程师年度工作总结.pptx VIP
- 隧道工程(矿山法)监理实施细则.pdf VIP
- 中国儿童急性非静脉曲张性上消化道出血诊治指南(2024).pptx VIP
- 大肠杆菌血红素合成限速步骤解析及定向强化.docx VIP
- 雨课堂学堂在线《跨文化交际英语(北京理工)》学堂云单元测试考核答案.docx
- 2023年考研英语真题(附答案).pdf VIP
- HPV检测技术及临床应用ppt课件.pptx
原创力文档

文档评论(0)