NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3949 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 1 از 1

موضوع: کمک برای پروژه با سنسور ds18b20

  1. #1
    کاربر فعال sky_man847 آواتار ها
    تاریخ عضویت
    Apr 2012
    نام
    محمد
    نوشته ها
    310
    تشکر
    270
    تشکر شده 269 بار در 147 پست

    پیش فرض کمک برای پروژه با سنسور ds18b20

    با سلام دوستان من دنبال پروژه ترموستات با 7سگمنت بودم که توی سایت خارجی با این مدار برخورد کردم میتونین کمکی کنید یه مداری به این شکل با avr atmegaساخت من برنامش رو هم میزارم به زبان اسمبلی فک کنم مداز جالبیه





    [HTML][PHP]#include<reg52.h>
    #include<stdio.h>
    #define uchar unsigned char
    #define uint unsigned int
    sbit ds=P2^2; //ζȴ«¸ÐÆ÷ÐźÅÏß
    sbit d1=P2^4; //ÉÏÏÞָʾµÆ
    sbit d2=P2^5; //ÔÊÐíָʾµÆ
    sbit d3=P2^6; //ÏÂÏÞָʾµÆ
    sbit d4=P1^6; //ÉÏÏÞÉèÖÃָʾµÆ
    sbit d5=P1^7; //ÏÂÏÞÉèÖÃָʾµÆ
    sbit s1=P1^0; //ÉÏÏÂÏÞÉèÖü°²é¿´¼ü¼ü
    sbit s2=P1^1; //Ôö´ó¼ü
    sbit s3=P1^2; //¼õС¼ü



    uint temp,low,high,i,m,n,t;
    float f_temp;
    uchar shi,ge,xiao,s1num,a,ashi,age,b,c;
    unsigned char code table0[]={
    0xfd,0x61,0xdb,0xf3,
    0x67,0xb7,0xbf,0xe1,
    0xff,0xf7}; //СÊý±àÂë
    unsigned char code table1[]={
    0xfc,0x60,0xda,0xf2,
    0x66,0xb6,0xbe,0xe0,
    0xfe,0xf6}; //ÕûÊý±àÂë
    void chushihua() //³õʼ»¯º¯Êý
    {
    a=1;
    b=0;
    c=0;
    low=5;
    high=30;
    }
    void delay(uint z) //ÑÓʱº¯Êý
    {
    uint x,y;
    for(x=z;x>0;x--)
    for(y=110;y>0;y--);
    }
    void dsreset(void) //18B20¸´Î»£¬³õʼ»¯º¯Êý
    {
    uint i;
    ds=0;
    i=103;
    while(i>0)i--;
    ds=1;
    i=4;
    while(i>0)i--;
    }

    bit tempreadbit(void) //¶Á1λº¯Êý
    {
    uint i;
    bit dat;
    ds=0;i++; //i++ ÆðÑÓʱ×÷ÓÃ
    ds=1;i++;i++;
    dat=ds;
    i=8;while(i>0)i--;
    return (dat);
    }

    uchar tempread(void) //¶Á1¸ö×Ö½Ú
    {
    uchar i,j,dat;
    dat=0;
    for(i=1;i<=8;i++)
    {
    j=tempreadbit();
    dat=(j<<7)|(dat>>1); //¶Á³öµÄÊý¾Ý×îµÍλÔÚ×îÇ°Ãæ£ ¬ÕâÑù¸ÕºÃÒ»¸ö×Ö½ÚÔÚDATÀï
    }
    return(dat);
    }

    void tempwritebyte(uchar dat) //Ïò18B20дһ¸ö×Ö½ÚÊý¾Ý
    {
    uint i;
    uchar j;
    bit testb;
    for(j=1;j<=8;j++)
    {
    testb=dat&0x01;
    dat=dat>>1;
    if(testb) //д 1
    {
    ds=0;
    i++;i++;
    ds=1;
    i=8;while(i>0)i--;
    }
    else
    {
    ds=0; //д 0
    i=8;while(i>0)i--;
    ds=1;
    i++;i++;
    }

    }
    }

    void tempchange(void) //DS18B20 ¿ªÊ¼»ñȡζȲ¢×ª»»
    {
    dsreset();
    delay(1);
    tempwritebyte(0xcc); // дÌø¹ý¶ÁROMÖ¸Áî
    tempwritebyte(0x44); // дζÈת»»Ö¸Áî
    }

    uint get_temp() //¶ÁÈ¡¼Ä´æÆ÷Öд洢µÄζÈÊý¾ Ý
    {
    uchar a,b;

    dsreset();
    delay(1);
    tempwritebyte(0xcc);
    tempwritebyte(0xbe);
    a=tempread(); //¶ÁµÍ8λ
    b=tempread(); //¶Á¸ß8λ
    temp=b;
    temp<<=8; //Á½¸ö×Ö½Ú×éºÏΪ1¸ö×Ö
    temp=temp|a;
    f_temp=temp*0.0625; //ζÈÔڼĴæÆ÷ÖÐΪ12λ ·Ö±æÂÊλ0.0625¡ã
    temp=f_temp*10+0.5; //³ËÒÔ10±íʾСÊýµãºóÃæֻȡ1Î £¬¼Ó0.5ÊÇËÄÉáÎåÈë
    f_temp=f_temp+0.05;
    return temp; //tempÊÇÕûÐÍ
    }
    void deal() //ζȿØÖÆ´¦Àí×Ó³ÌÐò
    {


    if((t>m)&&(t<=n)) //СÓÚÉÏÏÞÖµ£¬´óÓÚÏÂÏÞÖµ
    {
    d2=0;
    d1=1;
    d3=1;


    }

    else if(t<=m) //СÓÚÏÂÏßÖ±½Ó
    {
    d3=0;
    d1=1;
    d2=1;

    }
    else //´óÓÚÉÏÏÞÖµ
    {
    d1=0;
    d2=1;
    d3=1;



    }
    }

    void display(uint k) //ζÈÏÔʾ×Ó³ÌÐò
    {
    shi=k/100;
    ge=k%100/10;
    xiao=k%100%10;

    P3=0xfb;
    P0=table1[shi];
    delay(1);

    P3=0xfd;
    P0=table0[ge];
    delay(1);

    P3=0xfe;
    P0=table1[xiao];
    delay(1);



    }
    void display1(uint m) //ζÈÉÏÏÂÏÞÉèÖÃÏÔʾ×Ó³ÌÐò
    {
    ashi=m/10;
    age=m%10;


    P3=0xfb;
    P0=table1[ashi];
    delay(1);

    P3=0xfd;
    P0=table1[age];
    delay(1);




    }
    void keyscan() //¼üÅÌɨÃè×Ó³ÌÐò
    {
    if(s1==0) //¼ì²âS1
    {
    delay(5);
    if(s1==0)
    {
    s1num++; //¼Ç¼°´Ï´ÎÊý


    while(!s1);
    a=0;
    switch(s1num)
    { //ÉÏÏÂÏÞÖµÉ趨¶¨Î»
    case 1: d5=0;
    d4=1;
    a=0;
    b=1;
    break;
    case 2: d4=0;
    d5=1;
    c=1;
    b=0;
    break;

    case 3: s1num=0;

    d4=1;
    d5=1;
    b=0;
    c=0;
    a=1;
    m=low*10;
    n=high*10;



    break;
    }
    }
    }
    if(s1num!=0) //Ö»Óе±S1°´Ïº󣬲żì²âS2ºÍS3
    {
    if(s2==0)
    {
    delay(1);
    if(s2==0)
    {
    while(!s2);
    b=0;
    c=0;
    switch(s1num)
    { //¸ù¾Ý¹¦Äܼü´ÎÊýµ÷½ÚÏàÓ¦ÊýÖ µ
    case 1: low++;
    if(low==99)
    low=0;

    b=1;


    break;
    case 2: high++;
    if(high==99)
    high=0;

    c=1;
    break;


    }
    }
    }
    if(s3==0)
    {
    delay(1);
    if(s3==0)
    {
    while(!s3);
    b=0;
    c=0;
    switch(s1num)
    { //¸ù¾Ý¹¦Äܼü´ÎÊýµ÷½ÚÏàÓ¦ÊýÖ µ
    case 1: low--;
    if(low==0)
    low=99;

    b=1;


    break;
    case 2: high--;
    if(high==0)
    high=99;

    c=1;
    break;


    }
    }
    }
    }

    }


    void main()
    {
    chushihua(); //³õʼ»¯º¯Êý
    while(1)
    {

    keyscan();
    if(b==1)
    {
    display1(low);
    }
    if(c==1)
    {
    display1(high);
    }
    if(a==1)
    {
    tempchange();
    display(get_temp());
    t=get_temp();
    delay(5);
    deal();

    }
    if(a==0)
    {
    d1=1;
    d2=1;
    d3=1;
    }

    }
    } [/PHP][/HTML]

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

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

  1. راهنمایی در مورد سنسور DS18B20
    توسط naeemafar در انجمن AVR
    پاسخ: 16
    آخرين نوشته: 24-03-2017, 02:32
  2. ds18b20+بسکام
    توسط ROBOMAN در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 30-11-2015, 01:17
  3. Ds18b20
    توسط ANGEL در انجمن AVR
    پاسخ: 0
    آخرين نوشته: 06-09-2013, 03:06
  4. مشکل عجیب با سنسور ds18b20
    توسط علیدلی در انجمن AVR
    پاسخ: 10
    آخرين نوشته: 07-08-2013, 20:06
  5. سنسور ds18b20
    توسط bascom2 در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 18-07-2013, 23:04

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

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