oxford DBT code1

Dependencies:   mbed

Committer:
cstevens
Date:
Fri Jul 14 10:52:52 2017 +0000
Revision:
0:d4471c28adb6
Oxford DBT code 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cstevens 0:d4471c28adb6 1 #include "mbed.h"
cstevens 0:d4471c28adb6 2
cstevens 0:d4471c28adb6 3
cstevens 0:d4471c28adb6 4 DigitalOut T1(PTA13); // base for digit #1
cstevens 0:d4471c28adb6 5 DigitalOut T2(PTD5); // base for digit #2
cstevens 0:d4471c28adb6 6 DigitalOut T3(PTD0); // base for digit #3
cstevens 0:d4471c28adb6 7 DigitalOut T4(PTD2); // base for digit #4
cstevens 0:d4471c28adb6 8
cstevens 0:d4471c28adb6 9 // digital bus to send 8bit code for each 7 seg through
cstevens 0:d4471c28adb6 10 BusOut sseg(PTA1,PTC9,PTC8,PTA12,PTD4,PTA2,PTA4,PTA5);
cstevens 0:d4471c28adb6 11
cstevens 0:d4471c28adb6 12 Ticker dtimer;
cstevens 0:d4471c28adb6 13
cstevens 0:d4471c28adb6 14
cstevens 0:d4471c28adb6 15 //decoder for BCD to 7 segment =a-b-c-d-e-f-g-DP
cstevens 0:d4471c28adb6 16 int sbits[12]={
cstevens 0:d4471c28adb6 17 0b11111100, //'0'
cstevens 0:d4471c28adb6 18 0b01100000, //'1'
cstevens 0:d4471c28adb6 19 0b11011010, //'2'
cstevens 0:d4471c28adb6 20 0b11110010, //'3'
cstevens 0:d4471c28adb6 21 0b01100110, //'4'
cstevens 0:d4471c28adb6 22 0b10110110, //'5'
cstevens 0:d4471c28adb6 23 0b10111110, //'6'
cstevens 0:d4471c28adb6 24 0b11100000, //'7'
cstevens 0:d4471c28adb6 25 0b11111110, //'8'
cstevens 0:d4471c28adb6 26 0b11110110, //'9'
cstevens 0:d4471c28adb6 27 0b00000001 //'.' // decimal point
cstevens 0:d4471c28adb6 28 };
cstevens 0:d4471c28adb6 29
cstevens 0:d4471c28adb6 30 int disp[4]={0,1,2,3}; // variable to store the current display on
cstevens 0:d4471c28adb6 31
cstevens 0:d4471c28adb6 32 int flash1(float tm){
cstevens 0:d4471c28adb6 33 T1=1;
cstevens 0:d4471c28adb6 34 wait(tm/2);
cstevens 0:d4471c28adb6 35 T1=0;
cstevens 0:d4471c28adb6 36 wait(tm/2);
cstevens 0:d4471c28adb6 37 return(1);
cstevens 0:d4471c28adb6 38 }
cstevens 0:d4471c28adb6 39
cstevens 0:d4471c28adb6 40
cstevens 0:d4471c28adb6 41 int flash2(float tm){
cstevens 0:d4471c28adb6 42 T2=1;
cstevens 0:d4471c28adb6 43 wait(tm/2);
cstevens 0:d4471c28adb6 44 T2=0;
cstevens 0:d4471c28adb6 45 wait(tm/2);
cstevens 0:d4471c28adb6 46 return(1);
cstevens 0:d4471c28adb6 47 }
cstevens 0:d4471c28adb6 48
cstevens 0:d4471c28adb6 49 int flash3(float tm){
cstevens 0:d4471c28adb6 50 T3=1;
cstevens 0:d4471c28adb6 51 wait(tm/2);
cstevens 0:d4471c28adb6 52 T3=0;
cstevens 0:d4471c28adb6 53 wait(tm/2);
cstevens 0:d4471c28adb6 54 return(1);
cstevens 0:d4471c28adb6 55 }
cstevens 0:d4471c28adb6 56
cstevens 0:d4471c28adb6 57 int flash4(float tm){
cstevens 0:d4471c28adb6 58 T4=1;
cstevens 0:d4471c28adb6 59 wait(tm/2);
cstevens 0:d4471c28adb6 60 T4=0;
cstevens 0:d4471c28adb6 61 wait(tm/2);
cstevens 0:d4471c28adb6 62 return(1);
cstevens 0:d4471c28adb6 63 }
cstevens 0:d4471c28adb6 64
cstevens 0:d4471c28adb6 65 // update the display with one cycle of flashes
cstevens 0:d4471c28adb6 66 void dupdate(){
cstevens 0:d4471c28adb6 67
cstevens 0:d4471c28adb6 68 sseg=~sbits[disp[0]];
cstevens 0:d4471c28adb6 69 flash1(0.001);
cstevens 0:d4471c28adb6 70 sseg=~sbits[disp[1]];
cstevens 0:d4471c28adb6 71 flash2(0.001);
cstevens 0:d4471c28adb6 72 sseg=~sbits[disp[2]];
cstevens 0:d4471c28adb6 73 flash3(0.001);
cstevens 0:d4471c28adb6 74 sseg=~sbits[disp[3]];
cstevens 0:d4471c28adb6 75 flash4(0.001);
cstevens 0:d4471c28adb6 76
cstevens 0:d4471c28adb6 77 }
cstevens 0:d4471c28adb6 78
cstevens 0:d4471c28adb6 79 // just cycle through leds in turn
cstevens 0:d4471c28adb6 80 int main() {
cstevens 0:d4471c28adb6 81 dtimer.attach(&dupdate,0.01);
cstevens 0:d4471c28adb6 82 T1=1;
cstevens 0:d4471c28adb6 83
cstevens 0:d4471c28adb6 84 wait(1);
cstevens 0:d4471c28adb6 85 int q;
cstevens 0:d4471c28adb6 86 while(1){
cstevens 0:d4471c28adb6 87 for(q=0;q<11;q++){
cstevens 0:d4471c28adb6 88
cstevens 0:d4471c28adb6 89 disp[0]=q;
cstevens 0:d4471c28adb6 90 disp[1]=(q+1)%10;
cstevens 0:d4471c28adb6 91 disp[2]=(q+2)%10;
cstevens 0:d4471c28adb6 92 disp[3]=(q+3)%10;
cstevens 0:d4471c28adb6 93 wait(1);
cstevens 0:d4471c28adb6 94
cstevens 0:d4471c28adb6 95 }
cstevens 0:d4471c28adb6 96
cstevens 0:d4471c28adb6 97 }
cstevens 0:d4471c28adb6 98 }