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

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


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à 02:41 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