Các hàm dùng cho ADC21... • Giá trị channel tuỳ số chân chức năng ADC mỗi chip... biến đổi ADC sẽ mất vài us.. set_ADC_channel lấy chân đó... KBHIT • RC6 và RC7 cho RX và TX trong gia
Trang 1TR ƯỜ NG ðẠ I H Ọ C KHOA H Ọ C T Ự NHIÊN
TR ƯỜ NG ðẠ I H Ọ C KHOA H Ọ C T Ự NHIÊN
Trang 3Ngôn
ng ữ C
3
Trang 4Ngôn ng ữ C…
4
Trang 5Ngôn ng ữ C…
5
Trang 6Ngôn ng ữ C…
6
Trang 8Xu ấ t nh ậ p
8
Trang 11Hàm delay
• Cần có khai báo #use delay ( clock =xxxx)
VD : #use delay ( clock = 20000000 )
• Hàm delay không sử dụng bất kỳ timer nào
Trang 19Nguyên t ắ c ho ạ t ñộ ng c ủ a ADC
• ADC bộ chuyển ñổi tương tự sang số
• Giá trị xuất ra dạng số phụ thuộc vào ñiện
thế analog, ñiện thế tham chiếu và số bit
của ADC(còn ñược gọi là ñộ phân giải)
của ADC(còn ñược gọi là ñộ phân giải)
• ADC 8 bit có giá trị( 0-255 ) và ADC 10 bit
(0-1023 )
Ví dụ: ADC có 10 bit
ADC = V/VREF * 1023
19
Trang 20Nguyên t ắ c ho ạ t ñộ ng c ủ a ADC…
• Phải có khai báo #DEVICE cho biết dùng
ADC mấy bit (thường là 8 hay 10 bit hoặc
hơn)
• Có thể chuyển giá trị của bộ ADC 10 bit
• Có thể chuyển giá trị của bộ ADC 10 bit
thành ADC 8 bit bằng cách chia cho 4
• Có thể lập trình bằng các cập nhật, hay
dùng ngắt ADC
20
Trang 21Các hàm dùng cho ADC
21
Trang 22Setup_ADC ( mode )
Dùng xác ñị nh cách th ứ c ho ạ t ñộ ng b ộ bi ế n ñổ i ADC Xem chi ti ế t t ừ ng lo ạ i PIC khác nhau Các tham s ố thông
Trang 23Setup_ADC_ports ( value )
Xác ñị nh chân l ấ y tín hi ệ u analog và ñ i ệ n th ế chu ẩ n s ử d ụ ng Xem chi ti ế t t ừ ng lo ạ i PIC khác nhau Vref : áp chu ẩ n , Vdd :
áp ngu ồ n
Sau ñ ây là các giá tr ị thông d ụ ng cho value:
23
Trang 25• Giá trị channel tuỳ số chân chức năng
ADC mỗi chip Thường có giá trị :
• 0-chân A0 , 1-chân A1, 2-chân A2, 3-chân A3…
25
Trang 26Read_ADC ( mode )
biến đổi ADC ( sẽ mất vài us )
giá trị trả về của hàm là 8 bit, ngược lại là 16 bit nếu khai báo
#DEVICE sử dụng ADC 10 bit trở lên
• S ẽ l ấ y ADC t ừ chân b ạ n ch ọ n trong hàm
Set_ADC_channel( ) tr ướ c ñ ó
set_ADC_channel( ) lấy chân đó
26
Trang 27Read_ADC ( mode )
Mode có thể có hoặc không , gồm có :
• ADC_START_AND_READ : giá trị mặc định
• ADC_START_ONLY : bắt đầu chuyển đổi và trả về
• ADC_READ_ONLY : đọc kết quả chuyển đổi lần cuối
#DEVCE 8 bit 10 bit 11 bit 16 bit
Trang 28Ví d ụ
28
Trang 29Ví d ụ
Ví d ụ : ðọ c d ữ li ệ u t ừ analog t ừ chân AN0 xu ấ t ra port C
#include<16f877.h>
#device *=16 ADC=8
#use delay (clock = 16000000)
void main (void)
Trang 30#include<16f877.h>
#device *=16 ADC=8
#use delay (clock = 16000000)
void main (void)
Trang 32Ho ạ t ñộ ng port n ố i ti ế p
• Ch ươ ng này s ẽ giúp b ạ n vi ế t ch ươ ng trình giao ti ế p PC
• V ð K truy ề n d ữ li ệ u cho PC x ử lý , ho ặ c nh ậ n giá tr ị t ừ PC
ñể x ử lý và ñ i ề u khi ể n
#use delay (clock = 40000000 ) // OSC 40Mhz
#use delay (clock = 40000000 ) // OSC 40Mhz
#use rs232 (baud=19200 , parity=n ,
xmit=pin_C6 , rcv=pin_C7 )
// baud= 19200 , không chẵn lẻ , chân truyền C6 , chân nhận C7
32
Trang 33Các hàm dùng trong giao ti ế p
n ố i ti ế p
33
Trang 34Các hàm dùng trong giao ti ế p
n ố i ti ế p…
34
Trang 35Các hàm dùng trong giao ti ế p
n ố i ti ế p…
35
Trang 36printf ( string )
• Printf ( cstring , values )
• Dùng xuất chuỗi theo chuẩn RS232 ra PC
- string là 1 chuỗi hằng hay 1 mảng ký tự ( kết thúc bởi ký tự null )
Trang 37Format c ủ a value
D ạ ng format c ủ a value theo ki ể u %wt Trong ñ ó w có th ể có ho ặ c không, có giá
tr ị t ừ 1-9 ch ỉ rõ có bao nhiêu ký t ự ñượ c xu ấ t ra, ho ặ c 01-09 s ẽ chèn thêm
0 cho ñủ ký t ự ho ặ c 1.1-1.9 cho tr ườ ng h ợ p s ố th ự c, còn t là ki ể u giá tr ị
• _ t có th ể là :
• C : 1 ký t ự
• S : chu ỗ i ho ặ c ký t ự
• U : s ố 8 bit không d ấ u
• x : s ố 8 bit ki ể u hex ( ký t ự vi ế t th ườ ng ,VD : 1ef )
• x : s ố 8 bit ki ể u hex ( ký t ự vi ế t th ườ ng ,VD : 1ef )
• X : s ố 8 bit ki ể u hex ( ký t ự vi ế t hoa ,VD : 1EF )
• D : s ố 8 bit có d ấ u
• e : s ố th ự c có lu ỹ th ừ a VD : e12
• f : s ố th ự c 22
• Lx : s ố hex 16 /32 bit ( ký t ự vi ế t th ườ ng )
• LX : hex 16 /32 bit ( ký t ự vi ế t hoa )
• Lu : s ố th ậ p phân không d ấ u
• Ld : s ố th ậ p phân có d ấ u
Trang 38KBHIT ( )
• RC6 và RC7 cho RX và TX trong giao tiếp cổng COM , VDK PIC trang bị phần cứng phục vụ
việc này với thanh ghi gởi và nhận và các bit
báo hiệu tương ứng Do ñó khi dùng RS232 hỗ trợ từ phần cứng thì KHBIT ( ) trả về TRUE nếu
Trang 39Ví d ụ g ử i d ữ li ệ u qua RS232
#include<16f877.h>
#use delay (clock = 16000000)
#use rs232 (uart1, baud=9600,parity=n,xmit=pin_c6, rcv=pin_c7 )
Trang 40Ví d ụ nh ậ n d ữ li ệ u qua RS232
#include<16f877.h>
#use delay (clock = 16000000)
#use rs232 (uart1, baud=9600,parity=n,xmit=pin_c6,