29.08.2013 Views

Autonom robotväckarklocka med trådlös basstation - KTH

Autonom robotväckarklocka med trådlös basstation - KTH

Autonom robotväckarklocka med trådlös basstation - KTH

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

André Berglund<br />

FiM 2011<br />

Upplösningen på displayen är 128x64 pixlar där varje pixel<br />

motsvarar en bit, men data skickas <strong>med</strong> en byte i taget och MSB<br />

(Most Significant Bit) först. Då displayen är uppdelad i åtta sidor<br />

(Page 0-7) och 128 kolumner <strong>med</strong> åtta rader per sida (D0-D7),<br />

kommer MSB att hamna på raden längst ned på sidan (D7). Efter<br />

att man skickat en byte går displayen vidare till nästa kolumn. För<br />

ett sidbyte behöver man skicka ett kommando som talar om för<br />

displayen att skriva på nästa sida. Man inser snabbt att <strong>med</strong> en<br />

upplösning om 128x64 blir det 8192 bitar, vilket omräknat i bytes är<br />

Figur 4. Skärmuppdelning.<br />

DATA 1024 TRANSFER bytes (1kB). Detta är anledningen till att mikrokontrollen byttes Källa: Electronic Assembly<br />

Data transfer is unidirectional. That means that data can only be written; it cannot be read again. In contrast to other<br />

ut till ATMega644 <strong>med</strong> 4kB SRAM.<br />

displays, a busy query is not necessary with this display. The clock-pulse rate of the SCL line can be up to 20 MHz,<br />

depending on the supply voltage. You will find more detailed information on timing on pages 64 and 65 of the data sheet<br />

of the ST7565R controller, which you will find on our website at<br />

Mjukvara<br />

http://www.lcd-module.de/eng/pdf/zubehoer/st7565r.pdf<br />

Displayen behöver instruktioner för att kunna fungera och mikrokontrollen innehåller dessa<br />

i form av maskinkod som ursprungligen är skrivet i C. Koden är uppdelad i två olika filer,<br />

en <strong>med</strong> själva anropen och den andra <strong>med</strong> logiken bakom anropen. Den har byggts främst<br />

ur databladen för mikrokontrollen och displayen, men också från de<br />

programmeringsexempel som Electronic Assembly tillhandahåller på sin hemsida.<br />

Programvaran börjar <strong>med</strong> att aktivera SPI på mikrokontrollern genom funktionen init_spi(),<br />

där pinnarna som ska skicka data till displayen sätts som utgångar. Ett par ändringar görs<br />

även i SPI-kontrollregistret. Sedan skapas funktionen för att skicka data och kommandon<br />

via SPI, send_spi(), som behövs då displayen ska initieras <strong>med</strong> kommandon, vilket nästa<br />

funktion gör, init_lcd(). Den börjar <strong>med</strong> att använda reset och sedan skickas kommandon<br />

som beskriver för displayen bland annat att det är Single Supply som gäller, vilken kontrast<br />

skärmen ska ha osv. Funktionen avslutas <strong>med</strong> att rensa skärmen från eventuella tända<br />

pixlar som kan förekomma vid uppstart.<br />

12

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!