cho em tham gia với!
Nhân tiện em xin đưa chương trình "đo nhiệt độ "dùng cảm biến nhiệt LM35DZ hiển thị trên 2 led 7 đoạn anode chung ,dùng pic16f877a (phí quá,nhưng chip này do Thầy em cho).
cai mach in em vẽ thiếu chân nguồn cho 2 con led7,em nhát quá chạy lun cái jumper trước con trở Reset xuống luôn>
// |+++++++++++++++++++++++++++++++++++++++++++++++++ ++|
// | CHUONG TRINH HIENTHI NHIET DO TREN 2 LED 7 DOAN |
// | BAO CAO THUC TAP MACH SO UNG DUNG |
// | NGUYEN TIEN CHUAN-071250520207-07DT2 |
// |+++++++++++++++++++++++++++++++++++++++++++++++++ ++|
// ||||||||||||---------------------- KET NOI PHAN CUNG --------------------||||||||||||||||
//++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++\
//| RB0->6 KET NOI DEN CAC CHAN A,B,C,D,E,F,G CUA 2 LED 7 DOAN ANODE CHUNG. +\
//| CHAN 8(VCC) CUA 2 LED 7 D0AN DUOC DIEU KHIEN BOI 2 BJT THUAN PNP: A1015 +\
//| CHAN C CUA 2 BJT NOI VOI CHAN VCC CUA 2 LED 7 DOAN DE DIEU KHIEN QUET LED +\
//| CHAN E CUA BJT NOI VOI NGUON +\
//| CHAN B (BAM DIEN TRO 10K )CUA BJT HANG CHUC VA DON VI NOI LAN LUOT VOI CHAN RD1,RD0 +\
//|---------------------------------------------------------------------------------------+\
//| SU DUNG TRINH BIEN DICH PCWH COMPLIER VER:4.018 +\
//| SU DUNG TRINH WINPIC800 DE NAP FILE HEX LEN PIC QUA CHUAN GIAO TIEP ICSP +\
//|+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++\
#include <16F877A.h> // KHAI BAO SU DUNG PIC 16F877A
#include <def_877a.h> // FILE DINH NGHIA CAC THANH GHI VA CAC BIT
#device *=16 adc=10 // KHAI BAO SU DUNG CON TRO 16 BIT VA ADC 10 BIT
// KHAI BAO CAU HINH CHO PIC 16F877A
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
// KHAI BAO SU DUNG DELAY VOI TAN SO DAO DONG NGOAI
#use delay(clock=12000000)
int8 high,low; // KHAI BAO CAC BIEN SO NGUYEN 1 BYTE
// KHAI BAO BANG MA LED 7 DOAN ANODE CHUNG
int8 const a[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };
// CHUONG TRINH CON TACH SO HANG CHUC VA HANG DON VI
void convert_bcd(int8 x)
{
low=x%10; // CHU SO HANG DON VI
high=x/10; // CHU SO HANG CHUC
}
// CHUONG TRINH CON HIEN THI RA 2 LED 7 DOAN
void display()
{
PORTB=a[low];
RD0=0;
delay_us(500);
RD0=1;
PORTB=a[high];
RD1=0;
delay_us(500);
RD1=1;
}
void main()
{
float value;
int16 i;
trisb = 0x00; // THIET LAP CAC CHAN PORTB LA OUTPUT
trisd = 0x00; // THIET LAP CAC CHAN PORT D LA OUTPUT
trise = 0x00; // THIET LAP CAC CHAN PORT E LA OUTPUT
trisa = 0xff; // THIET LAP CAC CHAN PORT A LA INPUT
// KHOI TAO ADC
setup_adc(ADC_CLOCK_INTERNAL); // THIET LAP THOI GIAN LAY MAU BANG XUNG CLOCK
setup_adc_ports(AN0); // THIET LAP CHAN AN0 LA CHAN VAO ADC
set_ADC_channel(0) ;
delay_us(10); // TRE 10US
value=(float)read_adc(); // DOC GIA TRI ADC
value = value/2.048; //
convert_bcd((int8)value); // GOI CHUONG TRINH CON CONVERT_BCD
i=0;
while(1)
{
i++;
value =(float) read_adc();
value = value/2.048;
if (i==500)
{
convert_bcd((int8)value);
i=0;
}
display();
}
}
|