Arch spr3


Wydział Informatyki

Katedra Systemów Czasu Rzeczywistego

Laboratorium Architektury Komputerów

Data

28.10.2009

Ćwiczenie nr 3

Temat: Oprogramowanie wyświetlacza LCD z wykorzystaniem kontrolera Hitach HD 44780.

Zespół nr 2 1. Robert Jarocki

Grupa nr 6 2. Jarosław Jastrzębski

Prowadzący

…......................

Ocena

…......................

ZADANIE 3

W zadaniu należy wyświetlić napis składający się z 5 liter w taki sposób aby przechodził jednej linii- lewej do drugiej- prawej. Jak napis dojdzie do końca prawej krawędzi LCD powinien się zatrzymać.

Rozwiązanie :

Rozwiązaliśmy problem programując w odpowiedni sposób płytkę EasyWeb2 w środowisku IAR w języku C.

Kod:

#include<msp430x14x.h>

#include "lcd.h"

#include "portyLcd.h"

unsigned char i,j;

unsigned char z,k,m,w,y;

void main( void )

{

z='A';

k='B';

m='C';

w='D';

y='E';

P2DIR |= BIT1; // STATUS LED

WDTCTL=WDTPW+ WDTHOLD; // zatrzymanie WDT

InitPortsLcd(); // inicjalizacja portów

InitLCD(); // inicjalizacja LCD

clearDisplay(); // czyszczenie LCD

SEND_CHAR(z);

SEND_CHAR(k);

SEND_CHAR(m);

SEND_CHAR(w);

SEND_CHAR(y);

clearDisplay();

SEND_CMD(DD_RAM_ADDR2);

SEND_CHAR(z);

SEND_CHAR(k);

SEND_CHAR(m);

SEND_CHAR(w);

SEND_CHAR(y);

;

for (i=0;i<11;i++)

{

SEND_CMD(DATA_ROL_RIGHT); // przesuwanie napisu w lewo

Delayx100us(150); // opóźnienie

}

SEND_CMD(DD_RAM_ADDR); // opóźnienie

while (1) // nieskoñczona pętla

{

P2OUT ^=BIT1; // zmiana stanu diody na przeciwny

}

}

Opis działania:

Na początku rozwiązania całego zadania dodaliśmy potrzebną bibliotekę- „msp430x14x.h” oraz pliki odpowiedzialne za poprawne działanie programu „lcd.h”, który zawiera następujące funkcje:

void InitLCD(void);

void clearDisplay();

void SEND_CHAR (unsigned char c);

void SEND_CMD (unsigned char e);

void MAKE_DEFINED_CHAR(unsigned char c);

void Delayx100us(unsigned char b);

oraz plik „portyLcd.h” zawierający potrzebne definicje komend wyświetlacza:

#define LCD_Data P2OUT

#define _100us 100 //

#define _10us 10 //

#define E 3 //P2.3

#define RS 2 //P2.2

#define CLR_DISP 0x01 // clear display

#define CUR_HOME 0x02 // return home

#define ENTRY_INC 0x06 // entry mode increment

#define ENTRY_INC_ROL 0x07 // entry mode increment with rol data

#define ENTRY_DEC 0x04 // entry mode decrement

#define ENTRY_DEC_ROL 0x05 // entry mode decrement witch rol dat

#define DISP_OFF 0x08 // all display off

#define DISP_ON 0x0c // all display on

#define DATA_ROL_LEFT 0x18 // rol data left

#define DATA_ROL_RIGHT 0x1c // rol data right

#define CUR_SHIFT_LEFT 0x10 // shift coursor left

#define CUR_SHIFT_RIGHT 0x14 // shift coursor right

#define DD_RAM_ADDR 0x80 // set DD_RAM

#define DD_RAM_ADDR2 0xc0 // set CG_RAM

#define DD_RAM_ADDR3 0x28

#define CG_RAM_ADDR 0x40

void InitPortsLcd(void);

Następnie zadeklarowaliśmy potrzebne zmienne- „i” potrzebne do pętli for aby móc przesuwać napis, oraz zmienne „z, k, m, w, y”, które przechowują poszczególne litery, kolejno od A do E. Kolejnym podjętym przez nas krokiem było ustawienie portu P2DIR |= BIT1, dzięki czemu dioda statusu będzie nam się świeciła podczas działania programu. Po zainicjalizowaniu portow LCD oraz wyświetlacza funkcjami InitPortsLcd ( ) i InitLCD ( ) kazaliśmy naszemu programowi wysłać zadeklarowane znaki poprzez SEND_CHAR ( ). Na końcu napisaliśmy dwie pętle- pierwsza jest odpowiedzialna za przesuwanie napisu w prawą strone i zatrzymanie go, gdy dojdzie do końca, druga zaś za ciągłe świecenie się diody status.



Wyszukiwarka

Podobne podstrony:
arch biol 20092010 sz id 67616 Nieznany
38 USTAWA O OC ARCH I INZ
Wytrzymałość spr3
arch biol 20042005 wo
ARCH MED SĄD KRYM 1998, XLVII, 27 34
arch med sad 2 2012
7331 tech arch kraj ark prak1 c Nieznany
ARCH MED SĄD KRYM 1999, XLIX, 277 286
ARCH 2, Budownictwo Politechnika Rzeszowska, Rok IV, Urbanistyka i Architektura, Sciagi
ROSLINY NA KWIAT CIĘTY, egzamin, arch.krajobrazu
arch bizantyjska
IMichalska AStepaniuk spr3 MES
spr3
994587531314 spr3
spr3
SPR3 wnioski
PYTANIA ARCH
Arch spr5
arch 1 50pio id 67608 Nieznany

więcej podobnych podstron