Państwowa Wyższa Szkoła Zawodowa w Nowym Sączu Instytut Techniczny Programowanie mikrokontrolerów- laboratorium Temat: Klawiatura szesnastkowa - menu. Nazwisko i imię 1. 2. Data wykonania ćwiczenia: Grupa: Ocena sprawozdania Zaliczenie: Symbol: AVR_9 1. Celem ćwiczenia: Celem ćwiczenia jest zapoznanie z obsługą klawiatury szesnastkowej stosowanej w systemach mikroprocesorowych. Program_1 $regfile = "m32def.dat" $crystal = 16000000 Config Sda = Portc.1 Config Scl = Portc.0 'informuje kompilator o pliku 'dyrektyw mikrokontrolera 'informuje kompilator 'o częstotliwości oscylatora Config Int0 = Falling Config Lcdpin = Pin, Rs = Porta.2, E = Porta.3, Db4 = Porta.4, Db5 = Porta.5, Db6 = Porta.6, Db7 = Porta.7 Config Lcd = 16 * 2 'Pin podświetlenia LCD Config Porta.1 = Output Set Porta.1 On Int0 Klawiatura Enable Interrupts Enable Int0 Dim V As Byte Dim K As Byte Dim M As Byte Dim I As Byte Dim L1 As Byte Dim L2 As Byte Dim W As Byte I = 0 Portd.2 = 1 V = 255 Do Lcd "* KALKULATOR * " If V <> 255 Then If V >= 0 And V <= 9 Then L1 = V Lcd V
Case 10 : Lcd " + " W = L1 L2 = 10 Case 12 : W = L1 Lcd " - " W = L1 L2 = 12 Case 15 : W = L1 Lcd " * " W = L1 L2 = 15 Case 11 : W = L1 Lcd " / " L2 = 11 Case 13 : If L2 = 10 Then W = W + L1 Elseif L2 = 12 Then W = W - L1 Elseif L2 = 15 Then W = W * L1 Elseif L2 = 11 Then W = W / L1 If V = 14 Then L1 = 0 L2 = 0 W = 0 Waitms 200 Loop End Klawiatura: I2csend 112, 255 I2csend 114, 255 I2creceive 113, V I2creceive 115, K Case 254 : V = 0 Case 253 : V = 1 Case 251 : V = 2 Case 247 : V = 3 Case 239 : V = 4 Case 223 : V = 5 Case 191 : V = 6 Case 127 : V = 7 'Case Else : V = 255 Select Case K Case 254 : V = 8 Case 253 : V = 9 Case 251 : V = 10 Case 247 : V = 11 Case 239 : V = 12 Case 223 : V = 13 Case 191 : V = 14 Case 127 : V = 15 'Case Else : V = 255 Return
Program_2 $regfile = "m32def.dat" $crystal = 16000000 Config Sda = Portc.1 Config Scl = Portc.0 'informuje kompilator o pliku 'dyrektyw mikrokontrolera 'informuje kompilator 'o częstotliwości oscylatora Config Int0 = Falling Config Lcdpin = Pin, Rs = Porta.2, E = Porta.3, Db4 = Porta.4, Db5 = Porta.5, Db6 = Porta.6, Db7 = Porta.7 Config Lcd = 16 * 2 'Pin podświetlenia LCD Config Porta.1 = Output Set Porta.1 Enable Interrupts Enable Int0 On Int0 Klawiatura Dim V As Byte Dim A As Byte Dim K As Byte Dim I As Byte Dim Z As Byte Dim Potega As Word Dim Liczba As Word Dim Wynik As Word Dim L(9) As Byte Wynik = 0 V = 255 Set Portd.2 Lcd "PODAJ LICZBE: " Do If V <> 255 Then If V <> 13 Then Lcd "PODAJ LICZBE: " Locate 2, I L(i) = V Incr I Lcd V Else Potega = 1 I = I - 1 Z = I For A = 1 To I Liczba = Potega * L(z) Wynik = Wynik + Liczba Potega = 10 ^ A Z = I - A Next A Lcd "LICZBA TO: " ; Wynik If V = 14 Then Wynik = 0 Waitms 200 Loop End
Klawiatura: I2csend 112, 255 I2csend 114, 255 I2creceive 113, V I2creceive 115, K Case 254 : V = 0 Case 253 : V = 1 Case 251 : V = 2 Case 247 : V = 3 Case 239 : V = 4 Case 223 : V = 5 Case 191 : V = 6 Case 127 : V = 7 Select Case K Case 254 : V = 8 Case 253 : V = 9 Case 251 : V = 10 Case 247 : V = 11 Case 239 : V = 12 Case 223 : V = 13 Case 191 : V = 14 Case 127 : V = 15 Return Program_3 $regfile = "m32def.dat" 'informuje kompilator o pliku 'dyrektyw mikrokontrolera $crystal = 16000000 'informuje kompilator 'o częstotliwości oscylatora Config Sda = Portc.1 Config Scl = Portc.0 Deflcdchar 0, 4, 14, 21, 4, 4, 4, 4, 4 ' replace? with number (0-7) Deflcdchar 1, 4, 4, 4, 4, 4, 21, 14, 4 ' replace? with number (0-7) Deflcdchar 4, 32, 8, 12, 14, 15, 14, 12, 8 ' replace? with number (0-7) Config Int0 = Falling Config Lcdpin = Pin, Rs = Porta.2, E = Porta.3, Db4 = Porta.4, Db5 = Porta.5, Db6 = Porta.6, Db7 = Porta.7 Config Lcd = 16 * 2 'Pin podświetlenia LCD Config Porta.1 = Output Set Porta.1 On Int0 Klawiatura Enable Interrupts Enable Int0 Dim M1 As Bit, M2 As Bit, M3 As Bit Dim V As Byte Dim K As Byte Dim I As Byte Dim A As Byte A = 0 Portd.2 = 1 Declare Sub Menu1 Declare Sub Menu2 Declare Sub Menu3 Do If V <> 255 Then
Case 12 : Incr I If I = 4 Then Case 10 : Decr I If I = 0 Then I = 3 Case 15 : M1 = 1 Case 11 : M1 = 0 Select Case I Case 1 : If M1 = 0 Then Call Menu1 Case 2 : If M1 = 0 Then Call Menu2 Case 3 : If M1 = 0 Then Call Menu3 Waitms 150 Loop End Sub Menu1 Lcd Chr(4) Locate 1, 2 Lcd "USTAW CZAS Locate 2, 2 Lcd "USTAW DATE End Sub F" ; Chr(0) E" ; Chr(1) Sub Menu2 Locate 1, 2 Lcd "USTAW CZAS Lcd Chr(4) Locate 2, 2 Lcd "USTAW DATE End Sub F" ; Chr(0) E" ; Chr(1) Sub Menu3 Locate 1, 2 Lcd "USTAW DATE Lcd Chr(4) Locate 2, 2 F" ; Chr(0)
Lcd "USTAW ALARM E" ; Chr(1) End Sub Programowanie mikrokontrolerów - laboratorium Klawiatura: I2csend 112, 255 I2csend 114, 255 I2creceive 113, V I2creceive 115, K Case 254 : V = 0 Case 253 : V = 1 Case 251 : V = 2 Case 247 : V = 3 Case 239 : V = 4 Case 223 : V = 5 Case 191 : V = 6 Case 127 : V = 7 Select Case K Case 254 : V = 8 Case 253 : V = 9 Case 251 : V = 10 Case 247 : V = 11 Case 239 : V = 12 Case 223 : V = 13 Case 191 : V = 14 Case 127 : V = 15 Return