ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 3 از 3
  1. #1
    2017/09/08
    2
    0

    سنسور دما ds18b20 در برنامه mikroc pic

    سلام . یه برنامه داخل لایبراری خود برنامه میکرو سی پیک هست در مورد سنسور 18b20
    برنامه فقط یه کاراکتر دما رو روی 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);
     }
    }
    ویرایش توسط yoshig353 : 2020/09/14 در ساعت 19:47
  2. #2
    2016/05/25
    735
    616

    پاسخ : سنسور دما ds18b20 در برنامه mikroc pic

    نقل قول نوشته اصلی توسط yoshig353

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام . یه برنامه داخل لایبراری خود برنامه میکرو سی پیک هست در مورد سنسور 18b20
    برنامه فقط یه کاراکتر دما رو روی 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);
     }
    }
    من با picکار نکردم ولی متغیر temp ر اینجا همون متغیر دما تبدیل شده به کارکتر هست.که در سطر دوم ستون 4ال سی دی نمایش میده.شما میتونید کارکتر را به مقدار دسیمال برگردانید.در اینجا مقدارtempراازمتغیرraw_tempبدست اوره.که احتمالا همین متغیر بادی همون دماباشه
    ویرایش توسط Namvar14 : 2020/09/14 در ساعت 21:22
    eshop-hodhod.ir
  3. #3
    2017/09/08
    2
    0

    پاسخ : سنسور دما ds18b20 در برنامه mikroc pic

    من از این متغیرraw_temp استفاده کردم هیچ داده ای نداره

    دلیل: ادغام دو پست برای جلوگیری از اسپم

    با این کار درست شد تبدیل به دسیمال کردم
    dis=temp2;
    raw[0] = (dis/ 1000)%10+ 48;
    raw[1] = (dis/ 100)%10+ 48;
    raw[3] = (dis/ 10)%10+ 48;
    raw[4] = dis%10+ 48;

    temp2=atoi(temp)
    lcd_out(1, 1,raw);
    ولی فقط میتونم عدد صحیح رو دریافت کنم . قسمت اعشار رو ندارم


    ویرایش توسط yoshig353 : 2020/09/14 در ساعت 23:03
نمایش نتایج: از 1 به 3 از 3

موضوعات مشابه

  1. سوال در دستورات برنامه بیسیک سنسور دمای DS18B20
    توسط امیر مسعود مقدم در انجمن ماژول و سنسورهای دما و رطوبت
    پاسخ: 0
    آخرين نوشته: 2017/12/14, 20:58
  2. کار با سنسور ds18b20 + میکرو dspic30f6014a + کامپایلر mikroc
    توسط majid.zarei.al در انجمن میکروکنترلرهای PIC
    پاسخ: 0
    آخرين نوشته: 2017/04/28, 12:13
  3. درخواست برنامه سنسور دما ds18b20
    توسط m_sadegh در انجمن ابزار دقیق
    پاسخ: 7
    آخرين نوشته: 2015/07/28, 19:27
  4. راه اندازی 2 سنسور smt160 و 2 سنسور ds18b20
    توسط 86332050 در انجمن میکروکنترلرهای AVR
    پاسخ: 17
    آخرين نوشته: 2015/05/06, 00:00
  5. رفع خطا در سنسور ds18b20
    توسط Ekf2000 در انجمن سنسورها
    پاسخ: 0
    آخرين نوشته: 2015/02/26, 22:30

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •