PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

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

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 08-07-2014, 12:18 AM   #1
pitpro09
Nhập môn đệ tử
 
Tham gia ngày: Jun 2014
Bài gửi: 3
:
PIC16F877A và LM 35 nhờ giúp đở

Hiện tại em đang làm cái mạch điều khiển tắt mở thiết bị bằng VB6 dựa vào nhiệt độ đo được. Mọi thứ chạy ok chỉ tội PIC không đo đúng nhiệt độ, nó chạy tùm lum hết. Moih người giúp e chỉ cách viết hàm nhiệt độ cho PIC16F877A bằng CSS và cách truyền nó lên VB. Đồng thời trên VB chỉ e cách nhận và hiển thị giá trị nhiệt độ đúng với nhé. Xin chân thanh cảm ơn. E đã cày cả tuần, tìm cả đống công thức bỏ vào nó cũng sai tè le.
Sau đây là code C của e mọi người chỉ e chổ sai với nhé:
//-----------------------------------------------//
//-----------------------------------------------//
#include <16f877a.h>
#include <DEF_877A.h>
#DEVICE *=16 ADC=10
#use delay(clock=20000000)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
#bit b0 = portb.0 //NUT NHAN TB01
#bit b1 = portb.1 //NUT NHAN TB02
#bit b2 = portb.2 //NUT NHAN TB03
#bit b3 = portb.3 //NUT NHAN TB04
#bit b4 = portb.4 //NUT NHAN TB05
#bit b5 = portb.5 //NUT NHAN OFF ALL
#bit b6 = portb.6 //DU TRU
#bit b7 = portb.7 //DU TRU
#bit d0 = portd.0 //DIEU KHIEN TB01
#bit d1 = portd.1 //DIEU KHIEN TB02
#bit d2 = portd.2 //DIEU KHIEN TB03
#bit d3 = portd.3 //DIEU KHIEN TB04
#bit d4 = portd.4 //DIEU KHIEN TB05 CAP 1
#bit d5 = portd.5 //DIEU KHIEN TB05 CAP 2
#bit d6 = portd.6 //DU TRU
#bit d7 = portd.7 //DU TRU
#bit e0 = porte.0 //LED BAO NHAN DU LIEU TU MAY TINH
#bit e1 = porte.1 //LED BAO GUI DU LIEU LEN MAY TINH
#bit e2 = porte.2 //LED CANH BAO NHIET DO
char i;
unsigned dem, value;
void dieukhien();
void capnhat();
void baodong();
void receive();
void main()
{

//**********************************
// KHOI TAO

//**********************************
set_tris_d(0);
output_d(0xff);
set_tris_b(255);
set_tris_e(0b000);
output_e(0b111);
enable_interrupts(int_rda);
enable_interrupts(global);
setup_adc(adc_clock_internal);
setup_adc_ports(AN0);
set_adc_channel(1);

//**********************************
// LED dich trai - phai

//**********************************
if (PortE == 0b111) //LED PortE deu tat
{
delay_ms(300);
e0 = 0;
delay_ms(300);
e0 = 1; e1 = 0;
delay_ms(300);
e1 = 1; e2 = 0;
delay_ms(300);
e2 = 1;
delay_ms(300);
e2 = 0;
delay_ms(300);
e2 = 1; e1 = 0;
delay_ms(300);
e1 = 1; e0 = 0;
delay_ms(300);
e0 = 1;
delay_ms(300);
}

//**********************************
// Nut Nhan Dieu Khien

//**********************************
while(true)
{
if (b0 == 0) //Nut nhan tb 1
{
delay_ms(50);
if (b0 == 0)
{
while (b0 == 0)
{}
d0 = !d0;
}
}
if (b1 == 0) //Nut nhan tb 2
{
delay_ms(50);
if (b1 == 0)
{
while (b1 == 0)
{}
d1 = !d1;
}
}
if (b2 == 0) //Nut nhan tb 3
{
delay_ms(50);
if (b2 == 0);
{
while (b2 == 0)
{}
d2 = !d2;
}
}
if (b3 == 0) //Nut nhan tb 4
{
delay_ms(50);
if (b3 == 0);
{
while (b3 == 0)
{}
d3 = !d3;
}
}
if (b4 == 0) //Nut nhan tb 5
{
delay_ms(50);
if (b4 == 0)
{
while (b4 == 0)
{}
if (d4 == d5 == 1)
{
d4 = 0;
d5 = 1;
}
else if ((d4 == 0) && (d5 == 1))
{
d4 = 1;
d5 = 0;
}
else if ((d4 == 1) && (d5 == 0))
{
d4 = 1;
d5 = 1;
}
}
}
if (b5 == 0) //Nut nhan tat tat ca
{
delay_ms(50);
if (b5 == 0)
{
while (b5 == 0)
{}
portd = (255);
e2 = 1; //LED 3
}
}
}
}

//**********************************
// Dieu Khien Thiet Bi

//**********************************
void dieukhien()
{
switch (i)
{
case 'n':
capnhat();
break;
case 'r':
baodong();
break;
case '1':
d0 = 0; //tb 1 bat
break;
case '2':
d0 = 1; //tb1 tat
break;
case '3':
d1 = 0; //tb 2 bat
break;
case '4':
d1 = 1; // tb2 tat
break;
case '5':
d2 = 0; //tb 3 bat
break;
case '6':
d2 = 1; //tb 3 tat
break;
case '7':
d3 = 0; //tb 4 bat
break;
case '8':
d3 = 1; //tb 4 tat
break;
case '9':
d4 = 0; // tb 5 bat cap 1
d5 = 1;
break;
case 'a':
d5 = 0;
d4 = 1; // tb 5 bat cap 2
break;
case 'b':
d4 = 1; //tb 5 tat
d5 = 1;
break;
}
}

//**********************************
// Cap Nhat Trang Thai

//**********************************
void capnhat()
{
e1 = 0; //Bat Led 2
if (d0 == 1) //Kiem tra tb 1
{ printf("c");}
else
{printf("d");}
delay_ms(5);
if (d1 == 1) //Kiem tra tb 2
{ printf("e");}
else
{printf("f");}
delay_ms(5);
if (d2 == 1) //Kiem tra tb 3
{ printf("g");}
else
{printf("h");}
delay_ms(5);
if (d3 == 1) //Kiem tra tb 4
{ printf("i");}
else
{printf("j");}
delay_ms(5);
if (d4 == d5 == 1) //Kiem tra tb 5
{ printf("k");}
else if ((d4 == 0) && (d5 == 1))
{printf("l");}
else if ((d4 == 1) && (d5 == 0))
{printf("m");}
delay_ms(5);
//**********************************
// Gui Gia Tri Nhiet Do

//**********************************
dem = read_adc();
value=dem/2.048;
printf("%u",value);
delay_ms(100);
//**********************************
// Gui Gia Tri Bao Ket Noi

//**********************************
printf("o");
delay_ms(5);
e1 = 1; //Tat LED 2
}

//**********************************
// Bao Dong

//**********************************
void baodong()
{
e2 = 0; //Bat LED 3
}

//**********************************
// Ngat Rs232

//**********************************
#int_RDA
void receive()
{
e0 = 0; //Bat LED 1
i=getc();
dieukhien();
e0 = 1; //Tat LED 1
}
pitpro09 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Ðiều Chỉnh
Xếp Bài

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à 11:07 PM.


Đượ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