PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Analog - Bộ nhớ - Bảo mật - Cảm biến nhiệt độ

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Analog - Bộ nhớ - Bảo mật - Cảm biến nhiệt độ Thảo luận việc sử dụng và thay thế các sản phẩm Analog, Memory, KEELOG và cảm biến nhiệt độ của Microchip cho các thiết kế

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 19-11-2014, 10:33 PM   #1
Soi Dien
Nhập môn đệ tử
 
Tham gia ngày: Nov 2014
Bài gửi: 3
:
Ghép nối dsPic30f4011 với cảm biến nhiệt độ LM35

Chào các bạn, mình đang làm 1 đề tài ghép nối dsPic30f4011 với cảm biến LM35, chuyển đổi ADC và hiển thị giá trị nhiệt độ lên LCD. Mình đã viết 1 chương trình nhưng kết quả hiển thị lên LCD bị sai,nó hiển thị 'Nhiet Do: 500", mọi người cho mình ý kiến, mình nghĩ có lẽ do chương trình chuyển đổi ADC mình viết sai.
Đầu ra của cảm biến mình nối vào chân AN0(RB0)

#include<p30f4011.h>

_FOSC(CSW_FSCM_OFF & HS); // Set up for Crystal
_FWDT(WDT_OFF); // Turn off the Watch-Dog Timer
_FBORPOR(MCLR_EN & PWRT_OFF); // Enable MCLR reset pin and turn off the power-up timers

#define port_lcd4 LATBbits.LATB5
#define port_lcd5 LATBbits.LATB6
#define port_lcd6 LATBbits.LATB7
#define port_lcd7 LATBbits.LATB8
#define rs LATBbits.LATB1
#define rw LATBbits.LATB3
#define e LATBbits.LATB4


unsigned int adc_data,adc_data1;
unsigned char adc_tram,adc_chuc,adc_donvi,adc_thapphan;

void delay_ms(int delay)
{
int i,j;
for(i=0;i<delay;i++)
for(j=0;j<250;j++)
{;}
}

void lcd_send4bits(unsigned char byte)
{

port_lcd4=(byte>>4)&1;
port_lcd5=(byte>>5)&1;
port_lcd6=(byte>>6)&1;
port_lcd7=(byte>>7)&1;
e=1;
delay_ms(100);
e=0;


port_lcd4=byte&1;
port_lcd5=(byte>>1)&1;
port_lcd6=(byte>>2)&1;
port_lcd7=(byte>>3)&1;
e=1;
delay_ms(100);
e=0;


}

void lcd_init()
{
rs=0;
rw=0;
lcd_send4bits(0x28);
lcd_send4bits(0x06);
lcd_send4bits(0x0c);
lcd_send4bits(0x01);
lcd_send4bits(0x02);


}

void lcd_cmd(unsigned char cmd)
{
rs=0;
rw=0;
e=1;
lcd_send4bits(cmd);


}

void lcd_data(unsigned char data)
{
rs=1;
rw=0;
lcd_send4bits(data);
delay_ms(1000);
}

void khoitao_adc()
{
ADPCFG=0xFFFF;
ADPCFGbits.PCFG0=0;//tao chan RB0 lam cong vao
ADCON3bits.ADCS=63;//////////////T =22Tcy
ADCON1bits.SSRC=0;// Clearing SAMP bit ends sampling and starts conversion
ADCON1bits.ASAM = 0;//no auto-lau mau
ADCHSbits.CH0SA=2;
ADCON2bits.ALTS=0;
ADCON2bits.VCFG=3;
ADCON1bits.FORM=0;
ADCHS = 0x0000; //ADCHS Register
//Set up A/D Channel Select Register to convert AN0 on Mux A
//input of CH0 and CH1 S/H amplifiers

ADCSSL = 0x0000;//Channel Scanning is disabled. All bits left to their default state
ADCON1bits.ADON=1;//start


}
void start_adc()
{
ADCON1bits.SAMP=1;
delay_ms(10);
ADCON1bits.SAMP = 0; // start Converting
while(!ADCON1bits.DONE);
{ adc_data1=ADCBUF0;
adc_data=adc_data1/2.046;





adc_tram=adc_data/100;
adc_data=adc_data-adc_tram*100;
adc_chuc=adc_data/10;
adc_data=adc_data-adc_chuc*10;
adc_donvi=adc_data;
}

}
void main()
{
TRISBbits.TRISB0=1;
TRISBbits.TRISB1=0;
TRISBbits.TRISB3=0;
TRISBbits.TRISB4=0;
TRISBbits.TRISB5=0;
TRISBbits.TRISB6=0;
TRISBbits.TRISB7=0;
TRISBbits.TRISB8=0;


lcd_init();
khoitao_adc();
start_adc();

lcd_data('N');
lcd_data('h');
lcd_data('i');
lcd_data('e');
lcd_data('t');
lcd_data(' ');
lcd_data('D');
lcd_data('o');
lcd_data(':');
lcd_data(adc_tram+'0');
lcd_data(adc_chuc+'0');
lcd_data(adc_donvi+'0');
}
Soi Dien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Tags
help !!!

Ðiều Chỉnh
Xếp Bài

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:43 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