Курсовая работа: Система вимірника струмів
lcd_gotoxy(5,1); // Встановлення адреси знакомісця на 5 позицію у другій строці
lcd_putchar(a1 + 0x30); // Вивід першої значущої цифри результату із зміщенням
lcd_gotoxy(6,1); // Встановлення адреси знакомісця на 6 позицію у другій строці
lcd_putchar(0x2C); // Вивід символу коми
lcd_gotoxy(7,1); // Встановлення адреси знакомісця на 7 позицію у другій строці
lcd_putchar(a2 + 0x30); // Вивід другої значущої цифри результату із зміщенням
lcd_gotoxy(8,1); // Встановлення адреси знакомісця на 8 позицію у другій строці
lcd_putchar(a3 + 0x30); // Вивід третьої значущої цифри результату із зміщенням
3.5 Проектування процедури перетворення інформації
Для виводу інформації на дисплей її необхідно обробити. АЦП має 10 розрядів, тобто він може перетворювати вимірювану величину з кроком 1/1023*Uref. Для простоти перетворень задамось, що максимальне значення нашої змінної яка буде зберігати значення після перетворення буде дорівнювати 2048. Таким чином ми отримуємо формулу для перетворення:
Current = 2 * ADC
Current = ((long)2 * (long)A;
Максимальне значення АЦП – 1023 буде відповідати значенню 2048 нашої змінної.
Тепер нам необхідно перекодувати значення змінної Current до BCD формату. Це можна реалізувати за допомогою функцій:
a1 = a/1000;
a2 = (a - (a1 * 1000))/100;
a3 = (a - (a1 * 1000) - (a2 * 100))/10;
a4 = (a -(a1 * 1000) - (a2 * 100) - (a3 * 10));
де а – вхідна змінна типу int;
а1 – тисячі;
а2 – сотні;
а3 – десятки;
а4 – залишок;
3.6 Проектування процедури main()
Процедура main() повинна складатися з процедур ініціалізації, основного тіла програми та незкінченного циклу. Після ініціалізації всіх вузлів дозволяються усі переривання і ми очікуємо переривання від АЦП, при приході переривання ми аналізуємо флаг ADCFlag , і якщо він дорівнює 1, то ми переходимо до тіла основної програми. Зчитуємо значення АЦП, перетворюємо його, виводимо текстове повідомлення на РКІ. Далі ми аналізуємо чи змінилось значення АЦП, і якщо так, то забороняємо переривання, викликаємо процедури перетворення та відображення результату, відновлюємо дозвіл на переривання.
void main(void)
{
init_mega();
lcd_init(16);