Автомобильный тахометр

Автор работы: Пользователь скрыл имя, 25 Декабря 2011 в 15:25, курсовая работа

Описание работы

Используя средства языка программирования необходимо создать цифровой тахометр на основе микроконтроллера ATtiny 2313 семейства AVR. Должны выполняться действия: измерение оборотов двигателя, вывод значений оборотов на светодиодный индикатор, возможность уменьшения яркости индикатора при включении габаритных огней.

Содержание работы

1 Теоретическая часть 3
1.1 Аннотация 3
1.2 Постановка задачи 3
1.3 Общие сведения о микроконтроллерах AVR 3
1.4 Описание ATtiny2313 3
1.5 Основные параметры ATtiny2313 4
1.6 Блок-схема ATtiny2313 6
1.7 Расположение выводов ATtiny2313 7
1.8 Программирование микроконтроллера с использованием программы на языке С 8
2 Конструкторская часть 9
2.1 Общие сведения.Функциональное назначение используемых программ 9
2.2 Реальзация 10
2.3 Схема принципиальная 10
2.4 Вызов и загрузка 11
3 Заключение 11
4 Быблиографический список 11

Файлы: 1 файл

Автомобильный тахометр.doc

— 272.50 Кб (Скачать файл)

    2. Конструкторская  часть

    2.1 Общие сведения. Функциональное  назначение используемых  программ

 

     Для выполнения курсовой работы были использованы следующие программные  средства: компилятор языка С для  микроконтроллеров  AVR (CodeVisionAVR), генератор начального кода программы CodeWizard AVR с необходимой конфигурацией периферии МК (AVR Studio).

     CodeVision AVR представляет собой кросс-компилятор языка С, графическую оболочку и автоматический генератор шаблонов программ, ориентированные на работу с семейством микроконтроллеров AVR фирмы Atmel.

     Программа представляет собой 32-разрядное  приложение для работы в операционных системах Windows 95, 98, Me, NT4.0, 2000, XP.

     Кросс-компилятор включает в себя практически  все элементы, соответствующие стандарту ANSI. Кроме того, в компилятор включены дополнительные возможности, ориентированные на использование архитектурных особенностей микроконтроллеров AVR и встроенных систем в целом.

     Объектные файлы COFF позволяют осуществлять отладку программ с просмотром содержимого переменных. Для этого следует применять свободно распространяемый фирмой Atmel (www.atmel.com) отладчик AVR Studio.

     Для отладки систем, использующих последовательную передачу данных, в графической  оболочке имеется  встроенная программа Terminal.

     Кроме стандартных библиотек  языка С, компилятор имеет библиотеки для работы с:

     ЖКИ индикаторами со встроенным контроллером;

     шиной I2C фирмы Philips;

     датчиком  температуры LM75 фирмы National Semiconductor;

     часами  реального времени  PC8536 и PC8583 фирмы Philips, DS1302 и DS1307 фирмы Dallas Semiconductor;

     однопроводным протоколом фирмы  Dallas Semiconductor;

     датчиками температуры DS1820 и DS1822 фирмы Dallas Semiconductor;

     датчиком  температуры/термостатом  DS1621 фирмы Dallas Semiconductor;

     памятью EEPROM DS2430 и DS2433 фирмы Dallas Semiconductor;

     шиной SPI;

     управлением режимами пониженного  потребления энергии;

     временными  задержками;

     преобразованием кодов Грэя.

     В CodeVision AVR имеется автоматический генератор шаблонов программ, который позволяет в течение считанных минут получить готовый код для следующих функций:

     настройка доступа к внешней  памяти;

     определение источника прерывания Reset;

     инициализация портов ввода/вывода;

     инициализация внешних прерываний;

     инициализация таймеров/счетчиков;

     инициализация сторожевого таймера;

     инициализация UART;

     инициализация аналогового компаратора;

     инициализация встроенного АЦП;

     инициализация интерфейса SPI;

     инициализация поддерживаемых библиотеками CodeVision AVR микросхем, работающих с однопроводным интерфейсом и шиной I2C;

     инициализация модуля ЖКИ со встроенным контроллером.

     Кроме того, среда CodeVision AVR включает в себя программное обеспечение для работы с различными AVR-программаторами. После компиляции исходной программы на языке С полученный код может быть сразу записан в память программ микроконтроллера.

    2.3 Схема принципиальная

    2.4 Перечень элементов

      Микроконтроллер:

         ATtiny2313 1шт;

      Индикатор:

         С-564 1шт;

      Стабилизатор:

         78L05 1шт;

      Пьезокварц:

         8MHz 1шт;

      Транзисторы:

         BC847 2шт;

      Диоды и стабилитроны:

         1N4148 1шт;

         5,1V 1шт;

      Конденсаторы:

         22pF 2шт;

         2,2nF 1шт;

         10nF 1шт;

         0,1mkF 2шт;

         10mkF 2шт;

       Резисторы:

        330 Ом 8шт;

         1 кОм  1шт;

         10 кОм  3шт;

         220 кОм  1шт.

    Расчёт  токоограничительных  резисторов на цепи светодиодного индикатора:

            Ток потребления светодиодного индикатора С-564 составляет порядка 0,015А, исходя из закона Ома нам потребуются резисторы R сопротивлением R=U/I=5В/0,015А=330 Ом.

    2.5 Печатная плата

    2.4 Запуск и выполнение

     Скомпилированная  программа представляет собой файл типа cof, который прошиваем на микроконтроллер ATtiny2313 семейства AVR.

     Соединяем компоненты рабочей  модели прибора, получаем сигнал с катушки  зажигания, считываем  обороты двигателя.

                            

      3 Заключение

      В ходе выполнения курсовой работы я приобрел навыки разработки схемы. Написания программы. Освоил начальные знания работы в среде CodeVision AVR,Sprint Layout, также ознакомился с принципами программирования и прошивки микроконтроллера.  

     4 Библиографический список: 

  1. Белов А.В. Конструирование  устройств на микроконтроллерах. - СПб.: Наука и Техника, 2005. - 256 С.
  2. Бородин В.Б., Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики - М.: Издательство ЭКОМ, 2002. - 400 с.: илл.
  3. Гребнев В.В. Микроконтроллеры семейства AVR фирмы Atmel М.: ИП РадиоСофт, 2002. - 176 с.
  4. Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы "ATMEL" - М.: Издательский дом "Додека-ХХI", 2004. - 560 с.
  5. Шпак Ю.А. Программирование на языке Си для AVR и PIC микроконтроллеров. - К: МК-Пресс", 2006. - 400 С.

    5 Приложение

 

     Код программы

     #define    TRUE    (!FALSE)

     #define    FALSE   0

     #define    BYTE    unsigned char

     #define    WORD    unsigned short int

     #define    BOOLEAN char

     #define TIMER_OVF_ENOUGHT   49

     #define NO_PULSES_INTERVAL  200

     #define LED_delay 250   

     #define Light_delay 2500

     //#define Anode

     #define Cathode    

     #define     CNT_100_MS  6250

     #define byBladeCnt 2 //1- две катушки, 2 - одна катушка, 4 - мотоцикл...

     #define Prescaler 0x01 //0x00 - для  кварца 4MHz, 0x01 - для  кварца 8MHz...

     #define UpCount 4  // +1 = количество пропусков (0,1S) до обновления

     #include    <tiny2313.h>

     #include    <delay.h>                              

     BOOLEAN btTimeUpdate;   // = 1, когда нужно обновить время на дисплее

     WORD wTime;             // Время, которое показывает секундомер (в десятых секунды)

     BOOLEAN btTimerOn;      // TRUE - таймер запущен, FALSE - остановлен

     BYTE    byTcnt;         // счетчик десятых секунд

     BYTE    byDisplayRefreshCnt;    //

     void ShowDisplayData(void);     // Вывод экранного буфера

     void PrepareRpmData(WORD wRpm);

     BOOLEAN btDisplayUpdate;        // = TRUE, если пришло время обновить дисплей

     BYTE byDisplay[4];        // буфер данных, для вывода на экран      

     WORD    wLockedRpm;

     // Массив знакогенератора

     BYTE byCharacter[12] = {0xFA,     //0

                     0x82,   //1

                0xB9,   //2

                   0xAB, //3

                   0xC3,     //4

                   0x6B,     //5

                   0x7B,     //6

                     0xA2,    //7

                     0xFB,      //8

                     0xEB,      //9

                     0x00,      //blank  

                     0x01     //-

                     };

     WORD    wRpm;           // Скорость вращения ротора (об/мин)

     //BOOLEAN btRpmUpdate;    // = 1, когда измеряно новое значение оборотов

     WORD    wTimerOvfCnt;   // Счетчик переполнений таймера (нужен для

                             // увеличения разрядности

     WORD    wFlashCnt;      // Счетчик срабатываний датчика прохождения допасти

     BOOLEAN btFirstLowRateFlash;    // FALSE - если отсчет периода еще не начался

                                                                 

     /************************************************************************\

       Обновление дисплея.

           Вход:  -

           Выход: -

     \************************************************************************/

     void RefreshDisplay(void)

     {                               

         #asm("cli");

         if (btDisplayUpdate)

         {

           wLockedRpm = wRpm;

           btDisplayUpdate = FALSE;

         }

         #asm("sei");

        

         PrepareRpmData(wLockedRpm);

         ShowDisplayData();

     } 

     /************************************************************************\

       Преобразование скорости  мотора и количества  лопастей

       в данные экранного  буфера

           Вход:  wRpm - обороты ротора, byBladeCnt - количество лопастей

           Выход: -

     \************************************************************************/

     void PrepareRpmData(WORD wRpm)

     {

         BYTE i;

         WORD R;

         R = wRpm;      

         byDisplay[3] = wRpm % 10;

         wRpm /= 10;       

         if (byDisplay[3] > 4)  //округляем

Информация о работе Автомобильный тахометр