| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > [C51] Задание верхей уставки для датчика DS18B20. |
| Автор: ChristopherRobin 21.5.2011, 10:11 |
| Здравствуйте. Очень прошу помочь разобраться в вопросе задания уставок для датчика DS18B20. В мануале написано, что для этого служат регистры TH и TL. Как я понял в них загружается значение температуры, с которым сравнивается измеренное значение. Если измеренная темп-ра выше верхней уставки, то устанавливается флаг аварии. Но вот как это реализовать программно в ассемблере ума не хватает. ------------------------ Собрана схема измерения на контроллере AT89C51. Мне нужно сделать, чтобы при превышении температуры в 50 градусов, на заданный порт контроллера приходил сигнал. К планируется подключить светодиод, показывающий аварийное состояние. Может кто-то делал уже что-то подобное, подскажите пожалста. |
| Автор: Mazzi 21.5.2011, 17:40 |
| Исходник и схему можно посмотреть? |
| Автор: UniBomb 21.5.2011, 20:09 |
Делал устройство, срабатывающее по двум температурным порогам. Но встроенную фичу температурной микросхеы не использовал и в программе сам контролировал температуру. Мне кажется это более гибкий способ, позволяющий меньшими силами изменять значения порогов. |
| Автор: ChristopherRobin 22.5.2011, 17:52 |
| Mazzi, Схему собирал отсюда - http://www.atomlink.ru/~courier/ds1307/ds1307.htm Тока контроллер поменял на AT89C51. В итоге получилось так http://radikal.ru/F/i058.radikal.ru/1001/4a/b078daa08b52.jpg.html UniBomb, а на чем писал? не на ассемблере? |
| Автор: UniBomb 24.5.2011, 09:40 | ||
| ChristopherRobin, да, писал на Си, и ещё, как оказалось, одно отличие - микросхема с которой я работал была с интерфейсом TWI. Но особой разницы нет. Итак, что имеем. вариант 1 - использовать решистры Tl и Th. В твоей программе определена функция "OUT_BYTE", которая передаёт "IO_BYTE" на шину 1-wire. Действуй согласно даташиту:
вариант 2 - использовать программные пороги. В программе есть процедура "GET_T", которая и занимается получением температуры. Результат можно прочитать либо из "TEMP_BYTE_1" в нормальном виде, либо из "TEMP_C" в двоично-десятичном представлении (преобразование сделано для удобства индикации). В ту же функцию ты можешь добавить любую свою проверку. |