Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 74HC595 RS485 mbed
Fork of Check_7segLED_driver by
main.cpp@1:69423a344fe4, 2018-08-21 (annotated)
- Committer:
- shivanandgowdakr
- Date:
- Tue Aug 21 10:24:08 2018 +0000
- Revision:
- 1:69423a344fe4
- Parent:
- 0:b24071fbcbb3
7segment displays multiple
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| kenjiArai | 0:b24071fbcbb3 | 1 | |
| kenjiArai | 0:b24071fbcbb3 | 2 | // Include -------------------------------------------------------------------- |
| kenjiArai | 0:b24071fbcbb3 | 3 | #include "mbed.h" |
| kenjiArai | 0:b24071fbcbb3 | 4 | #include "7segLed_HC595.h" |
| shivanandgowdakr | 1:69423a344fe4 | 5 | #include "RS485.h" |
| kenjiArai | 0:b24071fbcbb3 | 6 | |
| kenjiArai | 0:b24071fbcbb3 | 7 | // Definition ----------------------------------------------------------------- |
| kenjiArai | 0:b24071fbcbb3 | 8 | #define NUM_OF_DIGIT 6 |
| kenjiArai | 0:b24071fbcbb3 | 9 | #define KEYIN_THEN_EXIT_WHILE() {if(exit_while_loop_when_keyinput()){ break;}} |
| kenjiArai | 0:b24071fbcbb3 | 10 | |
| shivanandgowdakr | 1:69423a344fe4 | 11 | SevenSegLed led_7segs(PC_12,PC_10, PC_9, PC_8, NUM_OF_DIGIT); |
| shivanandgowdakr | 1:69423a344fe4 | 12 | // Serial_Data_Out, Serial_Clock, Latch , PWM_Brightness_Contol |
| shivanandgowdakr | 1:69423a344fe4 | 13 | Serial pc(USBTX,USBRX); |
| shivanandgowdakr | 1:69423a344fe4 | 14 | Serial rs485(PF_7,PF_6,PA_1); |
| kenjiArai | 0:b24071fbcbb3 | 15 | DigitalOut myled(LED1); |
| kenjiArai | 0:b24071fbcbb3 | 16 | AnalogIn vol(A0); |
| kenjiArai | 0:b24071fbcbb3 | 17 | time_t seconds; |
| kenjiArai | 0:b24071fbcbb3 | 18 | |
| shivanandgowdakr | 1:69423a344fe4 | 19 | DigitalIn sw1(PE_10); |
| shivanandgowdakr | 1:69423a344fe4 | 20 | DigitalIn sw2(PE_12); |
| shivanandgowdakr | 1:69423a344fe4 | 21 | DigitalIn sw3(PE_13); |
| shivanandgowdakr | 1:69423a344fe4 | 22 | DigitalIn sw4(PE_14); |
| shivanandgowdakr | 1:69423a344fe4 | 23 | DigitalIn sw5(PH_1); |
| shivanandgowdakr | 1:69423a344fe4 | 24 | DigitalIn sw6(PH_0); |
| shivanandgowdakr | 1:69423a344fe4 | 25 | DigitalIn sw7(PC_15); |
| shivanandgowdakr | 1:69423a344fe4 | 26 | DigitalIn sw8(PC_14); |
| kenjiArai | 0:b24071fbcbb3 | 27 | |
| shivanandgowdakr | 1:69423a344fe4 | 28 | char Rx_Data[20]={'\0'}; |
| shivanandgowdakr | 1:69423a344fe4 | 29 | char Floor_No_MSB,Floor_No_LSB; |
| shivanandgowdakr | 1:69423a344fe4 | 30 | int Get_Floor_Number( int result); |
| shivanandgowdakr | 1:69423a344fe4 | 31 | int validate_rx_data(char *Rx); |
| shivanandgowdakr | 1:69423a344fe4 | 32 | int read_switch_state(void); |
| shivanandgowdakr | 1:69423a344fe4 | 33 | int Count=0; |
| kenjiArai | 0:b24071fbcbb3 | 34 | bool exit_while_loop_when_keyinput(void); |
| kenjiArai | 0:b24071fbcbb3 | 35 | |
| shivanandgowdakr | 1:69423a344fe4 | 36 | |
| kenjiArai | 0:b24071fbcbb3 | 37 | int main() |
| kenjiArai | 0:b24071fbcbb3 | 38 | { |
| shivanandgowdakr | 1:69423a344fe4 | 39 | int value=read_switch_state(); |
| shivanandgowdakr | 1:69423a344fe4 | 40 | int floor=Get_Floor_Number(value); |
| shivanandgowdakr | 1:69423a344fe4 | 41 | |
| shivanandgowdakr | 1:69423a344fe4 | 42 | uint32_t max = 4; |
| shivanandgowdakr | 1:69423a344fe4 | 43 | for (uint32_t i = 1; i < NUM_OF_DIGIT; i++) |
| shivanandgowdakr | 1:69423a344fe4 | 44 | { |
| kenjiArai | 0:b24071fbcbb3 | 45 | max = max * 10 + 9; |
| kenjiArai | 0:b24071fbcbb3 | 46 | } |
| kenjiArai | 0:b24071fbcbb3 | 47 | pc.printf("max = %d\r\n", max); |
| kenjiArai | 0:b24071fbcbb3 | 48 | led_7segs.zero_suppress(true); |
| shivanandgowdakr | 1:69423a344fe4 | 49 | |
| shivanandgowdakr | 1:69423a344fe4 | 50 | |
| shivanandgowdakr | 1:69423a344fe4 | 51 | while(true) |
| shivanandgowdakr | 1:69423a344fe4 | 52 | { |
| shivanandgowdakr | 1:69423a344fe4 | 53 | if(rs485.readable()) |
| shivanandgowdakr | 1:69423a344fe4 | 54 | { |
| shivanandgowdakr | 1:69423a344fe4 | 55 | int i=0; |
| shivanandgowdakr | 1:69423a344fe4 | 56 | //A22010055B; Send this data to Mbed Device through RS485 |
| shivanandgowdakr | 1:69423a344fe4 | 57 | // A - Start of Frame |
| shivanandgowdakr | 1:69423a344fe4 | 58 | // 22 - Display Address Panel Number |
| shivanandgowdakr | 1:69423a344fe4 | 59 | // 0 - Delimeter |
| shivanandgowdakr | 1:69423a344fe4 | 60 | // 1- Turn On Display |
| shivanandgowdakr | 1:69423a344fe4 | 61 | //0- Delimiter |
| shivanandgowdakr | 1:69423a344fe4 | 62 | //055 or xxx Number to be displayed |
| shivanandgowdakr | 1:69423a344fe4 | 63 | // B; End of Frame. |
| shivanandgowdakr | 1:69423a344fe4 | 64 | Rx_Data[i++]=rs485.getc(); |
| kenjiArai | 0:b24071fbcbb3 | 65 | } |
| shivanandgowdakr | 1:69423a344fe4 | 66 | |
| shivanandgowdakr | 1:69423a344fe4 | 67 | } |
| shivanandgowdakr | 1:69423a344fe4 | 68 | } |
| kenjiArai | 0:b24071fbcbb3 | 69 | |
| shivanandgowdakr | 1:69423a344fe4 | 70 | |
| kenjiArai | 0:b24071fbcbb3 | 71 | |
| shivanandgowdakr | 1:69423a344fe4 | 72 | int validate_rx_data(char *Rx) |
| shivanandgowdakr | 1:69423a344fe4 | 73 | { |
| shivanandgowdakr | 1:69423a344fe4 | 74 | int res; |
| shivanandgowdakr | 1:69423a344fe4 | 75 | if( Rx[0]=='A' && Rx[1]=='2'&& Rx[2]=='2' |
| shivanandgowdakr | 1:69423a344fe4 | 76 | && Rx[3]==0x30 && Rx[4]=='1'&& Rx[5]==0x30 |
| shivanandgowdakr | 1:69423a344fe4 | 77 | && Rx[9]=='B') |
| kenjiArai | 0:b24071fbcbb3 | 78 | { |
| shivanandgowdakr | 1:69423a344fe4 | 79 | printf("Valid Data Recieved \r\n"); |
| shivanandgowdakr | 1:69423a344fe4 | 80 | int a =Rx[6]-0x30; |
| shivanandgowdakr | 1:69423a344fe4 | 81 | int b=Rx[7]-0x30; |
| shivanandgowdakr | 1:69423a344fe4 | 82 | int c=Rx[8]-0x30; |
| shivanandgowdakr | 1:69423a344fe4 | 83 | res=(a<<16 ||b<<8||c); |
| shivanandgowdakr | 1:69423a344fe4 | 84 | led_7segs=res; |
| shivanandgowdakr | 1:69423a344fe4 | 85 | return 1; |
| kenjiArai | 0:b24071fbcbb3 | 86 | } |
| shivanandgowdakr | 1:69423a344fe4 | 87 | |
| shivanandgowdakr | 1:69423a344fe4 | 88 | else if( Rx[0]=='A' && Rx[1]=='2'&& Rx[2]=='2' |
| shivanandgowdakr | 1:69423a344fe4 | 89 | && Rx[3]==0x30 && Rx[4]=='2'&& Rx[5]==0x30 |
| shivanandgowdakr | 1:69423a344fe4 | 90 | && Rx[9]=='B') |
| kenjiArai | 0:b24071fbcbb3 | 91 | { |
| shivanandgowdakr | 1:69423a344fe4 | 92 | char str[4]="nil"; |
| shivanandgowdakr | 1:69423a344fe4 | 93 | printf("Valid Data Recieved \r\n"); |
| shivanandgowdakr | 1:69423a344fe4 | 94 | led_7segs=res; |
| shivanandgowdakr | 1:69423a344fe4 | 95 | led_7segs.put_strings(str); |
| shivanandgowdakr | 1:69423a344fe4 | 96 | return 1; |
| kenjiArai | 0:b24071fbcbb3 | 97 | } |
| shivanandgowdakr | 1:69423a344fe4 | 98 | else |
| shivanandgowdakr | 1:69423a344fe4 | 99 | { |
| shivanandgowdakr | 1:69423a344fe4 | 100 | printf(" Not Intended to me \r\n"); |
| shivanandgowdakr | 1:69423a344fe4 | 101 | memset(Rx,'\0',20); |
| shivanandgowdakr | 1:69423a344fe4 | 102 | return 0; |
| shivanandgowdakr | 1:69423a344fe4 | 103 | } |
| shivanandgowdakr | 1:69423a344fe4 | 104 | |
| kenjiArai | 0:b24071fbcbb3 | 105 | } |
| kenjiArai | 0:b24071fbcbb3 | 106 | |
| shivanandgowdakr | 1:69423a344fe4 | 107 | int read_switch_state(void) |
| kenjiArai | 0:b24071fbcbb3 | 108 | { |
| shivanandgowdakr | 1:69423a344fe4 | 109 | int c1,c2,c3,c4,c5,c6,c7,c8; int res=0; |
| shivanandgowdakr | 1:69423a344fe4 | 110 | if(sw1==0) |
| shivanandgowdakr | 1:69423a344fe4 | 111 | c1=0; |
| shivanandgowdakr | 1:69423a344fe4 | 112 | else |
| shivanandgowdakr | 1:69423a344fe4 | 113 | c1=1; |
| shivanandgowdakr | 1:69423a344fe4 | 114 | if(sw2==0) |
| shivanandgowdakr | 1:69423a344fe4 | 115 | c2=0; |
| shivanandgowdakr | 1:69423a344fe4 | 116 | else |
| shivanandgowdakr | 1:69423a344fe4 | 117 | c2=0x02; |
| shivanandgowdakr | 1:69423a344fe4 | 118 | if(sw3==0) |
| shivanandgowdakr | 1:69423a344fe4 | 119 | c3=0; |
| shivanandgowdakr | 1:69423a344fe4 | 120 | else |
| shivanandgowdakr | 1:69423a344fe4 | 121 | c3=0x04; |
| shivanandgowdakr | 1:69423a344fe4 | 122 | if(sw4==0) |
| shivanandgowdakr | 1:69423a344fe4 | 123 | c4=0; |
| shivanandgowdakr | 1:69423a344fe4 | 124 | else |
| shivanandgowdakr | 1:69423a344fe4 | 125 | c4=0x08; |
| shivanandgowdakr | 1:69423a344fe4 | 126 | |
| shivanandgowdakr | 1:69423a344fe4 | 127 | if(sw5==0) |
| shivanandgowdakr | 1:69423a344fe4 | 128 | c5=0; |
| shivanandgowdakr | 1:69423a344fe4 | 129 | else |
| shivanandgowdakr | 1:69423a344fe4 | 130 | c5=16; |
| shivanandgowdakr | 1:69423a344fe4 | 131 | if(sw6==0) |
| shivanandgowdakr | 1:69423a344fe4 | 132 | c6=0; |
| shivanandgowdakr | 1:69423a344fe4 | 133 | else |
| shivanandgowdakr | 1:69423a344fe4 | 134 | c6=32; |
| shivanandgowdakr | 1:69423a344fe4 | 135 | if(sw7==0) |
| shivanandgowdakr | 1:69423a344fe4 | 136 | c7=0; |
| shivanandgowdakr | 1:69423a344fe4 | 137 | else |
| shivanandgowdakr | 1:69423a344fe4 | 138 | c7=64; |
| shivanandgowdakr | 1:69423a344fe4 | 139 | if(sw8==0) |
| shivanandgowdakr | 1:69423a344fe4 | 140 | c8=0; |
| shivanandgowdakr | 1:69423a344fe4 | 141 | else |
| shivanandgowdakr | 1:69423a344fe4 | 142 | c8=128; |
| shivanandgowdakr | 1:69423a344fe4 | 143 | |
| shivanandgowdakr | 1:69423a344fe4 | 144 | res=c1|c2|c3|c4|c5|c6|c7|c8; |
| shivanandgowdakr | 1:69423a344fe4 | 145 | if(res==1) |
| shivanandgowdakr | 1:69423a344fe4 | 146 | return 1; |
| shivanandgowdakr | 1:69423a344fe4 | 147 | else if(res==3) |
| shivanandgowdakr | 1:69423a344fe4 | 148 | return 2; |
| shivanandgowdakr | 1:69423a344fe4 | 149 | else if(res==7) |
| shivanandgowdakr | 1:69423a344fe4 | 150 | return 3; |
| shivanandgowdakr | 1:69423a344fe4 | 151 | else if(res==15) |
| shivanandgowdakr | 1:69423a344fe4 | 152 | return 4; |
| shivanandgowdakr | 1:69423a344fe4 | 153 | else if(res==31) |
| shivanandgowdakr | 1:69423a344fe4 | 154 | return 5; |
| shivanandgowdakr | 1:69423a344fe4 | 155 | else if(res==63) |
| shivanandgowdakr | 1:69423a344fe4 | 156 | return 6; |
| shivanandgowdakr | 1:69423a344fe4 | 157 | else if(res==127) |
| shivanandgowdakr | 1:69423a344fe4 | 158 | return 7; |
| shivanandgowdakr | 1:69423a344fe4 | 159 | else if(res==255) |
| shivanandgowdakr | 1:69423a344fe4 | 160 | return 8; |
| shivanandgowdakr | 1:69423a344fe4 | 161 | |
| shivanandgowdakr | 1:69423a344fe4 | 162 | return -1; |
| kenjiArai | 0:b24071fbcbb3 | 163 | } |
| shivanandgowdakr | 1:69423a344fe4 | 164 | |
| shivanandgowdakr | 1:69423a344fe4 | 165 | |
| shivanandgowdakr | 1:69423a344fe4 | 166 | int Get_Floor_Number( int result ) |
| shivanandgowdakr | 1:69423a344fe4 | 167 | { |
| shivanandgowdakr | 1:69423a344fe4 | 168 | int MSB;int LSB; |
| shivanandgowdakr | 1:69423a344fe4 | 169 | MSB=0x30; |
| shivanandgowdakr | 1:69423a344fe4 | 170 | LSB=0x30+result; |
| shivanandgowdakr | 1:69423a344fe4 | 171 | result=MSB+LSB; |
| shivanandgowdakr | 1:69423a344fe4 | 172 | return result; |
| shivanandgowdakr | 1:69423a344fe4 | 173 | |
| shivanandgowdakr | 1:69423a344fe4 | 174 | } |
