Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <msp430x14x.h>
- #include "LCD.h"
- #include "portyLcd.h"
- //#include "LCD.c"
- #define INTERVAL 50000 //okres licznika 0,5s
- #define _5s 10 //okres pomiarów
- int temp;
- int tempF;
- unsigned tempK;
- unsigned int cntr;
- void show(void);
- /*void wyswietl(int cel[]){
- int j;
- SENC_CMD(CG_RAM_ADDR);
- for(j=0; j<8; j++){
- SEND_CHAR(cel[j]);
- }
- }*/
- main (void)
- {
- unsigned int k;
- //unsigned short int cel[]={7,5,7,0,0,0,0,0};
- WDTCTL = WDTPW+WDTHOLD;
- //initPortsLcd();
- //initLCD();
- ini_display(); //inicjalizacja LCD
- ADC12CTL0=ADC12ON|REFON|SHT0_15; //w³. rdzenia, w³.gen. nap. odniesienia, wybór nap. odniesienia
- ADC12CTL1=SHP|CSTARTADD_0; //próbkowanie impulsowe, wynik sk³adany w ADC12MEM0
- ADC12MCTL0=INCH_10|SREF_1; //kana³ 10, Ÿród³o nap. odniesienia - wew. generator (1,5V)
- for(k=0;k<0x3600;k++); //czas na ustabilizowanie generatora nap. odniesienia
- CCR0=INTERVAL; //ustala nowy okres licznika
- TACTL=TASSEL_2|ID_3|MC_1; //Ÿród³o taktowania SMCLK, dzielone przez 8,tryb UP
- CCTL0=CCIE; //uaktywnienie przerwania od TACCR0 CCIFG
- _BIS_SR(GIE); //w³aczenie przerwañ
- ADC12CTL0 |= ENC; //uaktywnienie konwersji
- while(1)
- {
- P2OUT^=BIT1;
- ADC12CTL0 |= ADC12SC; //start konwersji
- while((ADC12CTL1&ADC12BUSY)==1); //czekanie na koniec konwersji
- temp=ADC12MEM0*1.0318-2777.4647; //wartoϾ temperatury z dok. 1-miejsce po przecinku
- tempK=temp+2732;
- tempF=temp*9.0/5.0+320.0;
- show(); //wyœwietla na LCD
- _BIS_SR(LPM0_bits); //wejœcie w tryb oszczêdny
- }
- }
- void show(void)
- {
- int cyfra, waga=10;
- LCD_cmd(CLR_LCD);
- wait (_2ms);
- if(temp<0)
- {
- LCD_char('-');
- temp*=-1;
- }
- if(temp<10)
- LCD_char('0');
- if (temp >= 1000)
- {
- LCD_char('?');
- return;
- }
- while (waga <= temp)
- {
- waga*=10;
- }
- while ((waga/=10)>1)
- {
- cyfra = temp / waga;
- LCD_char((int)('0'+cyfra));
- temp-=cyfra*waga;
- }
- LCD_char('.');
- LCD_char((int)('0'+temp));
- //LCD_char(cel);
- LCD_char('C');
- //Kelviny
- LCD_char(' ');
- waga=10;
- wait (_2ms);
- if(tempK<10)
- LCD_char('0');
- if (tempK >= 10000)
- {
- LCD_char('?');
- return;
- }
- while (waga <= tempK)
- {
- waga*=10;
- }
- while ((waga/=10)>1)
- {
- cyfra = tempK / waga;
- LCD_char((int)('0'+cyfra));
- tempK-=cyfra*waga;
- }
- LCD_char('.');
- LCD_char((int)('0'+tempK));
- LCD_char('K');
- //Farenheity
- //SEND_CMD(DD_RAM_ADDR2);
- //LCDcmd(CG_RAM_ADDR);
- LCD_char(' ');
- waga=10;
- wait (_2ms);
- if(tempF<10)
- LCD_char('0');
- if (tempF >= 1000)
- {
- LCD_char('?');
- return;
- }
- while (waga <= tempF)
- {
- waga*=10;
- }
- while ((waga/=10)>1)
- {
- cyfra = tempF / waga;
- LCD_char((int)('0'+cyfra));
- tempF-=cyfra*waga;
- }
- LCD_char('.');
- LCD_char((int)('0'+tempF));
- LCD_char('F');
- }
- #pragma vector=TIMERA0_VECTOR
- __interrupt void Timer_A (void)
- {
- if(++cntr==_5s)
- {
- _BIC_SR_IRQ(LPM0_bits); //wyjœcie z trybu oszczednego
- cntr=0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement