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 Bài Trong Ngày 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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 14-05-2009, 05:44 PM   #1
tienchuan
Đệ tử 4 túi
 
tienchuan's Avatar
 
Tham gia ngày: Oct 2008
Bài gửi: 71
:
Question Cần gíup đỡ về việc đọc ADC từ lm35DZ và hiển thị trên 2 led 7 đoạn

mình mới bắt đầu học pic,nhưng ngặt nỗi mình lại chọn đề tài mạch đo nhiệt độ dùng LM35DZ hiển thị trên 2 led 7 đoạn (dùng pic16f877a).Định đọc tài liệu của anh Linhnc,sau đó sửa lại cái code,nhưng khi thực hiện thì phát sinh nhiều vấn đề quá.Nói tóm lại là mình đã test chương trình trên board ,nhưng khi chạy thì nó hiển thị chỉ 2 số 0 tròn chỉnh.
Mong các đàn anh đi trước chỉ giáo giùm !
CODE:
// |||||||||||| KET NOI PHAN CUNG ||||||||||||||||
//++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++
//| RB0->7 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 2 LED THONG QUA VIEC DIEU KHIEN BJT
//| CHAN E CUA BJT NOI VOI NGUON
//| CHAN B CUA BJT HANG CHUC VA DON VI NOI LAN LUOT VOI CHAN RD0,RD1

#include<16f877a.h>
#include <def_877a.h>
#device *=16 ADC=10
#include <math.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#use delay(clock=12000000)

byte const maled[]={0xC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X9 0};
int16 hc,hdv;

void hienthi();
void convert_bcd(int16 x);


void main()
{
float value ;
int16 i;

// KHOI TAO CAC CHAN I/O
trisb=0x00;
trisd=0x00;
trisa=0xff;

// KHOI TAO ADC
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
delay_us(20);
value=(float)read_adc();
value = value/2.048;
convert_bcd((int16)value);


while (1)
{

i++;
value = (float)read_adc();
value = value/2.048;

if (i=65000)

{
convert_bcd((int16)value);
i=0;
}
hienthi();


}
}
void hienthi()

{


OUTPUT_B(maled[hdv]);
OUTPUT_LOW(PIN_D1);
delay_us(500);
OUTPUT_HIGH(PIN_D0);

OUTPUT_B(maled[hc]);
OUTPUT_LOW(PIN_D0);
delay_us(500);
OUTPUT_HIGH(PIN_D1);
}

void convert_bcd(int16 x)
{

hc=x/10;
hdv=x%10;
}
Hình Kèm Theo
File Type: jpg untitled.JPG (43.1 KB, 32 lần tải)

thay đổi nội dung bởi: tienchuan, 18-05-2009 lúc 12:57 PM.
tienchuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-05-2009, 10:58 AM   #2
tienchuan
Đệ tử 4 túi
 
tienchuan's Avatar
 
Tham gia ngày: Oct 2008
Bài gửi: 71
:
Red face

sao ko co ai giup minh voi!
tienchuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-05-2009, 05:12 PM   #3
tienchuan
Đệ tử 4 túi
 
tienchuan's Avatar
 
Tham gia ngày: Oct 2008
Bài gửi: 71
:
ko ai giup minh=the la toi roi!
tienchuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-05-2009, 05:29 PM   #4
phandinh
Đệ tử 6 túi
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
:
Bạn có chắc chắn rằng bạn đã đọc được ADC ?

thay đổi nội dung bởi: phandinh, 17-05-2009 lúc 05:36 PM.
phandinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-05-2009, 11:14 PM   #5
tienchuan
Đệ tử 4 túi
 
tienchuan's Avatar
 
Tham gia ngày: Oct 2008
Bài gửi: 71
:
cho cong thuc doc ADC minh viet hinh nhu chua dung,con LM35 Thay doiu 10mV/ do C
trong khi dung dung adc 10 bit,dien ap tham chieu 5V,nen 1V=1000mV se thay doi 1024/5 don vi,
ADC= (1024/5)/(10*10^-3)
cac ban coi minh tinh nhu the co dung ko?
tienchuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-05-2009, 11:34 PM   #6
phandinh
Đệ tử 6 túi
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
:
ADC 10 bit --> 1 mức lượng tử tương ứng = 5V/1024 = 4.883 mV.

LM35 thay đổi 10 mV/ C. Do đó mức lượng tử thay đổi là 10 mV / 4.883 mV = 2.048

==> Độ C = Giá trị ADC đọc được / 2.048 .

Mình đã làm như vậy để hiển thị LCD, giao tiếp PC và đã chạy tốt.
Và tất nhiên bạn muốn hiển thị được thì bạn phải làm từ bước đơn giản nhất.
Chẳng hạn như thay LM35 bằng biến trở xuất ra led đơn,Xem biến đổi ADC có tưng ứng không ?.
Rồi mới tính đến hiển thị cái gì. Bạn sẽ rất dễ dàng gỡ rối chương trình.
Chúc thành công

thay đổi nội dung bởi: phandinh, 17-05-2009 lúc 11:42 PM.
phandinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-05-2009, 07:13 AM   #7
tienchuan
Đệ tử 4 túi
 
tienchuan's Avatar
 
Tham gia ngày: Oct 2008
Bài gửi: 71
:
cam on ban Phan Dinh minh se sua lai chuong trinh va test tren board xem sao, ah cho minh hoi them cach cam con LM35DZ,vao chan AN0 minh thay co cam them con tro 1k tu chan so 2 cua lm35 roi moi vao PIC,tu chan AN0 doc ADC cung cam them tu 104.Minh doc ADC nhung chua hieu?

Mong cac bac dan anh chi giup!
Hình Kèm Theo
File Type: bmp lm35dz.bmp (576.1 KB, 27 lần tải)
tienchuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-05-2009, 11:51 AM   #8
tienchuan
Đệ tử 4 túi
 
tienchuan's Avatar
 
Tham gia ngày: Oct 2008
Bài gửi: 71
:
sao khong thay ai giup minh voi?
cac huynh,hay truong lao dau het roi!
tienchuan 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à 03:12 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