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 03-10-2011, 03:53 AM   #11
eethn
Đệ tử 1 túi
 
eethn's Avatar
 
Tham gia ngày: Sep 2011
Bài gửi: 12
:
mọi người giúp phần adc

e đang học con 18f4620,có làm mạch đo nhiệt độ dùng adc trong của pic hiển thị ra led 7 thanh hoặc lcd.Mọi người xem hộ xem lỗi ở đâu mà nó k hiển thị đc.E nghĩ dữ liệu k truyền đc từ adc ra nhưng k hiểu vì sao.E lập trình bằng C18

phần code hiển thị ra led 7 thanh:
Code:
#include "p18f4620.h"
#include "delays.h"
#include "adc.h"
#pragma config OSC=HS, WDT=OFF

const unsigned char dig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int a,b,n,doC,dvi,chuc,tram;
void convert(int a)
{
tram=a/100;
a=a%100;
chuc=a/10;
dvi=a%10;
}
void hienthi() // quet led
{
for(n=0;n<10;n++)
{
PORTB=dig[dvi];
PORTD=0x01;       //bat led 1
Delay100TCYx(20);  // tre 100us
PORTB=dig[chuc];
PORTD=0x02;        // bat led 2
Delay100TCYx(20);
PORTB=dig[tram];
PORTD=0x04;         // bat led 3
Delay100TCYx(20);
}
}
 void main(void)
{
TRISB=0;  // chon cong B la cong ra
TRISD=0;   // chon cong D la cong ra
TRISAbits.TRISA0=1;  // chon cong A la cong vao
ADCON0=0x03;                //bit0 cho phep chuyen doi,bit1 trang thai,bit2-5 chon kenh
ADCON1=0x0E;                //bit0-3 chon che do analog hay digital,bit4-5 chon Vref+ va Vref-
ADCON2bits.ACQT2=1;         //
ADCON2bits.ACQT1=0;         //
ADCON2bits.ACQT0=0;         //3 bits lua chon thoi gian thu thap du lieu TAD
ADCON2bits.ADCS2=1;         //
ADCON2bits.ADCS1=0;         //
ADCON2bits.ADCS0=1;         //3 bits lua chon tan so chuyen doi
Delay10TCY();


b = ReadADC();
doC = (b-558.558)/2.048;  //tùy ADC 8bit hay 10 bit  tính toán giá tri
a = doC;
convert((int)a);
Delay10TCY();
while(1)
{
b = ReadADC();
doC = (b-558.558)/2.048;
convert((int)a);
hienthi();
}
}

và phần ra LCD
Code:
#include "p18f4620.h"
#include "delays.h"
#include "adc.h"
#pragma config OSC=HS, WDT=OFF

char adc;
long s; float doC;
unsigned char li,lj;

#define rs LATDbits.LATD0
#define rw LATDbits.LATD1
#define en LATDbits.LATD2

void delay (unsigned char time )             // ham co tac dung delay thoi gian lon
	{
	    for ( li=0 ; li<80; li++ )
		for ( lj=0 ; lj<time; lj++)
		{}
	}


	void lenh_LCD (unsigned char s)				// ham dua 1 lenh ra ngoai LCD
	{
		LATC=s;
		rs=0;			                        // rs=0 thong bao rang gia tri truyen len ghi vao thanh ghi lenh
		rw=0;
		en=1;
		delay(1);
		en=0;
		delay(1); 
	} 


	void data_LCD (unsigned char s)				// ham dua 1 lenh ra ngoai LCD
	{
		LATC=s;
		TRISD=0xF8 ;		   					// cho 3 bit thap nhat duoc lam cong ra
		rs=1;			            // rs=0 thong bao rang gia tri truyen len ghi vao thanh ghi lenh
		rw=0;
		en=1;
		delay(1);
		en=0;
	}
void main(void)
{
int kq;
INTCON=0x00;
TRISAbits.TRISA0=1;                      //cong A0 lam dau vao tu cam bien
TRISC=0x00;                              //cong C lam cong ra du lieu
TRISD=0xF8;                              //3 bit thap nhat lam cong ra dieu khien
		lenh_LCD(0x38);					 // dua ra LCD gia tri hang cot la 5*7
		lenh_LCD(0x0C);		    		 // hien con tro
	//	lenh_LCD(0x01);					 // xoa man hinh LCD
ADCON0=0x00;                //bit0 cho phep chuyen doi,bit1 trang thai,bit2-5 chon kenh
ADCON1=0x0E;                //bit0-3 chon che do analog hay digital,bit4-5 chon Vref+ va Vref-
ADCON2bits.ACQT2=0;         //
ADCON2bits.ACQT1=0;         //
ADCON2bits.ACQT0=1;         //3 bits lua chon thoi gian thu thap du lieu TAD
ADCON2bits.ADCS2=1;         //
ADCON2bits.ADCS1=0;         //
ADCON2bits.ADCS0=0;         //3 bits lua chon tan so chuyen doi
Delay10TCY();

ADCON0bits.ADON=1;
while(1)
{
ADCON0bits.GO=1;
Delay10TCYx(2);
ADCON0bits.GO=0;
adc = ReadADC();
doC=(adc-558.558)/2.048;       // ADC 10 bit  tính toán giá tri
   lenh_LCD(0x01);
   delay(100);
 kq=(int)doC;

   data_LCD((int)doC);
   data_LCD('.');
  kq=(doC-kq)*100;
   data_LCD((unsigned char)kq);
   data_LCD('d');
   data_LCD('o');
   data_LCD('C');
   delay(100);

}
}

mạch ở file kèm theo
File Kèm Theo
File Type: rar nhietdo.rar (93.1 KB, 28 lần tải)

thay đổi nội dung bởi: eethn, 04-10-2011 lúc 09:51 PM.
eethn 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à 04:30 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