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