#include #include#include
#define DIGIT1 9
#define DIGIT2 13
#define DIGIT3 12
#define DIGIT4 8
#define BTN0 10
#define BTN1 11
#define true 1
char digit[10][8] = //the loop-running bar in the left windows
{
{0,0,0,1,0,0,1,0},//0
{1,0,0,1,1,1,1,1},//1
{0,0,1,1,0,1,0,0},//2
{0,0,0,1,1,1,0,0},//3
{1,0,0,1,1,0,0,1},//4
{0,1,0,1,1,0,0,0},//5
{1,1,0,1,0,0,0,0},//6
{0,0,0,1,1,1,1,1},//7
{0,0,0,1,0,0,0,0},//8
{0,0,0,1,1,0,0,0}//9
};char sign[8]={1,1,1,1,1,1,0,1};//-
char nosign[8]={1,1,1,1,1,1,1,1};voidmain()
{intpin;//int m = 0, n = 0;//int flag = 1;
int chip = 0;intchip0,chip1,chip2,chip3;int run = 0;
unsignedint time0 = 0, time1 = 0;inta,b;charc;intresult;intnum1,num2;int negative = 0;int iteration = 500;inti;if (wiringPiSetup () == -1) //test the install status of wiringPi
{
exit (1) ;
}for (pin = 0 ; pin < 8 ; ++pin)
{
pinMode (pin, OUTPUT) ;
digitalWrite(pin, HIGH);
}
pinMode(DIGIT1, OUTPUT);
pinMode(DIGIT2, OUTPUT);
pinMode(DIGIT3, OUTPUT);
pinMode(DIGIT4, OUTPUT);//pinMode(BTN0, INPUT);//The start button
pinMode(BTN1, INPUT); //The stop/stop button
while (true)
{
scanf("%d%c%d",&a,&c,&b);switch(c){case ‘+‘:result = a+b;break;case ‘-‘:result = a-b;break;case ‘*‘:result = a*b;break;case ‘/‘:result = a/b;break;
}
printf("%d\n",result);if(result<0){
negative=1;
result= -result;
}elsenegative=0;
result= result%100; //only display 2-digit
num1 = result/10;
num2= result%10;//printf("%d %d\n",num1,num2);
for(i=0;i
{
digitalWrite(pin, sign[pin]);
}
}else{for (pin = 0; pin < 8; pin++)
{
digitalWrite(pin, nosign[pin]);
}
}
digitalWrite(DIGIT1,1);
}else if(i%3==1){for (pin = 0; pin < 8; pin++)
{
digitalWrite(pin, digit[num1][pin]);
}
digitalWrite(DIGIT2,1);
}else{for (pin = 0; pin < 8; pin++)
{
digitalWrite(pin, digit[num2][pin]);
}
digitalWrite(DIGIT3,1);
}
delay(10);
digitalWrite(DIGIT1,0);
digitalWrite(DIGIT2,0);
digitalWrite(DIGIT3,0);
}
}
}