Написання програми для мікроконтролеру

Основи програмування мікроконтролерів. Розробка алгоритму переведення числа з однієї системи до іншої. Розгляд механізму зчитування і передачі даних через порти мікроконтролеру. Реалізація дешифратора десятинного числа в код семисегментного індикатору.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 23.04.2014
Размер файла 330,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Зміст

Вступ

1. Розробка програмної схеми

2. Розробка програмного забезпечення

Висновки

Вступ

Поставлена задача: необхідно реалізувати програму для мікроконтролеру, яка приймає число у двійковому виді на певний порт, переводить це число у шістнадцятирічну систему, вивести результат на 2 семисегментні індикатори, та передати результат в COM-порт. Для цього завдання було використано мікроконтролер фірми ATMEL. Розробку ПЗ легше виконати на мові програмування С.

Тема - написання програми для реалізації поставленої задачі.

Мета - закріпити навички і знання з роботою з мікроконтролерами.

Кінцевий продукт: реалізована схема з прошитим мікроконтролером. Під прошивкою розуміють скомпільована програма з розширенням .hex.

1. Розробка програмної схеми

Для реалізації поставленої задачі спочатку необхідно продумати яким чином буде задане і передане двійкове число. З огляду на те, що дані з мікроконтролеру будуть зчитуватися з одного порту, то число буде мати не більше 8 розрядів(так як кожен порт налічує не більше 8 пінів, а це пов'язано з тим, що більшість регістрів у ОМК 8-бітні), отже для передачі такого числа було використано 8 перемикачів, які під'єднанні до джерела постійного живлення(5 В, 5 оскільки для ОМК дана напруга символізує логічну 1) (рис. 1.2), і отже коли один з перемикачів замкнути, то на вхід мікроконтролеру поступить логічна 1, а це буде відповідний розряд двійкового числа.

В схемі представлений мікроконтролер фірми ATMEL 90s8535 (рис. 1.3).

Окрім цього, для того щоб показати конвертовані дані на схемі присутні два семи сегментні індикатори, один для молодшого розряду, один для старшого. Результат виводиться у десятинному вигляду, а тому максимальне значення, яке можна відобразити - 99 (рис. 1.4). Отже створена схема зображена на рис. 1.1.

Рис. 1. Реалізація схеми

Рис. 1.2. Перемикачі(8 розрядів)

Рис. 1.3. Мікроконтролер 90s8535

Рис. 1.4. Семи сегментні індикатори в схемі.

2. Розробка програмного забезпечення

Для програмування було обрано мікроконтролер ATMEL 90s83535, за своїми характеристиками він повністю відповідає можливості реалізації поставленої задачі. Для реалізації програми було обрано мову С, і середу розробки CodeVision.

Алгоритм програми:

1. Зчитати дані з відповідного порту мікроконтролеру (отримуємо двійкове число).

2. Зберігаємо це число у відповідному регістрі.

3. Викликаємо функцію, яка конвертує двійкове число у десяткове(це необхідно для виводу інформації на семи сегментні індикатори).

4. Викликаємо дешифратор, який перетворює десяткове число у код семи сегментного індикатора(так як у нас 2 індикатори, один з яких інформує про молодший розряд, один про старший, і кожен з індикаторів під'єднаний до окремого порту то):

4.1. Розбиваємо отримане десяткове число по розрядам

4.2. Передаємо молодший розряд на перший індикатор

4.3. Передаємо старший розряд на другий індикатор

5. Переводимо десяткове число у шістнадцяткове.

6. Налагоджуємо UART мікроконтролеру на передачу даних.

7. Прописуємо швидкість передачі даних.

8. Дозволяємо глобальні переривання, прописуємо в регістр UCR.

9. Оброблюємо переривання "Регістр даних порожній", записуємо у регістр UDR шістнадцядкове число, одразу після цього відбувається передача даних на COM порт.

Алгоритм дешифратора для семи сегментного індикатору:

1. Отримуємо вхідну цифру(від 0 до 9, оскільки індикатор не в змозі відобразити більше значення).

2. Аналізуємо, яку отримали цифру.

3. Якщо отримали 0, то на індикатор посилаємо комбінацію 00111111.

4. Якщо отримали 1, то на індикатор посилаємо комбінацію 00000110.

5. Якщо отримали 2, то на індикатор посилаємо комбінацію 01011011.

6. Якщо отримали 3, то на індикатор посилаємо комбінацію 01001111.

7. Якщо отримали 4, то на індикатор посилаємо комбінацію 01100110.

8. Якщо отримали 5, то на індикатор посилаємо комбінацію 01101101.

9. Якщо отримали 6, то на індикатор посилаємо комбінацію01111101.

10. Якщо отримали 7, то на індикатор посилаємо комбінацію 00000111.

11. Якщо отримали 8, то на індикатор посилаємо комбінацію 01111111.

12. Якщо отримали 9, то на індикатор посилаємо комбінацію 01101111.

Алгоритм відправки даних на COM-порт.

1. Для передачі даних необхідно налаштувати UART. В регістр UBRR прописуємо швидкість передачі даних.

2. В регістр UCR прописуємо маску, де дозволяємо переривання, а також дозволяємо передачу даних.

3. Прописуємо переривання, згідно вектору переривання : "Регістр даних порожній"

4. В перериванні в регістр UDR записуємо число, яке необхідно передати.

Блок схема зображена на рис.2.1.

Рис. 2.1. Блок схема програми

Код програми, реалізований на мові програмування С, відлагоджений у CodeVision (рис.2.2).

мікроконтролер число порт дешифратор

#include<90s8535.h>

#include<delay.h>

#include<stdlib.h>

#include<stdio.h>

unsignedint hex=0x00;

interrupt[13] voidDataRegisterInt(void)

{

UDR=hex;

}

unsignedintret_literal(unsigned intnum)

{

unsignedint res=0x00;

if(num<10)res=num;

if(num==10)res=0xA;

if(num==11)res=0xB;

if(num==12)res=0xC;

if(num==13)res=0xD;

if(num==14)res=0xE;

if(num==15)res=0xF;

returnres;

}

unsignedintret_hex(unsignedintpin)

{

unsignedint res=0;

if(pin==1)//если передана 1, то читаемпервые 4 пина

{

res+=PINB.0*1;

res+=PINB.1*2;

res+=PINB.2*4;

res+=PINB.3*8;

}

if(pin==2)//если передана 2, то читаемвторые 4 пина

{

res+=PINB.4*1;

res+=PINB.5*2;

res+=PINB.6*4;

res+=PINB.7*8;

}

returnres;

}

unsignedintret_dec()

{

unsignedint res=0;

res+=PINB.0*1;

res+=PINB.1*2;

res+=PINB.2*4;

res+=PINB.3*8;

res+=PINB.4*16;

res+=PINB.5*32;

res+=PINB.6*64;

res+=PINB.7*128;

returnres;

}

void Indicator1(unsignedintnum)

{

if(num==0x00)

{

PORTA=0b00111111;

}

if(num==0x01)

{

PORTA=0b00000110;

}

if(num==0x02)

{

PORTA=0b01011011;

}

if(num==0x03)

{

PORTA=0b01001111;

}

if(num==0x04)

{

PORTA=0b01100110;

}

if(num==0x05)

{

PORTA=0b01101101;

}

if(num==0x06)

{

PORTA=0b01111101;

}

if(num==0x07)

{

PORTA=0b00000111;

}

if(num==0x08)

{

PORTA=0b01111111;

}

if(num==0x09)

{

PORTA=0b01101111;

}

}

void Indicator2(unsignedintnum)

{

if(num==0)

{

PORTC=0b00111111;

}

if(num==1)

{

PORTC=0b00000110;

}

if(num==2)

{

PORTC=0b01011011;

}

if(num==3)

{

PORTC=0b01001111;

}

if(num==4)

{

PORTC=0b01100110;

}

if(num==5)

{

PORTC=0b01101101;

}

if(num==6)

{

PORTC=0b01111101;

}

if(num==7)

{

PORTC=0b00000111;

}

if(num==8)

{

PORTC=0b01111111;

}

if(num==9)

{

PORTC=0b01101111;

}

}

voidmain(void)

{

unsignedintdec;

unsignedint res=0;

unsignedint hex1, hex2;

charbuf[10];

DDRB=0xFF;

DDRA=0xFF;

DDRC=0xFF;

UBRR=100;

UCR=0b11101000;

#asm ("sei")

while(1)

{

res=ret_hex(1);//первые 4 пина в 16 систему

hex1=ret_literal(res);

res=ret_hex(2);

hex2=ret_literal(res); //вторые 4 пина в 16 систему

dec=ret_dec();

sprintf(buf,"%X",dec);

hex=atoi(buf);

Indicator1(dec%10);

Indicator2(dec/10);

}

}

Висновки

Під час виконання курсової роботи, було розглянуто і поглиблено знання з програмування мікроконтролерів, реалізація переривань, передача і прийом даних, організація оптимального коду, тощо. Розроблений власний алгоритм для поставленої задачі. Знайдено оптимальне рішення для переведення числа з однієї системи числення до іншої. Розглянуто механізм відправки даних через UART.

Засвоєна можливість зчитування і передача даних через порти мікроконтролеру. Був реалізований власний дешифратор десятинного числа в код семи сегментного індикатору.

Размещено на Allbest.ru

...

Подобные документы

  • Функціональні вузли мікроконтролеру, його технічні характеристики і загальна структура. Генератор тактових імпульсів та пристрої пам'яті. Розробка структурної схеми, енергозберігаючі режими роботи, програмні середовища для програмування мікроконтролеру.

    курсовая работа [1,1 M], добавлен 30.06.2009

  • Написання програми для мобільного приладу, яка буде переводити числа з однієї системи числення в іншу. Розробка графічного інтерфейсу, яким зручно буде користуватись. Опис процедур, обробників та мови програмування. Дослідження логічних частин програми.

    курсовая работа [1,2 M], добавлен 27.08.2014

  • Методи алгоритмiчного описаня задач, програмування на основi стандартних мовних засобiв. Переклад з однієї системи числення в іншу при програмуванні. Системи числення. Двійкові системи числення. Числа з фіксованою і плаваючою комою. Програмна реалізація.

    курсовая работа [164,1 K], добавлен 07.12.2008

  • Розробка програми транслітерації україномовних текстів латинськими літерами. Сутність транслітерації - механічної передачі тексту, який записаний однією графічною системою засобами іншої графічної системи, тобто передачі однієї писемності літерами іншої.

    курсовая работа [193,9 K], добавлен 05.03.2011

  • Характеристика формування навичок розробки додатків із використанням кнопкових компонентів у середовищі програмування Visual Studio. Створення програми, що переводить числа з однієї системи числення до іншої. Особливість застосування додатку Converter.

    практическая работа [249,7 K], добавлен 01.12.2022

  • Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.

    курсовая работа [69,4 K], добавлен 14.03.2013

  • Розробка принципової електричної схеми системи управління конвеєрною лінією, яка складається з трьох послідовних конвеєрів. Реалізація алгоритму роботи на мові сходинкових діаграм LD. Розробка керуючої програми для мікроконтролерів Zelio Logic та ОВЕН.

    курсовая работа [230,2 K], добавлен 15.06.2015

  • Опис інтерфейсу паралельного порту Centronics, який має 25-контактний 2-рядний роз'єм DB-25-female. Швидкість передачі даних, фірмові розширення. Розгляд BIOS для LPT-порту. Опис програмного середовища. Приклад виконання програми, блок-схема алгоритму.

    курсовая работа [1,2 M], добавлен 23.04.2014

  • Опис мови програмування PHP. Стратегія Open Source. Мова розмітки гіпертекстових документів HTML. Бази даних MySQL. Обґрунтування потреби віддаленого доступу до БД. Веб-сервер Apache. Реалізація системи. Інструкція користувача і введення в експлуатацію.

    курсовая работа [42,9 K], добавлен 21.12.2012

  • Розробка програми, яка вираховує з введених чисел парні та непарні та додає парні числа. Особливості синтаксису й семантики операторів мови С++. Перевірка коректності введення кількості чисел. Написання коду програми, проведення її тестування на прикладі.

    лабораторная работа [860,5 K], добавлен 20.12.2012

  • Розробка програми для моделювання роботи алгоритму Дейкстри мовою C# з використанням об’єктно-орієнтованих принципів програмування. Алгоритм побудови робочого поля. Програмування графічного інтерфейсу користувача. Тестування програмного забезпечення.

    курсовая работа [991,4 K], добавлен 06.08.2013

  • Розрахунок часових затримок для формування імпульсів у програмі передачі даних через послідовний порт мікроконтролера, а також розрахунок швидкості передачі даних через послідовний порт. Алгоритм підпрограми обробки переривань від послідовного порту.

    курсовая работа [29,9 K], добавлен 07.06.2010

  • Поняття черги в програмуванні, основні операції з чергою і їх реалізація. Опис алгоритму й специфікація програми. Розробка додатку з використанням задачі Ларсона по опису зв'язного неорієнтованого графа. Алгоритм розв’язку і результати виконання програми.

    курсовая работа [1,1 M], добавлен 14.09.2012

  • Розробка програми для вирішення графічної задачі. При вирішенні задачі необхідно cтворювати програму у середовищі програмування Turbo Pascal. Розробка алгоритму функціонування програми і надання блок-схеми алгоритму. Демонстрація роботи програми.

    курсовая работа [1,3 M], добавлен 23.06.2010

  • Аналіз особливостей мови програмування Java та середовища Android Studio. Розробка програмного забезпечення для якісного та ефективного вивчення іноземних слів. Побудова базових алгоритмів і структури даних. Вибір мови програмування, реалізація програми.

    курсовая работа [335,3 K], добавлен 11.01.2015

  • Принципи об'єктно-орієнтованого підходу. Розробка програмного комплексу з використанням цього алгоритму і користувальницьких класів на мові програмування С++. Реалізація простого відкритого успадкування. Тестування працездатності системи класів.

    курсовая работа [98,0 K], добавлен 06.05.2014

  • Розгляд оригінального візерунку, що складається із суперпозиції чотирьох кривих. Проект реалізації алгоритму побудови цих кривих у вигляді програми функціональною мовою програмування Lisp. Головна особливість кривої Серпінського. Створення програми Serp.

    курсовая работа [200,9 K], добавлен 23.04.2010

  • Розробка алгоритму та написання програми обчислення множин. Доведення теоретико-математичних тотожностей і тверджень. Побудова диз’юнктивної нормальної форми. Розробка алгоритму та написання програми знаходження множини елементарних циклів у графі.

    курсовая работа [184,4 K], добавлен 17.04.2011

  • Розробка програми перевірки логічного мислення людини на мові програмування С++, результатом якої є моделювання координатного переміщення. Визначення структури вхідних та вихідних даних, вибір мови програмування. Розгляд алгоритму рішення задачі.

    курсовая работа [55,8 K], добавлен 28.04.2015

  • Історія створення мови С#. Аналіз алгоритмів кодування даних. Розробка системи в середовищі Visual Studio 2008 Express. Схема шифрування алгоритму DES. Дослідження алгоритму RC2. Приклади хешів RIPEMD-160. Програмна реалізація основних процедур системи.

    дипломная работа [1,7 M], добавлен 25.10.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.