Author Topic: Туторијал за програмирање во MikroBasic (LCD дисплеј)  (Read 1473 times)

Offline Devil

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 5329
  • Gender: Male
    • Македонски форум за електроника
Туторијал за програмирање во MikroBasic (LCD дисплеј)
« Opened on 26.06.2011, Sunday, 21:40:32 (Edited 26.06.2011, Sunday, 21:43:33) »
Главна страна (дискусии, прашања)
http://elektronika-mk.net/index.php?topic=4291.msg39377#msg39377

После подолго време породолжувам со туторијалите, се извинувам на сите но немав време поради школувањето  :D

Шема


Код
Code: [Select]
'************* TUTORIAL IV - LCD **********
'********* Makedonski Forum za Elektronika********
'********* http://elektronika-mk.net **********
'********* Procesor PIC16F628A @ 4MHz, Simulacija ISIS 7, Razvoen sistem MFE_01
'************** DEVIL ****************
program LCD_kontrola
' Lcd modul konekcii
dim LCD_RS as sbit at RB0_bit                      'Sertiranje na portite kako RS pin od displejot
    LCD_EN as sbit at RB1_bit                      'Setiranje na EN pin
    LCD_D4 as sbit at RB2_bit                      'Setiranje na D4 pin
    LCD_D5 as sbit at RB3_bit                      'Setiranje na D5 pin
    LCD_D6 as sbit at RB4_bit                      'Setiranje na D6 pin
    LCD_D7 as sbit at RB5_bit

    LCD_RS_Direction as sbit at TRISB0_bit          'Postavuvanje na izlezni pinovi
    LCD_EN_Direction as sbit at TRISB1_bit          ' -------||------
    LCD_D4_Direction as sbit at TRISB2_bit          ' -------||------
    LCD_D5_Direction as sbit at TRISB3_bit          ' -------||------
    LCD_D6_Direction as sbit at TRISB4_bit          ' -------||------
    LCD_D7_Direction as sbit at TRISB5_bit          ' -------||------
' kraj na konekcijata
'Tekst komandi                                      'Ova se poraki koj se prikazuvaat na LCD
dim tekst1 as char[13]                              ' tekst1- ime na tekstot char[13]- dolzina na tekstot
    tekst2 as char[16]                              'Ova sledi za site 12 poraki isto ime na tekstot
    tekst3 as char[13]                              'dolzina na tekstot, gledajte da go sobira vo eden red,
    tekst4 as char[7]                               'inaku nema da bide prikazan toj del od tekstot
    tekst5 as char[8]                               'ke bide otkinat od porakata, premestete vo 2 red
    tekst6 as char[15]
    tekst7 as char[5]
    tekst8 as char[7]
    tekst9 as char[5]
    tekst10 as char[6]
    tekst11 as char[5]
    tekst12 as char[4]

    i    as byte                 ' Promenliva
 '*********TON***************        Postavuvanja za zvuk
Sub procedure TonA()                 'TonotA e so frekvencija 400Hz i trae 300mS
Sound_Play(400,300)
end sub
Sub procedure TonB()                 'TonotB e so frekvencija 1kHz i trae 300mS
sound_play(1000,300)
end sub
      '*********ALARM*************
Sub procedure Alarm()                  'Povtoruvanje na dvata tonovi so cel da se dobie melodija
Delay_ms(300)
PORTA.2 = 1                            'Setiranje na RA2 na visoko nivo
Lcd_Cmd(_LCD_CLEAR)                    'Brisenje na momentalnata poraka od displej
Lcd_out(1,6,tekst9)'Isprakjanje na poraka vo I red od displejot pocnuvajki od 6-to pole, se ispisuva tekst9
TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB()
 TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB()
  TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB()
   TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB()
    TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB()
TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB()
  TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB()
   TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB()
    TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB()
   delay_ms(300)
    PORTA.2 = 0                     'Se isklucuva RA2
end sub
'********* TEST ALARM************
sub procedure Test()                  'Test Alarm funkcija
 Delay_ms(300)                        'Pauza 300mS
 Lcd_Cmd(_LCD_CLEAR)                  'Se brisi momentalna poraka od LCD
Lcd_out(1,7,tekst12)                  'Se ispraka tekst12 na displej, vo prv red pocnuvajki od 7 pole
Lcd_out(2,6,tekst9)                   'Se ispraka tekst9 vo vtor red pocnuvajki od 6 pole
delay_ms(100)
PORTA.2 = 1                           'Se vklucuva porta RA2
TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB() TonA() TonB()   'Mini melodija
   TonA() TonB() TonA() TonB() TonA() TonB()
 Delay_ms(300)
 PORTA.2 = 0                         'Se isklucuva porta RA2
 end sub

 '**********INFO**********
 sub procedure Info()                 'INFO porakata koja se pojavuva na pocetokot
      Delay_ms(500)                   'Procedura na ispisuvanje na displej ista
      Lcd_cmd(_LCD_CLEAR)             'prvo se oznacuva vo koj red (I ili II) pa od koe pole
      Lcd_out(1,6,tekst11)            'i na kraj koja poraka treba da se ispise
      Lcd_out(2,1,tekst3)
      Delay_ms(2000)
      Lcd_cmd(_LCD_CLEAR)
      Lcd_out(1,6,tekst11)
      Lcd_out(2,2,tekst4)
      Delay_ms(2000)
      Lcd_cmd(_LCD_CLEAR)
      Lcd_out(1,6,tekst11)
      Lcd_out(2,6,tekst8)
      Delay_ms(2000)
      Lcd_cmd(_LCD_CLEAR)
      Lcd_out(1,6,tekst11)
      Lcd_out(2,1,tekst6)
      Delay_ms(2000)
      Lcd_cmd(_LCD_CLEAR)
      Lcd_out(1,6,tekst11)
      Lcd_out(2,6,tekst7)
      Delay_ms(2000)
      Lcd_cmd(_LCD_CLEAR)
      Lcd_out(1,6,tekst11)
      lcd_out(2,5,tekst5)
      Delay_ms(2000)
      Lcd_cmd(_LCD_CLEAR)
      Lcd_out(1,6,tekst11)
      Lcd_out(2,1,tekst6)
      Delay_ms(2000)
      Lcd_cmd(_LCD_CLEAR)
      Lcd_out(1,6,tekst11)
      Lcd_out(2,6,tekst7)
      delay_ms(2000)
      Lcd_Cmd(_LCD_CURSOR_OFF)
      lcd_out(1,2,tekst1)
      Lcd_out(2,1,tekst2)
     Delay_ms(200)
     end sub
  '******** GLAVNA PROGRAMA *************
main:                   'Glavna programa kade sto se postavuvanjata na pinovite za vlezni i izlezni
TRISB = %00000011
PORTB = 0
TRISA = %110000
PORTA = %100000
CMCON = 0x07
Sound_Init(PORTA, 3)

'******* TEKST ZA LCD ***********
tekst1 = "Cekam Naredba"           'Tekstovite koj se ispisuvaat na LCD
tekst2 = "Za Info Kopce A"         'Mora da bidat so ist broj na bukvi kako sto se navedeni pogore
tekst3 = "Za Test Alarm"           'Vo broenjeto se smeta i praznoto mesto
tekst4 = "Kopce B"
tekst5 = "Za Izlez"
tekst6 = "Pritisni Crveno"
tekst7 = "Kopce"
tekst8 = "Za STOP"
tekst9 = "ALARM"
tekst10 = "PROEKT"
tekst11 = "INFO:"
tekst12 = "TEST"

Delay_ms(300)
Lcd_Init()                'Komanda za da se inicira LCD-to
Lcd_Cmd(_LCD_CLEAR)         'Se brisi za sekoj slucaj da ne ima nesto random
Lcd_Cmd(_LCD_CURSOR_OFF)    'Se isklucuva kursorot
lcd_out(1,2,tekst1)         'poraka koja se prikazuva vo prv red
Lcd_out(2,1,tekst2)         'poraka koja se prikazuva vo vtor red
delay_ms(500)

while TRUE                 'Proverka za kopcinja ili alarm
      if (Button(PORTB,6,1,1)) then   'Dokolku se pritisni ova kopce mcu-to odi vo INFO mod
          Info()
          while (RB6_bit <> 0)
            nop
          wend
      end if

      if (Button(PORTB,7,1,1)) then
         Test()                       'Dokolku se pritisni ova kopce odi vo TEST mod
          while (RB7_bit <> 0)
            nop
          wend
      end if

      if PORTA.1 = 1 then
      Alarm()                          'Ova e SENZOR, dokolku se pojavi visoko
          while (RA1_bit <> 0)         'nivo togas se aktivira Alarmot
            nop
          wend
      end if
      
    wend
    
end.       'Kraj na programata

Видео
LCD tutorial 1
Jас не сум себичен, помагам. Помагај и ти !

Секоја куќа си има свои куќни правила.Почитувај ги куќните правила!