MSP430 programozás Energia környezetben. Nokia 5110 grafikus kijelzo vezérlése



Hasonló dokumentumok
AES kriptográfiai algoritmus

MSP430 programozás Energia környezetben. Alfanumerikus LCD kijelzok

Bevezetés a mikrovezérlők programozásába: LCD kijelzők

MSP430 programozás Energia környezetben. Analóg jelek mérése

MSP430 programozás Energia környezetben. LED kijelzok második rész

Bevezetés a mikrovezérlők programozásába: Fényérzékelés, fénymérés

MSP430 programozás Energia környezetben. LED kijelzok második rész

Bevezetés a mikrovezérlők programozásába: WS2812 RGB LED-ek vezérlése

Bevezetés a mikrovezérlők programozásába: A PM6025 (7 és 16 szegmenses) LCD kijelző vezérlése

MSP430 programozás Energia környezetben. LED mátrix vezérlése MAX7219 IC-vel

H - I - J frekvenciaváltó távirányítás

MSP430 programozás Energia környezetben

boolean motoros_szelep_vegallas_el = true; boolean serial_adatok_kikuldese = true; // ************ Hőmérséklet érzékelők Dallasos!!!!

MSP430 programozás Energia környezetben. Digitális szenzorok

Bevezetés az elektronikába

Bevezetés a mikrovezérlők programozásába: I/O portok kezelése, számrendszerek, bitműveletek

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.

Vegyes témakörök. A KAT120B kijelző vezérlése Arduinoval

MSP430 programozás Energia környezetben. Hétszegmenses LED kijelzok

C nyelvű programfejlesztés PIC18 mikrovezérlőkre. Összeállította: Molnár Zsolt

MSP430 programozás Energia környezetben. Kitekintés, további lehetőségek

LOGSYS LOGSYS ECP2 FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 18. Verzió

3. Hőmérők elkészítése

Bevezetés a mikrovezérlők programozásába: Programciklusok szervezése, analóg I/O

Vegyes témakörök. 5. Gagyiszkóp házilag hangfrekvenciás jelek vizsgálata. Hobbielektronika csoport 2018/2019. Debreceni Megtestesülés Plébánia

MSP430 programozás Energia környezetben. Szervó motorok vezérlése

Bevezetés az elektronikába

A Hobbielektronika csoport. bemutatója

V 1. DES 2. LOKI91 3. IDEA 4. GOST 5. BLOWFISH 6. 3-WAY 7. RC5 8. A5 9. SEAL DES

117. AA Megoldó Alfréd AA 117.

M-Bus Master MultiPort 250D/L

Digitális technika II. (vimia111) 5. gyakorlat: Mikroprocesszoros tervezés, egyszerű feladatok HW és SW megvalósítása gépi szintű programozással

I 2 C, SPI, I 2 S, USB, PWM, UART, IrDA

LOGSYS LOGSYS VGA, PS/2 ÉS HANGSZÓRÓ MODUL FELHASZNÁLÓI ÚTMUTATÓ június 25. Verzió

Bevezetés az elektronikába

MSP430 programozás Energia környezetben. Digitális szenzorok I2C kommunikációval

Ismerkedés az MSP430 mikrovezérlőkkel

Információs Technológia

Bevezetés az elektronikába

LOGSYS LOGSYS VGA, PS/2 ÉS HANGSZÓRÓ MODUL FELHASZNÁLÓI ÚTMUTATÓ június 25. Verzió 1.0.

Tarján Péter Nyíregyházi Egyetem. Szenzorok és ötletek Arduinós mérésekhez

Bevezetés a mikrovezérlők programozásába: Digitális szenzorok

Autóipari beágyazott rendszerek. CCP és XCP

ARM Cortex-M0+ mikrovezérlő programozása KEIL MDK 5 környezetben. 8. Az SPI kommunikációs csatorna

Szoftver kézikönyv. Rev.3.1

Moduláris USB billentyűzet emulátor

loop() Referencia:

MSP430 programozás Energia környezetben. Az I/O portok kezelése

Paulenka Gábor Aqua-terra Lab Kft. Mérnök-üzletkötő

Mérési útmutató a Mobil Kommunikáció és Kvantumtechnológiák Laboratórium méréseihez

MSP430 programozás Energia környezetben. Az első lépések

ARM mikrovezérlők programozása

Verzió 1.2. Tartalomjegyzék

IDAXA-PiroSTOP HI1 Hurokkezelő 1 intelligens hurokhoz 2004/0177/063 Terméklap

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

Modern technológia. a biztonnságos és kényelmes kapuműködtetéshez. Marantec

Többfunkciós hobbirobot építése és vezérlése Arduino UNO mikrovezérlő kártya segítségével

Intelligens épületfelügyeleti rendszer tervezése mikrokontrollerrel

A vezérlő alkalmas 1x16, 2x16, 2x20, 4x20 karakteres kijelzők meghajtására. Az 1. ábrán látható a modul bekötése.

The modular mitmót system. DPY kijelző kártya C API

Mintavételes szabályozás mikrovezérlő segítségével

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

Léptetőmotorok. Előnyök: Hátrányok:

Országzászlók (2015. május 27., Sz14)

Bevezetés a mikrovezérlők programozásába: MAX6958: Hétszegmenses LED kijelző vezérlő

Mikrovezérlők Alkalmazástechnikája

Mikrovezérlők Alkalmazástechnikája

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

OMNIALOG adatgyűjtők NI-48XX

TRP-C24 Felhasználói Kézikönyv

Tervminták a valósidejű gyakorlatban

Programozás II. Fájlkezelés

Készítette: Ruzsinszki Gábor webmaster442

A mikroszámítógép felépítése.

Hobbi Elektronika. 1. Témakörök, célkitűzés, hozzávalók

it-mxh21 16 CSATORNÁS ASZTALI DIGITÁLIS KÉPRÖGZÍTİ Egyszerő kezelési útmutató

Kombinációs áramkörök modelezése Laborgyakorlat. Dr. Oniga István

Dimat. UTH telepítés és útmutató


Interrupt. ile ile 1 / 81

Wilarm 2 és 3 távjelző GSM modulok felhasználói leírása

Bevezetés a mikrovezérlők programozásába: Léptetőmotorok vezérlése

Kezelői és üzemeltetői kézikönyv Fejlett analóg hagyományos tűzjelző & oltás vezérlő központ BUS technológiával, 8 72 zónás

Bevezetés a mikrovezérlők programozásába: Hétszegmenses LED kijelzők

Szabályozható DC tápegység. AX-3005DBL-egycsatornás AX-3005DBL-3-háromcsatornás. Használati útmutató

Architectural Controller - master

K9-GSM riasztó rendszer

Tervezési módszerek programozható logikai eszközökkel

TRIMx-EP DIGITÁLIS SZINKRON KAPCSOLÁS TRANSZFORMÁTOROK. Alkalmazási terület

TC3XY Gyorskezdés Segéd Útmutató es verzió

BioEntry TM Telepítési Útmutató

Felhasználói kézikönyv

C# osztályok. Krizsán Zoltán

INFORMATIKAI ALAPISMERETEK

AVR-Duino Eth Shield / AVR-Duino EthMAX Shield

Az MSP430 mikrovezérlők digitális I/O programozása

GARDENA Rádiós központ Cikksz Vevőtájékoztató

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

MS-NMK nagyszámkijelző ismertető

MS-ADTKIJ Kezelési útmutató

Átírás:

MSP430 programozás Energia környezetben Nokia 5110 grafikus kijelzo vezérlése 1

Nokia 5110 kijelző Grafikus (képpontonként vezérelhető) LCD Felbontás: 84 x 48 pont (PCD8544 kontroller) Vezérlés: SPI felület (max. 5 MHz) és néhány további jel Példa: Hőmérséklet és relatív páratartalom mérés DHT22 szenzorral http://forum.43oh.com/topic/3953-msp430-with-nokia-5110-lcd-temperature/ 2

LCD_5110_SPI programkönyvtár A [Rei Vilo] által közzétett programkönyvtár (Link1, Link2) nem része az Energia telepítő csomagjának, nekünk kell bemásolni a vázlatfüzetbe (a Dokumentumok\Energia\libraries mappába ). Ez a könyvtár hardveres SPI támogatással vezérli a kijelző modult (az MSP430G2553 USCI B modulját használja). A legfontosabb metódusok : begin() az LCD inicializálása, kivezetések alapértelmezett hozzárendelése. clear() a képernyő törlése. setfont(size) betűképek (font) méretválasztás (0: 6x8 pont, 1: 12x16 pont) text(x,y,string) szöveg kiírása a megadott pozícióban, az előzőleg kiválasztott fontmérettel. A kisebb font esetén x = 0-13, y = 0-5 közötti érték (a 0,0 a bal felső sarkot jelenti). A nagyobb betűméretnél x = 0-6, y = 0-2 közötti érték lehet (7 x 3 karakter fér ki). setbacklight(flag) háttér(?)világítás ki- vagy bekapcsolása (0: kikapcsolás, 1: bekapcsolás). 3

Lab15 LCD_5110_SPI_main Egyszerű mintaprogram, amellyel kipróbálhatjuk a Nokia 5110 kijelző modult LCD_5110_bitmap minta program, amelyben bittérképes képet jelenítünk meg a Nokia 5110 képernyőn LCD_5110_thermometer mintaprogram, amelyben a korábban már megismert MCP9700A analóg hőmérővel mérjük a hőmérsékletet (lásd: Lab08, Lab11, Lab12, Lab13) LCD_5110_DHT22 mintaprogram, amelyben a korábban már megismert DHT22 szenzorral mérjük a hőmérsékletet és a relatív páratartalmat (lásd: Lab09) libraries a bitmap megjelenítéssel kiegészített LCD_5110_SPI programkönyvtárat tartalmazza 4

Huzalozási vázlat I. A Nokia 5110 kijelző többféle kivitelben kapható (Sparkfun, E-bay, Adafruit), ennek megfelelően a kivezetések sorrendje és elnevezése különbözhet. Sparkfun változat Nokia 5110 MSP430 ------------------------------------------ 1. VCC tápfeszültség VCC 2. GND közös pont GND 3. SCE kiválasztó jel P2.2 4. RST RESET P1.0 5. D/C adat/parancs P2.3 6. DIN SPI adatvonal P1.7 7. SCLK SPI órajel P1.5 8. LED háttérvilágítás P2.1 5

Huzalozási vázlat II. A Nokia 5110 kijelző többféle kivitelben kapható (Sparkfun, E-bay, Adafruit), ennek megfelelően a kivezetések sorrendje és elnevezése különbözhet. E-bay változat Nokia 5110 MSP430 ------------------------------------------ 1. RST RESET P1.0 2. CE kiválasztó jel P2.2 3. DC adat/parancs P2.3 4. DIN SPI adatvonal P1.7 5. CLK SPI órajel P1.5 6. VCC tápfeszültség VCC 7. LIGHT háttérvilágítás P2.1 8. GND közös pont GND 6

Lab15: LCD_5110_SPI_main.ino #include "Energia.h" #include "SPI.h" #include "LCD_5110_SPI.h" //alapértelmezett könyvtárak //hardveres SPI támogatás //Nokia 5110 kijelző támogatás LCD_5110_SPI myscreen; boolean backlight = false; uint8_t k = 0; void setup() { SPI.begin(); //SPI csatorna inicializálása SPI.setClockDivider(SPI_CLOCK_DIV4); //SPI órajele max. 5 MHz lehet SPI.setBitOrder(MSBFIRST); //Bitsorrend beállítása SPI.setDataMode(SPI_MODE0); //Mode 0,0 választása myscreen.begin(); //LCD inicializálás myscreen.setbacklight(backlight); //Háttérvilágítás bekapcsolása myscreen.text(0, 0, "LCD 5110 test"); //Kiírás kis karakterekkel myscreen.text(0, 5, "Light off"); myscreen.setfont(1); //Nagy font választása myscreen.text(0, 2, " MSP430"); //Kiírás nagy fonttal myscreen.setfont(0); //Kis font kiválasztás folytatás a következő oldalon 7

Lab15: LCD_5110_SPI_main.ino void loop() { if (myscreen.getbutton()) { //nyomógomb a LED állapotát váltja backlight = (backlight==0); myscreen.text(0, 5, backlight? "Light on " : "Light off"); myscreen.setbacklight(backlight); for (uint8_t i=0; i<14; i++) myscreen.text(i, 4, (i==k)? "*" : " "); k ++; k %= 14; delay(200); // k = k/14 osztási maradéka A nyomógomb lenyomásával ki- vagy bekapcsolhatjuk a háttérvilágítást. Ezzel szinkronban a legalsó sorban (y=5) kiíratjuk az aktuális állapotot. Az utolsó előtti sorban (y=4) egy csillag karaktert szánkáztatunk (x=0-tól 14-ig megy), 200 ms-os időközönként léptetéssel. 8

Lab15: LCD_5110_SPI_main.ino 9

Bitkép kirajzolása Új függvénnyel bővítjük az LCD_5110_SPI programkönyvtárat: Az LCD_5110_SPI.h állomány módosítása: Új függvény deklarálása: void writebmp(const uint8_t* ptr); Az LCD_5110_SPI.cpp állomány módosítása: Új függvény definiálása: void LCD_5110_SPI::writeBmp(const uint8_t* ptr) { write(_commandlcd, 0x40); //Set y = 0 write(_commandlcd, 0x80); //Set x = 0 for (uint16_t j=0; j<6*84; j++) { write(_datalcd,*ptr++); 10

Címzés és megfeleltetés x y 11

Lab15: LCD_5110_bitmap.ino #include "Energia.h" #include "SPI.h" #include "LCD_5110_SPI.h" #include "emese.h" LCD_5110_SPI myscreen; boolean backlight = false; uint8_t k = 0; void setup() { SPI.begin(); SPI.setClockDivider(SPI_CLOCK_DIV4); SPI.setBitOrder(MSBFIRST); SPI.setDataMode(SPI_MODE0); myscreen.begin(); myscreen.setbacklight(backlight); myscreen.writebmp(emese); void loop() { if (myscreen.getbutton()) { backlight = (backlight==0); myscreen.setbacklight(backlight); delay(200); //alapértelmezett könyvtárak //hardveres SPI támogatás //Nokia 5110 kijelző támogatás //A betölteni kívánt kép //SPI csatorna inicializálása //SPI órajele max. 5 MHz lehet //Bitsorrend beállítása //Mode 0,0 választása //LCD inicializálás //Háttérvilágítás bekapcsolása //Bitkép kirajzolás //nyomógomb a LED állapotát váltja 12

Lab15: emese.h //------------------------------------------------------------------------------ // File generated by LCD Assistant // http://en.radzio.dxp.pl/bitmap_converter/ //------------------------------------------------------------------------------ const unsigned char emese [] = { 0xFF, 0xFF, 0x5D, 0xF7, 0x5F, 0xFD, 0x57, 0xFF, 0xB5, 0xDF, 0xF7, 0xFD, 0xAF, 0xFB, 0xDF, 0x7A, 0xEF, 0xFC, 0x5B, 0xF5, 0xF6, 0xCD, 0xAB, 0x56, 0xBD, 0x62, 0x9F, 0xF2, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xAF, 0x7F, 0xB7, 0xDF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xBF, 0x7F, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xEA, 0xBD, 0xEA, 0xB7, 0xDD, 0xFA, 0xFF, 0xEF, 0xB9, 0xD7, 0x7D, 0xD7, 0x7D, 0xEF, 0xBB, 0xEE, 0xFF, 0x5B, 0xFE, 0xF7, 0x5D, 0xFF, 0xB7, 0xFD, 0x6F, 0xDB, 0x36, 0xEF, 0x13, 0xFD, 0x06, 0xF9, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xAF, 0xFF, 0xAB, 0x5E, 0x6B, 0x56, 0x75, 0xD6, 0x7D, 0x73, 0xFE, 0x7D, 0xBE, 0x7F, 0xBF, 0x5F, 0xEF, 0xBF, 0xEF, 0xFF, 0xAF, 0x7B, 0xEF, 0xFF, 0xFF, 0x3F, 0x03, 0x88, 0x22, 0x01, 0x9F, 0x7A, 0xD5, 0x02, 0x7F, 0x82, 0x54, 0x89, 0x77, 0x5B, 0xB6, 0x6B, 0xBF, 0xFA, 0xAF, 0xDA, 0xB5, 0x7E, 0xFF, 0xFF, 0xAA, 0x7D, 0xD7, 0xFF, 0x6D, 0xFF, 0xDB, 0x7E, 0xF7, 0xDF, 0x7D, 0xD7, 0xFF, 0xDD, 0x77, 0xFF, 0xAD, 0x5B, 0xE4, 0x1B, 0xE6, 0x19, 0xEB, 0x96, 0xFF, 0xFF, 0xFF, 0xBF, 0xF7, 0xDF, 0x7D, 0xE7, 0xBD, 0x5B, 0xF5, 0x7A, 0xF7, 0xF9, 0xB7, 0xF9, 0xE6, 0x79, 0xD7, 0xFC, 0xA3, 0x5C, 0xA1, 0x16, 0x08, 0x13, 0x4E, 0x15, 0x2B, 0x56,... és így tovább, összesen 504 db. Adat 13

Lab15: LCD_5110_bitmap.ino 14

Emlékeztető: MCP9700A analóg hőmérő VDD = 2,5 5,5 V Mérési tart.: -40 150 :C Érzékenység: 10 mv / :C Nullapont: 500 mv @ 0 :C Gyártó: Microchip A Vout kimenetet a Launchpad kártya A4 analóg bemenetére (P1_4, pin5) kötjük. A hőmérő VDD és GND lábait tápfeszültségre, illetve földre kössük! 15

Lab15: LCD_5110_thermometer.ino #include "Energia.h" //alapértelmezett könyvtárak #include "SPI.h" //hardveres SPI támogatás #include "LCD_5110_SPI.h" //Nokia 5110 kijelző támogatás LCD_5110_SPI myscreen; boolean backlight = false; char temp[8] = {' ', ' ', ' ', '.', ' ', 0x7f, 'C', 0x00; void setup() { SPI.begin(); //SPI csatorna inicializálása SPI.setClockDivider(SPI_CLOCK_DIV4); //SPI órajele max. 5 MHz lehet SPI.setBitOrder(MSBFIRST); //Bitsorrend beállítása SPI.setDataMode(SPI_MODE0); //Mode 0,0 választása myscreen.begin(); //LCD inicializálás myscreen.setbacklight(backlight); //Háttérvilágítás bekapcsolása myscreen.begin(); //LCD inicializálás myscreen.text(0, 0, " Thermometer "); //Fejléc kiírása myscreen.text(0, 5, "Light off"); //Státusz kiírása analogreference(internal1v5); //ADC referencia beállítása... Folytatás a következő oldalon Ebben állítjuk össze A kiírandó sort 16

Lab15: LCD_5110_thermometer.ino void loop() { if (myscreen.getbutton()) { //A nyomógomb ki-be kapcsolja a világítást backlight = (backlight==0); myscreen.setfont(0); myscreen.text(0, 5, backlight? "Light on " : "Light off"); myscreen.setbacklight(backlight); long mysum = 0; for(int i=0; i<12000; i++) { mysum += analogread(a4); long t = (mysum>>13)-500; //a hőmérséklet tizedfokokban displaydata(t,temp); //karakterekké konvertálás myscreen.setfont(1); myscreen.text(0, 2, temp); delay(200);... Folytatás a következő oldalon 17

Lab15: LCD_5110_thermometer.ino //Tizedfokokban mért hőmérséklet kiírásához //a kiírandó karaktersorozat előállítása //Negatív értékek kezelésére nincs felkészítve! void displaydata(long data, char *buffer) { buffer[4] = 0x30 + data%10; //tizedesjegy data /= 10; buffer[2] = 0x30 + data%10; //egyesek data /= 10; if(data) { buffer[1] = 0x30 + data%10; //tízesek data /= 10; else { buffer[1] = ' '; if(data) { buffer[0] = 0x30 + data%10; //százasok data /= 10; else { buffer[0] = ' '; 0 1 2 3 4 5 6 7. : C 0x00 18

Lab15: LCD_5110_thermometer.ino 19

Emlékeztető: hőmérséklet és relatív páratartalom mérése DHT22 szenzorral AZ AM2302 (DHT22) SZENZOR FŐBB JELLEMZŐI Felbontás: hőmérséklet 0.1 :C és rel. páratartalom 0.1 % Kommunikáció: 1-wire, nem szabványos protokol, 4 bájt adat (nedvesség 2 bájt, hőmérséklet 2 bájt) + 1 bájt ellenőrző összeg, digitálisan szolgáltatja az adatokat. Mintavételezési gyakoriság: 2 másodpercenként Tápfeszültség: 3,5 5.5 V Programkönyvtár: a Lab09-nél használt DHT.h és DHT.cpp Host Szenzor 40 bitnyi adat indítójel nyugtázó jel 32 bit információ + 8 bit ellenőrző összeg Összesen 85 db időzítést tartalmaz egy-egy tranzakció 20

Lab15: LCD_5110_DHT22.ino #include "SPI.h" #include "LCD_5110_SPI.h" #include "DHT.h" DHT dht(p2_4, DHT22); LCD_5110_SPI myscreen; boolean backlight = false; char temp[8] = {' ', ' ', ' ', '.', ' ', 0x7f, 'C', 0x00; char rhum[8] = {' ', ' ', ' ', '.', ' ', '%', 'H', 0x00; long lasttime; void setup() { SPI.begin(); SPI.setClockDivider(SPI_CLOCK_DIV4); SPI.setBitOrder(MSBFIRST); SPI.setDataMode(SPI_MODE0); myscreen.begin(); //LCD inicializálás myscreen.setbacklight(backlight); //Háttérvilágítás beállítása myscreen.text(0, 0, " DHT22 sensor "); //Kiírás kis karakterekkel myscreen.text(0, 5, "Light off"); dht.begin(); lasttime = millis();... Folytatás a következő oldalon 21

Lab15: LCD_5110_DHT22.ino void loop() { if (myscreen.getbutton()) { //A nyomógomb ki-be kapcsolja a világítást backlight = (backlight==0); myscreen.setfont(0); myscreen.text(0, 5, backlight? "Light on " : "Light off"); myscreen.setbacklight(backlight); if((millis()-lasttime) > 2500) { //Eltelt már 2,5 s az előző mérés óta? lasttime = millis(); long h = 10*dht.readHumidity(); //Tizedszázalékra számol long t = 10*dht.readTemperature(); //Tizedfokokban számolunk displaydata(t,temp); displaydata(h,rhum); myscreen.setfont(1); //Kiírás nagyméretű fonttal myscreen.text(0, 1, temp); myscreen.text(0, 3, rhum); delay(200); Megjegyzés: Az itt nem részletezett displaydata() függvény ugyanaz, mint amit az előző programnál használtunk. 22

Lab15: LCD_5110_DHT22.ino 23