为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

单片机计算器源代码

2017-09-26 10页 doc 23KB 75阅读

用户头像

is_266065

暂无简介

举报
单片机计算器源代码单片机计算器源代码 #include sbit K1=P1^0; sbit K2=P1^1; sbit K3=P1^2; sbit K4=P1^3; sbit P30=P3^0; sbit P31=P3^1; sbit P32=P3^2; sbit P33=P3^3; sbit P34=P3^4; sbit P35=P3^5; sbit P36=P3^6; sbit P37=P3^7; sbit beep=P2^1; unsigned char code table[] = {0xC0,0xF9...
单片机计算器源代码
单片机计算器源代码 #include sbit K1=P1^0; sbit K2=P1^1; sbit K3=P1^2; sbit K4=P1^3; sbit P30=P3^0; sbit P31=P3^1; sbit P32=P3^2; sbit P33=P3^3; sbit P34=P3^4; sbit P35=P3^5; sbit P36=P3^6; sbit P37=P3^7; sbit beep=P2^1; unsigned char code table[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF}; int X,Y,Z,S=0; unsigned char qianwan,baiwan,shiwan,wan,qian,bai,shi,ge; /*延时函数*/ void delay() { unsigned int n; for(n=0;n<400;n++); } /*各个位上的数*/ void jisuan(unsigned long int m) { qianwan=m/10000000; baiwan=(m/1000000)%10; shiwan=(m/100000)%10; wan=(m/10000)%10; qian=(m/1000)%10; bai=(m/100)%10; shi=(m/10)%10; ge=m%10; } /*显示函数*/ void display(void) { P0=table[qianwan]; P30=0; delay(); P3=0xFF; P0=table[baiwan]; P31=0; delay(); P3=0xFF; P0=table[shiwan]; P32=0; delay(); P3=0xFF; P0=table[wan]; P33=0; delay(); P3=0xFF; P0=table[qian]; P34=0; delay(); P3=0xFF; P0=table[bai]; P35=0; delay(); P3=0xFF; P0=table[shi]; P36=0; delay(); P3=0xFF; P0=table[ge]; P37=0; delay(); P3=0xFF; } /*键盘扫描函数*/ void scan() { switch(P1) { case 0xE0: X=0x10;break; case 0xD0: X=0x20;break; case 0xB0: X=0x40;break; case 0x70: X=0x80;break; default: break; } P1=0x0F; switch(P1) { case 0x0E: Y=0x01;break; case 0x0D: Y=0x02;break; case 0x0B: Y=0x04;break; case 0x07: Y=0x08;break; default: break; } Z=X+Y; switch(Z) { case 0x11: S=0;break; case 0x21: S=1;break; case 0x41: S=2;break; case 0x81: S=3;break; case 0x12: S=4;break; case 0x22: S=5;break; case 0x42: S=6;break; case 0x82: S=7;break; case 0x14: S=8;break; case 0x24: S=9;break; case 0x44: S=10;break; case 0x84: S=11;break; case 0x18: S=12;break; case 0x28: S=13;break; case 0x48: S=14;break; case 0x88: S=15;break; default: S=16;break; } } /*主函数*/ void main() { unsigned long int num1=0,num2=0,num=0; int S1[10]={0},S2[10]={0},S3,i; beep=1; while(1) { P1=0xF0; while(P1==0xF0) { } /*数1*/ i=0; scan(); while(S<=9) { S1[i]=S; P1=0xF0; num1=10*num1+S1[i++]; jisuan(num1); while(P1!=0xF0) { beep=0; display(); } delay(); beep=1; while(P1==0xF0) { display(); } scan(); } /*算法*/ while((S>=12&&S<=15)||S3==0) { S3=S; P1=0xF0; while(P1!=0xF0) { beep=0; display(); } delay(); beep=1; while(P1==0xF0) { display(); } scan(); } /*数2*/ i=0; while(S<=9) { S2[i]=S; P1=0xF0; num2=10*num2+S2[i++]; jisuan(num2); while(P1!=0xF0) { beep=0; display(); } delay(); beep=1; while(P1==0xF0) { display(); } scan(); } /*求和*/ while(S!=11) { P1=0xF0; while(P1!=0xF0) { beep=0; display(); } delay(); beep=1; while(P1==0xF0) { display(); } scan(); } P1=0xF0; while(P1!=0xF0) { beep=0; display(); } delay(); beep=1; switch(S3) { case 12: num=num1+num2;break; case 13: num=num1-num2;break; case 14: num=num1*num2;break; case 15: num=num1/num2; break; default: break; } jisuan(num); while(1) { display(); } } }
/
本文档为【单片机计算器源代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索