Thai microtron community

Electronic Knowledge Base => Microcontoller & Electronics => Topic started by: aekk on September 06, 2011, 11:53:25 PM



Title: ขอ Code pic 16f877a ติดต่อกับds1820 เเสดงผล 7 segment
Post by: aekk on September 06, 2011, 11:53:25 PM
ขอ Code pic 16f877a ติดต่อกับds1820 เเสดงผล 7 segmentสองหลักครับ ใช้ ccsนะครับ คือผมต้องการใช้ สวิตสามตัวเพื่อ up;down;settingครับ เพื่อที่จะให้เซ็ตค่าอุณหภูมิได้เป็นช่วงๆๆครับ ขอคำเเนะนำครับ


Title: Re: ขอ Code pic 16f877a ติดต่อกับds1820 เเสดงผล 7 segment
Post by: gundam on September 07, 2011, 09:09:04 AM
ผมก็ขอแนะนำคล้ายๆ กระทู้ก่อนน่านี้สำหรับหลักการทำงานนะครับ

แยกโปรแกรมการทำงานเป็น 2 ส่วน
- ส่วนแรกก็แสดงผลออก 7Seg

- ส่วนที่สองก็รับข้อมูลจาก ds1820 แล้วแสดงผลที่รับได้ออกพอร์ตอนุกรม ให้แสดงผลไปยัง PC โดยใช้โปรแกรม พวก Hyperterminal
อ่านปุ่มกด up;down เพื่อ setting

แล้วค่อยนำผลที่ได้ออก 7Seg


Title: Re: ขอ Code pic 16f877a ติดต่อกับds1820 เเสดงผล 7 segment
Post by: MicroX on September 07, 2011, 09:32:11 AM
นี่เป็นตัวอย่างการใช้งาน DS 1820 ของหนังสือ PIC Works หน้า 274 ของ Appsofttech ยังไม่มีก็ไปหาซื้อนะครับ เล่มนี้ดีมากเลย


#include <16F877A.h>              // header file for PIC16F877A
#fuses HS,NOWDT,NOPROTECT,NOLVP   // Configuration word
#use delay(clock=20000000)        // Change OSC here (default 20MHz)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)  // Serial port

#include "touch.c"                // Module function for 1-wire bus          (1)


/************************************************************ ReadTemp_DS1820 */
//Description : Read Temperature (use RB0 read temp)
void ReadTemp_DS1820(void)
{
    byte i, buffer[9];

    if (touch_present()) {         // get present (reset)                    (2)
        touch_write_byte(0xCC);    // Skip ROM                               (3)
        touch_write_byte (0x44);   // Start Conversion
        delay_ms(200);             // delay 200 ms                           (4)
        touch_present();           // get present (reset)                    (5)
        touch_write_byte(0xCC);    // Skip ROM                               (6)
        touch_write_byte (0xBE);   // Read Scratch Pad

        for(i=0; i<9;i++)          // read 9 bytes                           (7)
            buffer = touch_read_byte();
    }
    printf ("\r\nTemperature: %c%3.2f C", (buffer[1])?'-':' ', //            ( 8 )
            (float)buffer[0]/2);
}

/************************************************************* Main Functions */
void main(void)
{
    while (TRUE) {
        ReadTemp_DS1820();
        delay_ms(1000);
    }
}
/*************************** End of $Workfile: $ ******************************/



ส่วน  "touch.c"  เป็น Driver ของ CCS  จะอยู่ใน C:\Program Files\PCWH v4.084\Drivers\



Title: Re: ขอ Code pic 16f877a ติดต่อกับds1820 เเสดงผล 7 segment
Post by: aekk on September 10, 2011, 12:12:31 AM
พี่ๆๆครับโทษทีนะครับผมมือใหม่มากๆๆครับ ผมพยยายามให้ ds1280 เเสดงผลออกsegmentไม่ได้สักทีอะครับ รบกวนขอcode หรือ เเนวทางด้วยครับ


Title: Re: ขอ Code pic 16f877a ติดต่อกับds1820 เเสดงผล 7 segment
Post by: s_engine on September 10, 2011, 02:15:34 PM
ด้านบนเลย ครับ
ทั้ง877a และ ds1820
ต่อเข้า คอมพิวเตอร์ แสดงผลทาง hiper terminal

sim เอาก็ได้ครับ
proteus ใช้ดีครับ


Title: Re: ขอ Code pic 16f877a ติดต่อกับds1820 เเสดงผล 7 segment
Post by: aekk on September 10, 2011, 05:33:42 PM
ช่วยด้วยครับ ผมพยายามหลายๆๆรอบเเล้วครับ ส่งค่า ds1820 ออก segment ขอCode หรือเเนวทางครับ ???


Title: Re: ขอ Code pic 16f877a ติดต่อกับds1820 เเสดงผล 7 segment
Post by: s_engine on September 17, 2011, 09:09:14 AM
(http://ccspic.com/wp-content/uploads/2008/05/ds18s20.JPG)


http://ccspic.com/projeler/ds18b20-ve-ds1302-ile-lcd-termometre-saat.html (http://ccspic.com/projeler/ds18b20-ve-ds1302-ile-lcd-termometre-saat.html)