예전에 설명하였던 LCD1602나 LCD12864의 경우 글자를 출력하기 위한 기능이 디스플레이 내부에 들어 있었지만, SSD1306은 그런 기능이 없기 때문에 글자를 표현하기 위해서 직접 점들을 조합하여야 한다.이번 프로젝트에서는 5x7 픽셀의 점들을 이용하여 ASCII code를 출력하는 방법에 대해서 설명하겠다.예를 들어 대문자 'A'를 출력하기 위한 표시는 위의 그림과 같다. 가로로 5칸, 세로로 7칸의 조합으로 표시하며, 좌,우,상,하 글자와 구분하기 위하여 아래로 한칸, 오른쪽에 한줄의 공백을 두어야 한다. SSD1306 datasheet 문서를 보면 Page내에서 위쪽에 있는 점이 D0에 해당되고 가장 아래쪽에 있는 점이 D7에 해당된다. 그러므로, 'A'의 첫번째 행을 이진수로 표현하면 '..
앞의 글들을 통해서 기본적인 SSD1306의 동작 원리를 설명하였으므로 이를 응용하여 화면에 원하는 위치에 점 하나를 표시하는 방법을 구현해 보도록 하겠다.점 하나만을 표시하고자 할때 주의할 점은 위의 그림을 보면 알겠지만, column의 위치는 특정 SEG위치를 지정해 줌으로써 원하는 위치를 직접 지정해 줄수 있지만, row의 위치는 Page단위, 즉, 1바이트 크기만큼씩 지정해 줄수밖에 없는 구조에 대해 고려해 주어야 한다는 것이다.만약, 18번째 줄의 어딘가에 점하나를 출력하고자 원한다면, PAGE2의 D1비트의 값을 1로 설정해 주면 된다. 하지만 이때 나머지 비트값들은 그대로 유지해 주어야한다. 그렇지 않으면, D1비트값만 켜지고 나머지 줄들의 데이터는 모두 0이 되므로 꺼지게 되는 것이다.따라..
앞의 글에서 SSD1306의 세가지 출력모드(addressing mode)가 있다는 것을 간단히 언급하였고, 그중에서 page addressing mode에 대해서 설명하였다.이번에는 나머지 horizontal mode와 vertical mode에 대해서 설명하도록 하겠다. 두가지 모드는 출력되는 방향만 다를뿐 나머지 동작되는 방식은 완전히 동일하다.위의 그림에 Horizontal addressing mode일때의 동작되는 방식이 설명되어 있다.GDDRAM에 데이터를 쓰면 자동적으로 column이 증가되고, COL127에 데이터를 쓰면 RAM 주소가 COL0가 되고 PAGE는 다음 영역으로 자동으로 넘어가게 된다. 만약 가장 마지막 픽셀에 해당되는 RAM에 데이터가 쓰여지면 PAGE0, COL0의 주소로..