Advertisement
Guest User

Temperature Sensor

a guest
Jan 11th, 2022
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. #include <xc.h>
  2. #include <stdio.h>
  3. #define _XTAL_FREQ 64000000L
  4.  
  5. #define LCD_DATA_TRIS TRISD
  6. #define LCD_RS_TRIS TRISAbits.TRISA2
  7. #define LCD_E_TRIS TRISAbits.TRISA3
  8. #define LCD_DATA LATD
  9. #define LCD_RS LATAbits.LATA2
  10. #define LCD_E LATAbits.LATA3
  11. #define LED1 LATBbits.LATB0
  12. #define LED2 LATBbits.LATB1
  13. #define LED3 LATBbits.LATB2
  14. #define HEATER LATBbits.LATB4
  15. #define FAN LATBbits.LATB5
  16.  
  17. void init_ADC(void); //Initialize ADC
  18. void setup (void);
  19. void delay (unsigned int x);
  20. void lcd_init8(void);
  21. void lcd_data(unsigned char data);
  22. void lcd_cmd(unsigned char data);
  23. void lcd_setCursor (unsigned char col, unsigned char row);
  24. void lcd_clear (void);
  25.  
  26. unsigned int ADCResult=0;
  27. float ActualTemp;
  28. unsigned char stringKeyActual[10];
  29.  
  30. void main(void)
  31. {
  32. unsigned char i;
  33. OSCCON=0x76;
  34. TRISD = 0x00;
  35. PORTD =0x00;
  36. TRISBbits.TRISB0=0;
  37. TRISBbits.TRISB1=0;
  38. TRISBbits.TRISB2=0;
  39. TRISBbits.TRISB4=0;
  40. TRISBbits.TRISB5=0;
  41. init_ADC();
  42. setup();
  43. lcd_init8();
  44.  
  45. lcd_setCursor (0,0);
  46. printf("Hello");
  47. lcd_setCursor(0,1);
  48. printf("measurement");
  49. delay (100);
  50. lcd_setCursor (0,0);
  51. printf("Digital");
  52. lcd_setCursor(0,1);
  53. printf("Termometer");
  54. delay (100);
  55. lcd_clear();
  56. HEATER = 0;
  57. FAN = 0;
  58. while(1)
  59. {
  60. ADCResult = 0;
  61. ActualTemp = (ADCResult*5.0)/10.24; //conver data into temperature (LM35 produces 10mV per degree celcius)
  62. sprintf (stringKeyActual, "%.2g", ActualTemp ); //comnvert voltage to string
  63. lcd_setCursor (0,0);
  64. printf("Temperature");
  65. lcd_setCursor(0,1);
  66. printf("C");
  67. }
  68. if (ActualTemp > 40)
  69. {
  70. LED3=1;
  71. FAN=1;
  72. }
  73.  
  74. if (ActualTemp < 41 && ActualTemp > 29)
  75. {
  76. LED2=1;
  77. FAN=1;
  78. }
  79.  
  80. if (ActualTemp < 30)
  81. {
  82. LED1=1;
  83. HEATER=1;
  84. }}
  85. void lcd_init8(void)
  86. {
  87. LCD_DATA_TRIS = 0;
  88. LCD_RS_TRIS = 0;
  89. LCD_E_TRIS = 0;
  90. lcd_cmd(0x38);
  91. lcd_cmd(0x0c);
  92. lcd_cmd(0x06);
  93. lcd_cmd(0x80); }
  94.  
  95. void putch (unsigned char data)
  96. {
  97. LCD_DATA = data;
  98. LCD_RS =1;
  99. LCD_E =1;
  100. delay (1);
  101. LCD_E = 0;}
  102.  
  103. void lcd_cmd(unsigned char data)
  104. {
  105. LCD_DATA = data;
  106. LCD_RS = 1;
  107. LCD_E =1;
  108. delay (1);
  109. LCD_E = 0;}
  110.  
  111. void lcd_setCursor (unsigned char col, unsigned char row);
  112. {
  113. lcd_cmd(row*0x40+col+0x80);
  114. delay (1);
  115. }
  116.  
  117. void lcd_clear(void)
  118. {
  119. lcd_cmd(0x01); delay(10);
  120. }
  121.  
  122. void setup (void)
  123. {
  124. ADCON1 = 0b00110000;
  125. ADCON2 = 0b100000011;
  126. LATA = 0x00;
  127. LATB = 0X00;
  128. LATC = 0x00;
  129. LATD = 0x00;
  130. LATE = 0x00;
  131. }
  132.  
  133. void delay (unsigned int x)
  134. {
  135. for (;x>0;x--)__delay_ms(1);
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement