7segment displays multiple

Dependencies:   74HC595 RS485 mbed

Fork of Check_7segLED_driver by Kenji Arai

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?

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