부산IT학원/스마트컨트롤러

20140417 (LCD specification, 연결리스트 치환, 삽입)

EHOzlO 2014. 4. 17. 14:10

44일차






-------------------

LCD specification

-------------------


- LCD의 종류


- LCD를 만지기를 앞서

LCD의 설명서를 보고 시작한다.

설명서를 보는 방법.



두번째 페이지인데 문서 Revision History는 항상 작성해야 한다고 한다.

First issue를 제외한 다음 것부터는 수정내용을 기록함.





기능 및 특성





내부 구조도.





각 핀들 설명인데

RS 가 H 일 때와 L 일 때 어떤 기능인지 기억해 둘것.

R/W 도 H 일 때와 L 일 때 기능 기억.

        프로그래머 기준으로 LCD에 쓰려고 하면 L (Write)

        프로그래머 기준으로 LCD에 읽으려 하면 H (Read)





타이밍 그래프라 부른다 (Timing Diagram)

현재 Write 모드

초기에 RS, R/W, DB값이 아무 값이든 상관 없다가

명령을 주면 (파란선)

RS는 명령 or 데이터 이니 H, L 아무 값.

R/W는 Write 모드이니 L.

E는 우선 유지

DB 값은 여러 값이 들어가 있으니 H, L로 표시

명령을 읽기 (보라선)

E의 값이 H 로 바뀌고

명령을 읽으면서 LCD에 명령을 실행 시킨다.









- C

---------------

연결리스트

---------------


- 치환




- 삽입





--- calloc

- <stdlib.h>

  void * calloc(size_t count, size_t size);

  -> 성공시 할당된 주소, 실패시 NULL, 0으로 초기화 해줌.

ex) 소스

#include <stdio.h>
#include <stdlib.h>

int main()
{
      int *  p;
      int  iNum;

      p = (int *)calloc(10sizeof(int));

      for(iNum = 010 > iNum; ++iNum)
      {
            printf("%d %d\n", p[iNum], iNum);
      }
      free(p);
      return 0;
}

출력 화면



--- realloc

- <stdlib.h>

   void * realloc(void * ptr, size_t size);

    -> 성공시 재 할당된 주소, 실패시 NULL

ex) 소스

#include <stdio.h>
#include <stdlib.h>

int main()
{
      int *  p;
      int  iNum;

      p = (int *)malloc(sizeof(int)*5);

      for(iNum = 05 > iNum; ++iNum)
      {
            p[iNum] = iNum;
            printf("%d ", p[iNum]);
      }

      printf("\n");

      p = (int *)realloc(p, sizeof(int)*10);

      for(iNum = 510 > iNum; ++iNum)
      {
            p[iNum] = iNum;
            printf("%d ", p[iNum]);
      }

      printf("\n");

      for(iNum = 010 > iNum; ++iNum)
      {
            printf("%d ", p[iNum]);
      }

      free(p);
      return 0;
}

출력 화면