An example of how seven segment display brightness might be achieved

Dependencies:   mbed

Committer:
JimCordwell
Date:
Tue May 27 12:15:55 2014 +0000
Revision:
3:7d3a24c1ecd9
Parent:
2:c1dc418053f9
Comment update to reflect project rename

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JimCordwell 0:bbe54468c896 1 /**************************************************************************
JimCordwell 0:bbe54468c896 2 * *
JimCordwell 3:7d3a24c1ecd9 3 * This example builds on Segments_01_Simple by introducing an example *
JimCordwell 0:bbe54468c896 4 * of how brightness might be achieved. *
JimCordwell 0:bbe54468c896 5 * *
JimCordwell 0:bbe54468c896 6 * In this case the right hand LED is displayed dimmer than the left. *
JimCordwell 1:d6cbfa3636c7 7 * With more logic it would be possible to adjust the brightness of *
JimCordwell 0:bbe54468c896 8 * individual segments within the display. *
JimCordwell 0:bbe54468c896 9 * *
JimCordwell 0:bbe54468c896 10 **************************************************************************/
JimCordwell 0:bbe54468c896 11
JimCordwell 0:bbe54468c896 12 #include "mbed.h"
JimCordwell 0:bbe54468c896 13
JimCordwell 0:bbe54468c896 14 uint8_t left = 0;
JimCordwell 0:bbe54468c896 15 uint8_t right = 1;
JimCordwell 0:bbe54468c896 16
JimCordwell 0:bbe54468c896 17 uint8_t brightness = 100;
JimCordwell 0:bbe54468c896 18
JimCordwell 0:bbe54468c896 19 //The 8 segment outputs and com to switch between the LEDs
JimCordwell 0:bbe54468c896 20 DigitalOut seg_a(P1_23), seg_b(P1_28), seg_c(P0_16), seg_d(P1_31), seg_e(P1_13), seg_f(P1_16), seg_g(P1_19), seg_p(P0_23), com(P1_25);
JimCordwell 0:bbe54468c896 21
JimCordwell 0:bbe54468c896 22 /******************************************************
JimCordwell 0:bbe54468c896 23 * Set each of the segments for a desired LED *
JimCordwell 0:bbe54468c896 24 ******************************************************/
JimCordwell 0:bbe54468c896 25 void SetSegments(uint8_t led, uint8_t a, uint8_t b, uint8_t c, uint8_t d, uint8_t e, uint8_t f, uint8_t g, uint8_t p)
JimCordwell 2:c1dc418053f9 26 {
JimCordwell 0:bbe54468c896 27 //Set desired LED to update
JimCordwell 0:bbe54468c896 28 com = led;
JimCordwell 0:bbe54468c896 29
JimCordwell 0:bbe54468c896 30 //Switch on the desired segments a number of times based on the brightness required
JimCordwell 0:bbe54468c896 31 for(uint8_t i = 0; i < brightness; i++)
JimCordwell 0:bbe54468c896 32 {
JimCordwell 0:bbe54468c896 33 seg_a = 1 - a; //setting a segment to 1 means off
JimCordwell 0:bbe54468c896 34 seg_b = 1 - b; //so invert all requested segment values
JimCordwell 0:bbe54468c896 35 seg_c = 1 - c;
JimCordwell 0:bbe54468c896 36 seg_d = 1 - d;
JimCordwell 0:bbe54468c896 37 seg_e = 1 - e;
JimCordwell 0:bbe54468c896 38 seg_f = 1 - f;
JimCordwell 0:bbe54468c896 39 seg_g = 1 - g;
JimCordwell 0:bbe54468c896 40 seg_p = 1 - p;
JimCordwell 0:bbe54468c896 41 }
JimCordwell 0:bbe54468c896 42
JimCordwell 0:bbe54468c896 43 //Switch off all the segments a remaining number of times to reach 100 updates
JimCordwell 0:bbe54468c896 44 for(uint8_t i = 0; i < 100 - brightness; i++)
JimCordwell 0:bbe54468c896 45 {
JimCordwell 0:bbe54468c896 46 seg_a = seg_b = seg_c = seg_d = seg_e = seg_f = seg_g = seg_p = 1;
JimCordwell 0:bbe54468c896 47 }
JimCordwell 0:bbe54468c896 48
JimCordwell 0:bbe54468c896 49 //Finally switch off all segments again, we must do this otherwise when
JimCordwell 0:bbe54468c896 50 //switching com the segments could be momentarily duplicated from this led.
JimCordwell 0:bbe54468c896 51 seg_a = seg_b = seg_c = seg_d = seg_e = seg_f = seg_g = seg_p = 1;
JimCordwell 0:bbe54468c896 52
JimCordwell 0:bbe54468c896 53 }
JimCordwell 0:bbe54468c896 54
JimCordwell 0:bbe54468c896 55 /******************************************************
JimCordwell 0:bbe54468c896 56 * Main loop repeatedly updates each of the LEDs *
JimCordwell 0:bbe54468c896 57 ******************************************************/
JimCordwell 0:bbe54468c896 58 int main()
JimCordwell 0:bbe54468c896 59 {
JimCordwell 0:bbe54468c896 60 for(;;)
JimCordwell 0:bbe54468c896 61 {
JimCordwell 0:bbe54468c896 62 //Set the display to read '42'
JimCordwell 0:bbe54468c896 63
JimCordwell 0:bbe54468c896 64 //The 4 will be displayed at full brightness
JimCordwell 0:bbe54468c896 65 brightness = 100;
JimCordwell 0:bbe54468c896 66 SetSegments(left, 0,1,1,0,0,1,1,0); //4
JimCordwell 0:bbe54468c896 67
JimCordwell 0:bbe54468c896 68 //The 2 will be displayed much more faintly
JimCordwell 0:bbe54468c896 69 brightness = 5;
JimCordwell 0:bbe54468c896 70 SetSegments(right, 1,1,0,1,1,0,1,0); //2
JimCordwell 0:bbe54468c896 71 }
JimCordwell 0:bbe54468c896 72 }
JimCordwell 0:bbe54468c896 73