HomeMade

Pełna wersja: Bascom AVR
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2 3 4 5
Witam - w ramach zabawy z graficznym lcd 128x64 opartym o sterownik KS108 ( z MAX'a 6 ) napisałem taki programik:

Kod:
'-----------------------------------------------------------------------------------------
'name                     : ks108.bas
'copyright                : (c) 1995-2005, MCS Electronics
'purpose                  : demonstrates the KS108 based graphical display support
'micro                    : Mega323
'suited for demo          : no
'commercial addon needed  : no
'-----------------------------------------------------------------------------------------

$regfile = "m644pdef.dat"                                   ' specify the used micro
$crystal = 16000000                                         ' used crystal frequency
$baud = 19200                                               ' use baud rate
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space
'$sim

'some routines to control the display are in the glcdKS108.lib file
$lib "glcdKS108.lbx"



Waitms 200

'Print "Test program by SP3SWJ for KS0108 LCD"               ' printing will still work as only the receiver pin is disabled


'First we define that we use a graphic LCD
Config Graphlcd = 128 * 64sed , Dataport = Portb , Controlport = Portc , Ce = 7 , Ce2 = 6 , Cd = 3 , Rd = 4 , Reset = 5 , Enable = 2

Config Pind.6 = Input : Set Pind.6
Config Pind.7 = Input : Set Pind.7
S1 Alias Pind.6
S2 Alias Pind.7

Dim A As Word
Dim B As Word


'The dataport is the portname that is connected to the data lines of the LCD
'The controlport is the portname which pins are used to control the lcd
'CE =CS1  Chip select
'CE2=CS2  Chip select second chip
'CD=Data/instruction
'RD=Read
'RESET = reset
'ENABLE= Chip Enable

'When you want to show somthing on the LCD, use the LCDAT command
'LCDAT   LINES , COLUMN, VALIUE , COLOR
'You can use locate but the
'COMULNS  have a range from 1-128 pixels
'LINES    number of lines
         '1 2 3 4 5 6 7 8 for 8x8 font
         '1,3,5,7 for 16x16  lines 2 4 6  is shifted   8 not allowed
'VALUE    displayed value
          'not longer than 16 chars  for 8x8
          'not longer than 8  for 16x16
         'last char Is Rollover Half Screen - line can not be to longer
'COLOR    1 will inverse the text 0 = normal






Wait 1
Cls
Setfont Font16x16
B = 16
A = 0
Do
Lcdat 7 , 1 , A ; "  "
If S1 = 0 Then
   Waitms 100
   If S1 = 0 Then
      Incr A
      If A > 361 Then
         A = 360
      End If
   End If
End If

If S2 = 0 Then
   Waitms 100
   If S2 = 0 Then
      Decr A
      If A < 0 Or A > 361 Then
         A = 0
      End If
   End If
End If




Line(23 , 17) -(23 , 30) , 1
If A > 9 Then
B = B - 8
Elseif A > 99 Then
B = B - 8
Else
B = 16
End If
Lcdat 1 , B , A




Loop



'we need to include the font files
$include "font16x16.font"

Po przekroczeniu zmiennej A wartości 9 efekt jest taki jak na foto:

[attachment=3627]

czy może ktoś podpowiedzieć co robię źle - pozdrawiam Jacek.
wyjechałes poza obszar LCD, biblioteka do LCD nie ma zabezpieczenia na złe adresowanie pikseli, użyj mniejszego fontu na początek np 8x8,
i pilnjuj sie by nie dawać tekstów które wyjazda poza obszar LCD

pobaw sie tym tylko zmień odpowiednio definicje - możesz zmieniac w programie kiedy piszesz duże a kiedy małe fonty
... czy to ma byc do ROTORA ????

przyda ci sie bardziej program z drugiego linku... masz tam obsługę czterech przycisków i dwie linijki z napisami 16 pikseli.... i na dole opis przycisków 8 pikseli
Witam - Jarku zmiana fontów na mniejsze 8x8 nic nie dała

[attachment=3629]

pozdrawiam i dzięki za odpowiedź - Jacek.
to jeszce raz sprawdź podłączenie LCD

weź jeden z moich programów jako działjacy OK - dostosuj definicja połaczeń i wgraj - nie zmieniaj nic w kodzie...

jak źle wyświetla - szukaj błedu w drutach
pomecz też te przykłady "edukacyjne" w oryginale "gadasz" z nimi przez seriala...i możesz dowolnie kreski i inne różne rysować
Odgrzeje temat BASCOMA, jeśli ktoś ma problemy z ogarnięciem funkcji SOUND to zrobiłem prostego excelka do liczenia parametrów tej funkcji. Jeśli ktoś znajdzie błąd proszę poprawić Wink



Wklejam urla ale coś się z nim dzieje po wklejeniu i nie działa... Sad
https://docs.google.com/spreadsheet/ccc?...W1aVkR2elE

Kod:
https://docs.google.com/spreadsheet/ccc?key=0AlfxJCZSNErUdGZabnQ1N3hmVlV0eGpHdW1aVkR2e​lE#gid=0

Zaraz zaklnę siarczyście....

Kod PHP:
'https://docs.google.com/spreadsheet/ccc?key=0AlfxJCZSNErUdGZabnQ1N3hmVlV0eGpHdW1aVkR2e​lE' 


Po kliknieciu linku w pasku adresu końcówka się zmienia na takie coś:
było:
elE
jest:
2e%E2%80%8BlE

Nie rozumiem coś dzieje...
chyba nie dałeś uprawnień ... do pliku...

tez zawsze ta tajemnicza funkcja mnie wkurzała i uzywąlem jej jako bardzie do wadawania "jakiegoś dźwięku" ;-) niz do konkretnego może da rade to przeliczyc w BASCOM :-) by było po ludzku... ;-)

Przepraszamy.
To nie jest poprawny adres URL arkusza kalkulacyjnego.

Więcej informacji można znaleźć w Centrum pomocy serwisu Dokumenty Google.
OK już wiem formatowanie UTF przy kopiowaniu URL-a robią się dziwne rzeczy.
W załaczeniu plik txt z właściwie zakodowanym adresem. UF!!
:-) udostępniłeś pełny tryb edycji ARKUSZA :-) ... zrób read only... bo ktos niechcący coś skasuje ;-)

... czy oglądąłes juz te źróła BASCOM do nadawania morsem ??

http://www.sp2swj.sp-qrp.pl/SP3SWJ/MAX6/...com/MORSE/

może na coś to Ci sie przyda...

to co do wysłania umieszczasz w zmiennej .... i leci na buzera

Sendstring = "ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 ?><" i leci na buzera...

a szybkości transmisji sa wyliczane..

'Set Speed and Dot, they determine the remaining constants
Const Speed = 12
Const Dot = 600 / Speed
Const Dash = 3 * Dot
Const Letter = Dash
Const Wordw = 7 * Dot
Const Frequency = 1300
Zrobiłem sobie kopie na zapas Smile Zobaczymy może nikt tego nie zepsuje Smile

Ja to robię tak ze znamiennikiem:

Kod:
Znamiennik:
'uruchamiam sobie TX
Ptt = 1
Tx_led = 1
Wentylator = 1
'blokujemy timer na czas wysylania znamiennika bo chrypi
Stop Timer0
Waitms 300
   Stringlength = Len(inputtekst)
'tutaj przesuwamy się po ciągu znaków i będziemy odtwarzać każdą literę z osobna
   For Charindex = 1 To Stringlength
   Sendchar = Mid(inputtekst , Charindex , 1)
   Charcode = Asc(sendchar)

    Dataindex = Charcode - 48
    Charstring = Lookupstr(dataindex , Alfabet)
    Codelength = Len(charstring)

'ta pętla generuje kazda litere znaku
         For Codeindex = 1 To Codelength
               Codeelement = Mid(charstring , Codeindex , 1)
            If Codeelement = "." Then
'Zagraj kropke
               Sound Morsepin , Kropka , Czestotliwosc
            Else
'Zagraj kreske
               Sound Morsepin , Kreska , Czestotliwosc
            End If
            If Codeindex < Codelength Then
               Waitms Kropka
            End If
         Next Codeelement
'odstęp pomiedzy znakami 3 x kropka
      Waitms Kreska
'i wracamy do początku pętli po następną literę
   Next Charindex
'resetujemy flagi
   Ptt = 0
   Tx_led = 0
   'Wentoff = 1
'skonczylismy nadawac znamiennik odpalamy timer 1
   Start Timer0
Return


i do tego tablica ze znakami:

Kod:
Alfabet:
Data "-----"                                                '0  Znaki pokolei tak jak są ustawione w tablicy ASCII
Data ".----"                                                '1  przy wywoływaniu musimy tylko przestawić indeks o 48
Data "..---"                                                '2  ponieważ cyfra 0 ma kod ASCII 48
Data "...--"                                                '3
Data "....-"                                                '4
Data "....."                                                '5
Data "-...."                                                '6
Data "--..."                                                '7
Data "---.."                                                '8
Data "----."                                                '9
Data "."                                                    ': do generowania znamienników znaki specjalne nie są potrzebne
Data "."                                                    ';
Data "."                                                    '<
Data "."                                                    '=
Data "."                                                    '>
Data "."                                                    '?
Data "."                                                    '@
Data ".-"                                                   'A  Literki
Data "-..."                                                 'B
Data "-.-."                                                 'C
Data "-.."                                                  'D
Data "."                                                    'E
Data "..-."                                                 'F
Data "--."                                                  'G
Data "...."                                                 'H
Data ".."                                                   'I
Data ".---"                                                 'J
Data "-.-"                                                  'K
Data ".-.."                                                 'L
Data "--"                                                   'M
Data "-."                                                   'N
Data "---"                                                  'O
Data ".--."                                                 'P
Data "--.-"                                                 'Q
Data ".-."                                                  'R
Data "..."                                                  'S
Data "-"                                                    'T
Data "..-"                                                  'U
Data "...-"                                                 'V
Data ".--"                                                  'W
Data "-..-"                                                 'X
Data "-.--"                                                 'Y
Data "--.."                                                 'Z

Część kodu zapożyczyłem, już nie pamiętam od kogo
(06-05-2012 16:39)SQ9MDD napisał(a): [ -> ]Część kodu zapozyczyłem, już nie pamietam od kogo

Chyba to samo co ja linkowałem przed chwilą ;-) PA3CKR

.... dodaj watchdoga... np na 2 sekundy .. bys miał bezobsługowy sterownik :-)
Stron: 1 2 3 4 5
Przekierowanie