Programa para un contador 00-99 up/down con display 7 seg. ánodo común

Dependencies:   mbed

Committer:
Otakutronics
Date:
Tue Dec 18 01:21:25 2018 +0000
Revision:
0:cee1c4dd8c94
Contador up/down con display 7 segmentos multiplexado

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Otakutronics 0:cee1c4dd8c94 1 #include "mbed.h"
Otakutronics 0:cee1c4dd8c94 2 /*
Otakutronics 0:cee1c4dd8c94 3 DigitalOut gpo(D0);
Otakutronics 0:cee1c4dd8c94 4 DigitalOut led(LED_RED);
Otakutronics 0:cee1c4dd8c94 5 */
Otakutronics 0:cee1c4dd8c94 6 //><
Otakutronics 0:cee1c4dd8c94 7 DigitalOut BjtUnd(PTA2,1);
Otakutronics 0:cee1c4dd8c94 8 DigitalOut BjtDcn(PTA1,1);
Otakutronics 0:cee1c4dd8c94 9
Otakutronics 0:cee1c4dd8c94 10 InterruptIn BtnInc(PTE25);
Otakutronics 0:cee1c4dd8c94 11 InterruptIn BtnDec(PTE24);
Otakutronics 0:cee1c4dd8c94 12
Otakutronics 0:cee1c4dd8c94 13 PortOut OutC(PortC,0x000000FF);
Otakutronics 0:cee1c4dd8c94 14 PortOut OutD(PortD,0x000000FF);
Otakutronics 0:cee1c4dd8c94 15
Otakutronics 0:cee1c4dd8c94 16 unsigned char unidades, decenas;
Otakutronics 0:cee1c4dd8c94 17
Otakutronics 0:cee1c4dd8c94 18 void ISR_Incrementar(){
Otakutronics 0:cee1c4dd8c94 19
Otakutronics 0:cee1c4dd8c94 20 unidades ++;
Otakutronics 0:cee1c4dd8c94 21 if (unidades == 10){
Otakutronics 0:cee1c4dd8c94 22 unidades = 0;
Otakutronics 0:cee1c4dd8c94 23 decenas ++;
Otakutronics 0:cee1c4dd8c94 24 if (decenas == 10){
Otakutronics 0:cee1c4dd8c94 25 decenas = 0;
Otakutronics 0:cee1c4dd8c94 26 }
Otakutronics 0:cee1c4dd8c94 27 }
Otakutronics 0:cee1c4dd8c94 28 wait_ms(30);
Otakutronics 0:cee1c4dd8c94 29 }
Otakutronics 0:cee1c4dd8c94 30
Otakutronics 0:cee1c4dd8c94 31 void ISR_Decrementar(){
Otakutronics 0:cee1c4dd8c94 32
Otakutronics 0:cee1c4dd8c94 33 unidades --;
Otakutronics 0:cee1c4dd8c94 34 if (unidades == 0xFF){
Otakutronics 0:cee1c4dd8c94 35 unidades = 9;
Otakutronics 0:cee1c4dd8c94 36 decenas --;
Otakutronics 0:cee1c4dd8c94 37 if (decenas == 0xFF){
Otakutronics 0:cee1c4dd8c94 38 decenas = 9;
Otakutronics 0:cee1c4dd8c94 39 }
Otakutronics 0:cee1c4dd8c94 40 }
Otakutronics 0:cee1c4dd8c94 41 wait_ms(30);
Otakutronics 0:cee1c4dd8c94 42 }
Otakutronics 0:cee1c4dd8c94 43
Otakutronics 0:cee1c4dd8c94 44 void BinToDisplay(unsigned char num){
Otakutronics 0:cee1c4dd8c94 45 switch (num){
Otakutronics 0:cee1c4dd8c94 46 case 0: OutC.write(0);
Otakutronics 0:cee1c4dd8c94 47 OutD.write(8);
Otakutronics 0:cee1c4dd8c94 48 break;
Otakutronics 0:cee1c4dd8c94 49 case 1: OutC.write(3);
Otakutronics 0:cee1c4dd8c94 50 OutD.write(11);
Otakutronics 0:cee1c4dd8c94 51 break;
Otakutronics 0:cee1c4dd8c94 52 case 2: OutC.write(4);
Otakutronics 0:cee1c4dd8c94 53 OutD.write(2);
Otakutronics 0:cee1c4dd8c94 54 break;
Otakutronics 0:cee1c4dd8c94 55 case 3: OutC.write(2);
Otakutronics 0:cee1c4dd8c94 56 OutD.write(2);
Otakutronics 0:cee1c4dd8c94 57 break;
Otakutronics 0:cee1c4dd8c94 58 case 4: OutC.write(3);
Otakutronics 0:cee1c4dd8c94 59 OutD.write(1);
Otakutronics 0:cee1c4dd8c94 60 break;
Otakutronics 0:cee1c4dd8c94 61 case 5: OutC.write(2);
Otakutronics 0:cee1c4dd8c94 62 OutD.write(4);
Otakutronics 0:cee1c4dd8c94 63 break;
Otakutronics 0:cee1c4dd8c94 64 case 6: OutC.write(0);
Otakutronics 0:cee1c4dd8c94 65 OutD.write(5);
Otakutronics 0:cee1c4dd8c94 66 break;
Otakutronics 0:cee1c4dd8c94 67 case 7: OutC.write(3);
Otakutronics 0:cee1c4dd8c94 68 OutD.write(10);
Otakutronics 0:cee1c4dd8c94 69 break;
Otakutronics 0:cee1c4dd8c94 70 case 8: OutC.write(0);
Otakutronics 0:cee1c4dd8c94 71 OutD.write(0);
Otakutronics 0:cee1c4dd8c94 72 break;
Otakutronics 0:cee1c4dd8c94 73 case 9: OutC.write(3);
Otakutronics 0:cee1c4dd8c94 74 OutD.write(0);
Otakutronics 0:cee1c4dd8c94 75 break;
Otakutronics 0:cee1c4dd8c94 76 }
Otakutronics 0:cee1c4dd8c94 77 }
Otakutronics 0:cee1c4dd8c94 78
Otakutronics 0:cee1c4dd8c94 79 int main()
Otakutronics 0:cee1c4dd8c94 80 {
Otakutronics 0:cee1c4dd8c94 81 BtnInc.mode(PullUp);
Otakutronics 0:cee1c4dd8c94 82 BtnDec.mode(PullUp);
Otakutronics 0:cee1c4dd8c94 83
Otakutronics 0:cee1c4dd8c94 84 BtnInc.rise(&ISR_Incrementar);
Otakutronics 0:cee1c4dd8c94 85 BtnDec.rise(&ISR_Decrementar);
Otakutronics 0:cee1c4dd8c94 86
Otakutronics 0:cee1c4dd8c94 87 unidades = 0;
Otakutronics 0:cee1c4dd8c94 88 decenas = 0;
Otakutronics 0:cee1c4dd8c94 89
Otakutronics 0:cee1c4dd8c94 90 while (true) {
Otakutronics 0:cee1c4dd8c94 91
Otakutronics 0:cee1c4dd8c94 92 BinToDisplay(unidades);
Otakutronics 0:cee1c4dd8c94 93 BjtUnd = 0;
Otakutronics 0:cee1c4dd8c94 94 BjtDcn = 1;
Otakutronics 0:cee1c4dd8c94 95 wait(0.02);
Otakutronics 0:cee1c4dd8c94 96 BinToDisplay(decenas);
Otakutronics 0:cee1c4dd8c94 97 BjtUnd = 1;
Otakutronics 0:cee1c4dd8c94 98 BjtDcn = 0;
Otakutronics 0:cee1c4dd8c94 99 wait(0.02);
Otakutronics 0:cee1c4dd8c94 100 /*
Otakutronics 0:cee1c4dd8c94 101 gpo = !gpo; // toggle pin
Otakutronics 0:cee1c4dd8c94 102 led = !led; // toggle led
Otakutronics 0:cee1c4dd8c94 103 wait(0.2f);
Otakutronics 0:cee1c4dd8c94 104 */
Otakutronics 0:cee1c4dd8c94 105 }
Otakutronics 0:cee1c4dd8c94 106 }