From: Camil Staps Date: Tue, 20 Jun 2017 11:21:22 +0000 (+0000) Subject: Documentation X-Git-Url: https://git.martlubbers.net/?a=commitdiff_plain;h=2f8ad48bbc7d169fedb70ed0c3a904cf40ef47c8;p=liquid-crystal-terminal.git Documentation --- diff --git a/.gitignore b/.gitignore index 05c771f..f0b1d13 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ eagle.epf +*.aux +*.fdb_latexmk +*.fls +*.log +*.out + *.pdf diff --git a/doc/character-set.png b/doc/character-set.png new file mode 100644 index 0000000..82bd1a6 Binary files /dev/null and b/doc/character-set.png differ diff --git a/doc/doc.tex b/doc/doc.tex new file mode 100644 index 0000000..5862b31 --- /dev/null +++ b/doc/doc.tex @@ -0,0 +1,86 @@ +\documentclass[a4paper]{article} + +\usepackage[margin=25mm]{geometry} +\usepackage{pdfpages} +\usepackage{cleveref} +\usepackage[hidelinks]{hyperref} +\usepackage{xcolor} + +\title{Liquid Crystal Terminal documentation} +\author{Camil Staps} + +\begin{document} + +\pagestyle{empty} + +\makeatletter\section*{\@title}\makeatother + +\subsection*{Usage} +Apply 5V to the power jack. +The outer switch (S2) should be in `USE' state, + or communication with other devices is impossible. +Other devices can control the terminal over UART as described below. + +There is a trimmer potentiometer on the LCD board to change the brightness. + +\subsection*{Protocol description} +The devices communicates 8-bit characters over a 115,200 baud UART link. +All characters are printed directly on the LCD display, + with the exception of device control bytes (\verb$0x11$ through \verb$0x14$). + +\subsubsection*{Characters} +HD44780-based LCD displays have a character set similar to ASCII, + which can be found at \url{http://www.ekenrooi.net/lcd/lcd0.shtml#charset}. +Note that bytes \verb$0x00$ through \verb$0x07$ are user-defined characters. +They are set-up at compile-time in \verb$lcd.ino$ using \verb$createChar$ calls. +In \verb$lcd.h$, some examples of user-defined characters can be found. + +\subsubsection*{LEDs} +To change the state of an LED, use device control 1 (\verb$0x11$) with an LED specification. +An LED specification is one byte and should look like below. +ID1 and ID2 identify the LED, whereas BLINK, RED and GRN indicate its state. +It is not possible to change the states of multiple LEDs at once; + you need to re-issue device control 1. + +\begin{center} + \begin{tabular}{l c c c c c c c c} + Bit & 7 & 6 & 5 & 4 & 3 & 2 & 1 & 0 \\\hline + Value & 0 & 0 & ID1 & ID2 & 0 & BLINK & RED & GRN \\ + \end{tabular} +\end{center} + +\subsubsection*{Backlight} +To change the state of the LCD backlight, use device control 2 (\verb$0x12$) with the backlight state. +The backlight state is one byte and should be 0, 1 or 2 to set the display, off, on or on flash, respectively. +When the backlight is set to flash, it turns on for some time and then turns off again. + +\subsubsection*{Button (S1)} +It is not possible to get the button state. + +\subsection*{Reprogramming} +To reprogram, 5V still has to be applied to the device. +\textcolor{red}{% + Switch S2 should be in `PGM' state. + Connecting the ICSP connector while S2 is in `USE' state \emph{will} break the device.} +Remove the Atmega328 chip from an Arduino Uno. +Connect the ICSP connector (J2; inside the device) to the Arduino board as below. +It should then be possible to reprogram the device from the Arduino IDE. + +\begin{center} + \begin{tabular}{l l} + ICSP connector & Arduino pin \\\hline + Brown & GND \\ + Yellow & TX \\ + Green & RX \\ + Blue & RESET \\ + \end{tabular} +\end{center} + +When communicating through an Arduino (during development), make sure to disable RTS and DTR lines. +These reset the device. +This is not an issue on the normal interface, where RTS and DTR are ignored. +On linux, the right settings can be achieved by using \verb$stty -F -crtscts -hupcl$. + +\includepdf[angle=90]{../schematic/schematic.pdf} + +\end{document}