chris stevens
/
DBT1_7segments_gendisp
oxford DBT code1
main.cpp@0:d4471c28adb6, 2017-07-14 (annotated)
- Committer:
- cstevens
- Date:
- Fri Jul 14 10:52:52 2017 +0000
- Revision:
- 0:d4471c28adb6
Oxford DBT code 1
Who changed what in which revision?
User | Revision | Line number | New 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 | } |