- •1.Основна частина
- •1.1 Розробка технічного завдання
- •1.2 Функціональні вузлі мікроконтролеру
- •Технічні характеристики
- •1.2.2 Загальна структура мк
- •1.2.3 Генератор тактових імпульсів
- •1.2.4 Пристрої пам’яті
- •1.2.5 Периферійні пристрої
- •1.2.6 Енергозберігаючі режими роботи мікроконтролеру
- •1.3 Розробка структурної схеми пристрою
- •1.4 Розробка принципіальної схеми пристрою
- •1.4.1 Блок Живленная
- •1.4.2 Блок вихідних пристроїв
- •1.4.3 Блок керування
- •1.4.4 Розрахунок виводу мк
- •1.5 Розробка друкованої плати
- •1.6 Програмне забезпечення
- •1.6.1 Програмне середовище для програмування мк
- •1.6.2 Алгоритм роботи програми
- •1.7 Розрахунок споживчої потужності
1.6 Програмне забезпечення
1.6.1 Програмне середовище для програмування мк
Програма для мікроконтролера являє собою набір кодів, які записуються до його спеціальної пам'яті. Однак написання програми кодами є дуже не зручним і зайняло б дуже великий час. Тому для написання програми використовуються язики програмування, які оперують з командами, що мають своє осмислене значення.
Всі мови програмування діляться на дві групи:
мови низького рівня (машино орієнтування);
мови високого рівня.
Типовим прикладом машино орієнтування мови програмування є мова Асемблер. Ця мова максимально наближений до системи команд мікроконтролера. Кожен оператор цієї мови - це, по суті, словесне назва якої-небудь конкретної команди.
У процесі трансляції така команда просто замінюється кодом операції. Складаючи програму на мові Асемблер, програміст повинен оперувати тими ж видами даних, що і сам процесор, тобто байтами і бітами.
Специфіка мови Асемблер полягає ще й у тому, що набір операторів для цієї мови безпосередньо залежить від системи команд конкретного мікроконтролера. Тому, якщо два мікроконтролера мають різну систему команд, то і мова Асемблер для кожного такого мікроконтролера буде свій. У
У недавньому минулому мова Асемблер була єдиною мовою програмування для мікроконтролерів. Тільки вона дозволяла ефективно використовувати убогі ресурси найперших мікросхем. Проте в даний час, коли можливості сучасних мікроконтролерів значно зросли, для складання програм все чаше використовуються мови високого рівня, такі як Бейсик, СІ і т. п.
Ці мови в свій час були розроблені для великих справжніх комп'ютерів. Але зараз широко використовуються також і для мікроконтролерів. Мови високого рівня відрізняються тим, що вони набагато більше орієнтовані на людину. Більшість команд мов високого рівня не пов'язані з конкретними командами мікроконтролера.
У цьому проекті програму для мікроконтролера буде створено з допомогою мови СІ.
Для створення програм на мові СІ ми будемо використовувати програмне середу CodeVisionAVR. Це середовище спеціально призначена для розробки програм на мові СІ для мікроконтролерів серії AVR. Середа CodeVisionAVR не має свого відладчик, але дозволяє отлажувати програми, використовуючи можливості системи AVR Studio.
Відмінною особливістю системи CodeVisionAVR є наявність майстра-побудовники програми. Майстер-побудовники полегшує роботу програмісту. Він позбавляє від необхідності перегортати довідник і вишукувати інформацію про те, який регістр за що відповідає і які коди потрібно в нього записати. Результат роботи майстра - це заготівля майбутньої програми, в яку включені всі команди попередньої настройки, а також заготовки всіх процедур мови СІ.
1.6.2 Алгоритм роботи програми
1.7 Розрахунок споживчої потужності
Потужність яку вживає мікропроцесорна система від джерела живлення визначується сумарною середньою потужністю, яку споживає кожен активний елемент, який входить до схеми мікропроцесорної системи.
,
Де
- напруга живлення;
-
число елементів;
-
максимальний струм, який споживається
елементом.
Таблиця 1.7
-
Елементи
Схеми
Кількість
Uж(В)
Ісп.мак(мА)
CPU
1
5
7
VD
2
1,5
10
VT
2
0,8
20
HG
4
2,5
25
Висновки
В даному курсовому проекті приведена розробка лічильника, який рахує число імпульсів готової продукції.
Приведено аналітичний огляд МК сімейства AVR. Розробка пристрою проводилась на сучасній елементній базі, а сама на МК ATtiny2313.
В ходы проекту складено структурну та принципову схему, розроблено друковану плату блоку вихідних пристроїв через оптопару. Проведено розрахунок обмежуючих резисторів для МК і визначено загальну потужність імпульсів пристрою.
Пристрій рахує число імпульсів готової продукції.
Конструктивно пристрій виконано з 3 блоків, які відключаються один від одного, що робить пристрій більш комунікабельним.
Потужність мого пристрою складається з частини з великою та частини з низькою потужністю. Причому частина з низкою потужністю керує частиною з високою потужністю завдяки включення у схему пристрою оптопари.
На жаль подальшій розвиток даного пристрою не представляться можливим.
Список літератури
Гребньов В.В “Мікроконтроллери сімейства AVR фірми Atmel”. – М.: ІП РадіоСофт, 2002
Евстіфеєв А.В. “Мікроконтроллери AVR сімейства Tiny і Mega фірми Atmel” – М.: Видавницький дім «Додека-XXI», 2004 – 560 с.
Шелестов І.П. “Радіолюбителям: корисні схеми” книга 1 – М.: видавництво «Слон-Р», 1998р.
М.С.Голубцов “Мікроконтроллери AVR: ві простого до складного” – М.: СЛОН-Прес, 2003
Мортон Дж. “Мікроконтролери AVR. Вводний курс” – М.: видавницький дім «Додека-XXI», 2006
Баранов В.Н. “Застосування мікроконтролерів AVR: схеми алгоритми програми” - видавницький дім «Додека-XXI», 2004
Шелестов І.П. “Радіолюбителям: корисні схеми”. Книга 6. - М.: видавництво «Слон-Р», 2005р.
Ю.А.Шпак "Програмування на мові С для АВR та PIC мыкроконтролерів”. K.: МК-Прес, 2006
Белов А.В. «Создаём устройства на МК». – СПб.: Наука и техника, 2007
Зайцев М.И «Радеолюбительские конструкции на МК», М.: СЛОН-Прес, 2003
Григорьев В. Л. Программное обеспечение микропроцессорных систем. – М.: Энергоатомиздат, 1983
Щелкунов Н. Н., Дианов А. П. Микропроцессорные средства и системы. – М.: Радио и связь, 1989
Сташин В. В. Проектирование цифровых устройств на однокристальных микроконтроллерах. – М.: Энергоатомиздат, 1990.
Иванов В. И. Полупроводниковые оптоэлектронные приборы: Справочник – 2-е изд., перераб. И доп. – М.: Энергоатомиздат, 1989
Хвощ С. Т. Микропроцессоры и микроЭВМ в системах автоматического управления. Справочник. Л.: Машиностроение. Ленингр. отд-ние, 1987.
Додаток А
Описання виводів АТ90S2313
Описання виводів
Vcc - висновок джерела живлення
GXD - земля
Port В (РВ7. .. РВ0) - Порт У є 8-розрядним двонаправленим портом введення / виводу. Для висновків порту передбачені внутрішні підтягує резистори i вибираються незалежно для кожного біта). Висновки РВО і РВ1 також є прямим (AIN0) і інверсно (AIN1) входами вбудованого аналогового компаратор. Вихідні буфер порту В можуть віддавати струм до 20 мА і безпосередньо керувати світлодіодними індикаторами. Якщо включені внутрішні підтягує резистори і висновки РВ0 ... РВ7 використовуються як входи і ззовні встановлюються в низький стан, вони є джерелами струму. Порт В також обслуговує деякі спеціальні функції, які будуть описані нижче.
Port D (PD6.. PD0) - Порт D є 7-розрядним двонаправлений портом з внутрішніми підтягує резисторiв. Вихідні буфер порту D можуть віддавати струм до 20мА. Як і для порту В. якщо входи встановлені в низький стан і активізовані підтягує резистори, висновки порту D є джерелами струму. Порт D також обслуговує деякі спеціальні функції, які будуть описані нижче.
RESET - Вхід скидання. Утримання низького рівня протягом 50 НЕ (якщо не працює тактової генератор), скидає пристрій.
XTAL1-Вхід підсилювача генератора і вхід зовнішнього тактового сигналу.
XTAL2 - Вихід підсилювача генератора.
Додаток Б
Друкована плата блоку виконуючого пристрою
Додаток В
Лістінг програми роботи пристрою
This program was produced by the
CodeWizardAVR V2.03.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : Лычильника, який рахує кількість людей
Version :
Date : 24.06.2009
Author : Гусев Д.П.
Company : КраПЕК
Comments:
Программа для курсового проекту.
Chip type : AT90S2313
AVR Core Clock frequency: 4,000000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 32
*****************************************************/
#include <90s2313.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=Out Func0=Out
// State7=1 State6=1 State5=1 State4=1 State3=P State2=P State1=1 State0=1
PORTB=0xFF;
DDRB=0xF3;
// Port D initialization
// Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
PORTD=0x7F;
DDRD=0x7F;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1 output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1H=0x00;
OCR1L=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
while (1)
{
// Place your code here
Додаток Г
Графік залежності напруги на виході МК від струму
