Pages: [1]   Go Down
Print
Author Topic: ขอ Code pic 16f877a ติดต่อกับds1820 เเสดงผล 7 segment  (Read 11339 times)
0 Members and 1 Guest are viewing this topic.
aekk
มาใหม่
*
Offline Offline

Posts: 3


Email
« on: September 06, 2011, 11:53:25 PM »

ขอ Code pic 16f877a ติดต่อกับds1820 เเสดงผล 7 segmentสองหลักครับ ใช้ ccsนะครับ คือผมต้องการใช้ สวิตสามตัวเพื่อ up;down;settingครับ เพื่อที่จะให้เซ็ตค่าอุณหภูมิได้เป็นช่วงๆๆครับ ขอคำเเนะนำครับ
Logged
gundam
Global Moderator
Hero Member
*****
Offline Offline

Posts: 292



« Reply #1 on: September 07, 2011, 09:09:04 AM »

ผมก็ขอแนะนำคล้ายๆ กระทู้ก่อนน่านี้สำหรับหลักการทำงานนะครับ

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

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

แล้วค่อยนำผลที่ได้ออก 7Seg
Logged
MicroX
Global Moderator
Full Member
*****
Offline Offline

Posts: 103


Senior


Email
« Reply #2 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\

Logged
aekk
มาใหม่
*
Offline Offline

Posts: 3


Email
« Reply #3 on: September 10, 2011, 12:12:31 AM »

พี่ๆๆครับโทษทีนะครับผมมือใหม่มากๆๆครับ ผมพยยายามให้ ds1280 เเสดงผลออกsegmentไม่ได้สักทีอะครับ รบกวนขอcode หรือ เเนวทางด้วยครับ
Logged
s_engine
Sr. Member
****
Offline Offline

Posts: 187


« Reply #4 on: September 10, 2011, 02:15:34 PM »

ด้านบนเลย ครับ
ทั้ง877a และ ds1820
ต่อเข้า คอมพิวเตอร์ แสดงผลทาง hiper terminal

sim เอาก็ได้ครับ
proteus ใช้ดีครับ
Logged
aekk
มาใหม่
*
Offline Offline

Posts: 3


Email
« Reply #5 on: September 10, 2011, 05:33:42 PM »

ช่วยด้วยครับ ผมพยายามหลายๆๆรอบเเล้วครับ ส่งค่า ds1820 ออก segment ขอCode หรือเเนวทางครับ Huh
Logged
s_engine
Sr. Member
****
Offline Offline

Posts: 187


« Reply #6 on: September 17, 2011, 09:09:14 AM »




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


Logged
Pages: [1]   Go Up
Print
 
Jump to: