1) 지식 창고는 본인이 작성한 콘텐츠(팁/노하우/리소스/강좌 등)을 무료 혹은 가상화폐인 납포인트를 통해 공유하는 공간입니다.
2) 본인이 작성한 콘텐츠에 대해서만 지식 창고에 등록할 수 있으며, 저작권에 위배되는 콘텐츠는 사전경고 없이 삭제될 수 있습니다.
3) 콘텐츠 구매 및 첨부파일 다운로드는 회원그룹 '연구원' 이상 가능하오니, 경험치를 쌓아 진급한 후에 이용 부탁드립니다.
4) 무료 콘텐츠의 본문은 구매절차 없이 즉시 이용할 수 있으며, 판매 납포인트가 있는 콘텐츠는 구매 후 이용할 수 있습니다.
5) 콘텐츠 판매에 따른 납포인트 수익은 지정한 비율(50%)에 따라 판매자에게 지급하며, 납포인트 수익을 통해 진급을 빨리할 수 있습니다.
6) 구매 후 평가를 하면 구매 납포인트의 20%를 돌려 드립니다.
판매자 | 킬유21 | 판매 납포인트 | 무료 | 평점 | 0점 / 총 0명 참여 |
---|
/****************************************************************************** * File : Temperature sensor PIC18F2550 vs LM75 * Purpose : Temperature sensor circuit * Author : Uten Boonliam * E - mail : uten_kmitl@hotmail.com * Complier : CCS.PCWH.v4.016 * Website : http://uten-microcontroller.bloggang.com *****************************************************************************/ #include <18F2550.h> #define TxD PIN_C6 // Define Transmitted Data #define RxD PIN_C7 // Define Received Data #define I2C_SDA PIN_B0 // I2C SDA #define I2C_SCL PIN_B1 // I2C SCL #define Digit_1 PIN_A4 // Segment 1 #define Digit_2 PIN_A5 // Segment 2 #define CLOCK_SP 20000000 // Clock Speed(Hz) // Device Specification #fuses HS // Oscillator mode HS #fuses NOLVP, NOWDT // No Low Voltage Program, No Watchdog timer #fuses NOPROTECT // Code no protection #use delay (clock=CLOCK_SP) // Use built-in function: delay_ms() & delay_us() #use rs232(baud=9600, xmit=TxD,rcv=RxD) // Use serial I/O port (RS232) #use I2C(master,sda=I2C_SDA,scl=I2C_SCL) /*********************************************************************** * Constants ***********************************************************************/ #define LM75_ID 0b10010000 // 010010000, LM75:000 Slave Address (bit1-bit3) char secment_digit[10] = { 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9 }; /******************************************************************************* * Function prototypes ********************************************************************************/ int LM75_Read(void); void LM75_Write(int dat); void Display_segm(int dat); /*********************************************************************** * FUNCTION: LM75_Read * DESCRIPTION: LM75_Read * PARAMETERS: nothing * RETURNED: integer ***********************************************************************/ int LM75_Read(void){ int inData; i2c_start(); // Send I2C Start Transfer i2c_write(LM75_ID+1); // Send identifier I2C address - Read inData = i2c_read(); // Read data , Not ACK i2c_stop(); // Send I2C Stop Transfer //inData = 26; //#debug return(inData); } /*********************************************************************** * FUNCTION: LM75_Write * DESCRIPTION: LM75_Write * PARAMETERS: int dat * RETURNED: nothing ***********************************************************************/ void LM75_Write(int dat) { i2c_start(); // Send I2C Start Transfer i2c_write(LM75_ID); // Send identifier I2C address - Write i2c_write(dat); // Send data i2c_stop(); // Send I2C Stop Transfer } /*********************************************************************** * FUNCTION: Display_segm * DESCRIPTION: LM75_Write * PARAMETERS: int dat * RETURNED: nothing ***********************************************************************/ void Display_segm(int dat) { int i2,n2,n1; n2 = dat / 10; i2 = n2 * 10; n1 = dat - i2; output_a(secment_digit[n2]); output_low(Digit_2); delay_ms(200); output_high(Digit_2); output_a(secment_digit[n1]); output_low(Digit_1); delay_ms(200); output_high(Digit_1); } /*********************************************************************** * FUNCTION: Main * DESCRIPTION: This is the main entry point for the program. * PARAMETERS: nothing * RETURNED: nothing ***********************************************************************/ void main(void) { int OutData, InData; set_tris_b(0B00000000); //All port are Output output_high(Digit_1); output_high(Digit_2); while(TRUE){ OutData = LM75_Read(); printf("Temperature = %dnr",OutData); Display_segm(OutData); } }