МІНІСТЕРСТВО НАУКИ ТА ОСВІТИ УКРАЇНИ
ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ
РАДІОЕЛЕКТРОНІКИ
Звіт з лабораторної роботи №2
по предмету «Програмування Embedded System»
за темою:”ДОСЛІДЖЕННЯ АРХІТЕКТУРИ ARDUINO UNО 3 ДЛЯ УПРАВЛІННЯ LCD WH1602 НА ОСНОВІ МІКРОКОНТРОЛЕРА - HD44780 І ТЕМПЕРАТУРНИМ ДАТЧИКОМ ТМР36”
Харків
Мета роботи: Дослідження архітектури ARDUINO UNО 3. Створення проекту в середовищі моделювання AUTODESK TINKERCAD на основі MCU ATmega 328P, з метою управління LCD-дисплеєм - WH1602 на основі мікроконтролера - HD44780 і температурним датчиком ТМР36.
Хід роботи.
Для виконання роботи я використовувала:
1) ARDUINO UNО 3.
2) Датчик температури TMP36 .
Для перетворення напруги в температуру використовується залежність:
де Темр - розрахована температура в приміщенні;
Vout in mV - вихідна напруга в мілівольтах.
3)LCD WH1602 - дисплей на основі мікроконтролера - HD44780.
Підключення LCD-дисплея відбувається наступним чином.
- GND - земля (іноді пишуть Vss);
- Vcc - напруга живлення +5 В (іноді пишуть Vdd);
- Vo - напруга контрастності від 0В до + 5В, даний вихід треба підключити до потенціометра, для регулювання;
- RS – вихід, за допомогою якого дисплей визначає, що в нього надходить: дані або команди;
- RW - вихід за допомогою якого, дисплей визначає передавати або отримувати дані;
- E - лінія синхронізації;
- D0 - D7 – шина команд/даних
- LED (+) - через резистор, що обмежує - 300Ом;
- LED (-) - виходи для живлення підсвічування.
Дисплей може працювати в 2-ох режимах:
- режим № 1 - 8-и розрядний (тобто коли, для обміну інформацією використовуються контакти від D0 до D7), дані пересилаються за один такт;
- режим № 2 - 4-х розрядний (для обміну використовуються тільки контакти D4 - D7), в цьому випадку дані пересилаються за 2 такту, спочатку старші 4 біти, потім молодші 4 біти.
4) Мультиметр - 2шт
5) Потенціометр - 2шт.
6) Резістори - 1 шт.
В програмі Autodesk Tinkercad я створила проект для управління LCD-дисплеєм - WH1602 на основі мікроконтролера - HD44780 і температурним датчиком ТМР36.
При зміні вхідної напруги змінюється температура
Коли напруга зростає, то температура знижується
Програма написана мовою C++, з використанням бібліотеки
LiquidCrystal().
#include <LiquidCrystal.h> // Подключение библиотеки
//#include <LiquidCrystal_PCF8574.h> // Подключение альтернативной библиотеки
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte p20[8]=
{
B10000,
B10000,
B10000,
B10000,
B10000,
B10000,
B10000,
};
byte p40[8]=
{
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
};
byte p60[8]=
{
B11100,
B11100,
B11100,
B11100,
B11100,
B11100,
B11100,
};
byte p80[8]=
{
B11110,
B11110,
B11110,
B11110,
B11110,
B11110,
B11110,
};
byte p100[8]=
{
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
};
byte avtor[8]=
{
B00010,
B00001,
B11001,
B00001,
B11001,
B00001,
B00010,
};
void setup() {
// вводим номера строк и колонок
lcd.begin(16, 2);
lcd.createChar(1, p20);
lcd.createChar(2, p40);
lcd.createChar(3, p60);
lcd.createChar(4, p80);
lcd.createChar(5, p100);
lcd.createChar(6, avtor);
}
void loop() {
// ставим курсор на колонку 0, линия 1
// (note: линия 1 секундный ряд, счёт начинается с нуля 0):
lcd.setCursor(0,0);
//очищаем экран
clearScreen();
//ставим курсор на колонку 4, линия 0
lcd.setCursor(4,0);
lcd.print("SPzm20-01");
lcd.setCursor(0,1);
lcd.print("[ім’я автора приховано]");
delay(1200);
clearScreen();
lcd.setCursor(7,0);
lcd.print("\1");
lcd.print("\2");
lcd.print("\3");
lcd.print("\4");
lcd.print("\5");
lcd.print("\6");
lcd.setCursor(0,1);
for(int i = 0; i<16; i++){
lcd.print("\6");
lcd.setCursor(i,1);
delay(100);
lcd.print(" ");
}
clearScreen();
delay(1000);
printTemperature();
delay(1000);
clearScreen();
}
void clearScreen(){
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
}
void printTemperature(){
lcd.setCursor(0,1);
int voltage = analogRead(0);
float temperature = (voltage - 500)/10;
String s = " tem.C=";
lcd.print(s);
lcd.print(temperature);
}
Висновок
Виконав[ім’я автора приховано]еєм - WH1602 на основі мікроконтролера - HD44780 і температурним датчиком ТМР36.