Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Неправильный вывод на LCD!
Неправильный вывод на LCD!
Broka Дата: Пт, 01.07.2011, 22:15  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 253
Репутация: 9   ±
Замечания:   ±
На сайте с 30.09.2009

Статус: Offline

Решил попробовать сделать терморегулятор, взял примеры , написал программу! В протеусе работает..
Только вот не пойму, при включении (симуляции) при выводе максимальной и минимальной температуры.
Минимальная температура показывает правильно, а вот максимальная считывается из EEPROM не правильно, - 33*С, в чём дело то? Хотя в EEPROM записываю те значения которые мне нужны. Странно..........

'-------------------------- Опции компилятора --------------------------------

Declare SHOW_SYSTEM_VARIABLES = OFF ' При симуляции в Proteus не показывать внутренние переменные
Declare FSR_CONTEXT_SAVE = OFF ' Не заботиться о сохранении содержимого регистра FSR
Declare Reminders = OFF ' Выключить напоминания компилятора
Declare Warnings = OFF ' Выключить предупреждения компилятора
Declare Optimiser_Level 1 ' Включить оптимизацию программы

;-------------------------- Общие настройки------------------------------------

Device = 16F628A ' Используемый микроконтроллер
Xtal = 4 ' Частота осциллятора 4 МГц

'-------------------------- Конфигурация программирования --------------------

Config BODEN_OFF, BOREN_OFF, CP_OFF, DATA_CP_OFF, PWRTE_ON, WDT_OFF, LVP_OFF, MCLRE_ON, XT_OSC

'-------------------------- Настройки подключения ЖКИ ------------------------
TRISA = %11111111
TRISB = %00000000
PORTB.1 = 0
Declare LCD_Type ALPHA ' Тип ЖКИ - буквенно -цифровой
Declare LCD_DTPin PORTB.4 ' Порт данных ЖКИ
Declare LCD_ENPin PORTB.3 ' Управление линией E
Declare LCD_RSPin PORTB.2 ' Управление линией RS
Declare LCD_Interface 4 ' Разрядность шины данных
Declare LCD_CommandUs 2000 ' Задержка перед посылкой команды
Declare LCD_DataUs 50 ' Задержка перед посылкой данных
Declare LCD_Lines 2 ' Количество строк ЖКИ

'-------------------------- Настройки портов ---------------------------------

PortB_Pullups = OFF ' Выключить подтягивающие резисторы на PORTB
Declare All_Digital = On ' Установить все порты цифровыми входами/выходами

'-------------------------- Определение переменных и символов------------------
Symbol Mode = PORTA.0
Symbol Plus = PORTA.1
Symbol Minus = PORTA.2
Symbol Zapis = PORTA.3
Symbol DQ = PORTA.4
Dim H As Float
Dim L As Float
'Dim R As Byte
Dim R_Temp As Word ' Переменная для получения значения температуры
' отдельными двумя байтами
Dim Temp As Float ' Переменная для преобразования значения
' температуры в данные с плавающей запятой
Dim TempIND As Float ' Переменная для вывода на индикацию значени
' температуры
Dim C As Bit ' Переменная для хранения бита сигнализации
' окончания преобразования
H = 38
L = 37.50
DelayMS 50
EWrite 2,[H]
EWrite 3,[L]
DelayMS 50
'-------------------------- Начало -------------------------------------------
H = ERead 2
L = ERead 3
Print At 1 ,1,$A9,$43,$54,$20,$4D,$41,$4B,$43,$20,$3D,$20,Dec1 H (Вот здесь показывает неправильное значение )
Print At 2 ,1,$A9,$43,$54,$20,$4D,$A5,$48,$20,$3D,$20,$20,Dec1 L
DelayMS 3000
Cls
Ну ,а дальше пошла сама программа терморегулятора.
Может неправильно указал переменные H и L? Но они и должны быть Float, а то как я сделаю например 37.2?


Наладчик КИП и А
Сообщение отредактировал Broka - Пт, 01.07.2011, 22:30
ЯНДЕКС Дата: 01.07.2011
ivan_fd Дата: Пт, 01.07.2011, 22:43  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Ну так если Вы пишите в еепром переменную типа Float, то H пишите с адреса 2, а L нужно писать с адреса 6.
Потому что тип float занимает в памяти 4 байта.
Broka Дата: Сб, 02.07.2011, 18:05  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 253
Репутация: 9   ±
Замечания:   ±
На сайте с 30.09.2009

Статус: Offline

ivan_fd,
Спасибо большое, точно, так оно и есть! Старость не радость , совсем забыл.........


Наладчик КИП и А
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Неправильный вывод на LCD!
  • Страница 1 из 1
  • 1
Поиск: