programowanie usług sieciowych

Komentarze

Transkrypt

programowanie usług sieciowych
Instytut Teleinformatyki
Wydział Fizyki, Matematyki i Informatyki
Politechnika Krakowska
Systemy Wbudowane
„Wykorzystanie przetwornika piezoelektrycznego i wyświetlacza alfanumerycznego LCD”
laboratorium: 04
autor: mgr inż. Paweł Pławiak
Kraków, 2014
04. Systemy Wbudowane – „Buzzer i wyświetlacz LCD”
2
Spis treści
Spis treści ........................................................................................................ 2
1. Wiadomości wstępne ...................................................................................... 3
1.1. Przetwornik piezoelektryczny .................................................................... 3
1.1.1. Schemat podpięcia............................................................................. 3
1.1.2. Pseudokod ........................................................................................ 3
1.2. Wyświetlacz alfanumeryczny LCD .............................................................. 5
1.2.1. Przykładowy kod................................................................................ 5
1.2.2. Schemat podpięcia............................................................................. 8
1.2.3. Pseudokod obsługi wyświetlacza alfanumerycznego LCD ......................... 8
1.3. Zagadnienia do przygotowania .................................................................. 9
2. Przebieg laboratorium ...................................................................................10
2.1. Zadanie 1. Na ocenę 3.0 (dst) ..................................................................10
2.2. Zadanie 2. Na ocenę 4.0 (db) ...................................................................10
2.3. Zadanie 3. Na ocenę 5.0 (bdb) .................................................................10
Data utworzenia: 30/09/14
Copyright © 2014 Politechnika Krakowska
04. Systemy Wbudowane – „Buzzer i wyświetlacz LCD”
3
1. Wiadomości wstępne
Pierwsza część niniejszej instrukcji zawiera podstawowe wiadomości teoretyczne dotyczące omawianego tematu. Poznanie tych wiadomości umożliwi prawidłowe
zrealizowanie praktycznej części laboratorium.
1.1. Przetwornik piezoelektryczny
Zestaw ZL15AVR wyposażono w przetwornik piezoelektryczny Spk1 służący do
generowania dźwięku. Do generowania dźwięków można wykorzystać jeden z układów
licznikowych mikrokontrolera ATmega32 lub też generować dźwięki programowo. Wyprowadzenie przetwornika oznaczone SPK jest dostępne na złączu Con7.
Szczegółowe informacje na temat przetwornika piezoelektrycznego znajdują się w dokumentacji zestaw ewaluacyjny ZL15AVR - http://dl.btc.pl/kamami_wa/zl15avr.pdf
1.1.1. Schemat podpięcia
Przetwornik piezoelektryczny:
PA0 (con15) - SPK (con7)
1.1.2. Pseudokod
Obsługa przetwornika piezoelektrycznego – generator dźwięków.
#ifndef F_CPU
Zdefiniowanie częstotliwości CPU
#endif
#include <avr/io.h>
#include <util/delay.h>
Funkcja odpowiedzialna za generowanie dźwięków
{
Zadeklarowanie zmiennej
while()
{
for();
Data utworzenia: 30/09/14
Copyright © 2014 Politechnika Krakowska
04. Systemy Wbudowane – „Buzzer i wyświetlacz LCD”
4
Ustawienie odpowiednich wartości dla portu A
}
}
int main(void)
{
Zadeklarowanie zmiennej
Skonfigurowanie portu DDRA
do{
Odgrywanie dźwięku
for()
Opóźnienie 2-sekundowe
}while(1);
return 0;
}
Data utworzenia: 30/09/14
Copyright © 2014 Politechnika Krakowska
04. Systemy Wbudowane – „Buzzer i wyświetlacz LCD”
5
1.2. Wyświetlacz alfanumeryczny LCD
Zestaw ZL15AVR wyposażono w złącze umożliwiające dołączenie alfanumerycznego wyświetlacza LCD 2x16 znaków ze sterownikiem zgodnym z HD44780 (oznaczenie LCD1602). Regulacja kontrastu wyświetlacza jest możliwa poprzez potencjometr
P1 (zworka JP4 DISPLAY w pozycji CHAR). Linie sterujące wyświetlaczem są dostępne
na złączu Con13/LCD_2x16.
Szczegółowe informacje na temat złącza wyświetlacza alfanumerycznego znajdują się
w dokumentacji zestaw ewaluacyjny ZL15AVR, pod linkiem:
http://dl.btc.pl/kamami_wa/zl15avr.pdf
Szczegółowe informacje na temat obsługi sterownika HD44780 znajdują się w nocie
katalogowej pod linkiem:
http://www.iti.pk.edu.pl/attachments/article/43/HD44780.pdf
1.2.1. Przykładowy kod
Sterownik HD44780
#include "HD44780.h"
//------------------------------------// Write half byte
//------------------------------------void _LCD_OutNibble(unsigned char nibbleToWrite)
{
if(nibbleToWrite & 0x01)
LCD_DB4_PORT |= LCD_DB4;
else
LCD_DB4_PORT &= ~LCD_DB4;
if(nibbleToWrite & 0x02)
LCD_DB5_PORT |= LCD_DB5;
else
LCD_DB5_PORT &= ~LCD_DB5;
if(nibbleToWrite & 0x04)
LCD_DB6_PORT |= LCD_DB6;
else
LCD_DB6_PORT &= ~LCD_DB6;
if(nibbleToWrite & 0x08)
LCD_DB7_PORT |= LCD_DB7;
else
LCD_DB7_PORT &= ~LCD_DB7;
}
//------------------------------------Data utworzenia: 30/09/14
Copyright © 2014 Politechnika Krakowska
04. Systemy Wbudowane – „Buzzer i wyświetlacz LCD”
6
// Write byte
//------------------------------------void _LCD_Write(unsigned char dataToWrite)
{
LCD_E_PORT |= LCD_E;
_LCD_OutNibble(dataToWrite >> 4);
LCD_E_PORT &= ~LCD_E;
LCD_E_PORT |= LCD_E;
_LCD_OutNibble(dataToWrite);
LCD_E_PORT &= ~LCD_E;
_delay_us(50);
}
//------------------------------------// Write to command register
//------------------------------------void LCD_WriteCommand(unsigned char commandToWrite)
{
LCD_RS_PORT &= ~LCD_RS;
_LCD_Write(commandToWrite);
}
//------------------------------------// Write to data register
//------------------------------------void LCD_WriteData(unsigned char dataToWrite)
{
LCD_RS_PORT |= LCD_RS;
_LCD_Write(dataToWrite);
}
//------------------------------------// Write text
//------------------------------------void LCD_WriteText(char * text)
{
while(*text)
LCD_WriteData(*text++);
}
//------------------------------------// Set display coordinates
//------------------------------------void LCD_GoTo(unsigned char x, unsigned char y)
{
LCD_WriteCommand(HD44780_DDRAM_SET | (x + (0x40 * y)));
}
//------------------------------------// Clear display
//------------------------------------void LCD_Clear(void)
{
LCD_WriteCommand(HD44780_CLEAR);
_delay_ms(2);
Data utworzenia: 30/09/14
Copyright © 2014 Politechnika Krakowska
04. Systemy Wbudowane – „Buzzer i wyświetlacz LCD”
7
}
//------------------------------------// Set home position
//------------------------------------void LCD_Home(void)
{
LCD_WriteCommand(HD44780_HOME);
_delay_ms(2);
}
//------------------------------------// Shift display left
//------------------------------------void LCD_ShiftLeft(void)
{
LCD_WriteCommand(HD44780_DISPLAY_CURSOR_SHIFT | HD44780_SHIFT_LEFT |
HD44780_SHIFT_DISPLAY);
}
//------------------------------------// Shift display right
//------------------------------------void LCD_ShiftRight(void)
{
LCD_WriteCommand(HD44780_DISPLAY_CURSOR_SHIFT | HD44780_SHIFT_RIGHT |
HD44780_SHIFT_DISPLAY);
}
//------------------------------------// Display initialization
//------------------------------------void LCD_Initialize(void)
{
unsigned char i;
LCD_DB4_DIR |= LCD_DB4;
LCD_DB5_DIR |= LCD_DB5;
LCD_DB6_DIR |= LCD_DB6;
LCD_DB7_DIR |= LCD_DB7;
LCD_E_DIR
|= LCD_E;
LCD_RS_DIR |= LCD_RS;
_delay_ms(15);
LCD_RS_PORT &= ~LCD_RS;
LCD_E_PORT &= ~LCD_E;
for(i = 0; i < 3; i++)
{
LCD_E_PORT |= LCD_E;
_LCD_OutNibble(0x03);
LCD_E_PORT &= ~LCD_E;
_delay_ms(5);
}
LCD_E_PORT |= LCD_E;
Data utworzenia: 30/09/14
Copyright © 2014 Politechnika Krakowska
04. Systemy Wbudowane – „Buzzer i wyświetlacz LCD”
8
_LCD_OutNibble(0x02);
LCD_E_PORT &= ~LCD_E;
_delay_ms(1);
LCD_WriteCommand(HD44780_FUNCTION_SET | HD44780_FONT5x7 | HD44780_TWO_LINE |
HD44780_4_BIT);
LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_OFF);
LCD_WriteCommand(HD44780_CLEAR);
_delay_ms(2);
LCD_WriteCommand(HD44780_ENTRY_MODE | HD44780_EM_SHIFT_CURSOR |
HD44780_EM_INCREMENT);
LCD_WriteCommand(HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_ON |
HD44780_CURSOR_OFF | HD44780_CURSOR_NOBLINK);
}
//------------------------------------// End of file
//-------------------------------------
1.2.2. Schemat podpięcia
Zworka:
JP4 (DISPLAY) - 2-3 (=CHAR)
Wyświetlacz alfanumeryczny LCD:
D4 (LCD_CHAR/con13) - PD4 (con18)
D5 (LCD_CHAR/con13) - PD5 (con18)
D6 (LCD_CHAR/con13) - PD6 (con18)
D7 (LCD_CHAR/con13) - PD7 (con18)
E (LCD_CHAR/con13) - PB2 (con16)
RS (LCD_CHAR/con13) - PB0 (con16)
RW (LCD_CHAR/con13) - GND (con15)
1.2.3. Pseudokod obsługi wyświetlacza alfanumerycznego LCD
Wyświetlanie tekstu przesuwającego się w lewo i w prawo.
#ifndef F_CPU
Zdefiniowanie częstotliwości CPU
#endif
#include <avr/io.h>
#include <util/delay.h>
#include "HD44780.h"
int main(void)
{
Data utworzenia: 30/09/14
Copyright © 2014 Politechnika Krakowska
04. Systemy Wbudowane – „Buzzer i wyświetlacz LCD”
9
Zadeklarowanie zmiennych
Zainicjowanie LCD
Ustawienie początkowego punktu (do wyświetlania tekstu)
Wyświetlenie zadanego tekstu.
Ustawienie punktu wyświetlania tekstu.
Wyświetlenie kolejnego tekstu (np. w drugim wierszu)
do{
for()
{
Przesuwanie tekstu w lewą stronę
for()
Opóźnienie 400 ms
}
for()
{
Przesuwanie tekstu w prawą stronę.
for()
Opóźnienie 400 ms
}
}while(1);
return 0;
}
1.3. Zagadnienia do przygotowania
Przed przystąpieniem do realizacji laboratorium należy zapoznać się z zagadnieniami dotyczącymi:
o przetwornika piezoelektrycznego
o wyświetlacza alfanumerycznego LCD
o sterownika HD44780
Literatura:
[1] Rafał Baranowski, „Mikrokontrolery AVR ATmega w praktyce”
[2] Nota katalogowa sterownika HD44780 –
http://www.iti.pk.edu.pl/attachments/article/43/HD44780.pdf
[3] Dokumentacja zestawu ewaluacyjnego ZL15AVR –
http://dl.btc.pl/kamami_wa/zl15avr.pdf
[4] Instrukcje do poprzednich ćwiczeń laboratoryjnych
Data utworzenia: 30/09/14
Copyright © 2014 Politechnika Krakowska
04. Systemy Wbudowane – „Buzzer i wyświetlacz LCD”
10
2. Przebieg laboratorium
Druga część instrukcji zawiera zadania do praktycznej realizacji, które demonstrują zastosowanie technik z omawianego zagadnienia.
2.1. Zadanie 1. Na ocenę 3.0 (dst)
Proszę napisać program wydający na przemian dźwięk o jednej częstotliwości
(2 sekundy dźwięk, 2 sekundy cisza) za pomocą przetwornika piezoelektrycznego oraz
program wyświetlający na LCD dowolny tekst przesuwający się na zmianę w lewo i w
prawo.
2.2. Zadanie 2. Na ocenę 4.0 (db)
Proszę napisać program generujące różne tony dźwięku (o różnych częstotliwościach) po naciśnięciu klawiszy oraz joysticka.
2.3. Zadanie 3. Na ocenę 5.0 (bdb)
Proszę napisać program generujące różne tony dźwięku (o różnych częstotliwościach) po naciśnięciu klawiszy oraz joysticka oraz wyświetlający symbol generowanego tonu na ekranie LCD.
Data utworzenia: 30/09/14
Copyright © 2014 Politechnika Krakowska

Podobne dokumenty