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 24-04-2008, 07:32 PM   #1
nhong
Đệ tử 1 túi
 
Tham gia ngày: Jan 2008
Bài gửi: 15
:
hỏi về thiết kế phần cứng_bài tập dùng adc

em làm 1 ví dụ nhỏ để xem chức năng adc của PIC, mạch chạy trên Proteus ngon lành nhưng khi lắp ra ngoài thì gặp 1 số vấn đề.

Mạch thật của em gồm 1 mạch chạy của PIC riêng, 1 nguồn dùng để đưa ra điện áp tham chiếu và điện áp cần đo ra(1 cái chia thế thôi)

ko hiểu sao lắp ra ngoài thì PIC luôn chỉ hiển thị giá trị 255 (thực ra là 25 thôi vì e dùng có 2 led 7segs)là sao? khi động tay hay đưa điện áp cần đo vào chân ra3 thì nó nhấp nháy giữa 2 giá trị 25 và 00?????

thứ 2 là khi dùng chế độ Vref ở chân r3(vref+), nối ra3 vào dương nguồn tham chiếu thì có phải nối ra2(vref-) vào đất của nguồn tham chiếu ko và GND của nguồn tham chiếu, GND của PIC, GND của tín hiệu để đo có phải nối chung với nhau ko vì em thấy khi chỉ nối dương nguồn tham chiếu vào ra3 xong và GND của nó nối chung với GND của PIC thì led sáng luôn mặc dù chưa bật công tắc nối VDD của PIC vào nguồn PIC

Code:
#include <16f877a.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#device adc=8
#include <math.h>
#use delay(clock=4000000)
int8 hundredstens,value,hundreds,tens,units,const a[10]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b};

void display(int x,int y){
   trisb=11111001;portb=0;
   trisc=0x00;portc=0;
   //rb1 controls led tens
   //rb2 controls led units

   portc=a[x];
   rb1=1;delay_ms(10);
   rb1=0;
   portc=a[y];
   rb2=1;delay_ms(10);
   rb2=0;

}

void main(){
     //thiet lap che do cho ports
     trisa=0xff;
     trisb=11111001;portb=0;
     trisc=0x00;portc=0;

     //adc intiate
     setup_adc(adc_clock_internal);
     setup_adc_ports(ANALOG_RA3_REF);
     delay_us(20);

     //bat dau doc dien ap o ngo vao adc
     while (1){  //lap vo tan
         value=read_adc();
         hundredstens=(int)value/10;
         hundreds=(int)hundredstens/10;
         tens=(int)hundredstens%10;
         display(hundreds,tens);

     }
}
Hình Kèm Theo
File Type: jpg interrupts.JPG (58.3 KB, 30 lần tải)
nhong 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à 01:48 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