значена для обробки переривання від таймера. Обнуляє значення лічильника і здійснює вихід мікроконтролера з режиму енергозбереження.
датчик температура мікроконтролер програмний
ВИСНОВОК
У ході виконання даного курсового проекту були отримані знання про принципи побудови і розробки систем на основі мікроконтролерів сімейства MSP430, про порядок і процесі вибору елементної бази, та побудови єдиної системи на її основі. При розробці програми були отримані навички в написанні програм мовою З сімейства MSP430. За допомогою документації-першоджерела від виробника були вивчені принципи роботи вбудованого в мікроконтроллер АЦП, а так само вивчена робота вбудованого датчика температури.
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1.Датчікі температури: <# «justify"> ДОДАТОК
Текст програми
# include «msp430g2553.h»
# define red_LED BIT0
# define grn_LED BIT6
# define BTN BIT3temp; IntDegF; IntDegC; count; int customtemp; main (void)
{= WDTPW + WDTHOLD;// Зупинка WDTCTL1=INCH_10 + ADC10DIV_3;// Ініціалізація АЦП на роботу з датчиком температуриCTL0=SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;
__enable_interrupt ();// Дозволяємо переривання.=30;// Встановлюємо час вибірки |=CCIE;// Режим порівняння переривання.=TASSEL_2 | MC_1;// Вибір джерела тактового сигналу TACLK=SMCLK, таймер вважає від 0000h до TACCR0.;// Спати, прокинеться з перериваючи від АЦП, де отримає установку продовжити роботу &=~ CCIE;// Відключити переривання таймера
__disable_interrupt ();=25 ;/ / Установка порогової температуриOUT=0 ;/ / Виключення светодіодовDIR |=red_LED + grn_LED;// Висновки світлодіодів на вихід
while ((P1IN & BTN) == BTN);// Чекаємо натискання кнопки запускаємо програму
while (1)
{CTL0 |=ENC + ADC10SC;// Дозвіл і запуску процесу вибірки та перетворення
__bis_SR_register (CPUOFF + GIE);// Вхід в режим LPM0
/ / Результат кожного перетворення заноситься в регістр ADC10MEM
/ / oF=((A10/1024) * 1500mV) - 923mV) * 1/1.97mV=A10 * 761/1024 - 468=ADC10MEM;=((temp - 630) * 761)/1024;
/ / oC=((A10/1024) * 1500mV) - 986mV) * 1/3.55mV=A10 * 423/1024 - 278=ADC10MEM;=((temp - 673) * 423)/1024;
/ / for (count=0; count <90000; count + +);
if (IntDegC <= customtemp)
{OUT &=~ red_LED;// Вимикаємо червоний світлодіод
P1OUT |=grn_LED;// Включаємо зелений світлодіод
}
else
{OUT &=~ grn_LED;// Вимикаємо зелений светодіодOUT |=red_LED;// Включаємо червоний світлодіод
}
__no_operation ();// Установка точки зупинки
}
}
/ / ADC10 переривання
# pragma vector=ADC10_VECTOR
__interrupt void