Có nhiều họ vi điều khiển khác nhau, trong đó dòng vi điều khiển PIC có những tính năng vượt trội và được sử dụng rộng rãi hơn so với nhiều dòng vi điều khiển trước.. Cấu trúc khóa luận
Trang 3LỜI CẢM ƠN
Sau một thời gian nghiên cứu, em đã hoàn thành khóa luận tốt nghiệp
với đề tài “Điều khiển ma trận LED dùng PIC 18F4520 ” Em xin được bày
tỏ lời cảm ơn chân thành đến thầy Phùng Công Phi Khanh đã hướng dẫn và chỉ bảo em tận tình trong suốt quá trình nghiên cứu để hoàn thành khóa luận
Em xin chân thành cảm ơn trường ĐHSP Hà Nội 2, Ban chủ nhiệm khoa Vật lí, tổ Sư phạm kĩ thuật và các thầy cô giáo trong khoa đã giúp đỡ em trong suốt quá trình học tập tại khoa
Đồng thời em cũng gửi lời cảm ơn tới gia đình, bạn bè đã luôn bên em, giúp đỡ, động viên em trong suốt quá trình học tập và hoàn thành khóa luận
Em xin chân thành cảm ơn!
Hà Nội, tháng 5 năm 2014
Sinh viên
TRỊNH THỊ LAN
Trang 4LỜI CAM ĐOAN
Em xin cam đoan rằng số liệu và kết quả nghiên cứu trong khóa luận
này là trung thực và không trùng lặp với các đề tài khác Em xin cam đoan
rằng mọi sự giúp đỡ cho việc thực hiện khóa luận này đã được cảm ơn và các thông tin trích dẫn trong khóa luận đã được chỉ rõ nguồn gốc
Hà Nội, tháng 5 năm 2014 Sinh viên
TRỊNH THỊ LAN
Trang 5
Mục Lục
Trang Lời cảm ơn
Lời cam đoan
PHẦN I: MỞ ĐẦU 6
PHẦN II: NỘI DUNG 8
Chương 1: Tổng quan về vi điều khiển PIC 8
1.1 PIC là gì? 8
1.2 Các dòng PIC và cách lựa chọn vi điều khiển PIC 8
1.3 Ngôn ngữ lập trình cho PIC 8
1.4 Mạch nạp cho PIC 8
Chương 2: Tổng quan về vi điều khiển PIC 18F4520 10
2.1 Sơ đồ chân vi điều khiển PIC 18F4520 10
2.2 Các thông số về vi điều khiển PIC 18F4520 10
2.3 Sơ đồ khối của vi điều khiển PIC 18F4520 11
2.4 Hoạt động vào/ra 13
2.4.1 Cổng A 14
2.4.2 Cổng B 14
2.4.3 Cổng C 15
2.4.4 Cổng D 16
2.4.5 Cổng E 16
2.4.6 Giao tiếp bus song song (PSP – Paralell Slave PORT) ở cổng D và cổng E 17
Chương 3: Ma trận LED 8x8 18
3.1 Giới thiệu về ma trận LED 18
3.2 Nguyên tắc làm sáng đèn LED trên ma trận LED 22
3.3 Nguyên tắc quét ma trận LED 22
Trang 6Chương 4: Một số ứng dụng của vi điều khiển PIC 18F4520 23
4.1 Điều khiển ma trận LED dùng PIC 18F4520 hiển thị chữ 23
4.1.1 Mục đích và yêu cầu 23
4.1.2 Thiết kế mạch điện 23
4.1.3 Thiết kế phần mềm 25
4.1.4 Thử nghiệm và đánh giá kết quả 30
4.2 Điều khiển ma trận LED dùng PIC 18F4520 hiển thị chữ chạy từ dưới lên trên 32
4.2.1 Mục đích và yêu cầu 32
4.2.2 Thiết kế mạch điện 32
4.2.3 Thiết kế phần mềm 34
4.2.4 Thử nghiệm và đánh giá kết quả 37
PHẦN III: KẾT LUẬN 40
Tài liệu tham khảo 41
Trang 7Có nhiều họ vi điều khiển khác nhau, trong đó dòng vi điều khiển PIC
có những tính năng vượt trội và được sử dụng rộng rãi hơn so với nhiều dòng
vi điều khiển trước Việc tìm hiểu và ứng dụng hết khả năng của PIC là cả một quá trình dài hữu ích vì sự thuận tiện, nhỏ gọn, khả năng phát triển cũng như sự đa dạng của các dòng PIC
Một trong những ứng dụng rất phổ biến của vi điều khiển mà chúng ta hay bắt gặp trong thực tế đó là ứng dụng trong trang trí quảng cáo Bạn dễ dàng bắt gặp những áp phích quảng cáo điện tử với nhiều hình ảnh và màu sắc rất ấn tượng
Vì vậy với những kiến thức đã được học về vi điều khiển và những kiến thức cập nhật, nghiên cứu cùng với sự hướng dẫn của thầy Phùng Công Phi Khanh Em đã chọn đề tài:
“Điều khiển ma trận LED dùng vi điều khiển 18F4520”
Với mong muốn đề tài này sẽ góp phần cùng các bạn sinh viên Sư phạm Kỹ thuật bước đầu làm quen và tìm hiểu về vi điều khiển PIC và ma trận LED Từ đó mở rộng đi tìm hiểu những ứng dụng khác của vi điều khiển trong cuộc sống
Trang 82 Mục đích nghiên cứu
Tìm hiểu về vi điều khiển PIC 18F4520
Dùng PIC 18F4520 điều khiển ma trận LED
Hiển thị được hình ảnh (chữ, số,…) trên ma trận LED
3 Nhiệm vụ nghiên cứu
Tìm hiểu tổng quan về vi điều khiển PIC 18F4520
Tìm hiểu về ma trận LED
Lập trình C cho vi điều khiển PIC 18F4520
4 Đối tượng và phạm vi nghiên cứu của khóa luận
Đối tượng nghiên cứu: Lập trình C cho vi điều khiển PIC 18F4520 điều
khiển ma trận LED
Phạm vi nghiên cứu: Vi điều khiển dòng PIC 18F4520
5 Phương pháp nghiên cứu
Sử dụng phương pháp nghiên cứu lí thuyết kết hợp với thực nghiệm
6 Cấu trúc khóa luận
Chương 1: Tổng quan về vi điều khiển PIC: Giới thiệu về vi điều khiển PIC, các dòng PIC, trình dịch và mạch nạp cho vi điều khiển PIC
Chương 2: Tổng quan về vi điều khiển PIC 18F4520: Tìm hiểu phần cứng, các thông số, hoạt động vào ra của vi điều khiển PIC 18F4520
Chương 3: Ma trận LED 8x8: Giới thiệu về ma trận LED 8x8, nguyên tắc làm sáng LED trên ma trận LED và nguyên tắc quét ma trận LED
Chương 4: Một số ứng dụng của vi điều khiển PIC 18F4520
Trang 9PHẦN 2: NỘI DUNG
CHƯƠNG I: TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC
1.1 PIC là gì?
- PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dịch là
“máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho vi điều khiển đầu tiên của họ
- PIC1650 được thiết kế để dùng làm các thiết bị ngoại vi cho vi điều khiển CP1600 Vi điều khiển này sau đó được nghiên cứu phát triển thêm và từ đó hình thành nên dòng vi điều khiển PIC ngày nay
1.2 Các dòng PIC và cách lựa chọn vi điều khiển PIC
- Các kí hiệu của vi điều khiển PIC:
+ PIC12xxxx: độ dài lệnh 12 bit
+ PIC16xxxx: độ dài lệnh 14 bit
+ PIC18xxxx: độ dài lệnh 16 bit
+ C: PIC có bộ nhớ EPROM (chỉ có 16C84 là EEPROM)
+ F: PIC có bộ nhớ flash
+ LF: PIC có bộ nhớ flash hoạt động ở điện áp thấp
+ LV: tương tự như LF, đây là kí hiệu cũ
- Bên cạnh đó một số vi điệu khiển có kí hiệu xxFxxx là EEPROM, nếu có thêm chữ A ở cuối là flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A
là flash)
- Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC Ở Việt Nam phổ biến nhất là các họ vi điều khiển PIC do hãng Microchip sản xuất
- Cách lựa chọn một vi điều khiển PIC phù hợp:
+ Trước hết cần chú ý đến số chân của vi điều khiển cần thiết cho ứng dụng Có nhiều vi điều khiển PIC với số lượng chân khác nhau, thậm chí có vi điều khiển chỉ có 8 chân, ngoài ra còn có các vi điều khiển 28, 40, 44, … chân
Trang 10+ Cần chọn vi điều khiển PIC có bộ nhớ flash để có thể nạp xóa chương trình được nhiều lần hơn.
+ Tiếp theo cần chú ý đến các khối chức năng được tích hợp sẵn trong vi điều khiển, các chuẩn giao tiếp bên trong
+ Sau cùng cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép
+ Ngoài ra mọi thông tin về cách lựa chọn vi điều khiển PIC có thể được tìm thấy trong cuốn sách “Select PIC guide” do nhà sản xuất Microchip cung cấp
1.3 Trình dịch cho PIC
Trình dịch cho PIC rất đa dạng, từ các trình dịch sử dụng ngôn ngữ lập trình cấp thấp như MPLAB ASM (được cung cấp miễn phí bởi nhà sản xuất Microchip) đến các trình dịch sử dụng các ngôn ngữ lập trình cấp cao hơn như C, Basic, Pascal,… Ngoài ra còn có một số trình dịch sử dụng ngôn ngữ lập trình được phát triển dành riêng cho PIC như PICBasic, MikroBasic,…
Ở đề tài này tôi đã tìm hiểu những tính năng và công cụ chính của MPLAB Cxx, đây là trình dịch sử dụng ngôn ngữ lập trình C
1.4 Mạch nạp cho PIC
- Đây cũng là một dòng sản phẩm rất đa dạng dành cho vi điều khiển PIC
Có thể sử dụng các mạch nạp được cung cấp bởi nhà sản xuất là hãng Microchip như: PICSTART plus, MPLAB ICD 2, MPLAB PM 3, PRO MATE
- Có thể dùng các sản phẩm này để nạp cho vi điều khiển khác thông qua chương trình MPLAB Dòng sản phẩm chính thống này có ưu thế là nạp được cho tất cả các vi điều khiển PIC, tuy nhiên giá thành rất cao và thường gặp rất nhiều khó khăn trong quá trình mua sản phẩm Ngoài ra do tính năng cho
Trang 11phép nhiều chế độ nạp khác nhau, còn có rất nhiều mạch nạp được thiết kế dành cho vi điều khiển PIC
- Có thể sơ lược một số mạch nạp cho PIC như sau:
JDM programmer: Mạch nạp này dùng chương trình nạp ICprog cho phép nạp các vi điều khiển PIC có hỗ trợ tính năng nạp chương trình điện áp thấp ICSP (In Circuit Serial Programming) Hầu hết các mạch nạp đều hỗ trợ tính năng nạp chương trình này
WARP-13A và MCP-USB: Hai mạch nạp này giống với mạch nạp PICSTART PLUS do nhà sản xuất Microchip cung cấp, tương thích với trình biên dịch MPLAB, nghĩa là ta có thể trực tiếp dùng chương trình MPLAB để nạp cho vi điều khiển PIC mà không cần sử dụng một chương trình nạp khác, chẳng hạn như ICprog
P16PRO40: Mạch nạp này do Nigel thiết kế và cũng khá nổi tiếng Ông còn thiết kế cả chương trình nạp, tuy nhiên ta cũng có thể sử dụng chương trình nạp ICprog
Mạch nạp Universal của Williem: Đây không phải là mạch nạp chuyên dụng dành cho PIC như P16PRO40
- Các mạch nạp kể trên có ưu điểm rất lớn là đơn giản, rẻ tiền, hoàn toàn có thể tự lắp ráp một cách dễ dàng, và mọi thông tin về sơ đồ mạch nạp, cách thiết kế, thi công, kiểm tra và chương trình nạp đều dễ dàng tìm được và download miễn phí thông qua mạng Internet Tuy nhiên các mạch nạp trên có nhược điểm là hạn chế về số vi điều khiển được hỗ trợ, bên cạnh đó mỗi mạch nạp cần được sử dụng với một chương trình nạp thích hợp
Trang 12CHƯƠNG II: TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC 18F4520
2.1 Sơ đồ chân vi điều khiển PIC 18F4520
Vi điều khiển PIC 18F4520 có 40 chân, được thể hiện trên hình 2.1
Hình 2.1: Sơ đồ chân vi điều khiển PIC 18F4520
2.2 Các thông số về vi điều khiển PIC 18F4520
- CPU tốc độ cao có 75 cấu trúc lệnh, nếu được cho phép có thể kéo dài đến
83 cấu trúc lệnh
- Hầu hết các cấu trúc lệnh chỉ mất một chu kỳ máy, ngoại trừ lệnh rẽ nhánh chương trình mất hai chu kỳ máy
- Tốc độ làm việc: Xung clock đến 40MHz, tốc độ thực thi lệnh 125ns
- Bộ nhớ chương trình (flash program memory) là 32kbyte
- Bộ nhớ dữ liệu SRAM là 1536 byte
- 5 port vào hoặc ra
- 4 bộ timer
- 1 capture/compare/PWM modules
- 1 enhanced capture/compare/PWM modules
Trang 13- Giao tiếp nối tiếp: MSSP, enhanced USART
- Cổng giao tiếp song song
- 13 bộ Analog to Digital module 10 bit
- POR, BOR
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
- Bộ nhớ Flash có khả năng ghi xoá được 100.000 lần
- Bộ nhớ EEPROM với khả năng ghi xoá được 1.000.000 lần
- Flash/Dữ liệu bộ nhớ EEPROM có thể lưu trữ hàng 100 năm
- Khả năng tự nạp chương trình với sự điều khiển của phần mềm
- Watchdog timer với bộ dao động trong
- Chức năng bảo mật mã chương trình
- Chế độ SLEEP
- Có thể hoạt động với nhiều dạng Oscillator khác nhau
2.3 Sơ đồ khối của vi điều khiển PIC 18F4520
Sơ đồ khối của vi điều khiển PIC 18F4520 được thể hiện trên hình 2.2
Trang 14Hình 2.2: Sơ đồ khối của vi điều khiển PIC 18F4520
Trang 15Các khối chính trên PIC 18F4520
- CPU: Tần số tối đa 40 MHz, kiến trúc havard, được sản xuất bằng công nghệ nonaWatt
- ADC: 13 kênh ADC với độ phân giải 10 bit
2.4 Hoạt động vào/ra
PIC 18F4520 có 5 cổng vào/ra là cổng A, cổng B, cổng C, cổng D, cổng E Các chân được thiết lập thành các chức năng khác nhau phụ thuộc vào các thanh ghi điều khiển:
- Thanh ghi PORT là thanh ghi dữ liệu được định địa chỉ theo byte và theo bit
- Thanh ghi LAT là thanh ghi chốt dữ liệu đầu ra (bằng 1 đầu ra được chốt mức 1, bằng 0 đầu ra được chốt mức 0)
Trang 16- Thanh ghi TRIS là thanh ghi hướng dữ liệu (bằng 0 có chân tương ứng có chiều ra, bằng 1: chiều vào)
Latch)
PORTA: Là thanh ghi chứa dữ liệu vào/ra của cổng A
LATA: Là thanh ghi chốt dữ liệu vào/ra của cổng A
TRISA: Là thanh ghi điều khiển hướng (vào hoặc ra) của cổng A
ADCON1: Là thanh ghi điều khiển A/D, thiết lập các đầu vào là số hay tương tự
CMCON: Là thanh ghi điều khiển bộ so sánh
CVRCON: Là thanh ghi điều khiển điện áp tham chiếu của bộ so sánh Chú ý: RA6 và RA7 chốt và hướng dữ liệu của chúng kết hợp cả với cấu hình
bộ phát xung
Trang 17LATB PORTB Data Latch Register (Read and write to Data Latch)
TRISB PORTB Data Direction Register
INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF INTCON2 𝑅𝐵𝑃𝑈 INTEDG0 INTEDG1 INTEDG2 ─ TMR0IP ─ RBIP INTCON3 INT2IP INT1IP ─ INT2IE INT1IE ─ INT2IF INT1IF
PORTB: Là thanh ghi chứa dữ liệu vào/ra của cổng B
LATB: Là thanh ghi chốt dữ liệu vào/ra của cổng B
TRISB: Là thanh ghi điều khiển hướng (vào hoặc ra) của cổng B
INTCON, INTCON2, INTCON3: Là thanh ghi điều khiển hoạt động ngắt ADCON1: Là thanh ghi điều khiển A/D, thiết lập các đầu vào là số hay tương tự
Trang 18Bảng 2.3: Các thanh ghi liên quan đến cổng C
Thanh
PORTC: Là thanh ghi chứa dữ liệu vào/ra của cổng C
LATC: Là thanh ghi chốt dữ liệu vào/ra của cổng C
TRISC: Là thanh ghi điều khiển hướng (vào hoặc ra) của cổng C
2.4.4 Cổng D
Cổng D có 8 chân từ được kí hiệu từ RD0 đến RD7 Các chân này có thể dùng để đọc hoặc ghi từng bit hoặc cả byte
Có 5 thanh ghi liên quan đến cổng D được trình bày ở bảng 2.4:
Bảng 2.4: Các thanh ghi liên quan đến cổng D
PORTD: Là thanh ghi chứa dữ liệu vào/ra của cổng D
LATD: Là thanh ghi chốt dữ liệu vào/ra của cổng D
TRISD: Là thanh ghi điều khiển hướng (vào hoặc ra) của cổng D
TRISE: Là thanh ghi hướng dữ liệu của cổng E nhưng có thêm chức năng điều khiển giao tiếp song song của cổng D
CCP1CON: Là thanh ghi điều khiển của chế độ PMW, Compare
Trang 192.4.5 Cổng E
Cổng E có 4 chân từ được kí hiệu từ RE0 đến RE3 Các chân RE0:RE3
có thể thiết lập thành các đầu vào ra dữ liệu số hay đầu vào tương tự cho bộ biến đổi A/D, đặc biệt nó còn được thiết lập thành các chân RD, WR, CS cho chế độ giao tiếp song song cùng với cổng D, riêng chân RE3 chỉ có chiều vào
nó còn được thiết lập thành chân Reset phụ thuộc vào bit cấu hình MCLRE
Có 4 thanh ghi liên quan đến cổng E được trình bày ở bảng 2.5:
Bảng 2.5: Các thanh ghi liên quan đến cổng E
Thanh
ghi
Bit
PORTE: Chỉ sử dụng các bit từ RE0 đến RE2 để chứa dữ liệu vào/ra
LATE: Chỉ sử dụng từ bit 0 đến bit 2 để chốt dữ liệu vào/ra trên các chân từ RE0 đến RE2
TRISE: Chỉ sử dụng các bit từ TRISE0 đến TRISE2 để điều khiển hướng (vào hoặc ra) cho 3 chân tương ứng Các bit khác của thanh ghi này dùng cho chế độ giao tiếp song song
ADCON1: Thanh ghi điều khiển của bộ A/D
2.4.6 Giao tiếp bus song song (PSP – Paralell Slave PORT) ở cổng D và cổng E
Chế độ hoạt động này cổng D được thiết lập là các đường dữ liệu, còn các chân của cổng E làm các chân điều khiển ghi đọc, RE0 là RD, RE1 là WR còn RE2 là chân CS Các thanh ghi liên quan đến PSP được trình bày ở bảng 2.6:
Trang 20Bảng 2.6: Các thanh ghi liên quan đến PSP
LATD PORTD Data Latch Register (Read and write to Data Latch)
TRISD PORTD Data Direction Register
LATE ─ ─ ─ ─ ─ LATE Data Output Register
INTCON GIE/GIEH PEIE/GIEL TMR0IE INT0IE RBIE TMR0IF INT0IF RBIF
Trang 21CHƯƠNG III: MA TRẬN LED 8x8 3.1 Giới thiệu về ma trận LED
Ma trận LED tức DOT Matrix LED là tập hợp nhiều đèn LED được bố trí thành dạng “ma trận” hình chữ nhật hoặc hình vuông với số hàng là a và số cột là b Ma trận LED được dùng rất nhiều trong các ứng dụng hiển thị như các biển quảng cáo, hiển thị thay thế LCD hoặc thậm chí dùng hiển thị video Để giảm số lượng các đường điều khiển, trong ma trận LED các LED được nối chung với nhau theo hàng và cột Số lượng LED trên ma trận LED
là axb trong khi số lượng ngõ ra bằng tổng hàng và cột: a+b Việc điều khiển một ma trận LED kích thước lớn đòi hỏi thiết kế một mạch driver và điều khiển rất phức tạp Với mục đích bước đầu làm quen và tìm hiểu về vi điều khiển PIC 18F4520 và ma trận LED, trong phạm vi đề tài mày tôi chỉ đi tìm hiểu về một ma trận LED có kích thước 8x8 (8 hàng, 8 cột, do 64 LED đơn được ghép lại) Ma trận LED 8x8 thường được dùng để hiển thị các kí tự trong bảng mã ASCII thay thế cho Text LCD Dưới đây là hình ảnh và sơ đồ nguyên lý của ma trận LED 8x8 được thể hiện ở hình 3.1 và hình 3.2
Hình 3.1: Ma trận LED 8x8