PIC Vietnam

Go Back   PIC Vietnam > Robotics > Cảm biến

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

Cảm biến Camera, siêu âm, hồng ngoại, gyro, la bàn...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 11-03-2011, 11:58 PM   #1
phanlamdien
Nhập môn đệ tử
 
Tham gia ngày: Sep 2010
Bài gửi: 9
:
Cài đặt nhiệt độ cảnh báo

Tôi đang làm đề tài đo nhiệt độ môi trường hiển thị ra led 7 đoạn, nhưng vấn đề mà tôi gặp phải là phần cài đặt nhiệt độ cảnh báo nếu như cố định thì ok, nhưng nếu như nó được nhập vào từ bên ngoài ( nhiệt độ cảnh báo ngưỡng trên t3 trong đoạn code) đồng thời hiển thị ra led 7 đoạn được nối với portC thì t vẫn chưa làm được hôm nay tôi post bài này lên mong các bác giúp đở để hoàn thiện bài báo cáo.Tôi cần gắp lắm.

Sau đây là đoạn code.

//================================================== ==================================
// DO AN MON HOC
// Ten do an: MACH DO NHIET DO DUNG PIC 16f877A VA LM 35.
//================================================== ==================================
// Nhom thuc hien:
// Ten MSSV
//
//
// Ngay hoan thanh:
// Ngay kiem tra:
//================================================== =================================
// KET CAU PHAN CUNG
//================================================== =================================
// + Su dung PIC 16F877A + LM35 + 74LS247 + Led 7 doan (Anot chung),
// + Cau hinh dung dao dong thach anh 20MHz,
// + PORT C quet led, PORT D hien thi,
// + Tin hieu tuong tu tu LM35 dc noi vao chan RA0,
// + Ban phim giao tiep o PORTB
// + Cac led bao duoc noi vao cac chan voi thu tu bao dong:
// Led 1(xanh) Led 2(vang) Led 3(do)(bao dong am thanh)
// Muc 1(t2<=t1) Muc 2(t1<t2<t3) Muc 3(t2=>t3)
//================================================== ================================

// Cau hinh su dung dao dong noi 20MHz
#include <16f877A.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT,HS, NOPUT, NOPROTECT, NODEBUG, BROWNOUT, LVP, NOCPD, NOWRT
#use delay(clock=20000000)

//=======================================
// KHAI BAO HAM-BIEN-HANG
//=======================================
//========================================
#byte PORTA=0x05
#byte TRISA=0x85
#byte PORTB=0x06
#byte PORTC=0x07
#byte PORTD=0x08
#bit NUT1=0x05.0
#bit NUT2=0x05.1
#byte PORTE=0x09
#int_ext
int8 adc;
int8 hang_chuc=0;
int8 hang_don_vi=0;
int8 hangtram =0;
int8 t;
int8 t1=20;
int8 t3=45;
int8 t4;
//================================================
// Khoi tao
//================================================
#zero_ram // xoa cac thanh ghi truoc khi lam viec

void khoitao()
{
enable_interrupts(global);
enable_interrupts(int_RB);
enable_interrupts(int_ext);
ext_int_edge(H_to_L);
output_d(0);
output_e(0);
output_c(0b10000000);
}

//========================================
// Chuong trinh hien thi
//========================================

void hienthi(int8 x)
{
int8 i;
hangtram=x/100;
hang_chuc=x/10; // lay so hang chuc
hang_don_vi=x%10; // lay so du lam hang dv
for(i=0;i<2;i++)
{
output_low(PIN_A5);
output_high(PIN_A4);
PORTD=hang_don_vi; //PORTD=hang_don_vi;
delay_ms(500);
output_high(PIN_A5);
output_low(PIN_A4);
PORTD=hang_chuc; // PORTD=hang_chuc;
delay_ms(500);

}
}

//===========================================
// Chuong trinh bao dong
//===========================================

void baodong(int8 t2)
{
if(t2>=t3) // Canh bao led do (muc 3)
{
output_low(PIN_E0);
output_low(PIN_E1);
output_high(PIN_E2);

}
if((t2<t3)&&(t2>t1)) // Canh bao led vang (muc 2)
{
output_low(PIN_E0);
output_low(PIN_E2);
output_high(PIN_E1);
}
if(t2<=t1) // Canh bao led xanh( muc 1)
{
output_low(PIN_E1);
output_low(PIN_E2);
output_high(PIN_E0);

}
}

void giatri()
{
setup_adc(ADC_CLOCK_INTERNAL); // Chon kenh va Port cho khoi ADC
setup_adc_ports(RA0_RA1_ANALOG_RA3_REF);
set_adc_channel(0);
delay_ms(100); // lay mau
adc=read_adc();
ADC_done();
t=adc*1; // ADC 8 bit
hienthi(t);
baodong(t);
}
//================================================== ============
// Ngat
//================================================== ============

void banphim()
{
if(NUT1==0)
{
delay_ms(100);
t4=t1+5;
}
if(NUT2==0)
{
delay_ms(100);
t4=t1-5;

}
}

//================================================== ====
// CHAY CHUONG TRINH
//================================================== ====


void main()
{
khoitao();
while(1)
{
giatri();
}
}


Còn đây là file hex và file mô phỏng:http://www.megaupload.com/?d=WPFJ5TVX

thay đổi nội dung bởi: phanlamdien, 13-03-2011 lúc 08:06 AM.
phanlamdien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-03-2011, 06:47 PM   #2
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi phanlamdien View Post
Tôi đang làm đề tài đo nhiệt độ môi trường hiển thị ra led 7 đoạn, nhưng vấn đề mà tôi gặp phải là phần cài đặt nhiệt độ cảnh báo nếu như cố định thì ok, nhưng nếu như nó được nhập vào từ bên ngoài ( nhiệt độ cảnh báo ngưỡng trên t3 trong đoạn code) đồng thời hiển thị ra led 7 đoạn được nối với portC thì t vẫn chưa làm được hôm nay tôi post bài này lên mong các bác giúp đở để hoàn thiện bài báo cáo.Tôi cần gắp lắm.

Sau đây là đoạn code.

//================================================== ==================================
// DO AN MON HOC
// Ten do an: MACH DO NHIET DO DUNG PIC 16f877A VA LM 35.
//================================================== ==================================
// Nhom thuc hien:
// Ten MSSV
//
//
// Ngay hoan thanh:
// Ngay kiem tra:
//================================================== =================================
// KET CAU PHAN CUNG
//================================================== =================================
// + Su dung PIC 16F877A + LM35 + 74LS247 + Led 7 doan (Anot chung),
// + Cau hinh dung dao dong thach anh 20MHz,
// + PORT C quet led, PORT D hien thi,
// + Tin hieu tuong tu tu LM35 dc noi vao chan RA0,
// + Ban phim giao tiep o PORTB
// + Cac led bao duoc noi vao cac chan voi thu tu bao dong:
// Led 1(xanh) Led 2(vang) Led 3(do)(bao dong am thanh)
// Muc 1(t2<=t1) Muc 2(t1<t2<t3) Muc 3(t2=>t3)
//================================================== ================================

// Cau hinh su dung dao dong noi 20MHz
#include <16f877A.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT,HS, NOPUT, NOPROTECT, NODEBUG, BROWNOUT, LVP, NOCPD, NOWRT
#use delay(clock=20000000)

//=======================================
// KHAI BAO HAM-BIEN-HANG
//=======================================
//========================================
#byte PORTA=0x05
#byte TRISA=0x85
#byte PORTB=0x06
#byte PORTC=0x07
#byte PORTD=0x08
#bit NUT1=0x05.0
#bit NUT2=0x05.1
#byte PORTE=0x09
#int_ext
int8 adc;
int8 hang_chuc=0;
int8 hang_don_vi=0;
int8 hangtram =0;
int8 t;
int8 t1=20;
int8 t3=45;
int8 t4;
//================================================
// Khoi tao
//================================================
#zero_ram // xoa cac thanh ghi truoc khi lam viec

void khoitao()
{

output_d(0);
output_e(0);
output_c(0b10000000);
}

//========================================
// Chuong trinh hien thi
//========================================

void hienthi(int8 x)
{
int8 i;
hangtram=x/100;
hang_chuc=x/10; // lay so hang chuc
hang_don_vi=x%10; // lay so du lam hang dv
for(i=0;i<2;i++)
{
output_low(PIN_A5);
output_high(PIN_A4);
PORTD=hang_don_vi; //PORTD=hang_don_vi;
delay_ms(500);
output_high(PIN_A5);
output_low(PIN_A4);
PORTD=hang_chuc; // PORTD=hang_chuc;
delay_ms(500);

}
}

//===========================================
// Chuong trinh bao dong
//===========================================

void baodong(int8 t2)
{
if(t2>=t3) // Canh bao led do (muc 3)
{
output_low(PIN_E0);
output_low(PIN_E1);
output_high(PIN_E2);

}
if((t2<t3)&&(t2>t1)) // Canh bao led vang (muc 2)
{
output_low(PIN_E0);
output_low(PIN_E2);
output_high(PIN_E1);
}
if(t2<=t1) // Canh bao led xanh( muc 1)
{
output_low(PIN_E1);
output_low(PIN_E2);
output_high(PIN_E0);

}
}

void giatri()
{
setup_adc(ADC_CLOCK_INTERNAL); // Chon kenh va Port cho khoi ADC
setup_adc_ports(RA0_RA1_ANALOG_RA3_REF);
set_adc_channel(0);
delay_ms(100); // lay mau
adc=read_adc();
ADC_done();
t=adc*1; // ADC 8 bit
hienthi(t);
baodong(t);
}
//================================================== ============
// Ngat
//================================================== ============

void banphim()
{
if(NUT1==0)
{
delay_ms(100);
t4=t1+5;
}
if(NUT2==0)
{
delay_ms(100);
t4=t1-5;

}
}

//================================================== ====
// CHAY CHUONG TRINH
//================================================== ====


void main()
{
khoitao();
while(1)
{
giatri();
}
}


Còn đây là file hex và file mô phỏng:http://www.megaupload.com/?d=WPFJ5TVX
Trích:
+ Ban phim giao tiep o PORTB
#bit NUT1=0x05.0
#bit NUT2=0x05.1//cái này khai báo nút nhấn ở porta
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-03-2011, 09:15 PM   #3
phanlamdien
Nhập môn đệ tử
 
Tham gia ngày: Sep 2010
Bài gửi: 9
:
Đã thử rồi nhưng vẫn không dc, sai ở void banphim nhưng không biết sữa sao nữa.
phanlamdien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-03-2011, 08:43 AM   #4
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi phanlamdien View Post
Đã thử rồi nhưng vẫn không dc, sai ở void banphim nhưng không biết sữa sao nữa.
file bạn gửi không tải được.bạn nén thành winzip gửi lên diễn đàn.
sửa lại:
#bit NUT1=0x06.0
#bit NUT2=0x06.1//cái này khai báo nút nhấn ở portb
thêm trong chương trình chính:
set_tris_b(0x0f);
port_b_pullups(true);
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.

thay đổi nội dung bởi: tdm, 13-03-2011 lúc 06:47 PM.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-03-2011, 08:35 PM   #5
phanlamdien
Nhập môn đệ tử
 
Tham gia ngày: Sep 2010
Bài gửi: 9
:
Link mới đây:

http://www.megaupload.com/?d=XUX6EPK5
phanlamdien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-03-2011, 07:52 PM   #6
phanlamdien
Nhập môn đệ tử
 
Tham gia ngày: Sep 2010
Bài gửi: 9
:
làm xong rùi vui vui !!
phanlamdien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-04-2011, 10:33 PM   #7
kshoaiviet
Nhập môn đệ tử
 
Tham gia ngày: Mar 2011
Bài gửi: 7
:
sau mà file hex với files mô phỏng không có tải được vậy,tải phải tốn tiền ah
kshoaiviet vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-04-2011, 11:24 PM   #8
thaichiendt
Nhập môn đệ tử
 
Tham gia ngày: Oct 2009
Bài gửi: 5
:
oh. hay quá bạn ơi, nếu bạn đã chia sẻ đầy đủ như vậy thì bạn có thể cho file orcad và mạch in dc ko? và bạn đã làm mạch chưa chạy ổn định không, bạn có thể up vài hình anh lên được chứ. à không dùng vref ngoài được ko nhỉ đỡ một phần
thank bạn phát huy
thaichiendt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lờ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à 05:09 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