Современная электроника №1/2022

ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 56 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 1 2022 #asm .equ __lcd_port=0x15 #endasm. Во второй строке кода директива ассемблера .equ присваивает иденти- фикатору __lcd_port значение, соответ- ствующее адресу регистра PORTС порта РС, которое при необходимости мож- но найти в строке sfrb PORTС=0x15 ; файла 90s8515.h. При трансляции ассемблерного кода, полученного при компиляции данного проекта компилятором С CodeVisionAVR, ассемблер вместо иден- тификаторов __scl_bit, __sda_bit, __lcd_ port подставит их значения. В случае модификации программы при исполь- зовании другого порта или битов для связи через шину I 2 C, а также другого порта для подключения LCD-дисплея, достаточно будет лишь заменить зна- чения в указанных директивах .equ, не изменяя остального текста программы. Директивами #include подключаются LCD-функции, функции температурно- го датчика LM75AD, микроконтролле- ра AT90S8515, ввода/вывода, задерж- ки. Перед компиляцией препроцессор компилятора вставит вместо этих строк текст соответствующих файлов. В строке char lcd_buffer[33] ; объявля- ется глобальный символьныймассив lcd_ buffer, состоящий из 33 элементов, для хранения предназначенной для вывода на LCD-дисплей информации. Массив будет расположенв SRAMмикроконтрол- лера. Все его элементы автоматически инициализируются со значением 0. Далее выполняется основная функ- ция программы void main(void), из которой осуществляется последова- тельный вызов: ● функции lcd_init(16) с параметром 16 (количество столбцов в LCD-модуле) для инициализации LCD-модуля, очистки дисплея и установки позиции для вывода символов в 0 ряд 0 столбца; ● функции i2c_init() для инициализа- ции шины I 2 C; ● функции lm75_init(0,20,25,1) с па- раметрами 0 (адрес датчика), 20 (нижний предел температуры), 25 (верхний предел температуры), 1 (ак- тивным уровнем OS является высо- кий), которая инициализирует дат- чик температуры с адресом 0; ● функции lm75_init(1,–20,22,1) с па- раметрами 1 (адрес датчика), –20 (нижний предел температуры), 22 (верхний предел температуры), 1 (ак- тивным уровнем OS является высо- кий), которая инициализирует дат- чик температуры с адресом 1; ● функции lm75_init(7,–20,22,1) с па- раметрами 7 (адрес датчика), –20 (нижний предел температуры), 22 (верхний предел температуры), 1 (ак- тивным уровнем OS является высо- кий), которая инициализирует дат- чик температуры с адресом 7. Послеэтогопрограммапереходитвбес- конечныйциклотображенияизмеренной Рис. 13. Результат работы схемы измерения температуры с помощью датчиков LM75AD Рис. 15. Открытие окна AVR Variables Рис. 14. Приближённый вид LCD-дисплея, на котором отображается температура, измеренная датчиком №: (а) 0, (б) 1, (в) 7 а б в

RkJQdWJsaXNoZXIy MTQ4NjUy