This is a program to control a single digit display - i was using HDSP 5523 high efficiency red display from agilent technologies
main.cpp@0:6435f97d0500, 2010-08-01 (annotated)
- Committer:
- Flanker
- Date:
- Sun Aug 01 19:21:41 2010 +0000
- Revision:
- 0:6435f97d0500
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Flanker | 0:6435f97d0500 | 1 | #include "mbed.h" |
Flanker | 0:6435f97d0500 | 2 | |
Flanker | 0:6435f97d0500 | 3 | //Definition of digital pins - this is hardware dependant (you might chose to set it up diferently) |
Flanker | 0:6435f97d0500 | 4 | //In my case i had HDSP-5523 HER (High Efficiency Red) display where each led segment should consume 30mA |
Flanker | 0:6435f97d0500 | 5 | //On this display there are total 16 LED segment and if all of them would have been powered optimally there would not have been enough current as the USB port provides 0.5 A |
Flanker | 0:6435f97d0500 | 6 | //100mA is the consumption of the microcontroller itself so there is only 400mA for peripherals 400 - (16*30) = 400 - 480 = -80 mA |
Flanker | 0:6435f97d0500 | 7 | //So i would be 80 mA short + on top of that i have currently no resistors to cut the current from standard pin 40mA to just 30mA |
Flanker | 0:6435f97d0500 | 8 | //I decided to power just single digit of the display which as it seems is enough for the USB power. |
Flanker | 0:6435f97d0500 | 9 | //But if you have enough hardware and power for more digits or you have more power efficient display feel free to modify the code |
Flanker | 0:6435f97d0500 | 10 | |
Flanker | 0:6435f97d0500 | 11 | DigitalOut pin1(p17); |
Flanker | 0:6435f97d0500 | 12 | DigitalOut pin2(p18); |
Flanker | 0:6435f97d0500 | 13 | DigitalOut pin3(p19); |
Flanker | 0:6435f97d0500 | 14 | DigitalOut dot(p20); |
Flanker | 0:6435f97d0500 | 15 | DigitalOut pin4(p21); |
Flanker | 0:6435f97d0500 | 16 | DigitalOut pin5(p22); |
Flanker | 0:6435f97d0500 | 17 | DigitalOut pin6(p23); |
Flanker | 0:6435f97d0500 | 18 | DigitalOut pin7(p24); |
Flanker | 0:6435f97d0500 | 19 | |
Flanker | 0:6435f97d0500 | 20 | |
Flanker | 0:6435f97d0500 | 21 | void display_number(short int show_number) { //Function to control which pins are to be lit with which number |
Flanker | 0:6435f97d0500 | 22 | |
Flanker | 0:6435f97d0500 | 23 | switch (show_number) { //Switch statement decides which section of led display should light up -- this is dependent on hardware implementation |
Flanker | 0:6435f97d0500 | 24 | case 0: //If 0 is passed to the function and so on |
Flanker | 0:6435f97d0500 | 25 | pin1 = 1; |
Flanker | 0:6435f97d0500 | 26 | pin2 = 1; |
Flanker | 0:6435f97d0500 | 27 | pin3 = 1; |
Flanker | 0:6435f97d0500 | 28 | pin4 = 1; |
Flanker | 0:6435f97d0500 | 29 | pin5 = 1; |
Flanker | 0:6435f97d0500 | 30 | pin6 = 0; |
Flanker | 0:6435f97d0500 | 31 | pin7 = 1; |
Flanker | 0:6435f97d0500 | 32 | dot = 0; |
Flanker | 0:6435f97d0500 | 33 | break; |
Flanker | 0:6435f97d0500 | 34 | case 1: |
Flanker | 0:6435f97d0500 | 35 | pin1 = 0; |
Flanker | 0:6435f97d0500 | 36 | pin2 = 0; |
Flanker | 0:6435f97d0500 | 37 | pin3 = 1; |
Flanker | 0:6435f97d0500 | 38 | pin4 = 1; |
Flanker | 0:6435f97d0500 | 39 | pin5 = 0; |
Flanker | 0:6435f97d0500 | 40 | pin6 = 0; |
Flanker | 0:6435f97d0500 | 41 | pin7 = 0; |
Flanker | 0:6435f97d0500 | 42 | dot = 0; |
Flanker | 0:6435f97d0500 | 43 | break; |
Flanker | 0:6435f97d0500 | 44 | case 2: |
Flanker | 0:6435f97d0500 | 45 | pin1 = 1; |
Flanker | 0:6435f97d0500 | 46 | pin2 = 1; |
Flanker | 0:6435f97d0500 | 47 | pin3 = 0; |
Flanker | 0:6435f97d0500 | 48 | pin4 = 1; |
Flanker | 0:6435f97d0500 | 49 | pin5 = 1; |
Flanker | 0:6435f97d0500 | 50 | pin6 = 1; |
Flanker | 0:6435f97d0500 | 51 | pin7 = 0; |
Flanker | 0:6435f97d0500 | 52 | dot = 0; |
Flanker | 0:6435f97d0500 | 53 | break; |
Flanker | 0:6435f97d0500 | 54 | case 3: |
Flanker | 0:6435f97d0500 | 55 | pin1 = 0; |
Flanker | 0:6435f97d0500 | 56 | pin2 = 1; |
Flanker | 0:6435f97d0500 | 57 | pin3 = 1; |
Flanker | 0:6435f97d0500 | 58 | pin4 = 1; |
Flanker | 0:6435f97d0500 | 59 | pin5 = 1; |
Flanker | 0:6435f97d0500 | 60 | pin6 = 1; |
Flanker | 0:6435f97d0500 | 61 | pin7 = 0; |
Flanker | 0:6435f97d0500 | 62 | dot = 0; |
Flanker | 0:6435f97d0500 | 63 | break; |
Flanker | 0:6435f97d0500 | 64 | case 4: |
Flanker | 0:6435f97d0500 | 65 | pin1 = 0; |
Flanker | 0:6435f97d0500 | 66 | pin2 = 0; |
Flanker | 0:6435f97d0500 | 67 | pin3 = 1; |
Flanker | 0:6435f97d0500 | 68 | pin4 = 1; |
Flanker | 0:6435f97d0500 | 69 | pin5 = 0; |
Flanker | 0:6435f97d0500 | 70 | pin6 = 1; |
Flanker | 0:6435f97d0500 | 71 | pin7 = 1; |
Flanker | 0:6435f97d0500 | 72 | dot = 0; |
Flanker | 0:6435f97d0500 | 73 | break; |
Flanker | 0:6435f97d0500 | 74 | case 5: |
Flanker | 0:6435f97d0500 | 75 | pin1 = 0; |
Flanker | 0:6435f97d0500 | 76 | pin2 = 1; |
Flanker | 0:6435f97d0500 | 77 | pin3 = 1; |
Flanker | 0:6435f97d0500 | 78 | pin4 = 0; |
Flanker | 0:6435f97d0500 | 79 | pin5 = 1; |
Flanker | 0:6435f97d0500 | 80 | pin6 = 1; |
Flanker | 0:6435f97d0500 | 81 | pin7 = 1; |
Flanker | 0:6435f97d0500 | 82 | dot = 0; |
Flanker | 0:6435f97d0500 | 83 | break; |
Flanker | 0:6435f97d0500 | 84 | case 6: |
Flanker | 0:6435f97d0500 | 85 | pin1 = 1; |
Flanker | 0:6435f97d0500 | 86 | pin2 = 1; |
Flanker | 0:6435f97d0500 | 87 | pin3 = 1; |
Flanker | 0:6435f97d0500 | 88 | pin4 = 0; |
Flanker | 0:6435f97d0500 | 89 | pin5 = 1; |
Flanker | 0:6435f97d0500 | 90 | pin6 = 1; |
Flanker | 0:6435f97d0500 | 91 | pin7 = 1; |
Flanker | 0:6435f97d0500 | 92 | dot = 0; |
Flanker | 0:6435f97d0500 | 93 | break; |
Flanker | 0:6435f97d0500 | 94 | case 7: |
Flanker | 0:6435f97d0500 | 95 | pin1 = 0; |
Flanker | 0:6435f97d0500 | 96 | pin2 = 0; |
Flanker | 0:6435f97d0500 | 97 | pin3 = 1; |
Flanker | 0:6435f97d0500 | 98 | pin4 = 1; |
Flanker | 0:6435f97d0500 | 99 | pin5 = 1; |
Flanker | 0:6435f97d0500 | 100 | pin6 = 0; |
Flanker | 0:6435f97d0500 | 101 | pin7 = 0; |
Flanker | 0:6435f97d0500 | 102 | dot = 0; |
Flanker | 0:6435f97d0500 | 103 | break; |
Flanker | 0:6435f97d0500 | 104 | case 8: |
Flanker | 0:6435f97d0500 | 105 | pin1 = 1; |
Flanker | 0:6435f97d0500 | 106 | pin2 = 1; |
Flanker | 0:6435f97d0500 | 107 | pin3 = 1; |
Flanker | 0:6435f97d0500 | 108 | pin4 = 1; |
Flanker | 0:6435f97d0500 | 109 | pin5 = 1; |
Flanker | 0:6435f97d0500 | 110 | pin6 = 1; |
Flanker | 0:6435f97d0500 | 111 | pin7 = 1; |
Flanker | 0:6435f97d0500 | 112 | dot = 0; |
Flanker | 0:6435f97d0500 | 113 | break; |
Flanker | 0:6435f97d0500 | 114 | case 9: |
Flanker | 0:6435f97d0500 | 115 | pin1 = 0; |
Flanker | 0:6435f97d0500 | 116 | pin2 = 1; |
Flanker | 0:6435f97d0500 | 117 | pin3 = 1; |
Flanker | 0:6435f97d0500 | 118 | pin4 = 1; |
Flanker | 0:6435f97d0500 | 119 | pin5 = 1; |
Flanker | 0:6435f97d0500 | 120 | pin6 = 1; |
Flanker | 0:6435f97d0500 | 121 | pin7 = 1; |
Flanker | 0:6435f97d0500 | 122 | dot = 0; |
Flanker | 0:6435f97d0500 | 123 | break; |
Flanker | 0:6435f97d0500 | 124 | } |
Flanker | 0:6435f97d0500 | 125 | } |
Flanker | 0:6435f97d0500 | 126 | |
Flanker | 0:6435f97d0500 | 127 | void null_display() { //Function to light down the display (it seems that by default all the undefined pins have some small voltage by default) |
Flanker | 0:6435f97d0500 | 128 | pin1 = 0; |
Flanker | 0:6435f97d0500 | 129 | pin2 = 0; |
Flanker | 0:6435f97d0500 | 130 | pin3 = 0; |
Flanker | 0:6435f97d0500 | 131 | pin4 = 0; |
Flanker | 0:6435f97d0500 | 132 | pin5 = 0; |
Flanker | 0:6435f97d0500 | 133 | pin6 = 0; |
Flanker | 0:6435f97d0500 | 134 | pin7 = 0; |
Flanker | 0:6435f97d0500 | 135 | dot = 0; |
Flanker | 0:6435f97d0500 | 136 | } |
Flanker | 0:6435f97d0500 | 137 | |
Flanker | 0:6435f97d0500 | 138 | int main() { |
Flanker | 0:6435f97d0500 | 139 | short int number; //Testing number |
Flanker | 0:6435f97d0500 | 140 | null_display(); //Lets null the display first |
Flanker | 0:6435f97d0500 | 141 | number = 0; //Set the initial number |
Flanker | 0:6435f97d0500 | 142 | do { |
Flanker | 0:6435f97d0500 | 143 | display_number(number); //Display the number on the display |
Flanker | 0:6435f97d0500 | 144 | wait(1.0); |
Flanker | 0:6435f97d0500 | 145 | number++; //Increment then umber |
Flanker | 0:6435f97d0500 | 146 | if (number == 10) { //If we ran out of digits reset the number to zero |
Flanker | 0:6435f97d0500 | 147 | number = 0; |
Flanker | 0:6435f97d0500 | 148 | } |
Flanker | 0:6435f97d0500 | 149 | } while (number < 10); |
Flanker | 0:6435f97d0500 | 150 | } |