اطلاعیه

Collapse
No announcement yet.

درخواست کمک درباره ارتباط sht15 با avr

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    درخواست کمک درباره ارتباط sht15 با avr

    با سلام به همه اساتید گرامی
    لطفا در مورد راه اندازی آی سی SHT15 به وسیله atmega32 من را یاری دهید :angry:
    البته اگر به زبان c و ترجیحا codevision باشد ممنون میشم.

    #2
    پاسخ : درخواست کمک درباره ارتباط sht15 با avr

    سلام من این برنامه رو خیلی وقت بود تو سیستمم داشتم ، زبانش بیسک امیدوارم که مفید واقع بشه

    برنامه مال من نیست راستش نمیدونم مال کجاست که منبع رو بزارم

    Dim Ctr AsByte
    Dim Dataword AsWord
    Dim Command AsByte
    Dim Dis AsString* 20

    Dim Calc AsSingle
    Dim Calc2 AsSingle
    Dim Rhlinear AsSingle
    Dim Rhlintemp AsSingle
    Dim Tempc AsSingle
    Dim Tempf AsSingle

    Const C1 =-4
    Const C2 = 0.0405
    Const C3 =-0.0000028
    Const T1c =.01
    Const T2 =.00008
    Const T1f =.018

    Sck AliasPortb.0
    Dataout AliasPortb.1
    Datain AliasPinb.1
    Redled AliasPortb.2

    DeclareSub Getit()

    Ddrb=&B11111111 'all port b are output
    ConfigPinb.0 =Output'sck
    ConfigPinb.1 =Output'datain

    'reset the serial communications first, it is easily confused!
    Set Dataout
    For Ctr = 1 To 12
    Set Sck
    Waitus 2
    Reset Sck
    Waitus 2
    Next Ctr


    Do'continually read the tempfature and humidity

    Command =&B00000011
    Call Getit 'Get the temperature, puts result in "dataword" for us
    '
    Tempf = T1f * Dataword
    Tempf = Tempf - 40

    Tempc = T1c * Dataword 'get celcius for later calculations and for "the rest of the world"
    Tempc = Tempc - 40

    Dis =Fusing(tempf ,"###.##&quot
    Print"Temperature = "; Dis ;" (F)"

    Command =&B00000101
    Call Getit 'get the humidity
    Calc = C2 * Dataword
    Calc2 = Dataword * Dataword 'that "2" in the datasheet sure looked like a footnote for a couple days, nope it means "squared"!
    Calc2 = C3 * Calc2
    Calc = Calc + C1
    Rhlinear = Calc + Calc2

    'Dis = Fusing(rhlinear , "##.##&quot
    'Print "Humidity adjusted for linear = " ; Dis


    Calc = T2 * Dataword
    Calc = Calc + T1c
    Calc2 = Tempc - 25
    Calc = Calc2 * Calc
    Rhlintemp = Calc + Rhlinear

    Dis =Fusing(rhlintemp ,"##.##&quot
    Print"Humidity adjusted for temperature = "; Dis
    Print

    Wait 1
    Loop


    Sub Getit()

    Local Datavalue AsWord
    Local Databyte AsByte

    'start with "transmission start"
    Set Sck
    Reset Dataout
    Reset Sck
    Set Sck
    Set Dataout
    Reset Sck


    'now send the command
    Shiftout Dataout , Sck , Command , 1

    Ddrb=&B11111101 'datain is now input
    ConfigPinb.1 =Input'datain
    Set Sck 'click one more off
    Reset Sck
    Waitus 10 'no idea why, but it doesn't work without it!
    BitwaitPinb.1 ,Reset'wait for the chip to have data ready

    Shiftin Datain , Sck , Databyte , 1 'get the MSB
    Datavalue = Databyte

    Ddrb=&B11111111
    ConfigPinb.1 =Output

    Reset Dataout 'this is the tricky part- Lot's of hair pulling- have to tick the ack!
    Set Sck
    Reset Sck

    Ddrb=&B11111101 'datain is now input
    ConfigPinb.1 =Input

    Shiftin Datain , Sck , Databyte , 1 'get the LSB
    Shift Datavalue ,Left, 8
    Datavalue = Datavalue Or Databyte
    'don't tick the clock or ack since we don't need the CRC value, leave it hanging!
    Dataword = Datavalue

    Ddrb=&B11111111
    ConfigPinb.1 =Output

    Reset Dataout
    Set Sck
    Reset Sck

    Ddrb=&B11111101 'datain is now input
    ConfigPinb.1 =Input

    Shiftin Datain , Sck , Databyte , 1 'not using the CRC value for now- can't figure it out! Anybody know how to impliment?
    'Print "CRC value was - " ; Databyte

    Ddrb=&B11111111
    ConfigPinb.1 =Output

    Set Dataout
    Set Sck
    Reset Sck
    EndSub

    End
    کمتر به سایت میام .....

    دیدگاه

    لطفا صبر کنید...
    X