سلام . یه برنامه داخل لایبراری خود برنامه میکرو سی پیک هست در مورد سنسور 18b20
برنامه فقط یه کاراکتر دما رو روی lcd نشون میده . من میخوام از یه متغیر دما استفاده کنم . ولی متوجه نشدم دقیقا این متغیر کجاست که بشه ازش استفاده کرد برای مقایسه دمایی استفاده کنم مثل ترموستات
برنامه فقط یه کاراکتر دما رو روی lcd نشون میده . من میخوام از یه متغیر دما استفاده کنم . ولی متوجه نشدم دقیقا این متغیر کجاست که بشه ازش استفاده کرد برای مقایسه دمایی استفاده کنم مثل ترموستات
کد:
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
int raw_temp;
char *temp = "000.0 C";
void main() {
TRISB=0XFF;
TRISC=0;
ADCON0=0;
ADCON1=0;
Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_CLEAR);
while(1) {
Ow_Reset(&PORTC, 1);
Ow_Write(&PORTC, 1, 0xCC);
Ow_Write(&PORTC, 1, 0x44);
while(Ow_Read(&PORTC, 1) == 0) ;
Ow_Reset(&PORTC, 1);
Ow_Write(&PORTC, 1, 0xCC);
Ow_Write(&PORTC, 1, 0xBE);
raw_temp = Ow_Read(&PORTC, 1);
raw_temp |= (Ow_Read(&PORTC, 1) << 8);
if(raw_temp & 0x8000) {
temp[0] = '-';
raw_temp = ~raw_temp + 1;
}
else {
if((raw_temp >> 4) >= 100)
temp[0] = '1';
else
temp[0] = ' ';
}
temp[1] = ( (raw_temp >> 4) / 10 ) % 10 + 48;
temp[2] = (raw_temp >> 4) % 10 + 48;
temp[4] = ( (raw_temp & 0x0F) * 625) / 1000 + 48;
temp[8] = 223;
lcd_out(2, 4, temp);
delay_ms(1000);
}
}



دیدگاه