Tải bản đầy đủ (.pdf) (43 trang)

Điều khiển ma trận LED dùng PIC 18f4520

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (774.59 KB, 43 trang )




TRƢỜNG ĐẠI HỌC SƢ PHẠM HÀ NỘI 2
KHOA VẬT LÝ


TRỊNH THỊ LAN


ĐIỂU KHIỂN MA TRẬN LED DÙNG PIC
18F4520


KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC







HÀ NỘI, 2014


TRƢỜNG ĐẠI HỌC SƢ PHẠM HÀ NỘI 2
KHOA VẬT LÝ


TRỊNH THỊ LAN




ĐIỂU KHIỂN MA TRẬN LED DÙNG PIC
18F4520

Chuyên nghành: Vật lý Kỹ thuật



KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC



Ngƣời hƣớng dẫn khoa học
TH.S PHÙNG CÔNG PHI KHANH





HÀ NỘI, 2014


LỜ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










LỜ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
















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


Chƣơ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












6

PHẦN 1: MỞ ĐẦU
1. Lí do chọn đề tài
Hiện nay vi điều khiển đã rất phổ biến ở Việt Nam và được ứng dụng
rất nhiều, những ứng dụng của vi điều khiển đã đi sâu vào đời sống sinh hoạt
và sản xuất của con người. Thực tế, hầu hết các thiết bị dân dụng và thiết bị
công nghiệp đều có sự góp mặt của vi điều khiển. Ứng dụng vi điều khiển
trong thiết kế hệ thống làm giảm chi phí thiết kế và hạ giá thành sản phẩm
đồng thời nâng cao tính ổn định của thiết bị và hệ thống.
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. 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.


7


2. 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.




8

PHẦ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.
9

+ 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
10

phé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.




11

CHƢƠ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
12

- 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
13


Hình 2.2: Sơ đồ khối của vi điều khiển PIC 18F4520
14

Cá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.
- Bộ nhớ:
+ Bộ nhớ chương trình FLASH: 32K
+ RAM: 1536 bytes
+ Bộ nhớ dữ liệu EEPROM: 256 bytes
- Cổng vào ra: A, B, C, D, E
+ Cổng A: RA0 – RA7

+ Cổng B: RB0 – RB7
+ Cổng C: RC0 – RC7
+ Cổng D: RD0 – RD7
+ Cổng E: RE0 – RE3
- Định thời/đếm: 4 bộ (Timer2: 8 bit; Timer 0,1,3: 16 bit).
- PWM: 2 bộ (CCP1:RC2; CCP2:RC1).
- Truyền thông nối tiếp: 02 module: MSSP và EUSART. Module MSSP
gồm hai module: SPI (Serial Peripheral Interface) và I
2
C (Inter – Intergrated
Circuit).
- 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).
15

- 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).
2.4.1. Cổng A
Cổng A có 8 chân từ được kí hiệu từ RA0 đến RA7. Các chân này có thể
dùng để đọc hoặc ghi từng bit hoặc cả byte.
Các thanh ghi liên quan đến cổng A gồm có 6 thanh ghi được trình bày ở
bảng 2.1:
Bảng 2.1: Các thanh ghi liên quan đến cổng A

Thanh
ghi
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
PORTA
RA7
RA6
RA5
RA4
RA3
RA2
RA1
RA0
LATA
LATA7
LATA6
PORTA Data Latch Register (Read and write to Data
Latch)
TRISA
TRISA7
TRISA6
PORTA Data Direction Register
ADCON1



VCFG1
VCFG0
PCFG3
PCFG2
PCFG1
PCFG0
CMCON
C2OUT
C1OUT
C2INV
C1INV
CIS
CM2
CM1
CM0
CVRCON
CVREN
CVROE
CVRR
CVRSS
CVR3
CVR2
CVR1
CVR0

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.

16

2.4.2. Cổng B
Cổng B có 8 chân từ được kí hiệu từ RB0 đến RB7. Các chân này có
thể dùng để đọc hoặc ghi từng bit hoặc cả byte.
Các thanh ghi liên quan đến cổng B gồm có 7 thanh ghi được trình bày
ở bảng 2.2:
Bảng 2.2: Các thanh ghi liên quan đến cổng B
Thanh
ghi
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
PORTB
RB7
RB6
RB5
RB4
RB3

RB2
RB1
RB0
LATB
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
ADCON1


VCFG1
VCFG0
PCFG3
PCFG2
PCFG1
PCFG0

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ự.
2.4.3. Cổng C

Cổng C có 8 chân từ được kí hiệu từ RC0 đến RC7. Các chân này có
thể dùng để đọc hoặc ghi từng bit hoặc cả byte.
Có 3 thanh ghi liên quan đến cổng C được trình bày ở bảng 2.3:



17

Bảng 2.3: Các thanh ghi liên quan đến cổng C
Thanh
ghi
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
PORTC
RC7
RC6
RC5
RC4
RC3
RC2
RC1
RC0
LATC
PORTC Data Latch Register (Read and write to Data Latch)

TRISC
PORTC Data Direction Register

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
Thanh ghi
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
PORTD
RD7
RD6
RD5
RD4
RD3
RD2
RD1
RD0
LATD

PORTD Data Latch Register (Read and write to Data Latch)
TRISD
PORTD Data Direction Register
TRISE
IBF
OBF
IBOV
PSPMODE

TRISE2
TRISE1
TRISE0
CCP1CON
P1M1
P1M0
DC1B1
DC1B0
CCP1M3
CCP1M2
CCP1M1
CCP1M0

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.
18


2.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
7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
PORTE




RE3
RE2
RE1
RE0
LATE






LATE Data Output Register
TRISE
IBF
OBF
IBOV
PSPMODE

TRISE2
TRISE1
TRISE0
ADCON1


VCFG1
VCFG0
PCFG3
PCFG2
PCFG1
PCFG0

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:
19

Bảng 2.6: Các thanh ghi liên quan đến PSP
Thanh ghi
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
PORTD
RD7
RD6
RD5
RD4
RD3
RD2
RD1
RD0
LATD
PORTD Data Latch Register (Read and write to Data Latch)

TRISD
PORTD Data Direction Register
PORTE




RE3
RE2
RE1
RE0
LATE





LATE Data Output Register
TRISE
IBF
OBF
IBOV
PSPMODE

TRISE2
TRISE1
TRISE0
INTCON
GIE/GIEH
PEIE/GIEL

TMR0IE
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
PIR1
PSPIF
ADIF
RCIF
TXIF
SSPIF
CCP1IF
TMR2IF
TMR1IF
PIE1
PSPIE
ADIE
RCIE
TXIE
SSPIE
CCP1IE
TMR2IE
TMR1IE
IPR1
PSPIP
ADIP
RCIP
TXIP
SSPIP

CCP1IP
TMR2IP
TMR1IP
ADCON1


VCFG1
VCFG0
PCFG3
PCFG2
PCFG1
PCFG0

















20


CHƢƠ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
21


Hình 3.2: Sơ đồ nguyên lý ma trận LED 8x8
Ma trận LED trong proteus có bốn loại màu chính là màu đỏ, màu xanh
lá, màu xanh dương và màu cam. Mỗi loại này có sự khác nhau về chân.
Trong đề tài của mình tôi sử dụng ma trận LED 8x8 màu xanh lá cây và ma
trận LED 8x8 màu đỏ. Dưới đây tôi trình bày cách xác định chân của ma trận
LED màu xanh lá cây, những màu khác cũng xác định tương tự. Hình 3.3 thể
hiện ma trận LED 8x8 màu xanh lá cây trong proteus.




22


Hình 3.3: Ma trận LED 8x8 màu xanh lá cây trong proteus
Xoay linh kiện theo chiều để nó xoay ngang
Sau đó, để test chân linh kiện, giả sử cho cực dương và mass vào các chân
như hình 3.4:

Hình 3.4: Mạch test chân linh kiện ma trận LED
Chạy mô phỏng được kết quả như hình 3.5:
23


Hình 3.5: Kết quả test chân linh kiện
Suy ra hai chân đầu tiên bên trái là cấp nguồn cho hai hàng trên, và
chân đầu tiên bên phải là mass của cột thứ 8 kể từ bên trái sang. Do đó giả sử
muốn sáng ở ô có hàng là 3, cột là 5 thì cần đưa nguồn vào chân số 3 bên trái,
và chân số 5 từ dưới lên bên phải, ta được kết quả như hình 3.6:

Hình 3.6: LED sáng ở hàng 3, cột 5
Vậy là khi lấy linh kiện ma trận LED xanh lá cây, nếu quay nó sang
phải thì nó sẽ có các chân bên trái là dùng nguồn cấp vào, và số thứ tự chân từ
24

trên xuống dưới ứng với số hàng, còn dãy chân bên phải sẽ là những chân đưa
tín hiệu vào, nếu tín hiệu là 1 thì LED ở cột nó điều khiển tắt, nếu tín hiệu vào
là 0 thì led ở cột đó sáng.
Đó là cơ sở để quét ma trận LED theo hàng, sẽ được đề cập ở phần sau.

3.2. Nguyên tắc làm sáng đèn LED trên ma trận LED
Khi muốn làm sáng LED đơn, ta cần đưa điện áp dương vào chân
Anode và điện áp âm vào chân Cathode với giá trị thích hợp, khi đó LED
sáng. Giá trị điện áp và dòng điện tùy thuộc vào màu sắc từng loại LED.
Dòng chảy qua các LED để đảm bảo độ sáng bình thường là từ 10mA cho đến
25mA. Về điện áp ta có bảng 3.1:
Bảng 3.1: Giá trị điện áp của LED
Màu LED/Điện áp
V
min
V
V
max
Đỏ
1.88
1.9
1.93
Xanh
2.08
2.1
2.12
Vàng
1.98
2.0
2.02

Việc hiển thị thông tin trên ma trận LED ta cho những điểm LED sáng
theo sự điều khiển để tạo ra chữ và hình ảnh.
3.3. Nguyên tắc quét bảng ma trận LED
Để hiển thị kí tự lên ma trận LED, ta dùng phương pháp quét hàng và

xuất dữ liệu cột. Quá trình quét hàng là ta gửi tín hiệu cho phép đến từng hàng
trong từng thời điểm, cùng lúc đó ta gửi dữ liệu cột đến 8 cột. Trong đề tài
này, tín hiệu cho phép hàng là mức logic „1‟, và dữ liệu cột tương ứng là mức
„0‟ hoặc „1‟ của từng cột, mức „0‟ ứng với LED sáng và mức „1‟ là LED tắt.
Quá trình quét đó cứ tiếp diễn cho đến khi quét hết 8 cột của ma trận
LED. Việc quét hiển thị này diễn ra trong thời gian rất ngắn, cỡ vài chục mili
giây, ta sẽ thấy hình ảnh hay chữ hiển thị trên ma trận LED. Tuy rằng trong

×