TÀI LIỆU MÔN KĨ THUẬT VI XỬ LÍ PIC18F4520 TÀI LIỆU MÔN KĨ THUẬT VI XỬ LÍ PIC18F4520 TÀI LIỆU MÔN KĨ THUẬT VI XỬ LÍ PIC18F4520 TÀI LIỆU MÔN KĨ THUẬT VI XỬ LÍ PIC18F4520 TÀI LIỆU MÔN KĨ THUẬT VI XỬ LÍ PIC18F4520 TÀI LIỆU MÔN KĨ THUẬT VI XỬ LÍ PIC18F4520 TÀI LIỆU MÔN KĨ THUẬT VI XỬ LÍ PIC18F4520
Trang 1BÀI 7 BIẾN ĐỔI TƯƠNG TỰ - SỐ (ADC) Mục tiêu của bài học:
(1) Trình bày được một số khái niệm, đặc điểm và hoạt động của ADC; (2) Trình bày được đặc điểm, hoạt động và tính chọn giá trị cho các thanh ghi của bộ ADC trên PIC18F4520;
(3) Thiết lập và điều khiển chuyển đổi tương tự - số sử dụng thư viện
ADC.h;
(4) Lập trình ứng dụng chuyển đổi tương tự - số và hiển thị kết quả trên led đơn; Lập trình đo điện áp và điều khiển thiết bị
7.1 Giới thiệu bộ chuyển đổi tương tự - số (ADC)
- Bộ chuyển đổi tương tự sang số – ADC (Analog to Digital Converter), lấy mức điện thế vào tương tự, sau một khoảng thời gian sẽ sinh ra mã đầu ra dạng số
- Đầu vào tưng tự: VA
- Lệnh START: Ra lệnh bắt đầu biến đổi
- ECO: Tín hiệu báo chuyển đổi xong
- VA > VAX: dừng chuyển đổi
- Xung Clock: xung nhịp chuyển đổi ADC
- Độ phân giải: được biểu thị bằng số bit của tín hiệu số đầu ra Số lượng
bit càng nhiều sai số lượng tử càng nhỏ, độ chính xác càng cao Thông thường số bit đầu ra là 4, 8, 16, 32 bit …
- Điện áp tham chiếu: Là giải điện áp sử dụng để so sánh với tín hiệu đầu
vào, bao gồm điện áp tham chiếu trên(+) VREF+; và điện áp tháp chiếu dưới(-) VREF-
- Tốc độ chuyển đổi: Tốc độ chuyển đổi được xác định bởi thời gian cần
thiết hoàn thành một lần chuyển đổi A/D
- Công thức chuyển đổi tương tự - số
𝑽𝑨 = 𝑫𝒐𝒖𝒕 ∗(𝑽𝒓𝒆𝒇+ − 𝑽𝒓𝒆𝒇−)
𝟐 𝒏 −𝟏 + 𝑽𝒓𝒆𝒇−
VA Điện áp vào tương tự
Dout Đầu ra số (10 bit)
𝑉𝑟𝑒𝑓+ Điện áp thap chiếu trên (+)
Trang 2𝑉𝑟𝑒𝑓− Điện áp tham chiếu dưới (-)
7.2 Bộ ADC trên vi điều khiển PIC18F4520
- Giới thiệu:
Một bộ biến đổi ADC 10 bit;
13 kênh đầu vào AN0-AN12, chuyển kênh bằng phần mềm;
Điện áp tham chiếu có thể lựa chọn từ nguồn cấp(VSS, VDD) hoạc bên ngoài (AN2, AN3) bằng phần mềm;
Nguồn xung được lấy từ FOSC.
- Lựa chọn hệ số chia tần cho ADC
- Lựa chọn cách ghi giá trị số trên thanh ghi
+ Ghi dồn bên phải: 10 bit ADC lưu vào D9 đến D0 của 2 thanh ghi chứa + Ghi dồn bên trái: 10 bit ADC lưu vào D15 đến D6 của 2 thanh ghi chứa
7.3 Lựa cọn giá trị cho ADCON1
Ví dụ: Thiết lập giá trị của than ghi ADCON1 để AN3 là đầu vào tương tự?
Trang 3Để lựa chọn cho AN3 là đầu vào tương tự thì PCFG3:PCFG0 có thể thiết lập các giá trị từ 0000 đến 1011 Nếu cần sử dụng AN4 đến AN12 là đầu vào/ra
số thì thiết lập giá trị cho PCFG3:PCFG0 là 1011
Vì vậy: ADCON1 = 0b00001011; hay portconfig = 11
Trang 5- Chương trình điều khiển
- Kết quả mô phỏng
Dout = 0b1011111111 = 767 (D)
Vref+ = 5V; Vref- = 0V
Trang 6Nên : VA = (767 * 5)/1023 = 3.74877 (V),
Nhận xét: Điện áp đo được bằng vi điều khiển đúng với điện áp đo trên đồng hồ
là 3.5V
Trang 7BÀI 8 ĐIỀU CHẾ ĐỘ RỘNG XUNG (PWM) Mục tiêu của bài học
(1) Trình bày được một số khái niệm và ứng dụng của xung PWM;
(2) Trình bày được đặc điểm, hoạt động và tính chọn giá trị cho các thanh ghi của bộ điều chế độ rộng xung (PWM) trên PIC18F4520;
(3) Lập trình điều khiển PWM sử dụng thư viện pwm.h;
(4) Lập trình ứng dụng tạo xung PWM trên kênh CCP1 để điều khiển tốc độ MOTOR một chiều
8.1 Một số khái niệm, quy ước chung
- Điều chế độ rộng xung (PWM) được viết tắt bởi cụm từ tiếng Anh Width Modulation) Đây là phương pháp điều chế độ rộng của xung vuông có chu kỳ không đổi
(Pulse Ứng dụng của xung PWM:
• Điều khiển góc quay của động cơ RC Servo
• Trong viễn thông, PWM là một dạng điều chế tín hiệu, trong đó độ rộng xung tương ứng với các giá trị dữ liệu cụ thể được mã hoá ở một đầu và được giải mã ở đầu kia
• Điều khiển độ sáng của đèn (đèn nền màn hình LCD, độ sáng led quảng cáo…)
• Điều khiển tốc độ motor DC( robot, xe đạp điện…)
Trang 8• Điều chỉnh điện áp
8.2 Bộ tạo xung PWM trên PIC18F4520
- Chu kì là khoảng cách từ S tới S Tín hiệu S được tạo bởi sự so sánh bằng giữa
bộ đếm TMR2 với giá trị của thanh ghi PR2
- Độ rộng là khoảng cách từ S tới R Tín hiệu R được tạo bởi sự so sánh bằng giữa bộ đếm TMR2 với 10 bit (CCPRxL:CCPxCON<5:4>)
- Thiết lập chu kì
- Thiết lập độ rộng
Chú ý: 1<PR2<=255; PVTMR2 có thể nhận các giá trị 1, 4 hoạc 16
Trang 9- Thiết lập hệ số chia tần cho Timer2 bằng thanh ghi T2CON
Ví dụ: đoạn chương trình thiết lập hệ số chia 1 cho Timer2 là:
T2CONbits.T2CKPS1=0;
T2CONbits.T2CKPS0=0;
8.3 Điều khiển PWM sử dụng thư viên pwm.h
- Các hàm trong thư viện ADC.h
Tra cứu nội dung các hàm trên tong Tài liệu tra cứu PIC, Giáo trình Vi
điều khiển PIC hoạc tài liệu hướng dẫn sử dụng thư viện MCC18
Trang 108.4 Ví dụ áp dụng
- Mạch điện
- Yêu cầu:
Cho sơ đồ mạch điện như hình trên:
Với FOSC = 8MHz, lập trình tạo xung PWM1(CCP1) có tần số 1KHz, độ rộng xung bằng 70% chu kì
Trang 11- Chương trình điều khiển
- Kết quả mô phỏng
Trang 12BÀI 3 NGẮT NGOÀI Mục tiêu bài học:
Sinh viên nhớ và hiểu:
₋ Quá trình thực hiện ngắt của vi điều khiển
₋ Các bit điều khiển ngắt ngoài;
₋ Các bước lập trình sử dụng ngắt ngoài
Sinh viên vận dụng các kiến thức đã học để lập trình, mô phỏng hoạt động của ngắt ngoài, bao gồm:
- 01 nguồn ngắt với mức ưu tiên cao;
- 01 nguồn ngắt với mức ưu tiên thấp;*
- 02 nguồn ngắt với mức ưu tiên khác nhau.*
*: Học trực tiếp (trên lớp)
3.1 Khái quát về ngắt
Khái niệm chung: Ngắt là tạm thời dừng công việc hiện tại và chuyển sang thực hiện một nhiệm vụ khác (thường là cấp thiết, quan trọng hơn) sau đó lại quay lại thực hiện tiếp công việc cũ (đang thực hiện dở)
Khái niệm ngắt ở vi điều khiển: Khi vi điều khiển đang thực hiện các lệnh ở chương trình chính (CTC), nếu có tín hiệu ngắt (giả thiết là trước đó đã cho phép ngắt), vi điều khiển sẽ thực hiện nốt lệnh đang thực hiện dở (giả sử là lệnh thứ n)
và tạm dừng CTC, chuyển sang thực hiện chương trình con phục vụ ngắt (CTCPVN) Sau khi thực hiện xong CTCPVN, vi điều khiển lại quay trở lại thực hiện tiếp các lệnh ở CTC (từ lệnh thứ n+1)
Trang 13Vai trò của khối xử lý ngắt: Giúp cho vi điều khiển trở nên “đa nhiệm” hơn, ví dụ: Vừa có thể thực hiện điều khiển tuần tự, vừa có thể trao đổi dữ liệu
3.2 Ngắt ngoài trên PIC18F4520
- PIC18F4520 có 02 vector ngắt khác nhau, bao gồm:
+ 0x0008: vector ngắt ưu tiên cao;
+ 0x0018: vector ngắt ưu tiên thấp (xem thêm mục 4.2 trong giáo trình hoặc mục 9.0 trong tài liệu PIC18F4520 datasheet)
- PIC18F4520 có 15 nguồn ngắt khác nhau (xem thêm mục 4.2 trong giáo trình hoặc mục 9.0 trong tài liệu PIC18F4520 datasheet
- Ngắt ngoài (External Interrupt): Là ngắt gây ra bởi nguyên nhân đến từ bên bên ngoài vi điều khiển PIC184520 có 3 nguồn ngắt ngoài, gọi tắt là INT0, INT1 và INT2 Để gây ra ngắt cần có mạch điện bên ngoài tạo ra sự chuyển mức logic từ
“0” sang “1” (thường được gọi là sườn dương) hoặc sự chuyển mức logic từ “1” sang “0” (thường được gọi là sườn âm) đưa đến chân RB0/INT0 hoặc RB1/INT1 hoặc RB2/INT2
3.3 Quá trình thực hiện ngắt của vi điều khiển
Khái niệm về con trỏ lệnh: Là một thanh ghi đặc biệt, luôn trỏ và lệnh tiếp theo
sẽ được thực hiện Khi hoạt động, vi điều khiển đọc (lấy) mã lệnh ở ô nhớ trong
bộ nhớ chương trình có địa chỉ tương ứng với giá trị của IP để giải mã và thực hiện lệnh
Quá trình thực hiện ngắt của vi điều khiển:
Giả thiết tín hiệu ngắt đến khi vi điều khiển đang thực hiện ở lệnh thứ N trong CTC, khi đó vi điều khiển sẽ thực hiện theo trình tự sau:
- Thực hiện nốt lệnh thứ N; lưu giá trị của các thanh ghi vào ngăn xếp, trong đó
có IP=0xabcd;
Trang 14- Chuyển sang thực hiện CTCPVN bằng cách gán cho IP giá trị 0x0008 (nếu là ngắt có mức ưu tiên cao) hoặc 0x0018 (nếu là ngắt có mức ưu tiên thấp)
- Sau khi thực hiện xong các lệnh của CTCPVN, vi điều khiển quay lại thực hiện tiếp các lệnh của CTC bằng cách gán cho IP giá trị 0xabcd+1 (nếu lệnh thứ N được mã hóa bằng 1 byte) đồng thời phục hồi lại giá trị của các thanh khi khác 3.4 Các bit điều khiển ngắt ngoài
Các bit điều khiển ngắt ngoài nằm trong các thanh ghi sau (xem thêm mục 4.4 trong giáo trình hoặc mục 9.1-9.6 trong tài liệu PIC18F4520 datasheet):
- Thanh ghi ADCON1:
Thiết lập các chân AN0-AN12 là vào/ra số hoặc vào tương tự
bit 7 bit 0
- Thanh ghi TRISB:
Thiết lập các chân RB0-RB7 có chiều vào hoặc ra (số)
Khi sử dụng các nguồn ngắt ngoài INT0, INT1 hoặc INT2, cần thiết lập chiều vào cho các chân RB0/INT0, RB1/INT1 hoặc RB2/INT2
Ví dụ: Khi sử dụng nguồn ngắt INT1 cần viết:
TRISB=0bxxxxxx1x;
Trong đó: x có thể là 0 hoặc 1 nếu các chân RB0, RB2-RB7 không được sử dụng
- Thanh ghi INTCON:
GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF(1) bit 7 bit 0
- Thanh ghi INTCON2
bit 7 bit 0
- Thanh ghi INTCON3
INT2IP INT1IP — INT2IE INT1IE — INT2IF INT1IF
bit 7 bit 0
- Thanh ghi RCON
IPEN SBOREN — /RI /TO /PD /POR /BOR bit 7 bit 0
Trang 153.5 Các bước lập trình sử dụng ngắt ngoài
3.5.1 Khung chương trình có sử dụng ngắt và cách viết
Ngoài các phần tương tự như một chương trình không sử dụng ngắt (khai báo thư viện, biến/hằng số, cấu hình, chương trình chính), khung chương trình có sử dụng ngắt có thêm 02 điểm để viết các CTCPVN (phần tô vàng bên dưới) tương ứng với ngắt có mức ưu tiên cao (vector 0x0008) và ngắt có mức ưu tiên thấp (vector 0x0018), cụ thể như sau:
//khai báo thu viện
#pragma interruptlow low_isr
void low_isr (void)
#pragma interrupt high_isr
void high_isr (void)
{
//Các lệnh của CTCPVN với mức ưu tiên cao
}
Trang 16C COMPILER USER’S GUIDE” để viết khung chương trình:
- Nhập từ khóa vector=0x08, copy phần khung CTCPVN ở mục 2.9.2.3:
- Dán (paste) vào sau các câu lệnh cấu hình (#pragma):
Trang 17Khi biên dịch, các phần khác nhau trong khung chương trình trên sẽ được trình biên dịch bố trí vào các vị trí khác nhau trong bộ nhớ chương trình, cụ thể như sau:
//mã của lệnh chuyển tới thực hiện hàm main
{_asm GOTO high_isr _endasm}
{_asm GOTO low_isr _endasm}
do trình biên dịch gán
void high_isr (void)
và Low-Priority Interrupt Vector thường cũng không đủ để viết các lệnh của CTCPVN có mức ưu tiên cao và CTCPVN có mức ưu tiên thấp nên ở đây chi chứa mã của lệnh gọi tới các hàm high_isr và low_isr
3.5.2 Viết các lệnh của chương trình chính
Trang 18INTEDGx và INTxIF thuộc thanh ghi nào cần nhớ các từ khóa GIE, INTxIE, INTEDGx và INTxIF (x=0, 1 hoặc 2) và tra cứu trong “Tài liệu tra cứu PIC” hoặc tài liệu “PIC18F4520 Data Sheet” Hình dưới minh họa cách sử dụng tài liệu
“PIC18F4520 Data Sheet” để tra cứu bit INT0IE
b Các lệnh theo đề bài
Các lệnh được viết ở chương trình chính sẽ là “các công việc tuần tự, lặp lại” Ví
dụ với yêu bài toán sau:
Giả thiết có mạch điện mô phỏng
như hình bên Viết chương trình
điều khiển:
- Các LED1-4 sáng tuần
tự theo chu trình như hình dưới;
- LED5 sáng trong thời gian ~1s
RA0/AN0/C1IN- 3
RA1/AN1/C2IN-RA2/AN2/C2IN+/VREF-/CVREF 4
RA3/AN3/C1IN+/VREF+
5 RA4/T0CKI/C1OUT 6
RA5/AN4/SS/HLVDIN/C2OUT 7
RA6/OSC2/CLKO 14
RA7/OSC1/CLKI 13
RB0/AN12/FLT0/INT0 33
RB1/AN10/INT1 34
RB2/AN8/INT2 35
RB3/AN9/CCP2A 36
RB4/KBI0/AN11 37
RB5/KBI1/PGM 38
RB6/KBI2/PGC 39
RB7/KBI3/PGD 40
RC0/T1OSO/T13CKI 15RC1/T1OSI/CCP2B 16RC2/CCP1/P1A 17RC3/SCK/SCL 18RC4/SDI/SDA 23RC5/SDO 24RC6/TX/CK 25RC7/RX/DT 26RD0/PSP0 19RD1/PSP1 20RD2/PSP2 21RD3/PSP3 22RD4/PSP4 27RD5/PSP5/P1B 28RD6/PSP6/P1C 29RD7/PSP7/P1D 30RE0/RD/AN5 8RE1/WR/AN6 9RE2/CS/AN7 10RE3/MCLR/VPP 1
Trang 19Các lệnh được viết ở CTCPVN sẽ là “các công việc được thực hiện khi xảy ra ngắt”
Ví dụ với bài toán trên, nếu ngắt INT2 được khởi tạo, khi nhấn PB sẽ gây ra ngắt
Vì vậy, “điều khiển LED5 sáng trong thời gian ~1s” sẽ được đặt ở CTCPVN 3.6 Lập trình, mô phỏng hoạt động của ngắt ngoài
Từ các phân tích nêu trong mục 3.5, thuật toán của bài toán được trình bày như sau:
Trang 20PORTB=0b0001000; //LED2 sáng DelayKTCYx(100); // trễ
PORTB=0b0010000; //LED3 sáng DelayKTCYx(100); // trễ
PORTB=0b0100000; //LED4 sáng DelayKTCYx(100); // trễ
Trang 21Phần 1: Sử dụng trình dịch, phần mềm mô phỏng; ghép nối phần cứng; lập trình điều
khiển vào/ra
Chú ý:
- Các chân vào/ra được thay đổi để đảm bảo tất cả các đề thi không trùng lặp nhau
Câu 1.1 Vẽ, lắp ráp mạch điện và lập trình theo yêu cầu:
a Vẽ, lắp ráp mạch điện như sau:
- 04 LED đơn LED1 - LED4 nối lần lượt với các chân
RD0 - RD3 theo sơ đồ như hình bên;
- Nút nhấn PB1 nối với RB0 theo sơ đồ như hình bên
b Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu:
- Khi PB1 ở trạng thái nhả: các LED sáng/tắt theo chu trình sau:
LED1 sáng, các LED
khác tắt trong ≈ 1 giây
LED2 sáng, các LED khác tắt trong ≈ 1 giây
LED3 sáng, các LED khác tắt trong ≈ 1 giây
LED4 sáng, các LED khác tắt trong ≈ 1 giây
- Khi PB1 ở trạng thái nhấn, tất cả các LED tắt
Câu 1.2 Vẽ, lắp ráp mạch điện và lập trình theo yêu cầu:
a Vẽ, lắp ráp mạch điện như sau:
- 04 LED đơn LED1 - LED4 nối lần lượt với các chân
RD0 - RD3 theo sơ đồ như hình bên;
- Nút nhấn PB1 nối với RB0 theo sơ đồ như hình bên
b Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu:
- Khi bật nguồn hoặc reset: 4 LED tắt;
- Nhấn PB1 một lần, LED1 sáng, các LED khác tắt; nhấn PB1 hai lần, LED2 sáng, các LED khác tắt; nhấn PB1 ba lần, LED3 sáng, các LED khác tắt; nhấn PB1 bốn lần, LED4 sáng, các LED khác tắt; nhấn PB1 từ năm lần trở lên, tất cả các LED sáng;
R 4k7
VCC
LED I/O pin
PB
R 560 I/O pin
R 4k7
VCC
LED I/O pin
PB
R 560 I/O pin
Trang 22Câu 1.3 Vẽ, lắp ráp mạch điện và lập trình theo yêu cầu:
a Vẽ, lắp ráp mạch điện như sau:
- 04 LED đơn LED1 - LED4 nối lần lượt với các chân
RD0 - RD3 theo sơ đồ như hình bên;
- Nút nhấn PB1 nối với RB0 theo sơ đồ như hình bên
b Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu:
- Khi bật nguồn hoặc reset: 4 LED tắt;
phân trên 4 LED (LED sáng tương ứng bit “1”, tắt tương ứng bit “0”) Giả thiết số lần nhấn
không lớn hơn 255 lần
Câu 1.4 Vẽ, lắp ráp mạch điện và lập trình theo yêu cầu:
a Vẽ, lắp ráp mạch điện như sau:
- 04 LED đơn LED1 - LED4 nối lần lượt với các chân
RD0 - RD3 theo sơ đồ như hình bên;
- Nút nhấn PB1 nối với RB0; nút nhấn PB2 nối với
RB1 theo sơ đồ như hình bên
b Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu như bảng trạng thái sau:
VCC
LED I/O pin
PB
R 560 I/O pin
R 4k7
VCC
LED I/O pin
PB
R 560 I/O pin
Trang 23Câu 1.5 Vẽ, lắp ráp mạch điện và lập trình theo yêu cầu:
a Vẽ, lắp ráp mạch điện như sau:
- LED1 nối với chân RD2; LED2 nối với chân RD3 theo
sơ đồ như hình bên;
- Nút nhấn PB1 nối với RB0; nút nhấn PB2 nối với
RB1 theo sơ đồ như hình bên
b Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu như sau:
- Khi PB1 ở trạng thái nhả: LED1 và LED2 tắt;
VCC
LED I/O pin
PB
R 560 I/O pin
Trang 24Phần 2: Thiết kế các ứng dụng sử dụng Ngắt, Timer, PWM, ADC, USART
2.1 Thiết kế các ứng dụng sử dụng ngắt ngoài
Câu 2.1.1 Vẽ, lắp ráp mạch điện và lập trình theo yêu cầu:
a Vẽ, lắp ráp mạch điện như sau:
- LED1 nối với chân RC1; LED2 nối với chân RC2 theo
sơ đồ như hình bên;
- Nút nhấn PB1 nối với chân RB0/INT0 theo sơ đồ như
hình bên
b Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu như sau:
- Khi bật nguồn hoặc reset: LED1 sáng/tắt liên tục
- Khi nhấn PB1, LED1 lập tức ngừng sáng/tắt, LED2 sáng/tắt 5 lần sau đó sau đó tắt và
LED1 tiếp tục sáng/tắt
Thời gian sáng/tắt của LED: ≈1 giây
Câu 2.1.2 Vẽ, lắp ráp mạch điện và lập trình theo yêu cầu:
a Vẽ, lắp ráp mạch điện như sau:
- LED1÷LED4 nối với các chân RD0÷RD3 theo sơ đồ
như hình bên;
- Nút nhấn PB1 nối với chân RB1/INT1 theo sơ đồ như
hình bên
b Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu như sau:
LED4 sáng/tắt liên tục với thời gian sáng/tắt: ≈1 giây trong khi LED1÷LED3 hiển thị số lần
nhấn PB1 dưới dạng số nhị phân (LED sáng tương ứng với bit “1”; LED tắt tương ứng với bit “0”) Giả thiết số lần nhấn PB1 không lớn hơn 7 lần
2.2 Thiết kế các ứng dụng sử dụng timer
Câu 2.2.1 Vẽ, lắp ráp mạch điện và lập trình theo yêu cầu:
a Vẽ, lắp ráp mạch điện như sau:
Chân RD0 nối với máy hiện sóng (oscilloscope) như hình bên
b Xác định hệ số chia tần, giá trị khởi tạo cho timer và viết chương trình theo yêu cầu như sau:
R 4k7
R 560
R 560
Trang 25Câu 2.2.2 Vẽ, lắp ráp mạch điện và lập trình theo yêu cầu:
a Vẽ, lắp ráp mạch điện như sau:
- LED1÷LED8 nối với các chân RD0÷RD7 theo sơ đồ như hình bên;
- Nút nhấn PB1 nối với chân RC0/T13CKI theo sơ đồ như hình bên
b Xác định hệ số chia tần, giá trị khởi tạo cho timer, chế độ hoạt động của timer và viết
chương trình theo yêu cầu như sau:
Sử dụng Timer1 đếm số lần nhấn PB1 và hiển thị số lần nhấn dưới dạng số nhị phân trên
LED1÷LED8 (LED sáng tương ứng với bit “1”; LED tắt tương ứng với bit “0”) Giả thiết số
lần nhấn không quá 255 lần
2.3 Thiết kế các ứng dụng sử dụng PWM
Câu 2.3.1 Vẽ, lắp ráp mạch điện và lập trình theo yêu cầu:
a Vẽ, lắp ráp mạch điện như sau:
Chân RC2/CCP1 nối với máy hiện sóng (oscilloscope) như hình bên;
PIC18F4520 hoạt động ở tần số 12Mhz
b Xác định hệ số chia tần, giá trị khởi tạo cho PR2 (hoặc đối số của hàm OpenPWMx), giá
trị khởi tạo cho CCPRxL:CCPxCON<5:4> (hoặc đối số của hàm SetDCPWMx) và viết
chương trình theo yêu cầu như sau:
Tạo xung trên chân CCP1 có chu kỳ 300µs, độ rộng nửa chu kỳ dương 120µs
Câu 2.3.2 Vẽ, lắp ráp mạch điện và lập trình theo yêu cầu:
a Vẽ, lắp ráp mạch điện như sau:
Chân RB3/CCP2A nối với máy hiện sóng (oscilloscope) như hình bên;
PIC18F4520 hoạt động ở tần số 12Mhz
b Xác định hệ số chia tần, giá trị khởi tạo cho PR2 (hoặc đối số của hàm OpenPWMx), giá
trị khởi tạo cho CCPRxL:CCPxCON<5:4> (hoặc đối số của hàm SetDCPWMx) và viết
chương trình theo yêu cầu như sau:
Tạo xung trên chân CCP2A có chu kỳ 800µs, độ rộng nửa chu kỳ dương: 240µs
Câu 2.3.3 Vẽ, lắp ráp mạch điện và lập trình theo yêu cầu:
a Vẽ, lắp ráp mạch điện như sau:
Chân RC1/CCP2B nối với máy hiện sóng (oscilloscope) như hình bên;
PIC18F4520 hoạt động ở tần số 12Mhz
b Xác định hệ số chia tần, giá trị khởi tạo cho PR2 (hoặc đối số của hàm OpenPWMx), giá
trị khởi tạo cho CCPRxL:CCPxCON<5:4> (hoặc đối số của hàm SetDCPWMx) và viết
chương trình theo yêu cầu như sau:
Tạo xung trên chân CCP2B có chu kỳ 80µs, độ rộng nửa chu kỳ dương: 20µs
R 4k7
R 560