Простой термометр на LCD (DS18B20)
|
|
Upgrader | Дата: Пятница, 06.11.2009, 19:40 | Сообщение # 1 |
 Рядовой
Группа: Пользователи
Сообщений: 19
Статус: Offline
| Объясните пожалуйста кто-нибудь эту строчку из программы: sprintf(lcd_buffer,"t=%i.%u\xdfC",temp,temp%1); Но это не так важно, с этим еще не сложно разобраться. А вот что не могу понять вообще: #asm //сообщаем куда подключен датчик .equ __w1_port=0x15; PORTC .equ __w1_bit=3 0x15 - что это за адрес? И как узнать куда что подключено? И назначение w1_bit=3 тоже не очень понятно. Аналогично вопросы возникают и тут: #asm //сообщаем куда подключён экран .equ __lcd_port=0x18 Спасибо.
Сообщение отредактировал Upgrader - Суббота, 07.11.2009, 00:00 |
|
| |
vit701- | Дата: Воскресенье, 08.11.2009, 23:12 | Сообщение # 2 |
 Рядовой
Группа: Пользователи
Сообщений: 11
Статус: Offline
| Quote (Upgrader) А вот что не могу понять вообще: #asm //сообщаем куда подключен датчик .equ __w1_port=0x15; PORTC .equ __w1_bit=3 Означает, что устройство 1wire подключено к 3 ножке порта C( 26-ая ножка мк ). Quote (Upgrader) налогично вопросы возникают и тут: #asm //сообщаем куда подключён экран .equ __lcd_port=0x18 Означает, что дисплей подключен к порту B. Посмотрев внимательно схему, этих вопросов мог бы избежать.
|
|
| |
Upgrader | Дата: Воскресенье, 08.11.2009, 23:20 | Сообщение # 3 |
 Рядовой
Группа: Пользователи
Сообщений: 19
Статус: Offline
| Немного не так спросил... Да, по схеме это конечно понятно. Не понял как узнать какой адрес относится к какому порту. 0x15, 0x18 и т.п. Они должны быть описаны в даташите или это каким-то образом можно определить самому? На асме в двоичном коде более понятно, а тут - не понял.
Сообщение отредактировал Upgrader - Воскресенье, 08.11.2009, 23:22 |
|
| |
vit701- | Дата: Воскресенье, 08.11.2009, 23:26 | Сообщение # 4 |
 Рядовой
Группа: Пользователи
Сообщений: 11
Статус: Offline
| Quote (Upgrader) Немного не так спросил... Да, по схеме это конечно понятно. Не понял как узнать какой адрес относится к какому порту. 0x15, 0x18 и т.п. Они должны быть описаны в даташите или это каким-то образом можно определить самому? CodeVisionAvr создаешь проект через CodeWizardAVR, там думаю разберешься. Выбираешь например 1wire, там будет выбор на какой порт и пин зацепить. После того как все настроишь file->Generate, Save and Exit. И эти адреса ты увидишь в исходном коде. =)
|
|
| |
Upgrader | Дата: Воскресенье, 08.11.2009, 23:32 | Сообщение # 5 |
 Рядовой
Группа: Пользователи
Сообщений: 19
Статус: Offline
| Понятно. Но все-таки, как их узнать не используя мастер CodeWizardAVR? :-)
|
|
| |
vit701- | Дата: Воскресенье, 08.11.2009, 23:39 | Сообщение # 6 |
 Рядовой
Группа: Пользователи
Сообщений: 11
Статус: Offline
| Я как-то не задумывался по этому вопросу. Как вариант запомнить, у 8 меги не много портов Ж) Добавлено (08.11.2009, 23:39) --------------------------------------------- Кстати в этой схеме lcd дисплей) В Новосибирске зимой его использовать не вариант))) Я сделал пока-что для RS232. Потом на 7 сегментный индикатор хочу переделать.
Сообщение отредактировал vit701- - Воскресенье, 08.11.2009, 23:40 |
|
| |
Vladimir-19 | Дата: Четверг, 07.01.2010, 15:47 | Сообщение # 7 |
 Рядовой
Группа: Пользователи
Сообщений: 3
Статус: Offline
| Quote (Upgrader) Понятно. Но все-таки, как их узнать не используя мастер CodeWizardAVR? :-) Если трудно заморачиватся с HEX-калькулятором то можно записывать в формате DDRB = 0b11111111; //(0xFF) DDRB = 0b10101010; //(0xAA) А вообще для дальнейшего программирования (не только МК) нужно научится переводить HEX-BIN-HEX в уме
|
|
| |
HiSER | Дата: Вторник, 19.01.2010, 13:42 | Сообщение # 8 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| HEX-BIN-HEX легко переводятся по 4-е бита ))) число от 0-15, 0-F, 0000-1111 ))))
|
|
| |
aleksyt | Дата: Вторник, 09.02.2010, 16:55 | Сообщение # 9 |
Рядовой
Группа: Пользователи
Сообщений: 14
Статус: Offline
| В книге по CVAVR где-то было написано, что данные о номерах портов для LCD и DS18b20 находятся в соотве. файлах с расширением h. Но я бегло просмотрел и не нашел. Добавлено (09.02.2010, 16:55) --------------------------------------------- Нашел где найти адрес порта, на находится в файле MEGA8.H, т.е. в файле соотв. МК.h
|
|
| |
HiSER | Дата: Пятница, 12.02.2010, 09:00 | Сообщение # 10 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| для lcd в главном файле Code #asm .equ __lcd_port=0x15 ;PORTC #endasm #include <lcd.h> и в lib\lcd.lib Code #asm .equ __lcd_direction=__lcd_port-1 .equ __lcd_pin=__lcd_port-2 .equ __lcd_rs=0 .equ __lcd_rd=1 .equ __lcd_enable=2 .equ __lcd_busy_flag=7 #endasm для ds18xx в главном файле Code #asm .equ __w1_port=0x18 .equ __w1_bit=3 #endasm #include <1wire.h>
|
|
| |
YaroslavSh | Дата: Понедельник, 13.12.2010, 22:21 | Сообщение # 11 |
Рядовой
Группа: Пользователи
Сообщений: 14
Статус: Offline
| А как из этого термометра, сделать терморегулятор с фазоимпульсным или числоимпульсным регулированием. Добавлено (13.12.2010, 22:21) --------------------------------------------- Напишите, пожалуйста, хоть кто-то, алгоритм работы выше упомянутого регулятора. Может быть у меня получится написать программу для этого прибора.
|
|
| |
HiSER | Дата: Вторник, 14.12.2010, 14:10 | Сообщение # 12 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| Что будет подключено к устройству для регулирования?
|
|
| |
YaroslavSh | Дата: Вторник, 14.12.2010, 14:36 | Сообщение # 13 |
Рядовой
Группа: Пользователи
Сообщений: 14
Статус: Offline
| Через оптосимистор, будут подключены ТЭНы.
|
|
| |
HiSER | Дата: Четверг, 16.12.2010, 10:58 | Сообщение # 14 |
 Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| Не вижу смысла в регулировании напряжения на тэнах, лучше их включать и выключать когда это нужно.
|
|
| |
YaroslavSh | Дата: Четверг, 16.12.2010, 12:21 | Сообщение # 15 |
Рядовой
Группа: Пользователи
Сообщений: 14
Статус: Offline
| Уважаемый, HiSER. Вы пишете: Quote Не вижу смысла в регулировании напряжения на тэнах, лучше их включать и выключать когда это нужно. А я вижу. Так вы опишите алгоритм?
|
|
| |