Nextion TFT LCD Card Display

Dependencies:   MFRC522 NextionLCD

Fork of ProjectCardDisplay by Shivanand Gowda

Committer:
shivanandgowdakr
Date:
Tue Aug 21 11:18:56 2018 +0000
Revision:
0:a5d3db2f2625
Child:
1:ff4e4f645e13
Access Control Using MIFARE RFID Card, and with details displayed on Nextion LCD;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shivanandgowdakr 0:a5d3db2f2625 1 #include "mbed.h"
shivanandgowdakr 0:a5d3db2f2625 2 #include "NextionLCD.h"
shivanandgowdakr 0:a5d3db2f2625 3 #include "Time.h"
shivanandgowdakr 0:a5d3db2f2625 4 #define PASSWORD 11111
shivanandgowdakr 0:a5d3db2f2625 5
shivanandgowdakr 0:a5d3db2f2625 6 #include "MFRC522.h"
shivanandgowdakr 0:a5d3db2f2625 7 #include "Card.h"
shivanandgowdakr 0:a5d3db2f2625 8
shivanandgowdakr 0:a5d3db2f2625 9 RawSerial pc(USBTX,USBRX);
shivanandgowdakr 0:a5d3db2f2625 10 NextionLCD lcd(D1, D0); //Tx, Rx
shivanandgowdakr 0:a5d3db2f2625 11 Thread Menu;
shivanandgowdakr 0:a5d3db2f2625 12 Thread DispTime;
shivanandgowdakr 0:a5d3db2f2625 13 Thread DispName;
shivanandgowdakr 0:a5d3db2f2625 14
shivanandgowdakr 0:a5d3db2f2625 15 DigitalOut led1(LED1);
shivanandgowdakr 0:a5d3db2f2625 16 DigitalOut led2(LED2);
shivanandgowdakr 0:a5d3db2f2625 17 DigitalOut led3(LED3);
shivanandgowdakr 0:a5d3db2f2625 18 DigitalOut relay(D8);
shivanandgowdakr 0:a5d3db2f2625 19
shivanandgowdakr 0:a5d3db2f2625 20
shivanandgowdakr 0:a5d3db2f2625 21 volatile char c;
shivanandgowdakr 0:a5d3db2f2625 22 uint8_t Present_State=0;
shivanandgowdakr 0:a5d3db2f2625 23 uint8_t Previous_State=0;
shivanandgowdakr 0:a5d3db2f2625 24 uint8_t Back=0;
shivanandgowdakr 0:a5d3db2f2625 25 void Page1(void);
shivanandgowdakr 0:a5d3db2f2625 26 void Page2(void);
shivanandgowdakr 0:a5d3db2f2625 27 void Page3(void);
shivanandgowdakr 0:a5d3db2f2625 28 void Page4(void);
shivanandgowdakr 0:a5d3db2f2625 29 void Main_Menu(void);
shivanandgowdakr 0:a5d3db2f2625 30 void flip(void);
shivanandgowdakr 0:a5d3db2f2625 31
shivanandgowdakr 0:a5d3db2f2625 32
shivanandgowdakr 0:a5d3db2f2625 33 char prevPage='\0';
shivanandgowdakr 0:a5d3db2f2625 34 //bool flag=true;
shivanandgowdakr 0:a5d3db2f2625 35 char Cand_Name[25]={'\0'};
shivanandgowdakr 0:a5d3db2f2625 36 char Time_Disp[30]={'\0'};
shivanandgowdakr 0:a5d3db2f2625 37
shivanandgowdakr 0:a5d3db2f2625 38 void Display_Details(void);
shivanandgowdakr 0:a5d3db2f2625 39
shivanandgowdakr 0:a5d3db2f2625 40 void pc_recv()
shivanandgowdakr 0:a5d3db2f2625 41 {
shivanandgowdakr 0:a5d3db2f2625 42 while(pc.readable())
shivanandgowdakr 0:a5d3db2f2625 43 {
shivanandgowdakr 0:a5d3db2f2625 44 c=pc.getc();
shivanandgowdakr 0:a5d3db2f2625 45 }
shivanandgowdakr 0:a5d3db2f2625 46 }
shivanandgowdakr 0:a5d3db2f2625 47
shivanandgowdakr 0:a5d3db2f2625 48
shivanandgowdakr 0:a5d3db2f2625 49 void Menu_Selection()
shivanandgowdakr 0:a5d3db2f2625 50 {
shivanandgowdakr 0:a5d3db2f2625 51
shivanandgowdakr 0:a5d3db2f2625 52 while(1)
shivanandgowdakr 0:a5d3db2f2625 53 {
shivanandgowdakr 0:a5d3db2f2625 54 pc_recv();
shivanandgowdakr 0:a5d3db2f2625 55 switch (c)
shivanandgowdakr 0:a5d3db2f2625 56 {
shivanandgowdakr 0:a5d3db2f2625 57 case '1':
shivanandgowdakr 0:a5d3db2f2625 58 Main_Menu();
shivanandgowdakr 0:a5d3db2f2625 59 c='\0';
shivanandgowdakr 0:a5d3db2f2625 60 wait(1);
shivanandgowdakr 0:a5d3db2f2625 61 break;
shivanandgowdakr 0:a5d3db2f2625 62
shivanandgowdakr 0:a5d3db2f2625 63 case '2':
shivanandgowdakr 0:a5d3db2f2625 64 Page1();
shivanandgowdakr 0:a5d3db2f2625 65 c='\0';
shivanandgowdakr 0:a5d3db2f2625 66 wait(1);
shivanandgowdakr 0:a5d3db2f2625 67 break;
shivanandgowdakr 0:a5d3db2f2625 68
shivanandgowdakr 0:a5d3db2f2625 69 case '3':
shivanandgowdakr 0:a5d3db2f2625 70 Page2();
shivanandgowdakr 0:a5d3db2f2625 71 c='\0';
shivanandgowdakr 0:a5d3db2f2625 72 wait(1);
shivanandgowdakr 0:a5d3db2f2625 73 break;
shivanandgowdakr 0:a5d3db2f2625 74 case '4':
shivanandgowdakr 0:a5d3db2f2625 75 Page3();
shivanandgowdakr 0:a5d3db2f2625 76 c='\0';
shivanandgowdakr 0:a5d3db2f2625 77 wait(1);
shivanandgowdakr 0:a5d3db2f2625 78 break;
shivanandgowdakr 0:a5d3db2f2625 79
shivanandgowdakr 0:a5d3db2f2625 80 case '5':
shivanandgowdakr 0:a5d3db2f2625 81 Page4();
shivanandgowdakr 0:a5d3db2f2625 82 c='\0';
shivanandgowdakr 0:a5d3db2f2625 83 wait(1);
shivanandgowdakr 0:a5d3db2f2625 84 break;
shivanandgowdakr 0:a5d3db2f2625 85 default:
shivanandgowdakr 0:a5d3db2f2625 86 //lcd.DrawString(0,0,480,40,2,WHITE,BLACK,0,2, "Flash Master Card to Edit");
shivanandgowdakr 0:a5d3db2f2625 87 // Display_Details();
shivanandgowdakr 0:a5d3db2f2625 88 wait(1);
shivanandgowdakr 0:a5d3db2f2625 89 break;
shivanandgowdakr 0:a5d3db2f2625 90 }
shivanandgowdakr 0:a5d3db2f2625 91 }
shivanandgowdakr 0:a5d3db2f2625 92 }
shivanandgowdakr 0:a5d3db2f2625 93
shivanandgowdakr 0:a5d3db2f2625 94 void Display_Time(void)
shivanandgowdakr 0:a5d3db2f2625 95 {
shivanandgowdakr 0:a5d3db2f2625 96 while(true)
shivanandgowdakr 0:a5d3db2f2625 97 {
shivanandgowdakr 0:a5d3db2f2625 98 Get_Date_Time_Display(Time_Disp);
shivanandgowdakr 0:a5d3db2f2625 99 lcd.DrawString(0,0,480,40,2,BLACK,WHITE,0,0,Time_Disp);
shivanandgowdakr 0:a5d3db2f2625 100 lcd.DrawString(0,295,480,25,1,BLACK,WHITE,0,0,"Powered by Exultsoft Technolies Pvt. Ltd.");
shivanandgowdakr 0:a5d3db2f2625 101 wait(60);
shivanandgowdakr 0:a5d3db2f2625 102 memset(Time_Disp,'\0',30);
shivanandgowdakr 0:a5d3db2f2625 103 }
shivanandgowdakr 0:a5d3db2f2625 104
shivanandgowdakr 0:a5d3db2f2625 105 }
shivanandgowdakr 0:a5d3db2f2625 106 int main()
shivanandgowdakr 0:a5d3db2f2625 107 {
shivanandgowdakr 0:a5d3db2f2625 108 char CARDNO[30]={'\0'};
shivanandgowdakr 0:a5d3db2f2625 109 lcd.ClrScr(BLACK);
shivanandgowdakr 0:a5d3db2f2625 110 lcd.DrawString(0,100,480,40,2,WHITE,BLACK,0,2, "##############################");
shivanandgowdakr 0:a5d3db2f2625 111 lcd.DrawString(0,150,480,40,2,YELLOW,BLACK,0,0, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
shivanandgowdakr 0:a5d3db2f2625 112 lcd.DrawString(0,200,480,40,2,BLUE,BLACK,0,0, "------------------------------");
shivanandgowdakr 0:a5d3db2f2625 113 lcd.ClrScr(BLACK);
shivanandgowdakr 0:a5d3db2f2625 114 wait(10);
shivanandgowdakr 0:a5d3db2f2625 115 iSetTerminalTime("27072018111213");
shivanandgowdakr 0:a5d3db2f2625 116 Menu.start(callback(Menu_Selection));
shivanandgowdakr 0:a5d3db2f2625 117 DispTime.start(callback(Display_Time));
shivanandgowdakr 0:a5d3db2f2625 118 DispName.start(callback(Display_Details));
shivanandgowdakr 0:a5d3db2f2625 119
shivanandgowdakr 0:a5d3db2f2625 120 int success=-1;
shivanandgowdakr 0:a5d3db2f2625 121 while(true)
shivanandgowdakr 0:a5d3db2f2625 122 {
shivanandgowdakr 0:a5d3db2f2625 123 MIFARE_Init();
shivanandgowdakr 0:a5d3db2f2625 124 Read_Card_Details(CARDNO);
shivanandgowdakr 0:a5d3db2f2625 125
shivanandgowdakr 0:a5d3db2f2625 126 success= strcmp(CARDNO,"17D6C66B");
shivanandgowdakr 0:a5d3db2f2625 127 if(success==0)
shivanandgowdakr 0:a5d3db2f2625 128 {
shivanandgowdakr 0:a5d3db2f2625 129 flip();
shivanandgowdakr 0:a5d3db2f2625 130 wait(1);
shivanandgowdakr 0:a5d3db2f2625 131 }
shivanandgowdakr 0:a5d3db2f2625 132 }
shivanandgowdakr 0:a5d3db2f2625 133 }
shivanandgowdakr 0:a5d3db2f2625 134
shivanandgowdakr 0:a5d3db2f2625 135
shivanandgowdakr 0:a5d3db2f2625 136
shivanandgowdakr 0:a5d3db2f2625 137
shivanandgowdakr 0:a5d3db2f2625 138 void Main_Menu(void)
shivanandgowdakr 0:a5d3db2f2625 139 {
shivanandgowdakr 0:a5d3db2f2625 140 lcd.DrawString(0,40,480,40,2,WHITE,BLACK,0,0, "1. MAIN MENU ");
shivanandgowdakr 0:a5d3db2f2625 141 lcd.DrawString(0,80,480,40,2,YELLOW,RED,0,0,"2. OPTION ONE ");
shivanandgowdakr 0:a5d3db2f2625 142 lcd.DrawString(0,120,480,40,2,BLUE,GREEN,0,0, "3. OPTION TWO ");
shivanandgowdakr 0:a5d3db2f2625 143 lcd.DrawString(0,160,480,40,2,BROWN,WHITE,0,0,"4. OPTION THREE ");
shivanandgowdakr 0:a5d3db2f2625 144 lcd.DrawString(0,200,480,40,2,RED,YELLOW,0,0, "5. OPTION FOUR ");
shivanandgowdakr 0:a5d3db2f2625 145 lcd.DrawString(0,240,480,40,2,GREEN,BLUE,0,0,"6. OPTION FIVE");
shivanandgowdakr 0:a5d3db2f2625 146 wait(1);
shivanandgowdakr 0:a5d3db2f2625 147 Present_State=1; Previous_State=0;
shivanandgowdakr 0:a5d3db2f2625 148 }
shivanandgowdakr 0:a5d3db2f2625 149
shivanandgowdakr 0:a5d3db2f2625 150 void Page1(void)
shivanandgowdakr 0:a5d3db2f2625 151 {
shivanandgowdakr 0:a5d3db2f2625 152 lcd.DrawString(0,40,480,40,2,WHITE,BLACK,0,2, "1. MAIN MENU ");
shivanandgowdakr 0:a5d3db2f2625 153 lcd.DrawString(0,80,480,40,2,YELLOW,RED,0,0, "2. PAGE 1 OPTION ONE ");
shivanandgowdakr 0:a5d3db2f2625 154 lcd.DrawString(0,120,480,40,2,BLUE,GREEN,0,0, "3. PAGE 1 OPTION TWO ");
shivanandgowdakr 0:a5d3db2f2625 155 lcd.DrawString(0,160,480,40,2,WHITE,GRAY,0,0, "4. PAGE 1 OPTION THREE ");
shivanandgowdakr 0:a5d3db2f2625 156 lcd.DrawString(0,200,480,40,2,RED,YELLOW,0,0, "5. PAGE 1 OPTION FOUR ");
shivanandgowdakr 0:a5d3db2f2625 157 lcd.DrawString(0,240,480,40,2,GREEN,BLUE,0,0, "6. PAGE 1 OPTION FIVE");
shivanandgowdakr 0:a5d3db2f2625 158 wait(1);
shivanandgowdakr 0:a5d3db2f2625 159 Present_State=2; Previous_State=0;
shivanandgowdakr 0:a5d3db2f2625 160 }
shivanandgowdakr 0:a5d3db2f2625 161
shivanandgowdakr 0:a5d3db2f2625 162 void Page2(void)
shivanandgowdakr 0:a5d3db2f2625 163 {
shivanandgowdakr 0:a5d3db2f2625 164 lcd.DrawString(0,40,480,40,2,WHITE,BLACK,0,2, "1. MAIN MENU ");
shivanandgowdakr 0:a5d3db2f2625 165 lcd.DrawString(0,80,480,40,2,YELLOW,RED,0,0, "2. PAGE 2 OPTION ONE ");
shivanandgowdakr 0:a5d3db2f2625 166 lcd.DrawString(0,120,480,40,2,BLUE,GREEN,0,0, "3. PAGE 2 OPTION TWO ");
shivanandgowdakr 0:a5d3db2f2625 167 lcd.DrawString(0,160,480,40,2,WHITE,GRAY,0,0, "4. PAGE 2 OPTION THREE ");
shivanandgowdakr 0:a5d3db2f2625 168 lcd.DrawString(0,200,480,40,2,RED,YELLOW,0,0, "5. PAGE 2 OPTION FOUR ");
shivanandgowdakr 0:a5d3db2f2625 169 lcd.DrawString(0,240,480,40,2,GREEN,BLUE,0,0, "6. PAGE 2 OPTION FIVE");
shivanandgowdakr 0:a5d3db2f2625 170 wait(1);
shivanandgowdakr 0:a5d3db2f2625 171 Present_State=3; Previous_State=0;
shivanandgowdakr 0:a5d3db2f2625 172 }
shivanandgowdakr 0:a5d3db2f2625 173
shivanandgowdakr 0:a5d3db2f2625 174 void Page3(void)
shivanandgowdakr 0:a5d3db2f2625 175 {
shivanandgowdakr 0:a5d3db2f2625 176 lcd.DrawString(0,40,480,40,2,WHITE,BLACK,0,2, "1. MAIN MENU ");
shivanandgowdakr 0:a5d3db2f2625 177 lcd.DrawString(0,80,480,40,2,YELLOW,RED,0,0, "2. PAGE 3 OPTION ONE ");
shivanandgowdakr 0:a5d3db2f2625 178 lcd.DrawString(0,120,480,40,2,BLUE,GREEN,0,0, "3. PAGE 3 OPTION TWO ");
shivanandgowdakr 0:a5d3db2f2625 179 lcd.DrawString(0,160,480,40,2,WHITE,GRAY,0,0, "4. PAGE 3 OPTION THREE ");
shivanandgowdakr 0:a5d3db2f2625 180 lcd.DrawString(0,200,480,40,2,RED,YELLOW,0,0, "5. PAGE 3 OPTION FOUR ");
shivanandgowdakr 0:a5d3db2f2625 181 lcd.DrawString(0,240,480,40,2,GREEN,BLUE,0,0, "6. PAGE 3 OPTION FIVE");
shivanandgowdakr 0:a5d3db2f2625 182 wait(1);
shivanandgowdakr 0:a5d3db2f2625 183
shivanandgowdakr 0:a5d3db2f2625 184 Present_State=4; Previous_State=0;
shivanandgowdakr 0:a5d3db2f2625 185 }
shivanandgowdakr 0:a5d3db2f2625 186
shivanandgowdakr 0:a5d3db2f2625 187 void Page4(void)
shivanandgowdakr 0:a5d3db2f2625 188 {
shivanandgowdakr 0:a5d3db2f2625 189 lcd.DrawString(0,40,480,40,2,WHITE,BLACK,0,2, "1. MAIN MENU ");
shivanandgowdakr 0:a5d3db2f2625 190 lcd.DrawString(0,80,480,40,2,YELLOW,RED,0,0, "2. PAGE 4 OPTION ONE ");
shivanandgowdakr 0:a5d3db2f2625 191 lcd.DrawString(0,120,480,40,2,BLUE,GREEN,0,0, "3. PAGE 4 OPTION TWO ");
shivanandgowdakr 0:a5d3db2f2625 192 lcd.DrawString(0,160,480,40,2,WHITE,GRAY,0,0, "4. PAGE 4 OPTION THREE ");
shivanandgowdakr 0:a5d3db2f2625 193 lcd.DrawString(0,200,480,40,2,RED,YELLOW,0,0, "5. PAGE 4 OPTION FOUR ");
shivanandgowdakr 0:a5d3db2f2625 194 lcd.DrawString(0,240,480,40,2,GREEN,BLUE,0,0, "6. PAGE 4 OPTION FIVE");
shivanandgowdakr 0:a5d3db2f2625 195 wait(1);
shivanandgowdakr 0:a5d3db2f2625 196 Present_State=0; Previous_State=0;
shivanandgowdakr 0:a5d3db2f2625 197 }
shivanandgowdakr 0:a5d3db2f2625 198
shivanandgowdakr 0:a5d3db2f2625 199 void Display_Details(void)
shivanandgowdakr 0:a5d3db2f2625 200 {
shivanandgowdakr 0:a5d3db2f2625 201 while(1)
shivanandgowdakr 0:a5d3db2f2625 202 {
shivanandgowdakr 0:a5d3db2f2625 203 Thread::signal_wait(0x2);
shivanandgowdakr 0:a5d3db2f2625 204 memcpy(Cand_Name," Good Morning",20);
shivanandgowdakr 0:a5d3db2f2625 205 int hours=Get_Hours();
shivanandgowdakr 0:a5d3db2f2625 206 if(hours>=0 && hours <12)
shivanandgowdakr 0:a5d3db2f2625 207 lcd.FillRectangle(0,40,480,255,BLUE);
shivanandgowdakr 0:a5d3db2f2625 208 lcd.DrawString(0,40,480,40,2,WHITE,BLUE,0,2,Cand_Name);
shivanandgowdakr 0:a5d3db2f2625 209 lcd.DrawString(0,80,480,40,2,WHITE,BLUE,0,2,"Name of CARD Holder");
shivanandgowdakr 0:a5d3db2f2625 210 lcd.DrawString(0,120,480,40,2,WHITE,BLUE,0,2," Have a Great Day ");
shivanandgowdakr 0:a5d3db2f2625 211 memset(Cand_Name,'\0',25);
shivanandgowdakr 0:a5d3db2f2625 212 relay=0;
shivanandgowdakr 0:a5d3db2f2625 213 wait(1);
shivanandgowdakr 0:a5d3db2f2625 214 relay=1;
shivanandgowdakr 0:a5d3db2f2625 215 wait(2);
shivanandgowdakr 0:a5d3db2f2625 216 lcd.FillRectangle(0,40,480,255,BLUE);
shivanandgowdakr 0:a5d3db2f2625 217
shivanandgowdakr 0:a5d3db2f2625 218 }
shivanandgowdakr 0:a5d3db2f2625 219 }
shivanandgowdakr 0:a5d3db2f2625 220
shivanandgowdakr 0:a5d3db2f2625 221
shivanandgowdakr 0:a5d3db2f2625 222 void flip(void)
shivanandgowdakr 0:a5d3db2f2625 223 {
shivanandgowdakr 0:a5d3db2f2625 224 led1=!led1;
shivanandgowdakr 0:a5d3db2f2625 225 led2=!led2;
shivanandgowdakr 0:a5d3db2f2625 226 led3=!led3;
shivanandgowdakr 0:a5d3db2f2625 227 DispName.signal_set(0x02);
shivanandgowdakr 0:a5d3db2f2625 228
shivanandgowdakr 0:a5d3db2f2625 229 }
shivanandgowdakr 0:a5d3db2f2625 230