View Single Post
Old 03-10-2011, 03:53 AM   #30
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