This is a program to control a single digit display - i was using HDSP 5523 high efficiency red display from agilent technologies

Dependencies:   mbed

Committer:
Flanker
Date:
Sun Aug 01 19:21:41 2010 +0000
Revision:
0:6435f97d0500

        

Who changed what in which revision?

UserRevisionLine numberNew 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 }