Advertisement
Guest User

Untitled

a guest
Dec 11th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.14 KB | None | 0 0
  1. #include <msp430x14x.h>
  2. #include "LCD.h"
  3. #include "portyLcd.h"
  4. //#include "LCD.c"
  5. #define INTERVAL 50000 //okres licznika 0,5s
  6. #define _5s 10 //okres pomiarów
  7.  
  8. int temp;
  9. int tempF;
  10. unsigned tempK;
  11. unsigned int cntr;
  12. void show(void);
  13. /*void wyswietl(int cel[]){
  14. int j;
  15. SENC_CMD(CG_RAM_ADDR);
  16. for(j=0; j<8; j++){
  17. SEND_CHAR(cel[j]);
  18. }
  19. }*/
  20. main (void)
  21. {
  22. unsigned int k;
  23. //unsigned short int cel[]={7,5,7,0,0,0,0,0};
  24. WDTCTL = WDTPW+WDTHOLD;
  25. //initPortsLcd();
  26. //initLCD();
  27. ini_display(); //inicjalizacja LCD
  28. ADC12CTL0=ADC12ON|REFON|SHT0_15; //w³. rdzenia, w³.gen. nap. odniesienia, wybór nap. odniesienia
  29. ADC12CTL1=SHP|CSTARTADD_0; //próbkowanie impulsowe, wynik sk³adany w ADC12MEM0
  30. ADC12MCTL0=INCH_10|SREF_1; //kana³ 10, Ÿród³o nap. odniesienia - wew. generator (1,5V)
  31. for(k=0;k<0x3600;k++); //czas na ustabilizowanie generatora nap. odniesienia
  32.  
  33. CCR0=INTERVAL; //ustala nowy okres licznika
  34. TACTL=TASSEL_2|ID_3|MC_1; //Ÿród³o taktowania SMCLK, dzielone przez 8,tryb UP
  35. CCTL0=CCIE; //uaktywnienie przerwania od TACCR0 CCIFG
  36. _BIS_SR(GIE); //w³aczenie przerwañ
  37.  
  38. ADC12CTL0 |= ENC; //uaktywnienie konwersji
  39. while(1)
  40. {
  41. P2OUT^=BIT1;
  42. ADC12CTL0 |= ADC12SC; //start konwersji
  43. while((ADC12CTL1&ADC12BUSY)==1); //czekanie na koniec konwersji
  44. temp=ADC12MEM0*1.0318-2777.4647; //wartoϾ temperatury z dok. 1-miejsce po przecinku
  45. tempK=temp+2732;
  46. tempF=temp*9.0/5.0+320.0;
  47. show(); //wyœwietla na LCD
  48. _BIS_SR(LPM0_bits); //wejœcie w tryb oszczêdny
  49. }
  50. }
  51.  
  52. void show(void)
  53. {
  54. int cyfra, waga=10;
  55. LCD_cmd(CLR_LCD);
  56. wait (_2ms);
  57. if(temp<0)
  58. {
  59. LCD_char('-');
  60. temp*=-1;
  61. }
  62. if(temp<10)
  63. LCD_char('0');
  64.  
  65. if (temp >= 1000)
  66. {
  67. LCD_char('?');
  68. return;
  69. }
  70. while (waga <= temp)
  71. {
  72. waga*=10;
  73. }
  74. while ((waga/=10)>1)
  75. {
  76. cyfra = temp / waga;
  77. LCD_char((int)('0'+cyfra));
  78. temp-=cyfra*waga;
  79. }
  80. LCD_char('.');
  81. LCD_char((int)('0'+temp));
  82. //LCD_char(cel);
  83. LCD_char('C');
  84.  
  85. //Kelviny
  86. LCD_char(' ');
  87. waga=10;
  88. wait (_2ms);
  89. if(tempK<10)
  90. LCD_char('0');
  91.  
  92. if (tempK >= 10000)
  93. {
  94. LCD_char('?');
  95. return;
  96. }
  97. while (waga <= tempK)
  98. {
  99. waga*=10;
  100. }
  101. while ((waga/=10)>1)
  102. {
  103. cyfra = tempK / waga;
  104. LCD_char((int)('0'+cyfra));
  105. tempK-=cyfra*waga;
  106. }
  107. LCD_char('.');
  108. LCD_char((int)('0'+tempK));
  109. LCD_char('K');
  110.  
  111. //Farenheity
  112. //SEND_CMD(DD_RAM_ADDR2);
  113. //LCDcmd(CG_RAM_ADDR);
  114. LCD_char(' ');
  115. waga=10;
  116. wait (_2ms);
  117. if(tempF<10)
  118. LCD_char('0');
  119.  
  120. if (tempF >= 1000)
  121. {
  122. LCD_char('?');
  123. return;
  124. }
  125. while (waga <= tempF)
  126. {
  127. waga*=10;
  128. }
  129. while ((waga/=10)>1)
  130. {
  131. cyfra = tempF / waga;
  132. LCD_char((int)('0'+cyfra));
  133. tempF-=cyfra*waga;
  134. }
  135. LCD_char('.');
  136. LCD_char((int)('0'+tempF));
  137. LCD_char('F');
  138. }
  139.  
  140. #pragma vector=TIMERA0_VECTOR
  141. __interrupt void Timer_A (void)
  142. {
  143. if(++cntr==_5s)
  144. {
  145. _BIC_SR_IRQ(LPM0_bits); //wyjœcie z trybu oszczednego
  146. cntr=0;
  147. }
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement