标题:
单片机一位简易计算器程序源代码
[打印本页]
作者:
niujia
时间:
2015-7-15 23:17
标题:
单片机一位简易计算器程序源代码
数码管显示部分的原理图:
http://www.51hei.com/f/51hei-5.pdf
源代码:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit wela=P2^7;
sbit dula=P2^6;
uchar code smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x70,0x40,0x76,0x52};
uchar code smg_we[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar dis_smg[6];
uchar flag,num_key,oper,j;
uchar num1,num2,num_i;
uchar scan(void)
{
static uchar i;
uchar num,key;
P3=0x0f;
if(P3!=0x0f)
{
i++;
if(i>=7)
if(flag==0)
{
flag=1;
key=P3|0xf0;
P3=key;
switch(P3)
{
case 0xee:num=0; break;
case 0xde:num=1; break;
case 0xbe:num=2; break;
case 0x7e:num=3; break;
case 0xed:num=4; break;
case 0xdd:num=5; break;
case 0xbd:num=6; break;
case 0x7d:num=7; break;
case 0xeb:num=8; break;
case 0xdb:num=9; break;
case 0xbb:num=10;break;
case 0x7b:num=11;break;
case 0xe7:num=12;break;
case 0xd7:num=13;break;
case 0xb7:num=14;break;
case 0x77:num=15;break;
}
}
}
else {i=0;flag=0;}
return num;
}
void dis_init()
{
dis_smg[0]=smg_du[num_i/10];
dis_smg[1]=smg_du[num_i%10];
dis_smg[2]=0x00;
dis_smg[3]=smg_du[num1%10];
dis_smg[4]=smg_du[j];
dis_smg[5]=smg_du[num2%10];
}
void display()
{
static uchar i;
P0=0x00;
dula=1;
dula=0;
P0=smg_we[i];
wela=1;
wela=0;
P0=dis_smg[i];
dula=1;
dula=0;
i++;
if(i>=6)
i=0;
}
void main()
{
uchar num_key;
while(1)
{
num_key=scan();
dis_init();
display();
if(num_key<17)
{
switch(num_key)
{
case 10:num_i=0;oper=0;num1=0;num2=0;j=0;break;
case 11:
switch(oper)
{
case 0:num1 =num2;break;
case 1:num_i=num1+num2;break;
case 2:num_i=num1-num2;break;
case 3:num_i=num1*num2;break;
case 4:num_i=num1/num2;break;
}break;
case 12:oper=1;j=10;break;
case 13:oper=2;j=11;break;
case 14:oper=3;j=12;break;
case 15:oper=4;j=13;break;
default :if(num_key<10)
{
if(oper==0)
num1=num_key;
else
num2=num_key;
}
break;
}
}
}
}
复制代码
作者:
啦啦啦12138
时间:
2018-6-11 21:03
楼主好 这是简易计算器的全部代码
作者:
孤芳自赏
时间:
2018-6-30 15:34
有电路图吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1