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...

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
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
 


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:22 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