Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.20 KB | None | 0 0
  1. #include <string.h>
  2.  
  3. // Conexões do LCD
  4. sbit LCD_RS at RB4_bit;
  5. sbit LCD_EN at RB5_bit;
  6. sbit LCD_D4 at RB0_bit;
  7. sbit LCD_D5 at RB1_bit;
  8. sbit LCD_D6 at RB2_bit;
  9. sbit LCD_D7 at RB3_bit;
  10. sbit LCD_RS_Direction at TRISB4_bit;
  11. sbit LCD_EN_Direction at TRISB5_bit;
  12. sbit LCD_D4_Direction at TRISB0_bit;
  13. sbit LCD_D5_Direction at TRISB1_bit;
  14. sbit LCD_D6_Direction at TRISB2_bit;
  15. sbit LCD_D7_Direction at TRISB3_bit;
  16.  
  17. // Caracteres Especiais
  18. const char character0[] = {0,7,5,7,0,0,0,0};
  19.  
  20. void grau(char pos_row, char pos_char) {
  21. char i;
  22. Lcd_Cmd(64);
  23. for (i = 0; i<=7; i++) Lcd_Chr_CP(character0[i]);
  24. Lcd_Cmd(_LCD_RETURN_HOME);
  25. Lcd_Chr(pos_row, pos_char, 0);
  26. }
  27.  
  28. const char character[] = {0,0,14,17,17,10,27,0};
  29.  
  30. void ohm(char pos_row, char pos_char) {
  31. char i;
  32. Lcd_Cmd(72);
  33. for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]);
  34. Lcd_Cmd(_LCD_RETURN_HOME);
  35. Lcd_Chr(pos_row, pos_char, 1);
  36. }
  37. // Criação de variáveis
  38. unsigned temperatura; // Leitura do ADC para temperatura
  39. unsigned voltagem; // Leitura do ADC para voltagem (tensão)
  40. unsigned amperagem; // Leitura do ADC para amperagem (corrente)
  41. unsigned resistencia; // Leitura do ADC para resistência
  42.  
  43. float temp;
  44. float volt;
  45. float amp;
  46. float res;
  47. char txt[50];
  48. char tela_temp[3];
  49. char tela_volt[6];
  50. char tela_amp[6];
  51. char tela_res[5];
  52.  
  53.  
  54. void main() {
  55. TRISA = 0b00001111; // Configuração do portA - bit 0 a 3 como entradas e as demais saída
  56. ANCON0 = 0b00001111; // Configuração RE0 (5) temp; RA5 (4) volt como analógicos
  57. PORTA = 0; // Limpa a portA
  58.  
  59. // Limpeza de variáveis e inicialização de processos
  60. temperatura=0;
  61. voltagem=0;
  62. amperagem=0;
  63. resistencia=0;
  64. temp=0;
  65. volt=0;
  66. amp=0;
  67. res=0;
  68.  
  69. LCD_Init(); // Inicialização do LCD
  70. ADC_Init(); // Inicialização ADC
  71. Lcd_Cmd(_LCD_CLEAR); // limpa o Display
  72. Lcd_Cmd(_LCD_CURSOR_OFF); // Desliga o Cursor
  73.  
  74. // Loop Infinito
  75. while (1) {
  76. temperatura = ADC_Read(3); // Faz a aquisição dos dados do sensor de temperatura
  77. temp = temperatura*0.1221; // 5/(4095*0,01)
  78. voltagem = ADC_Read(1);
  79. volt=voltagem*0.001221; // 5/4095
  80. amperagem = ADC_Read(0);
  81. amp = amperagem*0.001221; // 5/4095 - res de 1ohm
  82. resistencia = ADC_Read(2);
  83. res=resistencia*0.001221; // 5/4095
  84. res=(50/res)-10;
  85.  
  86. FloatToStr(temp,txt);
  87. strncpy(tela_temp,txt, 2);
  88. Lcd_out(1,1,"T=");
  89. Lcd_out(1,3,tela_temp);
  90. grau(1,5);
  91. Lcd_out(1,6,"C V=");
  92. delay_ms(100);
  93.  
  94. FloatToStr(volt,txt);
  95. strncpy(tela_volt, txt, 5);
  96. Lcd_out(1,10,tela_volt);
  97. Lcd_out(1,15,"V ");
  98. delay_ms(100);
  99.  
  100. FloatToStr(amp,txt);
  101. strncpy(tela_amp, txt, 5);
  102. Lcd_out(2,1,"I=");
  103. Lcd_out(2,3,tela_amp);
  104. Lcd_out(2,8,"A R=");
  105. delay_ms(100);
  106.  
  107. FloatToStr(res,txt);
  108. strncpy(tela_res, txt, 4);
  109. Lcd_out(2,12,tela_res);
  110. ohm(2,16);
  111. delay_ms(100);
  112. };
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement