Mua linh kiện điện tử tại Điện tử Nhật Tùng
Khóa học Vi điều khiển có phí Hình thức học: Video hoặc Kèm trực tiếp ===>>>> Kích vào hình để được biết thêm chi tiếtTable of Contents
Tải File bài giải
Pass giải nén: Huynhnhattung.com
===>>> Nếu bạn chưa có phần mềm giải nén:
Video Độ sáng Led đơn, Điều khiển bằng CCP PWM + Nút nhấn
Blog Độ sáng Led đơn, Điều khiển bằng CCP PWM + Nút nhấn
Đề bài độ sáng Led đơn:
Bài giải độ sáng Led đơn:
Phần cứng chương trình độ sáng Led đơn:
- Đề yêu cầu sử dụng 3 nút nhấn điều khiển cường độ của led đơn gồm cho cấp độ 0%, 40%, 60%.
- Đề yêu cầu sử dụng điều chế độ rộng xung PWM với duty thay đổi. Khi tạo xung CCP PWM nếu sử dụng hổ trợ từ phần mềm CCS hoặc từ nhà sản xuất thì chỉ có thể tạo được thông qua 2 chân CCP1 và CCP2. Ngoài ra người lập trình vẫn có khả năng tạo xung từ bất kể chân I/O nào có thể sử dụng delay, timer0, timer1,… Theo đề chân tạo xung bắt buộc vào chân RC1 đồng nghĩa với việc tạo xung bằng CCP2 để điều khiển tốc độ quay của quạt nhằm giảm nhiệt độ hệ thống.
- Sử dụng dao động ngoài thạch anh 8M gắn vào chân OSC1 OSC2. Khi làm phần cứng thì nhớ gắn vào.
- Các linh kiện chính cần sử dụng tham khảo tại.
Thông số kỹ thuật Mua Linh kiện Pic16F877A Pic16F877A Led đơn Led đơn Điện trở Điện trở Nút nhấn Nút nhấn Thạch anh Thạch anh Led đơn 12V Led đơn 12V Module L298 Module L298
Phần mềm độ sáng Led đơn:
Khai báo thư viện tiền sử lý của Led đơn:
- Vi điều khiển hiện tại mình đan dùng là Pic16F887
- Hiện dùng thạch anh ngoài và thạch anh ngoài khai báo 4M bằng lệnh #Fuses hs và #delay(clock=4M).
- Định nghĩa chân: tùy theo chức năng của chân mà tên định nghĩa được bám sát vào nội dung đan thực hiện.
- Tên khai báo biến phụ thuộc vào chức năng để khai báo cho phù hợp.
Chương trình chính thực hiện toàn bộ hoạt động của vi điều khiển dùng Led đơn:
- Bắt đầu chương trình chính phải khởi tạo ngõ vào ra cho vi điều khiển. Một chân của vi điều khiển thì làm nhiệm vụ I/O vì thế phải khỏi tạo. Port C điều khiển cường độ sáng của Led đơn tức đưa tín hiệu từ Vi điều khiển ra ngoài nên khởi tạo là 0x00. Port B nhận tín hiệu từ nút nhấn ở chân RB1, RB2, RB3 nên khởi tạo là 0xff.
- Khi sử dụng điều chế độ rộng xung do vi điều khiển hổ trợ thì sử dụng Timer2. Cách tính: Chu kỳ yêu cầu f = 5KHz => T=0.2ms. PR2 = 0.2ms/((1/4M)*4*1)-1 = 199. Sử dụng bộ chia 16. Nếu sử dụng bộ chia 1 hoặc 4 thì giá trị vượt 255 không thể đếm cho timer2. Duty = 0.2ms/((1/4M)*1) = 800. Tức giá trị cực đại của duty=800. Từ đó suy ra 40%, 60%, 0% theo yêu cầu đã đặt ra.
Gán giá trị ban đầu cho biến
- Kiểm tra nút nhấn: Khi nhấn nút B3 tức ngõ vào bằng 0 thì chống dội 20ms và chờ đến khi nhả nút B3 thì gán duty=0 tức 0% theo đúng yêu cầu của đề bài là nhấn rồi nhả mới thực hiện. Khi nhấn nút B2 tức ngõ vào bằng 0 thì chống dội 20ms và chờ đến khi nhả nút B3 thì gán duty=640 tức 60% theo đúng yêu cầu của đề bài là nhấn rồi nhả mới thực hiện. Khi nhấn nút B1 tức ngõ vào bằng 0 thì chống dội 20ms và chờ đến khi nhả nút B3 thì gán duty=320 tức 40% theo đúng yêu cầu của đề bài là nhấn rồi nhả mới thực hiện.
- Sau đó khởi tạo duty theo giá trị đã được gán dựa vào từng điều kiện của nút nhấn.
Chúc các bạn có một kỳ thi thành công…!!!