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

ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 57 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 1 2022 температуры while (1). При этом пооче- редночерез каждые2000мс считывается и выводится на экран дисплея значение температуры, измеренноекаждымдатчи- ком (рис. 14а…14в). Дойдя до последне- годатчика, измерение снованачинается с первого и т.д. Адреса датчиков хранят- ся в массиве int i[3]={0,1,7} . Для дат- чика с адресом 0 с помощью функции lm75_temperature_10(0) будет выпол- няться измерение температуры, запись полученногозначенияидополнительно- го текста в массив lcd_buffer с помощью функции sprintf(lcd_buffer,"t=%c%i.%u C", sign,temp/10,temp%10) и вывод содержимогомассиванаэкрандисплеяс помощьюфункции lcd_puts(lcd_buffer) . Этижедействиябудутвыполненыдлядат- чиков с адресом1и7. Вызовфункцииmainпроисходитпосле подачипитанияилиаппаратногосброса навыводеRESETмикроконтроллера. Затем последовательно выполняются функ- ции инициализации дисплея (lcd_init), шиныI 2 C(i2c_init)идатчикатемпературы LM75AD(lm75_init). Послеэтогопрограм- мапереходитквыполнениюбесконечно- гоцикла, вкоторомзначение температуры считывается с датчика с помощьюфунк- ции lm75_temperature_10. Далее выпол- няется запись полученной информа- ции и дополнительного текста в массив lcd_buffer с помощью функции sprintf и его отображение с помощью функции lcd_puts на экране дисплея, предвари- тельноочищенногоспомощьюфункции Рис. 16. Проверка значений массива lcd_buffer после отображения на экране дисплея измеренной датчиками LM75AD температуры: (а) +21 °C, (б) –14 °C, (в) –6 °C Рис. 17. Временны ′ е диаграммы сигналов SCL и SDA после передачи по интерфейсу I 2 C температуры, измеренной датчиком №: (а) 0, (б) 1, (в) 7 lcd_clear. Рядомсозначениемотрицатель- нойтемпературывыводится знак «–», если температуравышенуля, тознак «+». После этого происходит задержка в 2000 мс, и цикл повторяется. Приостановиммоделирование кноп- кой Pause the simulation, or start up at time 0 if stopped и проверим значения элементов массива lcd_buffer. Для чего, используя команду основного меню Debug/AVR/Variables, откроемокно AVR Variables (рис. 15) ищелчкомлевой кноп- кимышипо значку «+» раскроем список lcd_buffer. Как виднона рис. 16а, в ячейки 0…8массива lcd_buffer записанысимво- лы, которые совпадают с отображённы- ми на экране дисплея «t=+21.0 C»: l cd_buffer[0] 't' lcd_buffer[1] '=' lcd_buffer[2] '+' lcd_buffer[3] '2' lcd_buffer[4] '1' lcd_buffer[5] '.' lcd_buffer[6] '0' lcd_buffer[7] ' ' lcd_buffer[8] 'C' . После получения нового значения температуры, измеренной очередным датчиком, изменится значение сим- волов в третьей и четвёртой ячейках массива lcd_buffer в окне AVR Variables (рис. 16б), а если температура ниже нуля, то и символ во второй ячейке массива. Если двузначное значение температуры сменится однозначным (рис. 16в), то символы, записанные в 5…8 ячейках, сдвинутся на место ячеек 4…7, т.е. на одну позицию влево в мас- сиве. На рис. 17а…17в показаны временны ′ е диаграммы сигналов SCL и SDA интер- фейса I 2 C, полученные с помощью вир- туального осциллографа. Отображение диаграмм на лицевой панели Digital Oscilloscope отрегулируем с помощью ручек управления. Установим в окнах Channel A, Channel B маленькую ручку в позицию 3 mV, большую ручку в пози- цию 2 V. Установим маленькую ручку в позицию 5 μs, а большую ручку в пози- цию 50 μs в окне Horizontal. Установим режим работы осциллографа: DC. Жёл- тая диаграмма соответствует сигналу синхронизации SCL, который посту- пает на вход А осциллографа. Голубая диаграмма получена с входа В осцил- лографа и отображает данные, которые передаются через линию SDA. Литература 1. ISIS Help, Labcenter Electronics, 2014. 2. CodeVisionAVR Help, HP InfoTech, 2014. 3. HD44780U(LCD-II)(DotMatrixLiquidCrystal DisplayController/Driver). Hitachi, Ltd. 1998. 4. Евстифеев А.В. Микроконтроллеры AVR семействаMega. Руководство пользователя. М.: Издательский дом «Додэка-XXI», 2007. 5. Proteus VSM Help, Labcenter Electronics, 2020. 6. Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих. М.: Издатель- ство МГТУ им. Н.Э. Баумана, 2007. а а б б в в

RkJQdWJsaXNoZXIy MTQ4NjUy