'Графический ЖКИ 240*128 с контроллером T6963C, модель
' изменить fuse для откл JTAG !!!
' шрифты хранятся в самом МК
'$prog &HFF , &HFF , &HD1 , &HF8 ' generated. Take care that the chip supports all fuse bytes.
$regfile = "m2561def.dat" ' specify the used micro
$crystal = 16000000 ' used crystal frequency
$hwstack = 128 ' hardware stack
$swstack = 128 ' SW stack
$framesize = 128 ' frame space
Config Portb = Output
Config Portf = Output
Config Portg = Output
Dim Podsvetka As Byte , Knopki_paneli As Byte , Temp As Byte
Status_gsm Alias Pinf.0 : Config Status_gsm = Input : Portf.0 = 0 ' Статус модема
' Сдвиговый регистр 74HC595 - Подсветка кнопок
Clc_595 Alias Portf.7 ' Тактовая регистра в регистр 595
Ld_595 Alias Portf.6 ' Загрузка данных в регистр 595
Dat_595 Alias Portf.5 ' Данные в регистр 595
Btn_dat165 Alias Pinf.4 : Config Portf.4 = Input ' Данные из регистра 165 (кнопки)
Pwm_audio Alias Portb.5 : Config Pwm_audio = Output ' Звук, ШИМ, подключен на УНЧ LM386
1wire_bus Alias Portf.3 ' 1wire
$baud = 9600 ' GSM
Print "!GSM"
Sound Pwm_audio , 150 , 400 ' пикнем. Длительность, период (чем больше - тем ниже частота)
' неиспользуемые сигналы назначены на несуществующие пины портов !
Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Rd = 0 , Wr = 1 , Cd = 7 , Ce = 2 , Reset = 2 , Fs = 2 , Mode = 8
Cls
Cursor Off
Locate 3 , 1 : Lcd "Autor Alexandr"
Knopka1 Alias 4
Knopka2 Alias 5
Knopka3 Alias 6
Knopka4 Alias 7
Knopka5 Alias 3
Knopka6 Alias 2
Knopka7 Alias 1
Knopka8 Alias 0
Sv1 Alias 0
Sv2 Alias 1
Sv3 Alias 2
Sv4 Alias 3
Sv5 Alias 4
Sv6 Alias 5
Sv7 Alias 6
Sv8 Alias 7
Sound Pwm_audio , 250 , 700 ' пикнем. Длительность, период (чем больше - тем ниже частота)
Podsvetka = 0 : Gosub Vkl_svdiody_opros_knopok : Waitms 100
Podsvetka.sv1 = 1 : Gosub Vkl_svdiody_opros_knopok : Waitms 100 : Podsvetka = 0
Podsvetka.sv2 = 1 : Gosub Vkl_svdiody_opros_knopok : Waitms 100 : Podsvetka = 0
Podsvetka.sv3 = 1 : Gosub Vkl_svdiody_opros_knopok : Waitms 100 : Podsvetka = 0
Podsvetka.sv4 = 1 : Gosub Vkl_svdiody_opros_knopok : Waitms 100 : Podsvetka = 0
Podsvetka.sv5 = 1 : Gosub Vkl_svdiody_opros_knopok : Waitms 100 : Podsvetka = 0
Podsvetka.sv6 = 1 : Gosub Vkl_svdiody_opros_knopok : Waitms 100 : Podsvetka = 0
Podsvetka.sv7 = 1 : Gosub Vkl_svdiody_opros_knopok : Waitms 100 : Podsvetka = 0
Podsvetka.sv8 = 1 : Gosub Vkl_svdiody_opros_knopok : Waitms 100 : Podsvetka = 0
'$baud1 = 19200 ' MDB
'Open "COM2:" For Binary As #2
Do
Podsvetka = 0
If Knopki_paneli.knopka1 = 0 Then
Podsvetka.sv1 = 1
Sound Pwm_audio , 110 , 510 ' пикнем. Длительность, период (чем больше - тем ниже частота)
End If
If Knopki_paneli.knopka2 = 0 Then Podsvetka.sv2 = 1
If Knopki_paneli.knopka3 = 0 Then Podsvetka.sv3 = 1
If Knopki_paneli.knopka4 = 0 Then Podsvetka.sv4 = 1
If Knopki_paneli.knopka5 = 0 Then Podsvetka.sv5 = 1
If Knopki_paneli.knopka6 = 0 Then Podsvetka.sv6 = 1
If Knopki_paneli.knopka7 = 0 Then Podsvetka.sv7 = 1
If Knopki_paneli.knopka8 = 0 Then
Podsvetka.sv8 = 1
Sound Pwm_audio , 70 , 850 ' пикнем. Длительность, период (чем больше - тем ниже частота)
End If
Gosub Vkl_svdiody_opros_knopok ' включим св.диоды подсветки кнопок, и опрос кнопок
Locate 2 , 1 : Lcd Bin(knopki_paneli)
Print "GSM"
'Print #2 , "MDB"
'Sound Pwm_audio , 30 , 150 ' пикнем. Длительность, период (чем больше - тем ниже частота)
Waitms 100
Loop
End
'=========================================================
Vkl_svdiody_opros_knopok: ' включим св.диоды подсветки кнопок, и опрос кнопок
' Вначале опрос кнопок из hc165, потом загрузка в hc595
Ld_595 = 0 ' Загрузка из параллельных входов в регистр
Clc_595 = 0
Waitus 10
Ld_595 = 1 ' Запоминаем в регистрах загруженное значение
Waitus 10
' Теперь в регистрах значения состояний кнопок
For Temp = 0 To 7 ' Загрузка из параллельных входов в регистр
Knopki_paneli.temp = Btn_dat165 ' Загружаем в переменную значение кнопок
Clc_595 = 1 ' Сдвигаем из регистров на выход
Waitus 20
Clc_595 = 0
Waitus 20
Next
Ld_595 = 0
Temp = 0 ' Если ноль - гасим все св.диоды на панели
If Podsvetka.sv1 = 1 Then Temp.0 = 1
If Podsvetka.sv2 = 1 Then Temp.1 = 1
If Podsvetka.sv3 = 1 Then Temp.2 = 1
If Podsvetka.sv4 = 1 Then Temp.3 = 1
If Podsvetka.sv5 = 1 Then Temp.4 = 1
If Podsvetka.sv6 = 1 Then Temp.5 = 1
If Podsvetka.sv7 = 1 Then Temp.6 = 1
If Podsvetka.sv8 = 1 Then Temp.7 = 1
Shiftout Dat_595 , Clc_595 , Temp , 1 , 8 , 20 ' загрузка в hc595
Ld_595 = 1 : Waitus 50 : Ld_595 = 0
Return