Giáo trình Thực hành vi xử lý

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.

doc78 trang | Chia sẻ: haohao89 | Lượt xem: 2069 | Lượt tải: 4download
Bạn đang xem trước 20 trang tài liệu Giáo trình Thực hành vi xử lý, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA TP.HCM 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 Giới thiệu Mục Lục 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. 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. 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 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. 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: 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). 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. 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. 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. ; Khi nút RA4 du?c nh?n thì led don RB0 sáng, ; Khi không nh?n RA4 thì led don RB0 t?t ; Author: BKIT HARDWARE CLUB ; Homepage: ; 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 GOTO main BSF PORTB,0 ;Turn on LED1. SWOFF BTFSS PORTA,4 ;Wait for SW1 to be released. GOTO SWOFF BCF PORTB,0 ;Switch off LED1. GOTO main ;Repeat sequence. INIT clrf PORTB ; setup portb for outputs bcf TRISB,0 bsf PORTA,4 ; setup porta.4 for input bsf TRISA,4 return END 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. 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: 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: 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 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. 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: 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: Để 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: 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. 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ế. Bài tập 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. Yêu cầu: Viết chương trình 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. 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. Kiến thức liên quan 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. 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: LED hiển thị có kết nối như sau: Để LED sáng, J6 phải được nối lại và chân điều khiển tương ứng được thiết lập là ngỏ ra và ở mức logic 1. Các nút nhấn có kết nối như sau: 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: Khi phím được nhấn, do tác động của hiện tượng rung cơ học, tín hiệu điện tại 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: 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. 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 bcf TRISB,0 ; clear trisb.0 bcf TRISB,1 ; clear trisb.1 bcf TRISB,2 ; clear trisb.1 bcf TRISB,3 ; clear trisb.1 return Bước 4: Tạo hàm delay1ms sử dụng các lệnh CLRF, NOP, DECFSZ, GOTO. delay equ 0ch ; declare variable “delay” Delay1ms ;Approxiamtely at 4Mhz clrf delay ; clear variable “delay” Delay_1 nop decfsz delay 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 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: ; 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 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. 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. Bước 3: Khởi tạo PortB là output và PortA là input sử dụng các lệnh clrf, bcf, bsf INIT CLRF PORTB ;setup portb for outputs BCF TRISB,0 BCF TRISB,1 BCF TRISB,2 BCF TRISB,3 BSF PORTA,4 ; setup porta.4 for input BSF TRISA,4 RETURN 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,4 ;Wait for SW1 to be pressed GOTO MAIN BSF PORTB,0 ;Turn on LED1. SWOFF BTFSS PORTA,4 ;Wait for SW1 to be released. GOTO SWOFF BCF PORTB,0 ;Switch off LED1. GOTO MAIN ;Repeat sequence. 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: ; 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 GOTO MAIN BSF PORTB,0 ;Turn on LED1. SWOFF BTFSS PORTA,4 ;Wait for SW1 to be released. GOTO SWOFF BCF PORTB,0 ;Switch off LED1. GOTO MAIN ;Repeat sequence. 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. Bài tập Viết chương trình để khi nhấn RA4 thì các led sẽ sáng đếm lên, mỗi lần nhấn đếm lên 1 đơn vị. Viết chương trình sao cho mỗi lần nhấn RA4 thì 2 led trái và 2 led phải thay nhau sáng. Tạo hiệu ứng light river trên 4 led của board mạch starter kit. Nhấn RA4 để thay đổi chiều của light river. Khảo sát cơ chế ngắt quãng, giao tiếp LCD ký tự Nội dung: Khảo sát các nguyên nhân gây ngắt quảng, cách xử lý ngắt quãng, tính ưu tiên giữa các ngắt của vi điều khiển PIC16F877. Khảo sát ngắt ngoài của vi điều khiển PIC16F877. Điều khiển LCD ký tự 2x16. Yêu cầu: 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. Kiến thức liên quan 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: Sơ đồ điều khiển ngắt: 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 ;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 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 : 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 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 ;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 ; Author: BKIT HARDWARE CLUB ; Homepage: ; Creation Date: 7 - 31 - 2009 ;======================================; list p = 18f4520 #include P18f4520.inc delay res 1 ORG 00h GOTO MAIN ORG 08H GOTO ISR_HIGH ORG 18H GOTO ISR_LOW MAIN CALL INIT CALL INIT_TIMER0 CALL INIT_EXTERNAL_INTERRUPT GOTO $ INIT ;assigning PORTB is a digital output MOVLW 0x0e MOVWF ADCON1 BCF TRISB,1 BCF PORTB,1 BCF TRISB,2 BCF PORTB,2 BCF TRISB,3 BCF PORTB,3 MOVLW .10 MOVWF delay RETURN INIT_TIMER0 BSF RCON,IPEN ;enable priority interrupts. BCF INTCON2,TMR0IP BSF INTCON,TMR0IF BSF INTCON,TMR0IE BSF INTCON,GIEH ;set the global interrupt enable bits BSF INTCON,GIEL CLRF T0CON MOVLW 0x3c MOVWF TMR0H MOVLW 0xAF MOVWF TMR0L BSF T0CON,TMR0ON RETURN INIT_EXTERNAL_INTERRUPT ;Interrupt priority for INT1 and INT2 is determined by the ;value contained in the interrupt priority bits, INT1IP ;(INTCON3) and INT2IP (INTCON3). There is ;no priority bit associated with INT0. It is always a high ;priority interrupt source BCF INTCON2,INTEDG0 BCF INTCON,INT0IF BSF INTCON,INT0IE BSF INTCON,GIEH ;set the global interrupt enable bits BSF INTCON,GIEL RETURN EXTERNAL_INTERUPT_ROUTINE BCF INTCON,INT0IF BSF PORTB,1 BSF PORTB,2 BSF PORTB,3 MOVLW .10 MOVWF delay RETURN TIMER0_INTERRUPT_ROUTINE ; BSF INTCON,INT0IF 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 ISR_HIGH CALL EXTERNAL_INTERUPT_ROUTINE RETFIE ISR_LOW CALL TIMER0_INTERRUPT_ROUTINE RETFIE 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. LCD ký tự 2x16 Hình dạng và ý nghĩa các chân: Tên chân Mức logic Mô tả GND - Đất (0V) VCC - Nguồn (+5V) VEE - Chỉnh contrast (0 – VCC) RS 0 1 D0-D7 là giá trị lệnh D0-D7 là giá trị dữ liệu R/W 0 1 Ghi giá trị vào LCD Đọc giá trị ra từ LCD E 0 1 Từ 1 xuống 0 Cấm truy xuất LCD LCD hoạt động trao đổi dữ liệu Dữ liệu/Lệnh đưa vào LCD D0 0/1 Bit 0/LSB D1 0/1 Bit1 D2 0/1 Bit2 D3 0/1 Bit3 D4 0/1 Bit4 D5 0/1 Bit5 D6 0/1 Bit6 D7 0/1 Bit7/MSB A - Chân Anode của đèn nền K - Chân Cathode của đèn nền 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ự. 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ài liệu liên quan