Mikroprocesorowa Ośla łączka M1
Mikroprocesorowa Ośla łączka M1
’C023e Wszystkie typy zmiennych na |
wyświetlaczu | ||
Din* B As Byte , W A* |
Word , I As |
Integer , L As Long | |
Din* g Aa Single , T As String * |
13 | ||
B - 218 : W - 65414 |
: I - -30124 |
: L |
- -1250250250 |
8 - -1.473725 : T - |
"napisik nr |
2 ! " | |
Cursor Off | |||
Do | |||
Cl* | |||
Lcd "Bm" ; B ; " - |
” ; "bajt” |
'kilka "kawałków” w Jednej linii | |
Lowerllne : Lcd " liczby 0...255 |
" : Walt 2 | ||
Cl* : Lcd ”W«" ; W : |
Lowerllne : |
Lcd |
"liczby 0...65535" : Walt 2 |
Cis : Lcd "I»” ; I : |
Lowerllne : |
Lcd |
" -32768...32767" : Walt 2 |
Cis : Lcd "L-" ; L : |
Lowerllne : |
Lcd |
"1. +/-2147483647" : Walt 2 |
Cis : Lcd "3m" ; S : |
Lowerllne : |
Lcd |
" liczby (single)" : Walt 2 |
Cis : Lcd "T-” ; T : |
Lowerllne : |
Lcd |
" teksty" : Walt 2 |
Loop : End |
Clm
Lcd "Higajacy napis" Do
Walt 2 Display Off Walt 2 Display On Loop End
UPPERLINE 'górna (pierwsza) LOWERLINE 'druga (niższa)
Rys. 127
Din* Odczyt As Byte , |
Wskaż As Single |
Odczyt “ 0 |
'wartość wstępna |
Cis |
'czyść ekran |
Lcd "Temperatura" |
'w górnej linii napis pozostający "na zawsze" |
Do |
'początek programu |
Wskaż - Odczyt |
'przepisz liczbę 0...255 do zmiennej Wskaż typu Single |
'teraz w zmiennej Wskaż typu Single jest liczba całkowita | |
Wskaż ” Wskaż t 10 |
'dzielimy przez 10 |
Wskaż *■ Wskaż - 10 |
'odejmujemy wartość przesunięcia - możemy otrzymać liczbę ujemną |
Cursor On Bllnk |
'włącz kursor migający |
Locate 2 , 3 |
'przesuń kursor do dolnej linii, ale nie na początek |
Walt 1 |
•czekaj ls |
Lcd "“" ; Wskaż |
'wpisz znak równości i wartość temperatury |
Walt 2 |
'przesada - przesadna dokładność temperatury!!!! |
Locate 2 , 10 |
'Cofnij Kursor |
Walt 1 |
■czekaj ls |
Lcd "oC " |
'skróć wpisując nowy tekst i spacje "przykrywające" |
Cursor Off Hobllnk |
'wyłącz kursor |
Walt 2 |
'ciesz się widokiem przez 2 s |
Odczyt - Odczyt + 13 |
'przykładowa następna wartość temperatury |
Loop : End |
HOME UPPER / LOWER / THIRD / FOURTH
zmienne tekstowe (String), jak i różne zmienne liczbowe. Zwróć uwagę na zmienne typu Integer, Lotig, mogące przyjmować wartości ujemne, a zwłaszcza na zmienną typu Single, mogąca przechowywać także ułamkowe liczby dodatnie i ujemne z bardzo szerokiego zakresu 1,5* 10'45...3,4*10'™ (w roli punktu dziesiętnego występuje tu kropka, a nie przecinek).
Ten program pokazuje również, że za jednym poleceniem LCD możemy umieścić wiele „kawałków” do wyświetlenia w jednej linii. Wystarczy je rozdzielić średnikami.
Podczas pracy można wygaszać i włączać wyświetlacz LCD poleceniem DISPLAY, jak pokazuje przykład z rysunku 126 (■C023fbas).
Często nie chcemy zaczynać napisu od początku linii. Nie musimy kombinować z pojedynczymi spacjami, jak w przykładzie poniżej LCD " " ; Zmienna ; "Napis"
LCD SPC(4) ; Zmienna ; "Napis" Wystarczy, że mądrze wykorzystamy kursor. Może już we wcześniejszych przykładach zauważyłeś, że za napisem pojawia się kursor - pozioma kreska. Kursor wskazuje, gdzie zostanie umieszczony ewentualny następny znak - dokładnie tak samo jest na ekranie komputera. Najpierw parę słów o kursorze. Wyświetlanie kursora można wyłączyć poleceniem CURSOR OFF (i włączyć poleceniem CURSOR ON). Kursor może też wyglądać jak migające pole - realizujemy to poleceniem CURSOR BLINK (miganie wyłączamy dyrektywą CURSOR NOBLINK). Dla nas ważniejsze jest, że kursor możemy dowolnie przesuwać po wyświetlaczu, a potem właśnie tam zaczynać pisanie. W BA-SCOM-ie do przesuwania kursora mamy kilka poleceń. Możemy przesuwać kursor w linii poleceniem
SHIFTCURSOR LEFT/RIGHT, które działa analogicznie jak wcześniej poznane SHIFTLCD, tylko przesuwa kursor, a nie tekst na wyświetlaczu.
Możemy przenosić kursor do poszczególnych linii, co realizują polecenia:
a dla modułów z większą liczbą linii:
THIRDLINE 'trzecia linia
FOURTHLINE 'czwarta linia
Mogą też przydać się polecenia HOME, przesuwające kursor na początek danej linii:
Zamiast pełnej nazwy linii można dać tylko pierwszą literę:
HOME U, HOME L, HOME T, HOME F
HOME - bez nazwy linii przesunie kursor na początek górnej (pierwszej) linii. Możesz pobawić się tymi poleceniami - znajdziesz je w pliku C023g.bas.
Zamiast omówionych rozkazów prawdopodobnie częściej będziesz wykorzystywał wygodne polecenie dowolnego przesuwania kursora z podaniem linii i pola, na które ma przeskoczyć kursor:
LOCATE Y , X
gdzie X to stała lub zmienna określającą numer pola w linii (u nas 1... 16, w innych wyświetlaczach nawet do 64), a Y to stała lub zmienna, określająca numer linii (u nas 1 lub 2, w czteroliniowych wyświetlaczach 1...4).
Już wiesz, że polecenie CLS czyści wyświetlacz. Nie musimy jednak czyścić ekranu przed każdym wysłaniem danych do wyświetlacza, co znakomicie zwiększa możliwości -przykład znajdziesz już w pliku C023g.bas. 1 właśnie polecenie LOCATE bez czyszczenia ekranu pozwala w sprytny sposób zrealizować różne „sztuczki” związane z wyświetlaniem. Prostym, ale pouczającym przykładem jest program z rysunku 127 (C023h.bas), pokazujący, że część napisu, a konkretnie tekst „Temperatura” będzie stale pozostawać na ekranie w górnej linii, a pętla Do...Loop będzie zmieniać tylko zawartość niektórych pól dolnej linii. Zwróć uwagę, jak wykorzystujemy polecenia przesuwające i wygaszające kursor. Pamiętaj o takich możliwościach, bo w przyszłości zapewne zechcesz z nich skorzystać.
linia Twoje zdziwienie mogą wzbu-linia dzić podejrzane operacje ze zmiennymi. Nie ma tu nic podejrzanego. Już teraz chcę Ci wstępnie zasygnalizować ważną sprawę związaną z typami zmiennych. Mianowicie często z jakiegoś czujnika czy przetwornika otrzymujemy wynik pomiaru, który jest jednobajtową lub dwubajtową liczbą dwójkową (w zmiennej typu By-te albo Word). Tak jest na przykład z przetwornikiem PCF8591 obecnym na naszej płytce testowej. Uzyskiwana zeń liczba 0...255 często nie odpowiada wprost mierzonej wielkości, na przykład napięcia czy temperatury, które mogą też przyjmować wartości ujemne. Może się na przykład zdarzyć, że chcemy mierzyć temperaturę w zakresie -10°C...+10°C i zastosowaliśmy przetwornik LM335 z dodatkowym wzmacniaczem operacyjnym przesuwającym napięcie o l,73V. Wtedy otrzymamy sygnał analogowy, gdzie
38 Styczeń 2004 Elektronika dla Wszystkich