Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Проектування електронного тахометра

Реферат Проектування електронного тахометра





предпредпоследнюю секундуlong i;// Для затримок

# define STRINGVECTOR (x) #x//Шаблон для обробників переривань

# define ISR (a, b)

_ Pragma (STRINGVECTOR (vector=(b)))

__ interrupt void (a) (void) (TIM1_OVF, TIM1_OVR_UIF_vector)//Переривання по переповненню таймера

{

c=b;// Оновлюємо значення кількості оборотів в останню, передостанню секунду і т.д.

b=a;

a=obSec;

obMin=(a + b + c) * 5;// Вважаємо кількість оборотів за 3 секунди і множимо на 5,

//т.к. за один оборот датчик 4 рази змінює стан (при двох магнітах на валу)

obSec=0;// Скидаємо лічильник оборотів за поточну секунду

IntToStr (obMin);// перегонимо в текст

LCD_Write_String (display_str);// Виводимо на екран

TIM1_SR1_bit.UIF=0;// Скидання прапора переривання

}; LCD_init ()//Функція ініціалізації LCD

{

CLK_SYSCLKDivConfig (CLK_SYSCLKDiv_1);// Вимикаємо визначник. Тепер МК працює на частоті 16МГц.

CLK_PeripheralClockConfig (CLK_Peripheral_LCD, ENABLE);// Подаємо тактовий сигнал на LCD.

CLK_PeripheralClockConfig (CLK_Peripheral_RTC, ENABLE);// Подаємо такт на RTC

CLK_RTCClockConfig (CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1);// Прибираємо прескаллер RTC

LCD- gt; CR1=(3 lt; lt; 1) + (5 lt; lt; 3);// Duty=1/4, Blink Freq=LCDclk/256

LCD- gt; CR2=(6 lt; lt; 1) | LCD_CR2_HD;// Контрастність=6 (з 7), низькоомний драйвер.

LCD- gt; FRQ=(2 lt; lt; 4);// LCDclk=32768/2/(2 ^ 1 * 16)=512Hz

//Задіяні всі сегменти:

LCD- gt; PM [0]=0xFF;

LCD- gt; PM [1]=0xFF;

LCD- gt; PM [2]=0xFF;

LCD- gt; CR3 |=LCD_CR3_LCDEN | 2;// ВКЛ і deadtime=2

LCD_Contrast (5);

LCD_Write_String ( Hello );

for (i=0; i lt; 200000; i ++) {asm ( nop );};

LCD_Write_String ( world );

for (i=0; i lt; 200000; i ++) {asm ( nop );};

LCD_Write_String ( 0000 );

//for (i=0; i lt; 300000; i ++) {asm ( nop );};

} Timer1_init ()//Функція ініціалізації таймера 1

{

CLK_PCKENR2_bit.PCKEN21=1;// Включаємо тактирование таймера 1

TIM1_PSCRH=5;

TIM1_PSCRL=255;

TIM1_ARRH=(10000) gt; gt; 8;// Частота переповнень=16М/1600/10000=1 Гц

TIM1_ARRL=(10000) amp; 0xFF;

TIM1_CR1_bit.URS=1;// Переривання тільки по переповненню лічильника

TIM1_EGR_bit.UG=1;// Викликаємо Update Event

TIM1_IER_bit.UIE=1;// Дозволяємо переривання

TIM1_CR1_bit.CEN=1;// Запускаємо таймер

} main (void)//Основна програма

{

asm ( RIM );//Глобально дозволяємо переривання

//Налаштовуємо вхід

PC_DDR_bit.DDR1=0;// На вхід

PC_CR1_bit.C11=1;// Підтягаючий резистор

PC_CR2_bit.C21=0;// Переривання запрещено_SYSCLKDivConfig (CLK_SYSCLKDiv_1);// Вимикаємо визначник. Тепер МК працює на частоті 16МГц.

//ініціалізувавши дисплей і таймер

LCD_init ();

Timer1_init (); _ t sost;// Стан датчика

//У циклі основна програма перевіряє стан датчика і якщо воно змінилося, інкрементує лічильник

while (1) {

sost=PC_IDR_bit.IDR1;// Записуємо поточний стан датчика

//затримка для виключення брязкоту

for (i=0; i lt; 1000; i ++) {

asm ( nop );

}

if (PC_IDR_bit.IDR1!=sost) obSec ++;// Інкрементіруем лічильник, якщо стан датчика змінилося

if (obSec == 167) obSec=0;// Перевіряємо - чи не пішов він за межа

};

}


5. Адаптація пристрою до промислового застосування


У представленому вигляді пристрій для промислової експлуатації не підходить - плата STM8L-Discovery призначена для налагодження та має багато надлиш...


Назад | сторінка 6 з 7 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Переривання і виключення
  • Реферат на тему: Переривання вагітності
  • Реферат на тему: Цикли, переривання, компоненти для відображення тексту
  • Реферат на тему: Внутрішньоутробне вдосконалення людини і переривання вагітності
  • Реферат на тему: Програма &Лічильник рівнянь&