![]() |
|
Tài trợ cho PIC Vietnam |
PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#16 |
Đệ tử 1 túi
Tham gia ngày: Jul 2006
Bài gửi: 17
: |
PicBasic Pro rat pho bien trong gioi binh dan,ho khong duoc di hoc nhung lai thich tay may . PBP rat de viet , de hieu va co nhieu commands thuc dung cho viec sang che may moc. so di no khong duoc pho bien o VN vi no phat xuat tu Basic Stamp trong gioi hobby dien tu (khong phai nhu C tu cac truong dai hoc VN) o My va Au chau. Hy vong sinh vien cac nghanh khac (khong can phai hoc C) cung co the lam quen de dang de sang kien cua ho de thuc hien trong thuc te. Day la thu vui cho moi gioi.
Chao ban va chuc ban thanh cong. TV |
![]() |
![]() |
![]() |
#17 |
Làm quen với PIC
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: Hcm
Bài gửi: 160
: |
Sẵn tiện chủ đề này . mình cũng co một câu hỏi mong các bạn giúp mình nha .
mình dùng cảm biến nhiệt là Lm35 , pic là 18f4520 , Vref- nối mass , vref+ nối biến trở , cân chỉnh được 2,7v . Mình lập trình cho hiển thị nhiệt độ trên LCD . code được viết bằng Picbasic Pro . khai báo các thanh ghi ADC như sau : ADCON1 = %00011111 ' CHUYEN PORTA , PORTE SANG DIGITAL ADCON0 = %00010011 ' Set PORTA analog CHON ADC KENH 4 Kết quả , Lcd vẫn hiện thị được nhiệt độ . nhưng khi tăng nhiệt độ tại cảm biến , thì giá trị của LCD lại giảm đi . ![]() đây là câu hỏi mình mong các bạn giúp mình nha . Cảm ơn rất nhiều . |
![]() |
![]() |
![]() |
#18 |
Đệ tử 1 túi
Tham gia ngày: Jul 2006
Bài gửi: 17
: |
Chao ban Hatuan296,
Minh khong biet nhieu ve 18F4520, nhung dua theo data sheet thi thay ban can coi lai: 1. ADCON0 = %00010011 cho thay ban chon AN4 la analog input cho cam bien, nhu vay ADCON1 = %00011111 cho thay khong co port A nao cho AN4. theo thien y cua minh thi nen viet ACDCON0 = %00000011, ADCCON1 = %00011110, TRISA = %11111111 .(minh chon AN0 cho cam bien, AN0 la analog input, con lai la digital input). 2. Khong thay ban nhac den ADCON2( noi ve right, left justify, accquisition time, A/D conversion clock ) minh khong ro DEFINE ADC_CLOCK 3 va DEFINE ADC_SAMPLESUS 50 co the dung cho 18F4520 duoc khong. Neu thu chay duoc, cho minh biet voi. Day cung la dip de minh hoc ve PIC 18FXXXX. Chuc ban thanh cong. Thai Vu |
![]() |
![]() |
![]() |
#19 |
Làm quen với PIC
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: Hcm
Bài gửi: 160
: |
Chào bạn THAIVU . chương trình của mình không thể sửa như bạn được , vì yêu cầu phần cứng là thiết kế cho AN4 nhận tín hiệu từ LM35 rồi . Còn các các chân PORTA.0 , PORTA.1 kết nối I2C .
Còn thanh ghi ADCON2 thì mình chưa đụng tới , vì thật sự cũng chưa biết nó là gì . Nếu được mong bạn chia sẽ nha . thanks |
![]() |
![]() |
![]() |
#20 |
Làm quen với PIC
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: Hcm
Bài gửi: 160
: |
mình đã thử sửa chương trình lại như sau :
ADCON1 = %00011010 ' CHUYEN PORTA , PORTE SANG DIGITAL trừ từ AN0 đến AN4 ADCON0 = %00010011 ' Set PORTA analog CHON ADC KENH 4 Define ADC_BITS 8 ' Set number of bits in result Define ADC_CLOCK 4 ' Set clock source (4 : 4 TOSC) DEFINE ADC_SAMPLEUS 50 'ADC sampling time in microseconds thì vẫn bị tình trạng là nhiệt độ tại cảm biến tăng lên . nhưng nhiệt độ hiển thị trên lại bị giảm xuống . Mình cũng thật không biết lài tại sao nữa . Mặc dù câu lệnh hết sức đơn giản : MAIN : ADCIN 4 , TEMP ' đọc giá trị adc kênh 4 , đưa vào biến TEMP PAUSE 200 ' chờ 200 mili giây LCDOUT DEC2 TEMP ' xuất biến temp ra lcd dưới dạng số thập phân PAUSE 500 ' chờ 500 mili giây GOTO MAIN ' làm lại từ đầu . Mong bác náo rành cái này thì giúp với . mình đang bí quá . thanks |
![]() |
![]() |
![]() |
#21 |
Trưởng lão PIC bang
|
Theo cấu hình của bạn, nguồn áp chuẩn cho +VREF sẽ được nối vào AN3, bạn có nối như vậy chứ?
Chương trình của bạn chỉ dùng AN4, vậy các AN2 đến AN0 có được dùng không? Nếu có thì dùng như thế nào? Nếu không thì tại sao lại chọn cấu hình analog từ AN0 đến AN4. Cái bất lợi của ngôn ngữ cấp cao là chúng ta khó kiểm soát được cách thức các module phần cứng được sử dụng và thiết lập. Ví dụ câu lệnh ADCIN 4 , TEMP của bạn, thực sự là nó đang thực hiện những gì? Tôi không dùng LM35, nhưng đã từng dùng AD22100 (tương tự LM35) để đo nhiệt độ và hiển thị lên LCD. Tôi đã hiển thị nhiệt độ ở dạng xx.x độ C. Không hề có chuyện nhiệt độ tăng mà giá trị hiển thị giảm. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
![]() |
![]() |
![]() |
#22 |
Đệ tử 6 túi
Tham gia ngày: Jul 2006
Bài gửi: 135
: |
Chào các bạn, mình đã làm mạch đo nhiệt độ dùng PIC16F877A và cảm biến nhiệt độ LM35DZ, đo nhiệt độ môi trường và hiển thị lên LED 7 đoạn. Nay mình post lên cho mọi người cùng tham khảo.( đề tài này mình viết bằng Hợp Ngữ)
|
![]() |
![]() |
![]() |
#23 |
Làm quen với PIC
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: Hcm
Bài gửi: 160
: |
Vậy là mình đã giãi quyết xong rắc rối . sau khi bỏ cả ngày hôm nay để kiểm tra , chỉnh sữa :
. kiểm tra mạch in , thấy không sai . chân vref+ được cân chỉnh ở 2,73 v . kiểm tra chương trình ( viết lại nhiều chương trình cho nhiều loại 18F như 4520 , 4525 , 458 , 4610 , 4620 , 4680 ) . con nào cũng không chịu chạy . ![]() rốt cuộc đành chạy ra chợ Nhật Tảo kiếm 2 con LM35 mới nguyên về . thì lại chạy được . , tăng nhiệt độ tại cảm biến thì số trên LCD sẽ tăng chứ không giảm như trước . ![]() Sau đây là chương trình mình đã dùng : Code:
ADCON1 = %00011111 ' CHUYEN PORTA , PORTE SANG DIGITAL ADCON0 = %00010011 ' Set PORTA analog CHON ADC KENH 4 Define ADC_BITS 8 chỉ dùng ADC 8 bit Define ADC_CLOCK 4 ' Set clock source (4 : 4 TOSC) DEFINE ADC_SAMPLEUS 50 'ADC sampling time in microseconds MAIN : ADCIN 4 , TEMP ' đọc giá trị adc kênh 4 , đưa vào biến TEMP PAUSE 200 ' chờ 200 mili giây LCDOUT DEC3 TEMP ' xuất biến temp ra lcd dưới dạng số thập phân 3 chữ số PAUSE 500 ' chờ 500 mili giây GOTO MAIN ' làm lại từ đầu . To THAIVU : hy vong sẽ có dịp trao đổi thêm về kinh nghiệm lập trình Pic dùng Picbasic Pro với bạn . thân chào ! à , các bạn cho mình hỏi thêm . với Vref+ trong ADC 8 bit thì mình cân chỉnh bao nhiêu , 10 bit thì bao nhiêu là chính xác ? Đề tài trên mình đã cân chỉnh là 2,73 v cho ADC 8 bit như vậy có đúng không ? thay đổi nội dung bởi: falleaf, 27-04-2007 lúc 08:38 AM. |
![]() |
![]() |
![]() |
#24 |
Đệ tử 2 túi
Tham gia ngày: Feb 2006
Bài gửi: 32
: |
trời ạ mới có 2 tuần ko đăng nhập mà cái luồng này đã loạn xì ngầu lên cả rùi, vùa có 16F877A vừa có 16F4520, LM35DZ, lại còn sài cả BASIC nữa chứ, rối quá. giao trước là chỉ dùng LM335, 16F877A và CCS thui mừ.
|
![]() |
![]() |
![]() |
#25 |
Đệ tử 4 túi
Tham gia ngày: Aug 2006
Bài gửi: 61
: |
Code:
#include <16F877.h> #device 16F877*=16 ADC=10 #include <math.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=1000000) #define use_portd_lcd TRUE #include<lcd.c> long adc,nhietdo; int8 a,b,c,d; void tachhang(int&a,int&b,int&c,int&d); char so[11] ="0123456789"; void main() { setup_adc(adc_clock_internal); setup_adc_ports(AN0); set_adc_channel(0); delay_ms(100); while(true) { adc=read_adc(); nhietdo = (adc-559)/0.2024; tachhang(a,b,c,d); lcd_init(); delay_ms(100); lcd_putc(so[a]); lcd_putc(so[b]); lcd_putc(so[c]); lcd_putc('.'); lcd_putc(so[d]); delay_ms(900); } } void tachhang(int&a,int&b,int&c,int&d) { a=nhietdo/1000; b=(nhietdo%1000)/100; c=(nhietdo%100)/10; d=nhietdo%10; } /* 5V = 1024 muc =>1 muc ADC ung voi ap =4.88 => 10mV tuong ung voi 2.048 muc ADC 0oC = 273oK => 0oC ung voi muc dien the 2.73V ung voi 559 muc ADC Nhiet do = dien the Analog/10 - 273 Tuong ung Nhiet do = (adc -559)/2.024 Xuat gia tri nhiet do ra LED 7 doan hay LCD*/ thay đổi nội dung bởi: namqn, 06-05-2007 lúc 10:33 PM. |
![]() |
![]() |
![]() |
#26 |
Đệ tử 2 túi
Tham gia ngày: Feb 2006
Bài gửi: 32
: |
Bạn ko dùng ngắt ngoài àh, nếu vậy thì khi truyền dữ liệu qua PC bằng RS232 nó sẽ liên tục thông báo nhiệt độ đo được. chẳng hạn khi bạn viết câu thông báo ('nhiệt độ đo được là',temp) thì nó sẽ liên tục viết ra câu thông báo trên. Ko biết có pác nào biết cách khắc phục ko ?
![]() |
![]() |
![]() |
![]() |
#27 |
Đệ tử 5 túi
Tham gia ngày: Oct 2008
Bài gửi: 95
: |
đề tài này sao không thấy ai tích cực viết tiếp nhỉ !
|
![]() |
![]() |
![]() |
#28 |
Đệ tử 1 túi
Tham gia ngày: Jun 2008
Bài gửi: 19
: |
Đo nhiệt độ 2 kênnh
![]()
__________________
Tôi ơi đừng tuyệt vọng! |
![]() |
![]() |
![]() |
#29 |
Đệ tử 5 túi
Tham gia ngày: Oct 2008
Bài gửi: 95
: |
bạn có thể cho mình biết sao cách kết nối LCD có vẻ khác so với cách kết nối mà mình hay dùng để hiển thị.
|
![]() |
![]() |
![]() |
#30 | |
Đệ tử 1 túi
Tham gia ngày: Jun 2008
Bài gửi: 19
: |
Lcd
Trích:
![]() ![]()
__________________
Tôi ơi đừng tuyệt vọng! |
|
![]() |
![]() |
![]() |
|
|