diff --git a/Actuator/lcd.c b/Actuator/lcd.c
new file mode 100644
index 0000000000000000000000000000000000000000..618641f8864123f1e17014b1fc04522fe698d405
--- /dev/null
+++ b/Actuator/lcd.c
@@ -0,0 +1,199 @@
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <pthread.h>
+#include <arpa/inet.h>
+#include <sys/socket.h>
+#include <wiringPi.h>
+#include <wiringPiI2C.h>
+
+// Define some device parameters
+#define I2C_ADDR 0x27 // I2C device address
+#define LCD_CHR  1 // Mode - Sending data
+#define LCD_CMD  0 // Mode - Sending command
+#define LCD_BACKLIGHT 0x08  // On
+#define ENABLE  0b00000100 // Enable bit
+#define LINE1_HUMAN  0x80 // 1st line
+#define LINE2_HP  0xC0 // 2nd line
+
+//lcd 관련 함수
+void lcd_init(void);
+void lcd_byte(int bits, int mode);
+void lcd_toggle_enable(int bits);
+void lcdLoc(int line);
+void typeln(const char *s);
+int fd;  // seen by all subroutines
+
+//사람이 감지되면 센서로부터 '2'를 받음
+#define HUMAN "2"
+
+//소켓 설정
+int serv_sock;
+int camera_sock = -1, sensor_sock = -1;
+struct sockaddr_in serv_addr, camera_addr, sensor_addr;
+socklen_t clnt_addr_size;
+
+//lcd 표출 메시지 설정
+char text1[20];
+char text2[20];
+char human_detect_msg[16] = "Human Detection";
+char not_dc_msg[17] = "Not Disabled car";
+
+//등록된 차량 지정
+char registed_car_num[3][9] = {"01가5568", "01가5568", ""};
+
+//센서 수신
+void* sensor_thd(){
+  char sensor_msg[2];
+    while (1)
+    {    
+      read(sensor_sock, sensor_msg, sizeof(sensor_msg));
+      printf("%s\n", sensor_msg);
+      
+      for(int i = 0; i < sizeof(text1); i++){
+        text1[i] = '\0';
+      }
+      //사람 감지된 경우
+      if(strcmp(sensor_msg, "2") == 0){
+        strcpy(text1, "Human Detection");
+      }
+      //사람 감지되지 않은 경우
+      else{
+        strcpy(text1, "No Human");
+      }
+  }
+}
+
+//카메라 수신
+void* camera_thd(){
+  char buffer[16];
+  while(1){
+    read(camera_sock, buffer, sizeof(buffer));
+    printf("%s\n", buffer);
+    for(int i = 0; i < sizeof(text2); i++){
+      text2[i] = '\0';
+    }
+    if(strncmp("empty", buffer, sizeof(buffer)) == 0){
+      strcpy(text2, "Empty");
+    }
+    //저장된 번호와 비교해서 일치하는 경우
+    else if(strncmp("39가2222", buffer, sizeof(buffer)) == 0) {
+      strcpy(text2, "Disabled Car");
+    }
+    //일치하지 않는 경우
+    else{
+      strcpy(text2, "No Disabled Car");
+    }
+  }
+}
+
+//소켓 통신 에러 처리
+void error_handling(char *message){
+  fputs(message, stderr);
+  fputc('\n', stderr);
+  exit(1);
+}
+
+int main(int argc, char *argv[])   {
+
+  if(argc != 2){
+    printf("Usage : %s <port>\n", argv[0]);
+  }
+
+  //소켓
+  serv_sock = socket(PF_INET, SOCK_STREAM, 0);
+  if(serv_sock == -1) error_handling("socket() error");
+
+  memset(&serv_addr, 0, sizeof(serv_addr));
+  serv_addr.sin_family = AF_INET;
+  serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
+  serv_addr.sin_port = htons(atoi(argv[1]));
+
+  if(bind(serv_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1)
+    error_handling("bind() error");
+
+  if(listen(serv_sock, 5) == -1)
+    error_handling("listen() error");
+
+  clnt_addr_size = sizeof(camera_addr);
+  camera_sock = accept(serv_sock, (struct sockaddr*)&camera_addr, &clnt_addr_size);
+  if(camera_sock == -1) error_handling("1_accept() error");
+  else printf("1 connect\n");
+
+  clnt_addr_size = sizeof(sensor_addr);
+  sensor_sock = accept(serv_sock, (struct sockaddr*)&sensor_addr, &clnt_addr_size);
+  if(sensor_sock == -1) error_handling("2_accept() error");
+  else printf("2 connect\n");
+
+  if (wiringPiSetup () == -1) exit (1);
+  fd = wiringPiI2CSetup(I2C_ADDR);
+
+  lcd_init(); // setup LCD
+
+  //스레드
+  pthread_t camera, sensor;
+  if(pthread_create(&camera, NULL, camera_thd, NULL) < 0)
+  {
+      perror("thread create error: ");
+      exit(0);
+  }
+  if(pthread_create(&camera, NULL, sensor_thd, NULL) < 0)
+  {
+      perror("thread create error: ");
+      exit(0);
+  }
+  while (1)   {
+    lcd_init();
+    printf("1: %s\n", text1);
+    printf("2: %s\n", text2);
+    lcd_write(LINE1_HUMAN, text1);
+    lcd_write(LINE2_HP, text2);
+    sleep(3); //3초마다 변경
+  }
+}
+
+void lcd_write(int line, const char *s){
+  //lcd line 지정
+  lcd_byte(line, LCD_CMD);
+  //문자 출력
+  while ( *s ) lcd_byte(*(s++), LCD_CHR);
+}
+
+//lcd에 문자열 또는 커서 이동 명령을 전송
+void lcd_byte(int bits, int mode)   {
+  //상위 4비트, 하위 4비트로 나눠서
+  int bits_high;
+  int bits_low;
+
+  bits_high = mode | (bits & 0xF0) | LCD_BACKLIGHT ;
+  bits_low = mode | ((bits << 4) & 0xF0) | LCD_BACKLIGHT ;
+
+  wiringPiI2CReadReg8(fd, bits_high);
+  lcd_toggle_enable(bits_high);
+
+  wiringPiI2CReadReg8(fd, bits_low);
+  lcd_toggle_enable(bits_low);
+}
+
+//lcd enable pin 제어
+void lcd_toggle_enable(int bits)   {
+  delayMicroseconds(500);
+  wiringPiI2CReadReg8(fd, (bits | ENABLE));
+  delayMicroseconds(500);
+  wiringPiI2CReadReg8(fd, (bits & ~ENABLE));
+  delayMicroseconds(500);
+}
+
+//lcd 초기화
+void lcd_init()   {
+  lcd_byte(0x33, LCD_CMD);
+  lcd_byte(0x32, LCD_CMD);
+  lcd_byte(0x06, LCD_CMD);
+  lcd_byte(0x0C, LCD_CMD);
+  lcd_byte(0x28, LCD_CMD);
+  lcd_byte(0x01, LCD_CMD);
+}
\ No newline at end of file