Mäta temperaturen med en LM35 (2 / 3 steg)
Steg 2: Koden...
Så nedan är koden, som kommer att göra projektet arbeta:
LCD modul anslutningar
sbit LCD_RS på RA0_bit;
sbit LCD_EN på RA1_bit; sbit LCD_EN på RB3_bit;
sbit LCD_D4 på RB4_bit;
sbit LCD_D5 på RB5_bit;
sbit LCD_D6 på RB6_bit;
sbit LCD_D7 på RB7_bit;
sbit LCD_RS_Direction på TRISA0_bit;
sbit LCD_EN_Direction på TRISA1_bit; sbit LCD_EN_Direction på TRISB3_bit;
sbit LCD_D4_Direction på TRISB4_bit;
sbit LCD_D5_Direction på TRISB5_bit;
sbit LCD_D6_Direction på TRISB6_bit;
sbit LCD_D7_Direction på TRISB7_bit;
char LCDTXT [] = "Salvo [FINIS]";
char LCDMSG [] = "Data";
char uart_rd;
osignerad kort new_DC, current_DC;
lång ADC_Value = 0;
unsigned int adc_rd;
unsigned char ch;
char * temp = "0000";
int jag = 0;
lång tlong;
/*
Konfigurerar systemet värden för start
*/
void TempDisplay()
{
adc_value = ADC_Read(4);
adc_value = (långa) adc_value * 5000;
adc_value = adc_value / 1023;
Temp [0] = adc_value/1000 + 48.
Temp [1] = (adc_value/100)%10 + 48.
Temp [2] = (adc_value/10)%10 + 48.
Temp [3] = adc_value % 10 + 48.
Lcd_Out(2,1,"Temp:");
Lcd_Out(2,7,temp);
Delay_ms(20);
}
void IOConfig()
{
Inaktivera Analog
ANSELA = 0X08;
ANSELB = 0X0;
Portar
TRISB = 0XF8;
TRISA = 0X10;
PIC16F1827 har två capture jämföra moduler och båda måste inaktiveras
CCP1CON = 0X0;
CCP2CON = 0X0;
INTCON = 0; Inaktivera alla avbrott
CPSCON0 = 0;
ADCON0 = 0X10;
CM1CON0 = 0X0;
}
void LCDConfig()
{
Lcd_Init(); Initiera LCD
Lcd_Cmd(_LCD_CLEAR); Tydlig display
Lcd_Cmd(_LCD_CURSOR_OFF); Markören bort
Lcd_Out(1,1,LCDTXT); Skriva text i första raden
}
void main () {
IOConfig();
LCDConfig();
While(1)
{
LED(); Testsignalen display
TempDisplay();
}
}