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
do producenta... maila napisz

a nie dzwoń po sprzedawcach :-)
Witam - no tak Jarku masz rację tylko że ja nie znam angielskiego Blush Sad- i tu jest problem - 73 Jacek.
Newsy...

BASCOM-8051 2.0.14.0 DEMO available
BASCOM-8051 version 2.0.14.0 is now available also as DEMO in Download section.
This version extends waitms with waitmsE, the sound statement and range of SW UART.
Witam czytających - mam pytanie czy w Bascom AVR mozna przesuwać tekst w jeden z wierszy np. w LCD 16 x 4 - pierwszy wiersz ( lewo , prawo ) reszta stoi w miejscu - czy jedynie wszystkie cztery wiersze naraz - pozdrawiam 73 Jacek.
- czy masz na myśli scrola po PIXLU... czy jak... ??
- czy masz namyśli funkcje standardowego drivera - czy ogólne pytanie


napewno można .. trzeba trochę na około trzeb asie pomęczyć - ale napewno można..
można nawet napisac własny sterownik LCD z dodatkowymi funkcjami..

Czy sprzwdziłeś opisy komend sterujących LCD na co pozwalają ???

Ja ostatnio od zera pisałem sterownik kolorowego LCD do BASCOM 320x240 z odwracaniem okranów, pisaniem bokiem i obsługą ekranu dotykowego.

Mozna DUŻO - ale jakim nakładem pracy :-)
Witam - Jarku chodzi mi o standardowe komendy Bascoma - shiftlcd (left , right) - przesuwanie tekstu ( po jednym znaku w lewo, prawo ) w jednej linijce - pozdrawiam Jacek.
...shiftlcd ciagnie cały wiersz jesli chcesz zrobić animacje z literkami musisz czyścić lcd i printować literki co jeden piksel obok. Malo efektywna metoda.
Witam - ok może być cały wiersz tylko że część tego 1 wiersza pojawia mi się w 3 linii

Kod:
'************* Konfiguracja uC *****************
'***********************************************
$regfile = "m644pdef.dat"
$crystal = 16000000


Config Lcdpin = Pin , Db4 = Porta.5 , Db5 = Porta.4 , Db6 = Porta.3 , Db7 = Porta.2 , E = Porta.0 , Rs = Porta.1       'tu zmien na odpowiednie piny
Config Lcd = 16 * 4

Deflcdchar 1 , 31 , 4 , 4 , 4 , 4 , 4 , 4 , 4               ' replace ? with number (0-7)
Deflcdchar 2 , 31 , 32 , 32 , 32 , 32 , 32 , 32 , 32        ' replace ? with number (0-7)
Deflcdchar 3 , 31 , 4 , 4 , 4 , 4 , 32 , 32 , 32            ' replace ? with number (0-7)
Deflcdchar 4 , 4 , 4 , 4 , 4 , 14 , 14 , 31 , 31            ' replace ? with number (0-7)

Config Portd.0 = Input
Config Portd.1 = Input
Config Portd.2 = Input

Set Portd.0
Set Portd.1
Set Portd.2

Dim A As Byte


Cursor Off


Cls

Do

For A = 1 To 10

  Shiftlcd Right

Waitms 250                                                  

Next

Lcd Chr(1) ; Chr(2) ; Chr(3) ; Chr(2) ; Chr(1) ; Chr(2) ; Chr(3) ; Chr(2) ; Chr(1) ; Chr(2) ; Chr(3) ; Chr(2) ; Chr(1) ; Chr(2) ; Chr(3) ; Chr(2)

Lowerline
Lcd " 261   " ; Chr(4) ; "   305  "

Thirdline

Lcd "Line 3"

Fourthline

Lcd "Line 4"

Home Third                                                  

Home Fourth


Loop

2, 3 oraz 4 też się przesuwają a ma tylko 1 - w lewo lub prawo - pozdrawiam Jacek.
... a do czego to mabyc - do jakiego urzadzenia ??? czy po prostu edukacyjnie...

Ja bym ci polecił LCD graficzny - taki jak używam w MAX4 MAX6 - nawet niedrogi a duzo więcej możesz...
Blush hi efekt obracania się rotora - czyli w drugiej linijce od lewej:
wskazanie aktualnego azymutu (261) w środku znacznik z prawej zadany azymut (305), a w pierwszej właśnie przesuwanie się stopni jak obraca się rotor - chcę Blush spróbować napisać program do sterownika rotora Blush pozdrawiam Jacek.

Witam - napisałem taki programik z odczytem napięcia z potencjometru przez przetwornik ale nie mogę sobie poradzić z zaokrągleniem zmiennej "azym_zad" do wartości całkowitej - wychodzi mi z ułamkiem - co robie źle - mogę prosić o podpowiedź.
program:
Kod:
'odczyt testowy ADC Atmega 644p płyta testowa EvB 4.3  zamiana odczytanej
'wartości z A/C na stopnie azymutu
'Program obsługi wbudowanego w mikrokontroler
'10-bitowego przetwornika A/C
$regfile = "m644pdef.dat"                                   'informuje kompilator o typie mikrokontrolera
'$sim
$crystal = 16000000                                         'informuje kompilator
                                                            'o częstotliwości oscylatora
                                                            'taktującego mikrokontroler
Config Lcd = 16 * 4

Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7       'porty mikrokontrolera, do których dołączono wyświetlacz LCD
Config Adc = Single , Prescaler = Auto , Reference = Avcc   'konfiguracja wewnętrznego przetwornika A/C
Config Pind.0 = Input
Config Pind.1 = Input
Config Portb.0 = Output
Config Portb.1 = Output

Deflcdchar 1 , 31 , 31 , 4 , 4 , 4 , 4 , 4 , 4              ' replace ? with number (0-7)
Deflcdchar 2 , 31 , 31 , 32 , 32 , 32 , 32 , 32 , 32        ' replace ? with number (0-7)
Deflcdchar 3 , 31 , 31 , 4 , 4 , 4 , 32 , 32 , 32           ' replace ? with number (0-7)
Deflcdchar 4 , 4 , 4 , 4 , 4 , 14 , 14 , 31 , 31            ' replace ? with number (0-7)
Deflcdchar 5 , 12 , 18 , 18 , 12 , 32 , 32 , 32 , 32        ' replace ? with number (0-7)

         'Zmienne
Dim Wart_ac1 As Word                                        'zmienna na wartość odczytaną z przetwornika
Dim V1 As Single                                            'zmienna przechowująca obliczon
Dim Azym_odcz As String * 3                                 'zmienna, do której będzie wpisywany odczytany azymut
Dim Azym_zad As Single                                      'zmienna, do której będzie wpisywany zadany azymut

Declare Sub Lewo
Declare Sub Prawo
Declare Sub Kierunek

Set Pind.0
Set Pind.1
Set Portb.0
Set Portb.1

Start Adc                                                   'uruchamia wbudowany przetwornik

Wart_ac1 = Getadc(0)                                        'odczytanie wartości z wejści ADC0 mikrokontrolera
V1 = Wart_ac1 / 2.842                                       'zamiana odczytanej wartości z A/C na stopnie azymutu

Azym_odcz = Fusing(v1 , "#." )
Azym_zad = V1
Cursor Off


Cls
Wait 2

Azym_zad = V1
Locate 1 , 4 : Lcd "STEROWNIK"
Waitms 500
Locate 2 , 6 : Lcd "ROTORA"
Wait 2
Cls

Do
                                                         'początek pętli programu
Wart_ac1 = Getadc(0)                                        'odczytanie wartości z wejści ADC0 mikrokontrolera
V1 = Wart_ac1 / 2.842                                       'zamiana odczytanej wartości z A/C na stopnie azymutu

Azym_odcz = Fusing(v1 , "#." )                              'formatowanie wartości zmiennej

Locate 1 , 6 : Lcd "Azymut"
Locate 2 , 1 : Lcd Chr(1) ; Chr(2) ; Chr(3) ; Chr(2) ; Chr(1) ; Chr(2) ; Chr(3) ; Chr(2) ; Chr(1) ; Chr(2) ; Chr(3) ; Chr(2) ; Chr(1) ; Chr(2) ; Chr(3) ; Chr(2)
Locate 3 , 2 : Lcd Azym_odcz ; Chr(5) ;
Locate 3 , 9 : Lcd Chr(4)
Locate 3 , 12 : Lcd Azym_zad ; Chr(5)

If Pind.0 = 0 Then                                          'zwiększanie zadanego azymutu
  Waitms 25
  If Pind.0 = 0 Then
  Incr Azym_zad
  If Azym_zad => 360 Then
  Azym_zad = 360
  End If
  End If
  End If

If Pind.1 = 0 Then                                          'zmiejszanie zadanego azymutu
Waitms 25
If Pind.1 = 0 Then
Decr Azym_zad
If Azym_zad <= 0 Then
Azym_zad = 0
End If
End If
End If

Locate 3 , 12 : Lcd Azym_zad ; Chr(5)

If V1 <> Azym_zad Then
Gosub Kierunek


End If

Loop                                                        'koniec pętli Do...Loop
End                                                         'koniec programu

Sub Kierunek
If V1 < Azym_zad Then
Reset Portb.0 : Set Portb.1                                'zapalanie diody LED1
End If
If V1 > Azym_zad Then
Reset Portb.1 : Set Portb.0                                'zapalanie diody LED2
End If
If V1 = Azym_zad Then
Set Portb.0 : Set Portb.1                                  'gaszenie obu LED
End If

End Sub

część programu do odczytu z przetwornika znalazłem w necie - pozdrawiam 73 Jacek.
Stron: 1 2 3 4 5
Przekierowanie