PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 19-08-2016, 01:28 PM   #3
dung07d6
Nhập môn đệ tử
 
Tham gia ngày: Sep 2010
Bài gửi: 1
:
Giao tiếp ds18b20 với pic16f877a hiển thị ra led 7 đoạn

Nhờ các cao thủ chỉ giáo cho, không biết code sai ở đoạn nào. Khi mô phỏng thì led không có hiện tượng gì.
//=========================================

#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP,NOCPD, NOWRT
#use delay(clock=8m)
#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bi ts=9)
#use i2c(Master,Fast,sda=PIN_B1,scl=PIN_B4)
#define DS18B20_PIN RA4
#define DS18B20_SKIP_ROM 0xCC
#define DS18B20_CONVERT_T 0x44
#define DS18B20_READ_SCRATCH_PAD 0xBE
#define led1 RB1
#define led2 RB2
#define led3 RB3

//------------------------------------------------------------------------------------
void DS18B20_RESET()
{
output_low(DS18B20_PIN);
delay_us(500);

output_float(DS18B20_PIN);
delay_us(500);

output_float(DS18B20_PIN);
}

//------------------------------------------------------------------------------------

void DS18B20_write_byte(unsigned char data)
{
unsigned char i = 8;
while(i--)
{
output_low(DS18B20_PIN);
delay_us(2);

output_bit(DS18B20_PIN, shift_right(&data, 1, 0));
delay_us( 60 );

output_float(DS18B20_PIN);
delay_us( 2 );
}
}

//------------------------------------------------------------------------------------

FLOAT DS18B20_READ_BYTE()
{
unsigned char data, i=8;
while(i--)
{
output_low(DS18B20_PIN);
delay_us(2);

output_float(DS18B20_PIN);
delay_us(8);

shift_right(&data, 1, input(DS18B20_PIN));
delay_us(120);
}
return data;
}

//------------------------------------------------------------------------------------
float ds18b20_read()
{
int8 busy, temp1, temp2;
int16 temp3;
float result;

while(1)
{
DS18B20_RESET();
DS18B20_write_byte(0xCC) ;
DS18B20_write_byte(0x44);

while(busy==0)
busy=DS18B20_READ_BYTE();

DS18B20_RESET();
DS18B20_write_byte(0xCC) ;
DS18B20_write_byte(0xBE);

temp1=DS18B20_READ_BYTE();
temp2=DS18B20_READ_BYTE();
temp3=make16(temp2,temp1);

delay_ms(200);
}
return temp3;
}
//------------------------------------------------------------------------------------

void main()
{
int16 nhiet_do;
unsigned char int_part, decimal_part, HC, HDV;
unsigned char ma7doan[10]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};

while(1)
{
nhiet_do=ds18b20_read();
int_part=nhiet_do>>4;
HC=int_part/10;
HDV=nhiet_do%10;

decimal_part=(nhiet_do&0x000f);
decimal_part=decimal_part*10/16;

output_high(RB1);
output_C(ma7doan[HC]);
delay_ms(2);
output_low(RB1);


output_high(RB2);
output_C(ma7doan[HDV]);
delay_ms(2);
output_low(RB2);

output_high(RB3);
output_C(ma7doan[decimal_part]);
delay_ms(2);
output_low(RB3);

}
}
dung07d6 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 05:59 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam