|
Tài trợ cho PIC Vietnam |
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 |
14-05-2009, 05:44 PM | #1 |
Đệ tử 4 túi
Tham gia ngày: Oct 2008
Bài gửi: 71
: |
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; } thay đổi nội dung bởi: tienchuan, 18-05-2009 lúc 12:57 PM. |
15-05-2009, 10:58 AM | #2 |
Đệ tử 4 túi
Tham gia ngày: Oct 2008
Bài gửi: 71
: |
sao ko co ai giup minh voi!
|
17-05-2009, 05:12 PM | #3 |
Đệ tử 4 túi
Tham gia ngày: Oct 2008
Bài gửi: 71
: |
ko ai giup minh=the la toi roi!
|
17-05-2009, 05:29 PM | #4 |
Đệ 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. |
17-05-2009, 11:14 PM | #5 |
Đệ tử 4 túi
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? |
17-05-2009, 11:34 PM | #6 |
Đệ 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. |
18-05-2009, 07:13 AM | #7 |
Đệ tử 4 túi
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! |
22-05-2009, 11:51 AM | #8 |
Đệ tử 4 túi
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! |
|
|