利用树莓派实现简单的计算器
在实验板上实现一个简单的计算器,要求在实验板的命令行运行程序,输入两个100以内的数字以及运算符 (+,-,*,/),然后计算结果并在数码管上显示计算结果。
电路设计如下:
实物连接:
代码如下:
#include <wiringPi.h> #include <stdio.h> #include <stdlib.h> #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}; void main() { int pin; //int m = 0, n = 0; //int flag = 1; int chip = 0; int chip0,chip1,chip2,chip3; int run = 0; unsigned int time0 = 0, time1 = 0; int a,b; char c; int result; int num1,num2; int negative = 0; int iteration = 500; int i; 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; } else negative=0; result = result%100; //only display 2-digit num1 = result/10; num2 = result%10; //printf("%d %d\n",num1,num2); for(i=0;i<iteration;i++){ if(i%3==0){ if(negative){ for (pin = 0; pin < 8; pin++) { 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); } } }
功能说明:支持基本的四则运算,使用前三个数码管显示结果,第一个显示符号,如果结果为正,不显示,如果为负,显示“-”,每个计算结果会在数码管上显示5秒左右,当数码管熄灭后可以进行下一次的运算,结果需要三位数显示的话会对100进行取余后进行显示。
运行,输入算术表达式进行验证
posted on 2015-07-01 00:11 Jasonzhang398 阅读(1364) 评论(0) 编辑 收藏 举报