1. Trang chủ
  2. » Luận Văn - Báo Cáo

THỰC HÀNH VI XỬ LÝ

79 1,3K 5
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 79
Dung lượng 2,6 MB

Nội dung

THỰC HÀNH VI XỬLÝ

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH

THỰC HÀNH VI XỬ LÝ

BM Kỹ thuật Máy tính

2009

Trang 3

Mụ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 8

1.3 Debug dùng MpLab SIM 12

1.4 Debug onchip dùng Mplab ICD2 15

1.5 Bài tập 15

Bài 2 : Khảo sát cổng xuất nhập 16

2.1 Kiến thức liên quan 16

2.1.1 Các thanh ghi điều khiển cổng xuất nhập 16

2.1.2 Kết nối mạch 16

2.2 Các bước hiện thực yêu cầu 1 18

2.3 Chương trình mẫu yêu cầu 1 20

2.4 Các bước hiện thực yêu cầu 2 21

2.5 Chương trình mẫu yêu cầu 2 22

2.6 Bài tập 23

Bài 3 : Khảo sát cơ chế ngắt quãng, giao tiếp LCD ký tự 24

3.1 Kiến thức liên quan 24

3.1.1 Tóm tắt các thanh ghi điều khiển ngắt 24

3.2 Các bước hiện thực yêu cầu 1 25

3.3 Chương trình mẫu yêu cầu 1 28

3.4 LCD ký tự 2x16 31

3.4.1 Hình dạng và ý nghĩa các chân: 31

3.4.2 Tổ chức vùng nhớ của LCD 32

3.4.3 Các lệnh giao tiếp với LCD 34

3.4.4 Khởi tạo LCD 35

3.5 Các bước hiện thực yêu cầu 2 36

3.6 Bài tập 41

Bài 4 : Khảo sát bộ định thời 42

4.1 Các bước hiện thực yêu cầu 1 42

4.2 Chương trình mẫu 46

4.3 Bài tập 48

Bài 5 : Kỹ thuật quét ma trận phím 49

5.1 Kết nối mạch ma trận phím 49

5.2 Các bước hiện thực 50

5.3 Bài tập 54

Bài 6 : Kỹ thuật quét LED 56

6.1 Cấu tạo LED 7 đoạn và LED ma trận 56

6.2 Kết nối mạch 58

6.3 Các thanh ghi liên quan và cách điều khiển 59

6.4 Các bước hiện thực 62

6.5 Bài tập 65

Bài 7 : Khảo sát bộ truyền nhận nối tiếp 66

7.1 Các bước hiện thực 66

Trang 4

Bài 8 : Khảo sát khối chuyển đổi A-D 71

8.1 Các bước hiện thực 71

8.2 Bài tập 72

Bài 9 : Khảo sát các khối chức năng đặc biệt khác 73

9.1 Các bước hiện thực PWM 73

9.2 Chương trình mẫu 74

9.3 Bài tập 75

Trang 5

Bà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 Môi trường phát triển MPLAB

Double Click vào biểu tượng MPLAB trên Desktop hoặc theo cách sau: Start -> All Programs -> Microchip -> MPLAB IDE v76.2 -> MPLAB IDE

Từ thanh Menu, click chọn tab Project -> Project Wirazd…

Cửa sổ Welcome hiện lên và bạn chọn Next

Trang 6

Chọn PIC cần sử dụng tại khung Device >> Click Next:

Chọn tool Microchip C18 Toolsuite tại Active Toolsuite

Chọn MPLAB C18 C Compiler tại Tollsuite contents

Nếu lập trình bằng assembly thì ta chon Active Toolsuite theo hình sau:

Click Next

Trang 7

Chọn Browse… Để chọn thư mục lưu project

Đánh vào tên Project muốn tạo Save, sau đó chúng ta chọn Next thì hiện ra của

sổ như sau:

Đây là nơi để các bạn add thư viện cho project

Trang 8

Bạn nên add hết các file cần thiết cho việc lập trình trước khi bắt đầu viết chương

trình gồm file lib và file lkr Nếu viết chương trình cho con chip nào thì ta lấy file lib

và file lkr của chíp tương ứng, như hình trên chung ta đang sử dụng chip 18f4550

Click Next

Click Finish Ta sẽ được một project như hình sau:

Trang 9

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 User khai báo dùng loại chip gì => add vào thư mục này

Nếu bạn quên không add 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)

Trang 10

Chọn header file phù hợp với PIC mình đã chọn Open

ADD source file: Click chọn New trên toolbar:

Cửa sổ hiện lên như sau: Từ Menu bar chọn File >> Save để lưu

Đặt tên và Save với đuôi c nếu bạn lập trình trên c18 của maplab hoặc asm nếu

bạn lập trình trên assembly

Nhấp phải vào Source Files chọn Add file >>> chọn file chúng ta vừa tạo xong

Trang 11

Cửa sổ hiện lên như sau:

Chúng ta đã hoàn tất việc add file vào các thư mục Source files và header files Công việc tiếp theo là viết code ( ở cửa sổ text editor :D:\MAPLAB\Untiled.asm)

Ðối với project mà sử dụng cùng 1 loại chip, cùng loại ngôn ngữ lập trình ( ASM hay C) thì chỉ cần tạo 1 lần Những lần sau, chỉ cần add/ remove file text (*.asm hoặc *.c) vào thư mục Source files

Trang 12

1.2 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: nut_nhan.asm

; Project: Nhap du lieu tu nút nhan RA4

; Author: BKIT HARDWARE CLUB

Bây giờ chúng ta lưu chương trình vừa viết thành nut_nhan.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 13

Nế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 14

Nế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 nut_nhan.asm thành nut_nhan.hex trong cùng thư mục chương trình nut_nhan.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 là 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 15

Lúc này để nạp chương trình ta chỉ cần vào menu Programmer -> Program như

hình sau là có thể nạp được chương trình

Sau khi nhấn Program nếu download xuống chip thành công thì ta sẽ thấy hiển thị

ra cửa sổ Output như sau:

MPLAB ICD 2 Ready Programming Target

Validating configuration fields .Erasing Part

Programming Program Memory (0x0 - 0x3F) Verifying

Program Memory .Verify Succeeded Programming Configuration Bits Config Memory

Verifying configuration memory

Verify Succeeded .Programming succeeded

Trang 16

04-Aug-2009, 14:23:39 MPLAB ICD 2 Ready

Để bắt đầu chạy chương trình ta phải rút dây kết nối mạch nạp và kit ra Khi đó chương trình mới có thể chạy được

Trên đây là toàn bộ các bước để tạo một project, viết assembly cho Pic trên Mplab cũng như làm thế nào để compile và download chương trình xuống chip để thực thi Đây

là trường hợp lý tưởng là khi viết code không có lỗi nào xảy ra Nếu có lỗi nào xảy ra thì

ta phải debug nó như thế nào Trong chương này sẽ hướng dẫn các bạn hai cách debug

1.3 Debug dùng MpLab SIM

Bước 1: Để sử dụng MpLab SIM ta vào menu Debugger -> Select Debugger -> Mplab SIM như hình vẽ sau:

Bước 2: Khi đã chọn Mplab SIM xong thì trên menu Debugger có thêm nhiều chức năng khác để hỗ trợ cho việc debug như hình sau:

Trang 17

Từ đây ta đã có thể mô phỏng được chương trình của mình một cách dễ dàng

Ví dụ như Run (F9) dùng để 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 Vậy làm thế nào để tạo Breakpoint, ta sử dụng lệnh Breakpoints (F2) như trên hình để tạo ra breakpoint tại vị trí hiện tại của con trỏ hoặc double click vào hàng code mình mong muốn đặt con trỏ Hay sử dụng Step Into (F7) để chạy từng lệnh một, gặp lời gọi hàm thì nó sẽ vào bên trong lời gọi hàm chạy từng lệnh trong đó Khác với Step Over (F8) một tí là khi có lời gọi hàm thì Step Over xem như đó

là một lệnh bình thường, không đi vào hàm chi tiết như Step Into

Reset: trở về đầu chương trình

Bướ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 View -> File registers sẽ xuất hiện cửa sổ như hình sau:

Trang 18

Để 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 View -> Watch thì hình sau sẽ xuất hiện:

Trang 19

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

1.4 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.5 Bài tập

Trang 20

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 đọc giá trị của tổ hợp nút nhấn và điều khiển giá trị hiển thị 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 21

LED hiển thị có kết nối như sau:

D2 LED

R21 470

RB0 D3

LED

R22 470

RB1 D4

LED

R23 470

RB2 D5

R1 10K

D401 4007

R3 10K

VCC

R7 10K VCC

Nút nhấn RESET dùng để reset vi điều khiển

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

Hiện tượng rung phím:

Trang 22

ngõ ra bị chuyển trạng thái giữa logic 0 và logic 1 Khi phím được thả, hiện tượng rung cũng xảy ra tương tự

Bộ dao động chính có kết nối như sau:

C4 22pF C5 22pF

Y1 4MHz

OUT 3Y2

4MHz

VCC

OSC1

R4 4.7K

C3

22pF

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:

Bước 2: Include file p18f4520.inc vào file led_don.asm

Bước 3: Khởi tạo PortB là output sử dụng các lệnh clrf, bcf

INIT clrf PORTB ; setup portb for outputs

Trang 23

bcf TRISB,0 ; clear trisb.0

bcf TRISB,1 ; clear trisb.1

bcf TRISB,2 ; clear trisb.1

bcf TRISB,3 ; clear trisb.1

goto Delay_1 return

Bước 5: Từ đây ta có thể tạo ra được hàm delay1s:

Delay1s Movwf 4 Movlw delay_1sa Delay1s_1

Movwf 250 Movlw delay_1sb Delay1s_2

Call Delay1ms decfsz delay_1sb goto Delay1s_2 decfsz delay_1sa goto Delay1s_1 return

Bước 6: Viết chương trình cho hàm main thực hiện các yêu cầu của

đề bài sử dụng lệnh INCF:

begin INCF PORTB

call Delay1s

goto begin

Trang 24

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

; Homepage: http://www.bkit4u.com/forum

; Creation Date: 7 - 31 - 2009

;======================================;

list p=18f4520 #include p18f4520.inc delay res 1 delay_1sa res 1 delay_1sb res 1 org 0

goto start start

call INIT begin

INCF PORTB call Delay1ms goto begin

INIT

clrf PORTB ; setup portb for outputs bcf TRISB,0

bcf TRISB,1 bcf TRISB,2 bcf TRISB,3 return

Delay1ms ;Approxiamtely at 4Mhz clrf delay

Delay_1 nop decfsz delay goto Delay_1 return

Delay1s movwf .4 movlw delay_1sa

Trang 25

Delay1s_1 movwf .250 movlw delay_1sb Delay1s_2

call Delay1ms decfsz delay_1sb goto Delay1s_2 decfsz delay_1sa goto Delay1s_1 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

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:

Bước 2: Include file p18f4520.inc vào file nut_nhan.asm

Trang 26

Bước 3: Khởi tạo PortB là output và PortA là input sử dụng các lệnh clrf,

BSF PORTA,4 ; setup porta.4 for input BSF TRISA,4

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

; Homepage: http://www.bkit4u.com/forum

; Creation Date: 7 - 31 - 2009

;======================================;

list p=18f4520 #include p18f4520.inc ORG 0

GOTO START START

CALL INIT

MAIN

BTFSC PORTA,4 ;Wait for SW1 to be pressed

Trang 27

INIT

CLRF PORTB ; setup portb.0 for outputs

BCF TRISB,0 BSF PORTA,4 ; setup porta.4 for input BSF TRISA,4

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

Trang 28

Bài 3 : Khảo sát cơ chế ngắt quãng, giao tiếp LCD ký

1 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

Trong chương trình ngắt ngoài 0 bật 3 led đơn RB1, RB2, RB3sá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:

Trang 29

Thanh ghi PIR2:

Sơ đồ đ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:

Trang 30

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

;assigning PORTB is a digital output MOVLW 0x0e MOVWF ADCON1

; setup portb for outputs BCF TRISB,1 BCF PORTB,1 BCF TRISB,2 BCF PORTB,2 BCF TRISB,3 BCF PORTB,3

;initialize delay variable MOVLW 10 MOVWF delay RETURN

Bước 4: Khởi tạo timer 0, cho timer 0 ngắt có độ ưu tiên thấp, thiết lập

timer0 cứ 100ms thì xảy ra ngắt một lần

INIT_TIMER0 BSF RCON,IPEN ;enable priority interrupts BCF INTCON2,TMR0IP ;timer0 with low priority

Trang 31

BSF INTCON,TMR0IF;set timer0 interrupt flag bit BSF INTCON,TMR0IE ; enable timer 0

;set the global interrupt enable bits BSF INTCON,GIEH BSF INTCON,GIEL CLRF T0CON

MOVLW 0x3c MOVWF TMR0H MOVLW 0xAF MOVWF TMR0L BSF T0CON,TMR0ON RETURN

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 1 và ngắt ngoài 2 thì độ ưu tiên ngắt phụ thuộc vào 2 bit INT1IP và INT2IP trong thanh ghi INTCON3 Còn với ngắt ngoài 0 thì không có bít xác định độ ưu tiên, nó chỉ có một mức ưu tiên là high priority

INIT_EXTERNAL_INTERRUPT

;falling edge on RB0 BCF INTCON2,INTEDG0

; clear external interrupt flag bit BCF INTCON,INT0IF

; enable external 0 interrupt BSF INTCON,INT0IE

;set the global interrupt enable bits BSF INTCON,GIEH BSF INTCON,GIEL 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 đó

EXTERNAL_INTERUPT_ROUTINE BCF INTCON,INT0IF BSF PORTB,1

BSF PORTB,2 BSF PORTB,3 MOVLW 10

MOVWF delay RETURN

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 :

Trang 32

T = 1/((Focs/4)/2) = 1/((4Mhz/4)/2) = 0.5us

Nên khi ta để giá trị trong các thanh ghi của timer giá trị 50000 thì cứ sau 100ms, timer sẽ ngắt một lần Để tính được giá trị số Hex gán cho thanh ghi đếm của timer ta làm như sau:

Đổi số 50000 sang số hex: C350

Lấy FFFF – C350 = 3CAF

Byte cao sẽ được lưu vào TMR0H, byte thấp lưu vào TMR0L

TIMER0_INTERRUPT_ROUTINE BCF INTCON,TMR0IF DECFSZ delay,1

GOTO TIMER0_ROUTINE_1 BCF PORTB,1

BCF PORTB,2 BCF PORTB,3 MOVLW 10

MOVWF delay TIMER0_ROUTINE_1

BCF T0CON,TMR0ON MOVLW 0x3C

MOVWF TMR0H MOVLW 0xAF MOVWF TMR0L BSF T0CON,TMR0ON RETURN

3.3 Chương trình mẫu yêu cầu 1

;=====================================;

; Name: led_don.asm

; 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

;- Trong chương trình ngắt ngoài 0 bật 3 led đơn RB1, RB2, RB3sáng cùng

Trang 34

;Interrupt priority for INT1 and INT2 is determined by the

;value contained in the interrupt priority bits, INT1IP

;(INTCON3<6>) and INT2IP (INTCON3<7>) There is

;no priority bit associated with INT0 It is always a high

;priority interrupt source

Trang 35

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

Dữ liệu/Lệnh đưa vào LCD

Trang 36

D7 0/1 Bit7/MSB

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)

Character 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 37

Chú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 38

3.4.3 Các lệnh giao tiếp với LCD

0 0 0 0 0 0 0 1 I/D SH 37µs Display on/off

Read BUSY flag

Các bit trên bảng tóm tắt các lệnh có ý nghĩa như sau:

SH 1 Entire shift on 0 Entire shift off

R/L 1 Shift to the Right 0 Shift to the Left

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

Trang 39

3.4.4 Khởi tạo LCD

Sơ đồ kết nối LCD:

Q2 MMBT2222A

VCC R20 2.2K

RD7

RD4 RD5 RD6

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

Ngày đăng: 25/04/2013, 10:20

HÌNH ẢNH LIÊN QUAN

Nếu lập trình bằng assembly thì ta chon Active Toolsuite theo hình sau: - THỰC HÀNH VI XỬ LÝ
u lập trình bằng assembly thì ta chon Active Toolsuite theo hình sau: (Trang 6)
Click Finish. Ta sẽ được một project như hình sau: - THỰC HÀNH VI XỬ LÝ
lick Finish. Ta sẽ được một project như hình sau: (Trang 8)
hình bên dưới. - THỰC HÀNH VI XỬ LÝ
hình b ên dưới (Trang 12)
như hình sau: - THỰC HÀNH VI XỬ LÝ
nh ư hình sau: (Trang 13)
Nếu thành công, ta sẽ thấy hình sau: - THỰC HÀNH VI XỬ LÝ
u thành công, ta sẽ thấy hình sau: (Trang 14)
Select Programmer -&gt; Mplab ICD2 như hình sau: - THỰC HÀNH VI XỬ LÝ
elect Programmer -&gt; Mplab ICD2 như hình sau: (Trang 14)
hình sau là có thể nạp được chương trình. - THỰC HÀNH VI XỬ LÝ
hình sau là có thể nạp được chương trình (Trang 15)
Vị trí LED hiển thị và nút nhấn trên board như hình dưới đây: - THỰC HÀNH VI XỬ LÝ
tr í LED hiển thị và nút nhấn trên board như hình dưới đây: (Trang 20)
Sơ đồ điều khiển ngắt: - THỰC HÀNH VI XỬ LÝ
i ều khiển ngắt: (Trang 29)
3.4.1 Hình dạng và ý nghĩa các chân: - THỰC HÀNH VI XỬ LÝ
3.4.1 Hình dạng và ý nghĩa các chân: (Trang 35)
K - Chân Cathode của đèn nền - THỰC HÀNH VI XỬ LÝ
h ân Cathode của đèn nền (Trang 36)
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 - THỰC HÀNH VI XỬ LÝ
isplay 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 (Trang 36)
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ự - THỰC HÀNH VI XỬ LÝ
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ự (Trang 37)
3.4.3 Các lệnh giao tiếp với LCD - THỰC HÀNH VI XỬ LÝ
3.4.3 Các lệnh giao tiếp với LCD (Trang 38)
Các bit trên bảng tóm tắt các lệnh có ý nghĩa như sau: - THỰC HÀNH VI XỬ LÝ
c bit trên bảng tóm tắt các lệnh có ý nghĩa như sau: (Trang 38)
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 - THỰC HÀNH VI XỬ LÝ
r ướ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 (Trang 39)
Sơ đồ kết nối LCD: - THỰC HÀNH VI XỬ LÝ
Sơ đồ k ết nối LCD: (Trang 39)
(quét) qua một lần, ta nói đã hiển thị một frame. Để mắt không cảm thấy hình ảnh bị rung thì số lần hiển thị frame trong một giây phải lớn hơn 24 lần (thường là 30 lần) - THỰC HÀNH VI XỬ LÝ
qu ét) qua một lần, ta nói đã hiển thị một frame. Để mắt không cảm thấy hình ảnh bị rung thì số lần hiển thị frame trong một giây phải lớn hơn 24 lần (thường là 30 lần) (Trang 64)
Giá trị của byte “control” chỉ chứa nhiều nhất một bit 1. Như hình vẽ, cần 12 lần xuất dữ liệu (4 byte) cho 1 frame gồm cả LED ma trận và LED 7 đoạn, 8 lần xuấ t d ữ  li ệ u  cho 1 frame gồm chỉ có LED ma trận (không quan tâm nội dung hiển thị LED 7 đoạ n - THỰC HÀNH VI XỬ LÝ
i á trị của byte “control” chỉ chứa nhiều nhất một bit 1. Như hình vẽ, cần 12 lần xuất dữ liệu (4 byte) cho 1 frame gồm cả LED ma trận và LED 7 đoạn, 8 lần xuấ t d ữ li ệ u cho 1 frame gồm chỉ có LED ma trận (không quan tâm nội dung hiển thị LED 7 đoạ n (Trang 65)
Cách điều khiển được minh họa thông qua hình sau: - THỰC HÀNH VI XỬ LÝ
ch điều khiển được minh họa thông qua hình sau: (Trang 65)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w