湖北师范学院物理与电子科学学院13级单片机课程设计
{ 万万
if(data_c<100000000&&data_c>-1)//溢出时显示错误 {
dispaly[8]=data_c00000000/100000000; //万万 dispaly[7]=data_c0000000/10000000; //千万 dispaly[6]=data_c000000/1000000; dispaly[5]=data_c00000/100000; dispaly[4]=data_c0000/10000; dispaly[3]=data_c000/1000; dispaly[2]=data_c00/100; dispaly[1]=data_c0/10; dispaly[0]=data_c; write_com(0x80+6+0x40); //第一行 if(x==4) {
if(data_c>99999999) { write_date('0'+dispaly[8]);} //显示
//百万
//十万
//万
//千 //百 //十 //个
if(data_c>9999999) { write_date('0'+dispaly[7]);} //千万
if(data_c>999999) { write_date('0'+dispaly[6]);} //百万 if(data_c>99999) { write_date('0'+dispaly[5]);} //十万 }
23
write_date('0'+dispaly[4]); //万 write_date('.');
write_date('0'+dispaly[3]); //千 write_date('0'+dispaly[2]); //百 write_date('0'+dispaly[1]); //十 write_date('0'+dispaly[0]); //个
湖北师范学院物理与电子科学学院13级单片机课程设计
万万
}
void eql(uchar x)//加减乘除运算 {
else{
if(data_c>99999999) { write_date('0'+dispaly[8]);} //显示
}
if(data_c>9999999) { write_date('0'+dispaly[7]);} //千万
if(data_c>999999) { write_date('0'+dispaly[6]);} //百万 if(data_c>99999) { write_date('0'+dispaly[5]);} //十万 if(data_c>9999) if(data_c>999) if(data_c>99) if(data_c>9) }
{ write_date('0'+dispaly[4]);} //万 { write_date('0'+dispaly[3]);} //千
{ write_date('0'+dispaly[2]);} //百 { write_date('0'+dispaly[1]);} //十
write_date('0'+dispaly[0]); //个
else //溢出时显示错误 { }
write_com(0x80+11+0x40); //第一行 write_date('E'); //显示 E write_date('r'); //显示R write_date('r'); write_date('o'); write_date('r');
//显示R //显示O //显示E
switch(x)
{
/*功能键选择*/
case 1:data_c=data_a+data_b;break;
24
//加 /* +
湖北师范学院物理与电子科学学院13级单片机课程设计
S=1 */ /* 数值转换函数 */
*///减
else{data_c=data_b-data_a;W_lcd(5,1,'-');} //负数符号
乘
case
break;
/* * S=3 *///
case 2:if(data_a>=data_b){data_c=data_a-data_b;} /* - S=2
case 3:data_c=(data_a*data_b);break;
4:if(data_b==0){LCD_Write_String(0,1,\)/data_b;}break;
}
void main() {
uchar key=0xff; //键值初始化 uchar n=0; uchar m=5; uchar x=0;
data_a=0; //前一个数 data_b=0; //后一个数 data_c=0; //结果 init_lcd(); display_a();
//1602液晶初始化
//第1个数可以按1-4次 //第2个数可以按1-4次
/* / S=4 *///除//溢出时显示错误
case 0:break;
}
while(1)
{
25
湖北师范学院物理与电子科学学院13级单片机课程设计
key=keycheckdown();
/*动态扫描键盘,返回按键对应值,赋给
j key=0到f */
if(0xff!=key) {
if(key<10) {
/*若返回值有效,进入内部处理程序*/
if(n<4){data_a=data_a*10+key;m=5;display_a();}n++; //首先
输入第一个数
if(m<4){data_b=data_b*10+key;n=5;display_b();}m++; //必须
按了+-*/才能输入第二个数
}
else
{ switch(key)
{
case 0xa:n=5;m=0;x=1;W_lcd(5,0,'+');break; //加
/*功能键选择*/
/* + S=1 */ /* 数值转换函数 */
case 0xb:n=5;m=0;x=2;W_lcd(5,0,'-');break;
/* - S=2 *///减
case 0xc:n=5;m=0;x=3;W_lcd(5,0,'*');break;
/* * S=3 *///乘
case 0xd:n=5;m=0;x=4;W_lcd(5,0,'/');break;
/* / S=4 *///除
case
0xe:n=5;m=5;eql(x);W_lcd(12,0,'=');display_c(x);break; /* = */
case
0xf:n=0;x=0;m=5;
data_a=0;data_b=0;data_c=0;LCD_Write_String(0,0,table);LCD_Write_String(0,1,table);W_lcd(0,0,'0');break; /* C*/
}
}
26
湖北师范学院物理与电子科学学院13级单片机课程设计
do{P1=0xf0;}while(P1!=0xf0);
/*等待按键松开*/
}//(0xff!=key) }//while
}//main
实物图
27