Nếu bạn quên không thêm các file cần có vào thì làm theo hướng dẫn sau : ADD header file: Copy header file vào thư mục chứa project để tiện cho việc sử dụng sau này.. Một thao tác cần l
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH
THÍ NGHIỆM
VI XỬ LÝ - VI ĐIỀU KHIỂN
BM Kỹ thuật Máy tính
2011
Trang 3Mục Lục 1
Bài 1 : Giới thiệu MPLAB IDE và KIT PIC 1
1.1 Môi trường phát triển MPLAB 1
1.2 Nạp file hex vào vi điều khiển PIC 6
1.3 Debug dùng MpLab SIM 10
1.4 Debug onchip dùng Mplab ICD2 12
1.5 Bài tập 12
Bài 2 : Khảo sát cổng xuất nhập 13
2.1 Kiến thức liên quan 13
2.1.1 Các thanh ghi điều khiển cổng xuất nhập 13
2.1.2 Kết nối mạch 13
2.2 Các bước hiện thực yêu cầu 1 14
2.3 Chương trình mẫu yêu cầu 1 16
2.4 Các bước hiện thực yêu cầu 2 17
2.5 Chương trình mẫu yêu cầu 2 18
2.6 Bài tập 19
Bài 3 : Khảo sát cơ chế ngắt quãng, giao tiếp LCD ký tự 21
3.1 Kiến thức liên quan 21
3.1.1 Tóm tắt các thanh ghi điều khiển ngắt 21
3.2 Các bước hiện thực yêu cầu 1 22
3.3 Chương trình mẫu yêu cầu 1 24
3.4 LCD ký tự 2x16 26
3.4.1 Hình dạng và ý nghĩa các chân: 26
3.4.2 Tổ chức vùng nhớ của LCD 27
3.4.3 Các lệnh giao tiếp với LCD 30
3.4.4 Khởi tạo LCD 30
3.5 Các bước hiện thực yêu cầu 2 32
3.6 Bài tập 37
Bài 4 : Khảo sát bộ định thời 37
4.1 Các bước hiện thực yêu cầu 1 38
4.2 Chương trình mẫu 39
4.3 Bài tập 41
Bài 5 : Kỹ thuật quét ma trận phím 42
5.1 Kết nối mạch ma trận phím 42
5.2 Các bước hiện thực 43
5.3 Bài tập 47
Bài 6 : Kỹ thuật quét LED 48
6.1 Cấu tạo LED 7 đoạn và LED ma trận 48
6.2 Kết nối mạch 50
6.3 Các thanh ghi liên quan và cách điều khiển 51
6.4 Các bước hiện thực 54
6.5 Bài tập 57
Bài 7 : Khảo sát bộ truyền nhận nối tiếp 58
7.1 Các bước hiện thực 58
Trang 4Bài 8 : Khảo sát khối chuyển đổi A-D 63
8.1 Các bước hiện thực 63
8.2 Bài tập 64
Bài 9 : Khảo sát các khối chức năng đặc biệt khác 65
9.1 Các bước hiện thực PWM 65
9.2 Chương trình mẫu 66
9.3 Bài tập 67
Trang 5Bài 1 : Giới thiệu MPLAB IDE và KIT PIC
Nội dung :
Tạo project trên MPLAB IDE
Viết chương trình ASM
Dịch và nạp chương trình vào vi điều khiển PIC
Chạy và gỡ rối chương trình
1.1 Phần cứng thí nghiệm ICD2 và PICDEM 2 PLUS
Bộ hổ trợ lập trình dùng với máy tính ICD2 (In-Circuit Debugger)
Kit thí nghiệm PICDEM 2 Plus có các đặc điểm như hình sau :
1 Đế cắm DIP 18, 28 và 40 chân (có thể cắm 3 linh kiện nhưng chỉ dùng 1 mỗi lần)
2 Ổn áp +5V dùng cho nguồn 9V, 100 mA AC/DC hay pin 9V
3 Đầu cắm DB-9 theo chuẩn giao tiếp RS-232
4 Đầu cắm qua bộ lập trình In-Circuit Debugger (ICD)
5 Biến trở 5KΩ dùng cho tín hiệu nhập tương tự
6 Ba nút nhấn dùng tạo tín hiệu kích từ bên ngoài và reset
7 LED nguồn
8 Bốn LED chỉ thị cho PORTB
9 Jumper J6 để ngắt LED chỉ thị RB0 (khi nhập tín hiệu từ nút nhấn RB0)
USB Nối với card
Cổng nối tiếp ICD2
Sơ đồ kết nối ICD2
Trang 610 Bộ dao động (OSC) 4 MHz
11 Nơi để lắp thêm thạch anh dao động nếu cần
12 Thạch anh dao động 32.768 kHz tạo xung clock cho Timer1
13 Jumper J7 để ngắt dao động RC có sẳn (khoảng 2 MHz)
14 EEPROM nối tiếp 32K x 8 bit
15 Màn hình LCD
16 Kèn Piezo
17 Vùng lắp thêm linh kiện
18 Cảm biến nhiệt TC74
1.2 Môi trường phát triển MPLAB
Bước 1 Chạy phần mềm MPLAB:
Start_|All Programs_|Microchip_|MPLAB IDE v8.00_|MPLAB IDE
Bước 2 Chọn Menu :
Project_|Project Wirazd…
Chọn Next ở cửa sổ Welcome
Bước 3 Chọn số hiệu PIC cần sử dụng (PIC18F4520) rồi bấm Next:
Bước 4 Chọn tool Microchip MPASM Toolsuite tại ô Active Toolsuite
Trang 7Chọn MPASM Assembler (mpasmwin.exe) tại ô Tollsuite Contents
Click Next qua cửa sổ kế
Bước 5 Nhấn Browse… để chọn thư mục và đánh tên project
Chọn thư viện thông qua file INC và LKR thêm vào project
Trang 8C:\Program Files\Microchip\MPASM Suite\LKR\18f4520.lkr
C:\Program Files\Microchip\MPASM Suite\P18F4520.INC
Click Next sẽ thấy như sau :
Click Finish Ta sẽ được một project như hình sau:
Trang 9Bước 6 Thêm file vào dự án theo các bước sau :
Một project đơn giản nhất phải gồm có 2 thành phần Source files và Hearder Files Thư mục Source files chứa file text *.asm hoặc file *.c chứa code lập trình Thư mục Hearder Files chứa file *.h hoặc *.INC: file có sẵn của microchip
Nếu bạn quên không thêm các file cần có vào thì làm theo hướng dẫn sau :
ADD header file: ( Copy header file vào thư mục chứa project để tiện cho việc sử dụng sau này)
Cửa sổ hiện lên như sau: Từ Menu
bar chọn File_|Save để lưu
Thực hiện Save, đặt tên với đuôi asm vào thư mục chứa dự
cửa sổ lựa chọn
Trang 10Công việc tiếp theo là viết code (trong cửa sổ text editor của source file)
Ðối với project lớn dùng nhiều source file và header file, ta làm lại quá trình thêm file vào dự án nhiều lần
1.3 Nạp file hex vào vi điều khiển PIC
Sau khi tạo được một project, ta tiến hành build nó để tạo ra *.hex Có thể mô tả công việc như sau:
Ví dụ, ta có một chương trình cho PIC như sau:
;===================================================
; Name: BaiTN1.asm
; Project: Nhap du lieu tu nut nhan RA4
; Khi nut RA4 duoc nhan thi led don RB0 sang,
; Khi khong nhan RA4 thi led don RB0 tat
; Author: BKIT HARDWARE CLUB
start call init
;chuong trinh chinh
;chuong trinh khoi dong ban dau
init
return end
Bây giờ chúng ta lưu chương trình vừa viết thành BaiTN1.asm vào một thư mục đã
tạo project phía trên Để compile chương trình ta vào menu Project_|Build All như hình
bên dưới
Trang 11Nếu việc build thất bại, nhưng việc này thì không mong muốn, ta có thấy kết quả như hình sau:
Trang 12Nếu thành công, ta sẽ thấy hình sau:
Nếu việc build đã thành công, chương trình sẽ dịch BaiTN1.asm thành BaiTN1.hex trong cùng thư mục chương trình BaiTN1.asm Sau khi đã có được file hex, công việc tiếp theo là làm thế nào để nạp được file Hex xuống board Đầu tiên, chọn mạch nạp bằng
cách vào menu Programmer_|Select Programmer_|Mplab ICD2 như hình sau :
Sau khi chọn Mplab ICD2 xong thì ta sẽ thấy giao diện như sau:
Trang 13Một thao tác cần làm giúp ta có thể dịch chương trình, nạp và chạy tự động là vào
menu Programmer_|Settings…_|Program chọn mục Automatically như hình sau :
Bây giờ ta có thể dịch, nạp và chạy dự án với thao tác menu Project_|Build All (hoặc
nhấn Ctrl-F10)
Nếu thành công thì chương trình sẽ được dịch, nạp ra card PICDEM và chạy ngay
Trang 14Nếu thất bại, xem thông tin báo lỗi trong cửa sổ Output để khắc phục và làm lại từ bước Build All
Trường hợp thành công mà chương trình chạy không đúng, ta phải sử dụng công cụ Debugger để tìm lỗi theo một trong hai cách sau
1.4 Debug dùng MpLab SIM
Bước 1 Chọn Debugger bằng menu
Debugger_|Select Debugger_|Mplab SIM
Bước 2 Tham khảo menu Debugger Xuất hiện nhiều chức năng hỗ trợ debug
Từ đây ta đã có thể mô phỏng được chương trình của mình một cách dễ dàng
Các chức năng thường dùng :
• Run (F9): chạy chương trình, chương trình sẽ chạy liên tục đến khi nào có breakpoint thì dừng
• Breakpoints (F2): tạo ra breakpoint tại vị trí hiện tại của con trỏ (cũng có thể
"double click" vào hàng code mình mong muốn đặt Breakpoint)
• Step Into (F7): chạy từng bước, vào trong chương trình con (nếu gặp)
• Step Over (F8): chạy từng bước, gọi chương trình con cũng xem như 1 bước
• Reset: trở về đầu chương trình
Trang 15Bước 3 Khi debug thì ta cũng cần phải biết giá trị của các thanh ghi cũng như bộ nhớ
của chip như thế nào, để xem được các giá trị này thì chúng ta qua menu View
Để xem được giá trị của các thanh ghi trong PIC ta chọn menu View_|File registers
sẽ xuất hiện cửa sổ như hình sau:
Để xem được giá trị của các thanh ghi SFR thì ta chọn View_|Special Function
Registers sẽ xuất hiện của sổ như hình sau:
Hay để xem một và thanh ghi mà ta quan tâm thì có thể dùng Watch để xem bằng
cách vào menu View_|Watch thì hình sau sẽ xuất hiện:
Muốn xem thanh ghi nào, ta chỉ việc chọn thanh ghi tương ứng trong combobox bên trên, sau đó nhấn Add SFR
Trang 161.5 Debug onchip dùng Mplab ICD2
Cũng giống như debug trên Mplab SIM, Mplab ICD2 cũng có những tính năng tương
tự, nhưng khi sử dụng Mplab ICD2 thì cần phải có mạch debug, và các hiện tượng xảy ra giống như khi chạy thực tế
1.6 Bài tập
Cải tiến chương trình BaiTN1.asm để khi nhấn RA4 sẽ thấy 4 LED từ RB3 đến RB0 sáng như đầu ra một bộ đếm 4 bit nhị phân tăng dần (mỗi lần nhấn tăng 1)
1.7 Báo cáo
• Các điều kiện cần có để tiến hành thí nghiệm gồm những gì ?
• Các bước cần làm để nạp chương trình ra card có chip vi điều khiển
• Các bước cần làm để tiến hành debug giả lập trên máy hoặc trên mạch
Trang 17
Bài 2 : Khảo sát cổng xuất nhập
Nội dung:
Khảo sát hoạt động của nút nhấn, LED
Khảo sát các thanh điều khiển cổng xuất nhập
Tính toán thời gian thực thi lệnh, viết chương trình con làm nhiệm vụ delay Viết chương trình kiểm tra nút nhấn và hiển thị kết quả kiểm tra ra LED
2.1 Kiến thức liên quan
2.1.1 Các thanh ghi điều khiển cổng xuất nhập
Mỗi Port có ba thanh ghi điều khiển hoạt động chính:
Các bit trong thanh ghi TRIS: thiết lập chân tương ứng là ngõ vào (logic 1) hoặc ngõ ra (logic 0)
Các bit trong thanh ghi PORT: đọc mức logic từ chân tương ứng
Các bit trong thanh ghi LAT: ghi mức logic ra chân tương ứng
2.1.2 Kết nối mạch
Vị trí LED hiển thị và nút nhấn trên board như hình dưới đây:
Trang 18LED hiển thị có kết nối như sau:
Muốn các LED sáng, các chân RBi tương ứng phải lên mức 1 Riêng LED D2 còn phải nối jumper J6 lại mới sáng được khi RB0=1
Lý do có jumper JP6 là do chân RB0 còn được dùng làm ngỏ nhập nút nhấn RB0 Như vậy, lúc nào muốn dùng chân RB0 là ngỏ xuất LED thì đóng jumper JP6 lại Ngược lại, để hở JP6 sẽ dùng RB0 làm ngỏ nhập nút nhấn
Các nút nhấn có kết nối như sau:
Nút nhấn RA4, RB0 khi được nhấn sẽ làm cho chân tương ứng ở mức logic 0 Cần thiết lập các chân RA4 và RB0 là ngõ vào
Bộ dao động chính là bộ dao động ngoài tần số 4 MHz có kết nối như sau:
Trên kit thí nghiệm, thạch anh Y2 được sử dụng cho tất cả các bài thí nghiệm
2.2 Các bước hiện thực yêu cầu 1
Bước 1 Tạo project mới giống như hướng dẫn ở chương 1 lấy tên project là Led_don,
tạo file led_don.asm và chọn chip 18f4520 Ta được hình sau:
Trang 19Bước 2 Include file p18f4520.inc vào file led_don.asm
Bước 3 Khởi tạo PORTB là cổng xuất ở các bit RB0-RB3.
dl_1 nop
decfsz delay bra dl_1 return
Bước 5 Từ đây ta có thể tạo ra được hàm delay1s bằng cách gọi hàm delay1ms 1000 lần delay1s movlw 4
movwf delay_1sa
dl_2 movlw 250 ; bắt đầu vòng lặp ngoài
Trang 20Bước 6 Viết chương trình cho hàm begin thực hiện các yêu cầu của đề bài :
begin incf LATB
call delay1s
2.3 Chương trình mẫu yêu cầu 1
;=====================================;
; Name: led_don.asm
; Project: Xuất dữ liệu ra 4 led đơn đếm từ 0 → 15 → 0
; Thời gian giữa các lần đếm lên 1 đơn vị là 1s
; Author: BKIT HARDWARE CLUB
start call init
; chuong trinh chinh
begin incf LATB
call delay1s bra begin ; lap lai sau moi giay
; Ham khoi dong ban dau
return
Trang 21; Ham lam tre 1ms voi tan so dao dong 4MHz
delay1ms ; Gan dung voi xung clock 4 MHz
dl_1 nop
decfsz delay bra dl_1 return
; Ham lam tre 1s = 1000 x 1ms
Sau khi có chương trình mẫu ta thực hiện việc compile chương trình và nạp xuống mạch để chạy chương trình như hướng dẫn ở chương 1
2.4 Các bước hiện thực yêu cầu 2
Bước 1 Tạo project mới giống như hướng dẫn ở chương 1 lấy tên project là Nut_nhan
và chọn chip 18f4520 Ta được hình sau:
Trang 22Bước 2 Include file p18f4520.inc vào file nut_nhan.asm
Bước 3 Khởi tạo PORTB bit RB0 là cổng xuất (jumper JP6 đóng) và PORTA bit RA4
Bước 4 Viết chương trình cho hàm main thực hiện yêu cầu của đề bài
main btfsc PORTA,RA4 ; chờ đến khi RA4 được nhấn
2.5 Chương trình mẫu yêu cầu 2
;=====================================;
; Name: nut_nhan.asm
; Project: Nhập dữ liệu từ nút nhấn RA4
; Khi nút RA4 được nhấn thì led đơn RB0 sáng,
; Khi không nhấn RA4 thì led đơn RB0 tắt
; Author: BKIT HARDWARE CLUB
; Vung du lieu
udata
; Chuong trinh nay khong su dung bien
; Vung bat dau code
start call init
; chuong trinh chinh
main btfsc PORTA,RA4 ; cho den khi RA4 duoc nhan
bra main
swoff btfss PORTA,RA4 ; cho den khi RA4 duoc nha
; Ham khoi dong ban dau
init clrf PORTB
Trang 23bsf TRISA,RA4 ; RA4 nhap
return end
Sau khi có chương trình mẫu ta thực hiện việc compile chương trình và nạp xuống mạch để chạy chương trình như hướng dẫn ở chương 1
• Cần làm những gì để có thể sử dụng cổng giao tiếp song song?
• Giải thích tại sao dùng LATB và PORTB lúc giống nhau, lúc khác nhau
• Hãy tính thời gian chính xác của vòng lặp delay
Trang 25Bài 3 : Khảo sát cơ chế ngắt quãng, giao tiếp LCD ký tự
1 Viết chương trình khởi tạo 2 ngắt:
Ngắt ngoài INT0 (nhận ngắt qua nút nhấn RB0, Jumper JP6 hở) với độ ưu tiên cao Ngắt timer 0 với độ ưu tiên thấp
Trong chương trình ngắt ngoài INT0 bật 3 led đơn RB1, RB2, RB3 sáng cùng lúc Trong chương trình timer 0 sau 1s khi 3 led được bật ở trong ngắt ngoài thì tắt 3 led đơn RB1, RB2, RB3 cùng lúc
2 Viết chương trình hiển thị kí tự lên LCD
3.1 Kiến thức liên quan
3.1.1 Tóm tắt các thanh ghi điều khiển ngắt
Thanh ghi INTCON:
Thanh ghi PIE1:
Thanh ghi PIE2:
Thanh ghi PIR1:
Thanh ghi PIR2:
Trang 26Sơ đồ điều khiển ngắt:
3.2 Các bước hiện thực yêu cầu 1
Bước 1 Tạo project mới giống như hướng dẫn ở chương 1 lấy tên project là Interrupt,
tạo file interrupt.asm và chọn chip 18f4520 Ta được hình sau:
Bước 2 Include file p18f4520.inc vào file interrupt.asm
Bước 3 Khởi tạo PortB là output sử dụng các lệnh clrf, bcf
init clrf LATB ; RB1-RB3 la cong xuat
Trang 27Bước 4 Khởi tạo timer 0 tạo ngắt 100 ms (với xung clock 4 MHz, chọn prescaler 2:1, số
đếm 50000), cho ngắt timer 0 có độ ưu tiên thấp
init_timer0
Bước 5 Khởi tạo ngắt ngoài 0 tích cực cạnh xuống
Đối với ngắt ngoài INT1 và INT2, độ ưu tiên phụ thuộc vào 2 bit INT1IP và INT2IP trong thanh ghi INTCON3 Còn với ngắt ngoài INT0 thì độ ưu tiên luôn là cao
init_int0
return
Bước 6 Viết chương trình cho ngắt ngoài 0, bật 3 đèn led đơn cùng sáng và khởi tạo lại
giá trị cho biến delay để 1s sau thì ngắt timer sẽ tắt 3 đèn đó
Bước 7 Viết chương trình cho ngắt timer0, sau 1s sau khi led được bật sáng thì nó sẽ
làm cho led tắt
Thời gian để timer đếm lên 1 đơn vị đựơc tính bằng công thức :
t = (1/(Focs/4))*prescaler = (1/(4Mhz/4))*2) =2μs
Trang 28Như vậy, muốn có thời khoảng 100 ms (100000μs), ta cần đếm 50000 lần
timer0_isr
decfsz delay,1 bra timer0_isr_1
movlw 10 movwf delay
; Project: Viết chương trình khởi tạo 2 ngắt:
; -Ngắt ngoài 0 với độ ưu tiên cao
; -Ngắt timer 0 với độ ưu tiên thấp
; -Ngắt INT0 : bật 3 led đơn RB1, RB2, RB3 sáng cùng ;lúc
; -Ngắt timer0 : tắt 3 led đơn RB1, RB2, RB3 sau 1s
; Author: BKIT HARDWARE CLUB
goto main
goto isr_high org 18H goto isr_low
Trang 29call init_timer0 call init_int0
; Ham khoi dong ban dau
init clrf LATB ; RB1-RB3 la cong xuat
; Ham khoi dong timer0
init_timer0
movlw 10 movwf delay
timer0_isr_1
Trang 30; Ham xu ly ngat uu tien cao
isr_high
call int0_isr retfie
; Ham xu ly ngat uu tien thap
isr_low
call timer0_isr retfie
Trang 31Dữ liệu/Lệnh đưa vào LCD
3.4.2 Tổ chức vùng nhớ của LCD
Display Data Ram (DDRAM): lưu trữ mã ký tự hiển thị ra màn hình Mã này giống
với mã ASCII Có tất cả 80 ô nhớ DDRAM Vùng hiển thị tương ứng với cửa sổ gồm 16
ô nhớ hàng đầu tiên và 16 ô nhớ hàng thứ hai Chúng ta có thể tạo hiệu ứng dịch chữ
bằng cách sử dụng lệnh dịch (mô tả sau), khi đó cửa sổ hiển thị sẽ dịch đem lại hiệu ứng
dịch chữ
Character Generator Ram (CGRAM): lưu trữ tám mẫu ký tự do người dùng định
nghĩa Tám mẫu ký tự này tương ứng với các mã ký tự D7-D0 = 0000*D2D1D0 (* mang
giá trị tùy định 0 hay 1)
Trang 32Character Generator Rom (CGROM): lưu trữ cứng các mẫu ký tự tương ứng với mã
ASCII Dưới đây là bảng ánh xạ giữa mã ký tự và mẫu ký tự
Trang 33Chúng ta muốn hiển thị chữ “CE” ở giữa hàng đầu tiên, giả sử cửa sổ hiển thị đang bắt đầu từ vị trí đầu tiên (hàng thứ nhất hiển thị dữ liệu của ô nhớ từ 0x00 đến 0x0f, hàng thứ hai hiển thị dữ liệu của ô nhớ từ 0x40 đến 0x4f, đây là vị trí home) Giá trị của ô nhớ 0x07 là 0x43 (ký tự C), của ô nhớ 0x08 là 0x45 (ký tự E)
Chúng ta muốn hiển thị chữ “®” ở giữ hàng thứ hai, giả sử cử sổ hiển thị đang ở vị trí home Trong bảng mẫu ký tự chúng ta thấy không có mẫu “®” Lúc này chúng ta phải định nghĩa mẫu “®” 5x8 điểm, gồm có 8 byte, sau đó lưu vào vị trí của mẫu ký tự CGRAM thứ nhất Lúc này giá trị của ô nhớ 0x47 là 0x00 hoặc 0x08 (vị trí của mẫu ký
tự CGRAM thứ nhất “®”)
Trang 343.4.3 Các lệnh giao tiếp với LCD
Lệnh RS RW D7 D6 D5 D4 D3 D2 D1 D0 Thời gian thực thi
Clear display 0 0 0 0 0 0 0 0 0 1 1.52ms Return home 0 0 0 0 0 0 0 0 1 * 1.52ms Entry mode set 0 0 0 0 0 0 0 1 I/D SH 37µs Display on/off
Set CGRAM
address 0 0 0 1 CGRAM address 37µs Set DDRAM
Read BUSY flag
Write to
DDRAM or
CGRAM 1 0 D7 D6 D5 D4 D3 D2 D1 D0 43µs Read from
DDRAM or
CGRAM
1 1 D7 D6 D5 D4 D3 D2 D1 D0 43µs
Các bit trên bảng tóm tắt các lệnh có ý nghĩa như sau:
I/D 1 Increment 0 Decrement
SH 1 Entire shift on 0 Entire shift off
S/C 1 Display shift 0 Cursor move
R/L 1 Shift to the Right 0 Shift to the Left
F 1 5x10 dots Font 0 5x8 dots Font
BF 1 Internally operating 0 Can accept instruction
Trên kit thí nghiệm LCD ký tự 2x16 được kết nối vào Port D ở chế độ 4 bit Ở chế độ
4 bit, để đọc hay ghi một byte phải tiến hành cài dữ liệu hai lần, lần đầu là 4 bit cao, lần thứ hai là 4 bit thấp
3.4.4 Khởi tạo LCD
Sơ đồ kết nối LCD:
Trang 35Q2 MMBT2222A
VCC
R20 2.2K
RD7
RD4 RD5 RD6
Vss 1 Vdd 2 Vee 3 RS 4 R/W 5 E 6 D0 7 D1 8 D2 9 D3 10 D4 11 D5 12 D6 13 D7 14 A 15 K 16
LCD1
RD3 RD2 RD1 RD0
LCD ký tự 2x16
Trước khi xuất ký tự ra màn hình LCD, LCD controller phải được khởi tạo khi mới được cấp nguồn Trình tự khởi tạo như lược đồ sau Trên lược đồ, lệnh “Display clear” có giá trị 0x01 được gửi hai lần, lần đầu là 4 bit cao có giá trị 0x0, lần thứ hai là bốn bit thấp
có giá trị 0x01 Lệnh “Function set” gửi hai lần giá trị 0x2