unsigned char TEMP, i;
for(i=0; I < 8; i++)
{ DS1820 Wbit (TEMP&0x01); // запись младшего бита
TEMP>>=1; // сдвиг вправо на 1
}}
Чтение байта
unsigned DS1829 Rbyte (){
unsigned char TEMP, i;
TEMP=0;
for(i=0; i < ; i++)
{ TEMP>>=1;
if(DS1820 Rbit ()) // если прочитана 1,
TEMP|=0x80; // то в TEMP запишем 1 в старший разряд
else TEMP&=0x7F; // иначе в старший разряд запишем 0
}
return TEMP;}
Команды работы с ПЗУ
Передача команды чтения ПЗУ представляет собой 1 байт.
Контроль правильности кода. Алгоритм формирования контрольной суммы для проверки правильности кода.
8-разрядный сдвиговый регистр
XOR – исключающее «ИЛИ»
По приходу каждого бита происходит сдвиг байта в регистре. Приходящий бит записывается в D7, D3 и D2. Сдвиг в регистре осуществляется циклически 56 раз (7x8). Последний байт равен значению сдвигового регистра.
После обработки одной из команд функции ПЗУ термодатчик способен воспринимать еще несколько команд.
· Read Scratchpad 0xBE. Команда позволяет читать данные из промежуточных ОЗУ термодатчика. В ответ на эту команду датчик передает 8 байт информации.
· Convert T 0x44. Команда преобразования температуры в двоичный код.
· Write Scratchpad 0x4E. Команда записи трех байтов в ОЗУ DS1820.
3 байта: TH, TL, регистр конфигурации
ОЗУ датчика
Младший байт температуры |
Старший байт температуры |
TH – байт пользователя |
TL – байт пользователя |
Регистр конфигурации |
Резервный регистр |
Счетчик 1 |
Считчик 2 |
Контрольная сумма |
0
1
2
3 во FLASH-память
4
5
6
7
8
Количество разрядов в температуре определяется регистром конфигурации.
|
время преобразования
0 0 9 бит 93 мс
0 1 10 бит 187 мс
1 0 11 бит 375 мс
1 1 12 бит 750 мс
Время преобразования температуры зависит от разрядности.
Последовательность действий при измерении температуры
1. Посылаем импульс сброса и принимаем ответ термометра
2. Посылаем команду Skip ROM 0xCC
3. Посылаем команду Convert T 0x44
4. Формируем задержку 750 мс
5. Формируем импульс сброса
6. Skip ROM
7. Read Scratch 0xBE
8. Читаем данные из ОЗУ
Температурный датчик
main(){
int i, j;
unsigned char T;
for(j = 0; j < 100; j++) // 100 значений температуры
{
init(); // инициализация COM-порта
DS1820 Wbyte(0xCC); // пропустить чтение ПЗУ
DS1820 Wbyte(0x44); // запуск преобразования
for(i = 0; i < 100; i++)
t10m();
init DS1820(); // импульс сброса
DS1820 Wbyte(0xCC); // пропустить чтение ПЗУ
DS1820 Wbyte(0xBE); // чтение данных из термодатчика
T=DS1820 Rbyte(); // чтение данных ( 8 байт)
T=T>>3; // преобразование в десятичное число
T+=DS1820 Rbyte()<<5; // и вывод через COM-порт
T=T/2;
Wsio((T%10)+((T/10)<<4));}
while(1);}
4.3.10. ИнфракрасныйИнтерфейс IrDA.
Инфракрасный интерфейс IrDA
Это первый беспроводной интерфейс, наиболее простой и дешевый. Информация предоставляется в виде электромагнитных излучателей с длиной волны 950 нм. В качестве передатчиков излучения используются инфракрасные (ИК) светодиоды.
Структурная схема ИК канала
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.