سلام . یه برنامه داخل لایبراری خود برنامه میکرو سی پیک هست در مورد سنسور 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); } }
دیدگاه