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 Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc 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 20-03-2006, 12:06 AM   #10
pb1
Đệ tử 2 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 31
:
PWM cho PIC16f877A

Sử dụng PIC chạy với thạch anh là 4MHz, tần số điều chế độ rộng xung là 1000Hz với duty cycle là 50%
;================================================= ========
1/ thiết lập chu kì PWM (1000Hz=0.001S) bằng cách ghi vào thanh ghi PR2.
Chu kì điều chế độ rộng xung(PWM Period)=(PR2+1)*4*Tosc*TMR2 Prescale value
tỉ lệ TMR2 prescale là 1:4, thì ta có
Tosc=1/4000000=2.5*10-7
ta cũng có
PR2=(Period/(4*Tosc*TMR2 prescale))-1
nên: PR2=(0.001/(4*2.5*10-7*4))-1=249
bằng cách thiết lập như vậy ta có chương trình như sauviết bằng assembler, lần sau sẽ là Hi-Tech PIC)
bsf STATUS,PR0;change from bank 1 to bank 0
movlw d'249'
movwf PR2
bcf STATUS,PR0
;================================================= ========
2/ thiết lập PWM duty cycle bằng cách ghi vào thanh ghi CCPR1L và hai bit 5 và 4 của thanh ghi CCP1CON.
ta có công thức sau:
PWM duty cycle= (CCPR1L:CCP1CON<5:4>)*Tosc*TMR2 Prescale value
nên suy ra: CCPR1L:CCP1CON<5:4>=PWM duty cycle/(Tosc*TMR2 prescale)
PWM duty cycle=50% của chu kỳ
PWM duty cycle=50%*0.001=0.0005
CCPR1L:CCP1CON<5:4>=0.0005/(2.5*10-7*4)
CCPR1L:CCP1CON<5:4>=500
Số 500 trong số nhị phân viết là:0111110100
vậy:CCPR1L=01111101 và CCP1CON<5:4>=00
do đó, ta có chương trình sau:
movlw b'01111101'
movwf CCPR1L
bcf CCP1CON,CCP1X;set bit 1
bcf CCP1CON,CCP1Y;set bit 0
;================================================= ========
3/thiết lập chân CCP1 là một lối ra bằng cách xóa bit TRISC<2>
bsf STATUS,PR0
movlw b'11111011'
andwf TRISC
bcf STATUS,PR0

;================================================= ========
4/thiết lập giá trị prescale TMR2 và cho phép TMR2 bằng cách ghi vào T2CON(thanh ghi điều khiển Timer2)
Ta đã sử dụng từ trước là thiết lập giá trị prescale là 1:4.
Prescale TMR2 là các bit 1 và 0 trong thanh ghi T2CON
Để cho phép TMR2 là bit số 2.
Ta có đoạn chương trình như sau:
movlw b'00000101' ;Timer2 on,prescale=1:4
movwf T2CON
;================================================= ========
5/Thiết lập CCP1 ở chế độ điều chế độ điều chế độ rộng xung (PWM module)
movf CCP1CON,W
andlw b'00110000'
iorlw b'00001111';cho phép module PWM
movwf CCP1CON
;================================================= ========
thế đã nhỉ, mệt quá, đi ngủ thôi

Đã lâu không viết băng assembler, hôm nay tiện làm về điều khiển động cơ, thế là hứng lên viết mấy dòng, có lẽ có nhiều thếu sot, mong các bác góp ý cho em

Khi nào em làm xong về điều khiển động cơ thì em sẽ port các sch lên diễn đàn cho cả nhà xem, rất mong cả nhà góp ý


thân!
pb1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Ð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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
TUT về USART trong PIC16F877A mafd_47a MPASM 16 19-02-2025 05:32 AM
TUT ve I2C ( pic16f877a ) mafd_47a MPASM 28 28-01-2025 10:45 PM
Bộ so sánh và PWM cho PIC16F877A anhquangngai Cơ bản về vi điều khiển và PIC 24 08-09-2012 09:00 AM
Pic16f877a TỪ DỄ TỚi KhÓ ntc Cơ bản về vi điều khiển và PIC 373 23-05-2009 10:24 PM
CCS C for PIC16F877A nhh Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 405 24-04-2008 12:00 PM


Múi giờ GMT. Hiện tại là 09:27 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