Вище йшлося про відображення результатів вимірювання напруги на індикаторі У конструкторі IE-ROBOPICA використовується рідкокристалічний індикатор Ось програма для виведення повідомлень на РКІ:

char *text1 = &quotHellow"

char * text2 = POBOPICA; / / Вибачте за опечатку

// Lcd pinout settings sbit LCD_RS at RD2_bit sbit LCD_EN at RD3_bit sbit LCD_D7 at RD7_bit sbit LCD_D6 at RD6_bit sbit LCD_D5 at RD5_bit sbit LCD_D4 at RD4_bit

// Pin direction

sbit LCD_RS_Direction at TRISD2_bit sbit LCD_EN_Direction at TRISD3_bit sbit LCD_D7_Direction at TRISD7_bit sbit LCD_D6_Direction at TRISD6_bit sbit LCD_D5_Direction at TRISD5_bit sbit LCD_D4_Direction at TRISD4_bit

void main() { Lcd_Init()

Lcd_Cmd(_LCD_CURSOR_OFF) while(1)

{

Lcd_Out(1,1,text1) Lcd_Out(2,1,text2) Delay_ms(5000) Lcd_Cmd(_LCD_CLEAR) Delay_ms(500)

}

}

Текст трохи відрізняється від того, що представлено в керівництві, але це повязано з зміною середовища розробки Текст, що виводиться на індикатор, це рядки символів рядок полягає в подвійні лапки Ось перевірка програми:

Рис 395 Перевірка програми в Proteus

Завантаживши програму в мікроконтролер макетної плати, я отримую той же результат А ось спроба написати текст кирилицею виявляється невдалою – не підтримує таблиця кодів РКІ кирилицю Але це й не настільки важливо

Бібліотечні функції використовує і середовище розробки Flowcode

Ці функції приховані в макросах компонентів Додаючи компонент LCDDisplay в проект, ви отримуєте доступ до бібліотеки функцій цього компонента Тепер, вставляючи макроси компонента в програму, ви можете використовувати всі доступні для цього компонента функції

Нижче наведена програма, що повторює, по суті, програму, написану мовою Сі

Можна перевірити, скомпілювавши програму, що вона працює точно так само, як і попередня Звичайно, якщо підключення висновків мікроконтролера вибрано таким же Для перевірки можна використовувати програму ISIS, що в попередньому випадку – досить вказати новий hex-файл

Рис 396 Програма виведення повідомлення в середовищі Flowcode

Вище ми говорили про читання напруги і виведенні значення на РКІ У керівництві є приклад такого читання напруги, а конструкторі навіть є потенціометр, який можна підключити до порту А, щоб проробити необхідні експерименти Є й програма:

/***********************************/

/ ** Відображає дані АЦП з RA3 на РКІ * /

/***********************************/ char data_[6]

int x

// Lcd pinout settings sbit LCD_RS at RD2_bit sbit LCD_EN at RD3_bit sbit LCD_D7 at RD7_bit sbit LCD_D6 at RD6_bit sbit LCD_D5 at RD5_bit sbit LCD_D4 at RD4_bit

// Pin direction

sbit LCD_RS_Direction at TRISD2_bit sbit LCD_EN_Direction at TRISD3_bit sbit LCD_D7_Direction at TRISD7_bit sbit LCD_D6_Direction at TRISD6_bit sbit LCD_D5_Direction at TRISD5_bit sbit LCD_D4_Direction at TRISD4_bit

void main()

{

Delay_ms(1000)

Lcd_Init()

ANSEL = 0xFF / / PORTA ==> PORTA ==> Аналоговий TRISA = 0xFF / / PORTA ==> PORTA ==> вхід

Lcd_Cmd (_LCD_CURSOR_OFF) / / Курсор РКІ вимкнений Lcd_Out (1,1, SENSOR1 =) / / Показати текст ADCON0 = 0b11001101 / / Вибір режиму: Analog1 RC_Mode і ADON while (1)

{ ADCON0GO=1

while(ADCON0GO)

x= (ADRESH*4)+(ADRESL/64)

WordToStr(x,data_) Lcd_Out(1,10,data_) Delay_ms(100)

}

}

Програму я скопіював з тексту керівництва в електронному вигляді Правка, як і вище, торкнулася додавання підключення РКІ та виправлення ініціалізації (не повинно бути параметрів), додавання підкреслення в команді: Lcd_Cmd (_LCD_CURSOR_OFF)

Параметри в новій бібліотеці MicroC PRO повинні, як я розумію, починатися з підкреслення

І ще один казус, який мені здається досить характерним: копіював текст я з керівництва, щоб вставити в програму MicroC PRO було швидше і зручніше І вийшло таке:

Рис 397 Повідомлення про помилки при компіляції програми

Чим же програма не догодила компілятору Звідки така навала помилок

Нехай вас не дивує обурення компілятора Він правий Лапки в рядку SENSOR1 = – це неправильні лапки Компілятор їх не знає, і знати не бажає Досить виправити їх: SENSOR1 =, – Щоб трансляція пройшла успішно

Це дуже хороший приклад того, що в програмуванні немає дрібниць, немає місця недбалості І що одна помилка, може бути, на самому початку тексту програми, призводить до того, що компілятор перестає розуміти інше

Але повернемося до досвіду читання аналогових даних з виведенням отриманого значення на екран РКІ

У програмі ISIS (Proteus) я виводив повідомлення Можна використовувати цю ж програму для перевірки, потрібно тільки поміняти hex-файл і додати потенціометр, підключивши його повзунок до входу RA3

Рис 398 Перевірка програми читання напруги

Змінюючи положення повзунка, можна прочитати всі значення від 0 до 1023 Звичайно, якщо ви захочете використовувати цю програму в якості програми вольтметра, вам слід подбати про те, щоб перетворити отримані значення (числа) в відповідні значення напруги Напруга має змінюватися від 0 до 5 вольт Це цікава і корисна задача

І, щоб не складалося враження, що я вигадую все (далеко не всі), що, умовляючи вас перевіряти все на макетної платі, сам цього не роблю .. Перевіряю:

Рис 399 Перевірка роботи програми на макеті

І ще – зверніть увагу на останню цифру Вона виглядає не цілком чіткою Фотоапарат вловив мить, коли ця цифра змінювала своє значення з 6 на 7 Це те, про що я говорив раніше, пропонуючи усереднювати кілька значень, коли їх зміни стають критичними В даному випадку це не настільки важливо, оскільки і при вимірюванні напруги мультиметром можна бачити, як змінюється напруга, але настільки незначно, що на це не звертаєш уваги

Ми проробили ряд експериментів, описаних в керівництві до конструктора IE-ROBOPICA Ці експерименти можна повторити і з самостійно зібраної макетної платою

Ми навчилися визначати події, що фіксуються мікроконтролером, і реагувати на них за допомогою звукового сигналу Попутно ми зясували, що нова версія середовища розробки MicroC PRO вимагає уважного з нею ознайомлення, оскільки синтаксис деяких функцій зазнав змін

Ми переконалися, що запропоновані програми можна створити і в інших середовищах розробки Але вбудовані в середовище розробки бібліотеки можуть відрізнятися набором своїх функцій Використовуючи власну макетну плату і іншу, ніж в конструкторі, середовище розробки, слід самостійно придумати досліди, які можна здійснити, використовуючи можливості конкретного середовища розробки

Ми могли переконатися, що компілятори мови Сі, що працюють з микроконтроллерами, орієнтовані на цю роботу Їх можна назвати і спеціалізованими компіляторами Але це більшою мірою, швидше, належить до бібліотек, чим, власне, до мови Сі З мовою Сі особливих змін не відбувається, використовуємо ми його для створення прикладних програм операційної системи або для створення програм для мікроконтролера

Нарешті, ми перевірили, що можемо прочитати напругу і вивести отримане значення на рідкокристалічний індикатор Подивимося, чи стане в нагоді це при створенні робота

Джерело: Гололобов ВН, – Самовчитель гри на паяльнику (Про електроніці для школярів і не тільки), – Москва 2012