204
Dùng 8051 điều khiển chạy chữ trên màn hình LCD Họ và tên: LÊ NGỌC PHÚC Lớp: CDDT9QN MSSV: 0782743 BÀI TIỂU LUẬN VI XỬ ĐỀ TÀI : Chạy chữ trên màn hinh LCD, ứng dụng IC 8051 MỤC LỤC 1. Giới thiệu IC 8051 2. Giới thiệu cách lấy linh kiện 3. Mô tả về LCD 4. Sơ đồ giao tiếp 5. Chương trình mô phỏng 6. Chạy mô phỏng 1. Giới thiệu IC 8051: 1.1Giới thiệu họ MSC-51: MCS-51 là họ IC vi điều khiển do hãng I ntel sản xuất. Các IC tiêu biểu cho họ là 8051 và 8031. Các sản phẩm MSC-51 thích hợp cho những ứng dụng điều khiển. Việc xử lý trên Byte và các toán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế đọ truy xuất dữ liệu nhanh trên RAM nội. AT89C51 cung cấp nhungx đặc tính chuẩn như sau : 4 KB bộ nhớ chỉ đọc có thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 2 TIMER/COUNTER 16 Bit, vecto ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp bán song công, 1 mạch dao động tạo xung Clock và dao động ON-CHIP. Thêm vào đó, AT89C51 được thiết kế với logic tĩnh cho hoạt động đến mức không tần số và hỗ trợ hai phần mềm có thể lựa chọn những chế độ tiết kiện công suất, chế độ chờ (IDLE MODE) sẽ dừng CPU trong khi vẫn cho phép RAM, timer/counter, port nối tiếp và hệ thống ngát tiếp tục hoạt động. Chế độ giảm công suất sẽ lưu nội dung RAM những sẽ treo bộ dao động làm khả năng hoạt động của tất cả những chức năng khác cho đến khi Reset hệ thống. 1.2 Sơ đồ khối của AT89C51 :

Dùng 8051 điều khiển chạy chữ trên màn hình LCD

Embed Size (px)

Citation preview

Page 1: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

Dùng 8051 điều khiển chạy chữ trên màn hình LCD   Họ và tên: LÊ NGỌC PHÚC    Lớp: CDDT9QNMSSV: 0782743                                

                                           BÀI TIỂU LUẬN VI XỬ LÝ  

      ĐỀ TÀI : Chạy chữ trên màn hinh LCD, ứng dụng IC 8051

                                       MỤC LỤC1. Giới thiệu IC 80512. Giới thiệu cách lấy linh kiện3. Mô tả về LCD4. Sơ đồ giao tiếp5. Chương trình mô phỏng6. Chạy mô phỏng 1. Giới thiệu IC 8051:1.1Giới thiệu họ MSC-51:    MCS-51 là họ IC vi điều khiển do hãng I ntel sản xuất. Các IC tiêu biểu cho họ là 8051 và 8031. Các sản phẩm MSC-51 thích hợp cho những ứng dụng điều khiển. Việc xử lý trên Byte và các toán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế đọ truy xuất dữ liệu nhanh trên RAM nội.  AT89C51 cung cấp nhungx đặc tính chuẩn như sau : 4 KB bộ nhớ chỉ đọc có thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 2 TIMER/COUNTER 16 Bit,  vecto ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp bán song công, 1 mạch dao động tạo xung Clock và dao động ON-CHIP. Thêm vào đó, AT89C51 được thiết kế với logic tĩnh cho hoạt động đến mức không tần số và hỗ trợ hai phần mềm có thể lựa chọn những chế độ tiết kiện công suất, chế độ chờ (IDLE MODE) sẽ dừng CPU trong khi vẫn cho phép RAM, timer/counter, port nối tiếp và hệ thống ngát tiếp tục hoạt động. Chế độ giảm công suất sẽ lưu nội dung RAM những sẽ treo bộ dao động làm khả năng hoạt động của tất cả những chức năng khác cho đến khi Reset hệ thống. 1.2 Sơ đồ khối của AT89C51 :

    http://photo.zing.vn/photo/gallery/detail.5387929.html                 

 

Page 2: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

       1. 3 Sơ đồ chân của AT89C51

    http://photo.zing.vn/photo/gallery/detail.5387932.html                     1.4Chức năng các chân của AT89C51-89C51cos tất cả 40 chaancos chức năng như các đường xuất nhập. trong đó có 24 chân có tác dụng kép (có nghĩa 1 chân có 2 chức năng), mỗi dường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus dữ liệu và bus địa chỉ.a/.Các port:Port 0:Port 0 là port có hai chức năng ở các chân 32-39 của  89C51. trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng, nó có chức năng như các đường IO. Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu.b/.Port 1:-port 1 là port IO trên các chân 1-8. các chân được kí hiệu p1.0, p1.1, p1.2, có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần. port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài.c/.Port 2:-port 2 là 1 port có tác dụng kép trên các chân 21-28 được dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng.d/.Port 3:Port 3 là port có tác dụng kép trên các chân 10-17. các chân của port này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính dặt biệt của 89C51 như ở bản sau:

    http://photo.zing.vn/photo/gallery/detail.5387937.html    * Các ngõ tín hiệu điều khiển:    Ngõ tín hiệu PSEN:- PSEN là tín hiêu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương trình mở rộng thường được nói đén chân OE của Eprom cho phép đọc các byte mở rộng .- PSEN ở mức thấp trong thời gian Microcontroller 8951 lấy lệnh. Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu  và được chốt từ thanh ghi lệnh bên trong 8951 để giải mã lệnh. Khi 8951 thi hành chương trình trong ROM nội PSEN sẽ ở mức logic 1.    Ngõ tín hiệu điều khiển ALE(Address latch Enable):

Page 3: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

- Khi 89C51 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ và bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt.- Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 dóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động.- Bộ dao động được tích hợp bên trong 89C51, khi sử dungj89C51 người thiết kế chỉ cần kết nối thêm thạch anh và các tụ như hình vẽ trong sơ đồ. Tần số thạch anh thường sử dụng cho 89C51 là 12Mhz.- Chân 40 (vcc)được nối lên nguồn.các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chíp và có thể được dùng làm tín hiệu clock cho các phần khác của hệ thống. chân ALE được dùng làm ngõ vào xung lập trình cho Eprom trong 89C51.   Ngõ tín hiệu EA\(External Access):- Tín hiệu vào EA\ ở chân 31 thường được mất lên mức 1 hoặc mức 0. nếu ở mức 1, 89C51 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp 8KB. Nếu ở mức 0, 89c51 sẽ thi hành chương trình từ bộ nhớ mở rộng. chân EA\ được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 89c51.   Ngõ tín hiệu RST (Reset):- Ngõ vào RST ở chân 9 là ngõ vào reset của 89C51. khi ngõ vào tín hiệu này đưa lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống. khi cấp điện mạch tự động Reset.    Các ngõ vào bộ dao động X1, X2:nguồn 5V .

2.Giới thiệu cách lấy linh kiện • Bước 1: Click vào biểu tượng trên thanh công cụ,

    http://photo.zing.vn/photo/gallery/detail.5387719.html

tiếp theo click vào chữ P,ta sẽ thấy một bảng sau:

  http://photo.zing.vn/photo/gallery/detail.5387725.html

Pick Device/Symbol  từ Menu lệnhhoặc chọn  Library

Page 4: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

   http://photo.zing.vn/photo/gallery/detail.5387729.html

    Hoặc ta có thể bấm phím P trên bàn phím.• Bước 2:  Chọn linh kiện 80C51 như sau:

    http://photo.zing.vn/photo/gallery/detail.5387733.html

             Nhấp đúp vào dòng chữ 80C51, ta sẽ thấy:

    http://photo.zing.vn/photo/gallery/detail.5387741.html                           Sau đó nhấp vào chữ 80C51, ta được:

Page 5: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

o

    http://photo.zing.vn/photo/gallery/detail.5387745.html                Sau đó, chúng ta nhấp chột trái vào vùng đặt linh kiện thì chip 80C51 sẽ hiện ra:

     http://photo.zing.vn/photo/gallery/detail.5387745.html                          

Tương tự cho tụ điện, thạch anh, LCD…Ta nhấn phím P trên bàn phím, sau đó, gõ vào keywords từ capacitor, crystal, LCD…

Page 6: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

      

 http://photo.zing.vn/photo/gallery/detail.5387767.html

Ta chọn LCD 14 chân:

   http://photo.zing.vn/photo/gallery/detail.5387776.html • Bước 3: Ta chọn nguồn và mass bằng cách:Click vào biểu tượng:   trên thanh công cụ,

   http://photo.zing.vn/photo/gallery/detail.5387782.html 

Thì hộp thoại sau xuất hiện:

Page 7: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

  http://photo.zing.vn/photo/gallery/detail.5387792.html      

Ta sẽ chọn nguồn khi click vào Power, mass khi click vào Ground.Đến đây ta sẽ có:

     http://photo.zing.vn/photo/gallery/detail.5387798.html  -Nếu chúng ta muốn xoay linh kiện thì ta nhấn vào biểu tượng:      thì các linh kiện sẽ xoay theo ý muốn của ta.

 3.   Mô tả về LCDTrong những năm gần đây LCD đang ngày càng được sử dụng rộng rãi thay thế dần các đèn Led.Mô tả các chân, loại 14 chân.-VCC: cấp nguồn dương-VSS: cấp nguồn âm-VEE: điều khiển độ tương phản của LCD-Chân chọn thanh ghi RS( Register Select)Có hai thanh ghi rất quan trọng trong LCD, chân RS được dùng để chọn thanh ghi này như sau: Nếu RS =0 thì thanh ghi mà lệnh được chọn để cho phép người dùng gửi một lệnh chẳng hạn như xóa màn hình, đưa con trỏ về đầu dòng…Nếu RS=1 thì thanh ghi dữ liệu được chọn cho phép người dùng gửi dữ liệu cần hiển thị trên LCD.-Chân đọc/ghi (R/W)Đầu đọc/ghi cho phép người dùng ghi thông tin lên LCD khi R/W=0 hoặc đọc thông tin từ nó khi R/W=1-Chân cho phép E (Enable)Chân cho phép E được sử dụng bởi LCD để chốt thông tin hiện hữu trên chân dữ liệu của nó. Khi dữ liệu được cung cấp đến chân dữ liệu thì một xung mức cao xuống thấp phải được áp đến chân này để LCD chốt dữ liệu trên các chân dữ liệu. Xung này phải rộng tối thiểu là 450 ns.-Chân D0~D7:

Page 8: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

Đây là 8 chân dữ liệu 8 bit, được dùng để gửi thông tin trên LCD hoặc đọc nội dung của các thanh ghi trong LCD.Để hiển thị các chữ  cái và các con số, chúng ta gửi các mã ASCII của các chữ cái từ A đến Z, a đến f và các con số từ 0~9 đến các chân này khi bật RS=1Cũng như các mã lệnh mà có thể được gửi đến LCD để xóa màn hình hoặc đưa con trỏ về vị trí đầu dòng hoặc nhấp nháy con trỏ.Chúng ta cũng sử dụng RS=0 để kiểm tra bit cờ bận để xem LCD có sẵn sàng nhận thông tin. Cờ bận là D7 và có thể được đọc khi R/W=1 và RS=0 như sau:Nếu R/W=1, RS=0 khi D7=1(cờ bận 1) thì LCD bận bởi các công việc bên trong và sẽ không nhận bất kì thông tin mới nào. Khi D7 thì LCD sẵn sàng nhận thông tin mới. Lưu ý chúng ta nên kiểm tra cờ bận trước khi ghi bất kyf dữ liệu nào lên LCD

 http://photo.zing.vn/photo/gallery/detail.5387811.html

Chân Kí hiệu I/O Mô tả

 

1 VSS - Đất

2 VCC - Dương 5V

3 VEE - Cấp nguồn điều khiển phản

4 RS I RS=0 chon thanh ghi lệnh. RS=1 chọn thanh ghi dữ liệu.

5 R/W I R/W=1 đọc dữ liệu. R/W=0 ghi

6 E I/O Cho phép

7 DB0 I/O Các bit dữ liệu

8 DB1 I/O Các bit dữ liệu

9 DB2 I/O Các bit dữ liệu

10 DB3 I/O Các bit dữ liệu

11 DB4 I/O Các bit dữ liệu

Page 9: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

12 DB5 I/O Các bit dữ liệu

13 DB6 I/O Các bit dữ liệu

14 DB7 I/O Các bit dữ liệu

 Các mã lệnh LCD

Mã Hex

Lệnh đến thanh ghi của LCD

1 Xóa màn hình hiển thị

2 Trở về đầu dòng

4 Giảm con trỏ (dịch con trỏ sang trái)

5 Tăng con rỏ (dịch con trỏ sang phải)

6 Dịch hiển thị sang phải

7 Dịch hiển thị sang trái

8 Tắt con trỏ, tắt hiển thị

A Tắt hiển thị, bật con trỏ

C Bật hiển thị, tắt con trỏ

E Bật hiển thị, nhấp nháy con trỏ

F Tắt hiển thị, nhấp nháy con trỏ

10 Dịch vị trí con trỏ sang trái

14 Dịch vị trí con trỏ sang phải

18 Dịch toàn bộ hiển thị sang trái

1C Dịch toàn bộ hiển thị sang phải

80 Ép con trỏ Vũ đầu dòng thứ nhất

C0 Ép con trỏ Vũ đầu dòng thứ hai

38 Hai dòng ma trận

4. Sơ đồ giao tiếp        Cách nối dây:Nhấn vào biểu tượng   , tiến hành nối bằng cách nhấp chuột vào chân linh kiện và rê đến chỗ cần nối. muốn tạo đường bus thì nhấn vào biểu tượng  

Page 10: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

     http://photo.zing.vn/photo/gallery/detail.5387842.html Sau khi nối hoàn chỉnh bản vẽ sẽ tương tự như sau:

      http://photo.zing.vn/photo/gallery/detail.5387852.html

 

                             5.Chương trình mô phỏng$mod51    ; Chương trình hiển thị LCD

         ; Tần số thạch anh 12MHz

   ;Khái báo thanh ghi địa chỉ LCD

Page 11: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

LCD_CMD_WR equ  0LCD_DATA_WR equ 1LCD_BUSY_RD equ 2LCD_DATA_RD equ 3

;LCD CommandsLCD_CLS  equ 1LCD_HOME equ 2LCD_SETMODE equ 4LCD_SETVISIBLE equ 8LCD_SHIFT equ 16LCD_SETFUNCTION equ 32LCD_SETCGADDR equ 64LCD_SETDDADDR equ 128

    ;Vị trí chương trình nhảy đến khi reset org 0000h jmp start    ;nhảy đến chương trình chính

    ;Bắt đầu chương trình chính

 org 0100h

string1a:db ' !!XIN CHAO!! '  db 0string1b:db '!! XIN CHAO !! '  db 0string2:db ' tat ca cac ban... ' db 0

string3:db ' Day la tieu luan ' db 0string4:db '   cua Ngoc Phuc !' db 0string5:db 'Em ten la:' db 0string6:db '*Le Ngoc Phuc*' db 0string7:db '*Ma So Sinh Vien*' db 0string8: db '  0782743  ' db 0string9: db ' Lop 5CDCQDT09' db 0string10: db 'Truong Cong Nghiep' db 0string11: db 'TP Ho Chi Minh.'db 0string12: db 'Em chan thanh' db 0string13: db 'cam on thay:' db 0string14: db '*TranNguyenBaoTran*' db 0string15: db 'da giup do em' db 0string16: db 'thuc hien tieu' db 0string17: db 'luan nay!!' db 0string18: db 'Cam on cac ban da' db 0string19: db 'quan tam theo doi' db 0string20: db '  $THE_END$ ' db 0string22: db 'De tai: Chay chu ',0

Page 12: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

string23: db 'Tren man hinh LCD'  db 0string24: db ' ung dung IC 8051'  db 0string25: db 'mo phong bang' db 0string26: db 'phan mem Proteus  '  db 0     start: mov A,#038h       ;Gửi lệnh 038h đến LCD thông báo LCD sử dụng BUS 8bit  call wrcmd     ;gọi chương trình con gửi lệnh

loop: mov A,#LCD_SETVISIBLE+6  ;gửi lệnh 0Eh vào LCD để LCD được kích hoạt:           call wrcmd    ;gọi chương trình con gửi lệnh

 mov R7,#2   ;Đưa 2 vào R7 để thực hiện 2 lần vòng lặp

loop2:  mov DPTR,#string1a    ;Đưa dòng chữ 1a vào con trỏ đại chỉ

 call wrstr  ;gọi chương trình con xuất dòng chữ tới LCD 

  mov DPTR,#200        &nb sp;  ;đưa 200 vào con trỏ địa chỉ để thực hiện việc đợi 200 mS

  call wtms                         ;Gọi chương trình con đợi 200mS 

 mov A,#LCD_CLS   ;Xóa màn hình LCD

 mov DPTR,#string1b call wrstr

  mov DPTR,#200  call wtms

 mov A,#LCD_CLS   ; Xóa màn hình LCD  call wrcmd

 djnz R7,loop2                                       ;  lặp lại 2 lần

 mov DPTR,#string1a call wrstr

  mov DPTR,#400  call wtms

 mov A,#LCD_SETDDADDR+64        ; ; Đưa giá trị lệnh 40H vào A

 call wrcmd

 mov DPTR,#string2 call wrslow

  mov DPTR,#200  call wtms

 mov A,#LCD_CLS                          ;Clear screen   mov A,#LCD_SETDDADDR+64        ;   ;Đưa giá trị lệnh 40H vào A

 call wrcmd

 mov A,#LCD_CLS  ;Clear screen call wrcmd

 mov DPTR,#string3

Page 13: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

 call wrslow

        mov A,#LCD_SETDDADDR+64    ;Đưa giá trị lệnh 0FH vào A

 call wrcmd

 mov DPTR,#string4 call wrslow mov A,#LCD_CLS mov A,#LCD_SETDDADDR+64 call wrcmd mov A,#LCD_CLS call wrcmd mov DPTR,#string5 call wrslow mov A,#LCD_SETDDADDR+64 call wrcmd mov DPTR,#string6 call wrslow mov A,#LCD_CLS mov A,#LCD_SETDDADDR+64 call wrcmd mov A,#LCD_CLS call wrcmd mov DPTR,#string7 call wrslow mov A,#LCD_SETDDADDR+64  call wrcmd mov DPTR,#string8 call wrslow mov A,#LCD_CLS mov A,LCD_SETDDADDR+64 call wrcmd mov A,#LCD_CLS call wrcmd mov DPTR,#string9 lcall delay1 mov DPTR,#string10 lcall delay1 mov DPTR,#string11 lcall delay1 mov DPTR,#string22 lcall delay1 mov DPTR,#string23 lcall delaylc mov DPTR,#string24 lcall delay1 mov DPTR,#string25 lcall delaylc mov DPTR,#string26 acall delay1 mov DPTR,#string12 lcall delay1 mov DPTR,#string13 lcall delaylc mov DPTR,#string14 lcall delay1 mov DPTR,#string15 lcall delaylc mov DPTR,#string16 lcall delay1 mov DPTR,#string17 lcall delaylc mov DPTR,#string18 lcall delay1 mov DPTR,#string19 lcall delaylc

Page 14: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

 mov R7,#20loop1:  mov DPTR,#string20 call wrstr

  mov DPTR,#1000  call wtms

 mov A,#LCD_CLS   ;Clearscreen call rcmd

 mov DPTR,#string20 call wrstr

  mov DPTR,#1000  call wtms

 mov A,#LCD_CLS   ;Clear screen call wrcmd

 djnz R7,loop1

 mov DPTR,#string20 call wrstr

  mov DPTR,#400  call wtms

 mov A,#LCD_SETDDADDR+64 call wrcmd

;*******************************************   mov A,#LCD_SETVISIBLE+7;Show theblink cursor as well. call wrcmd

  mov DPTR,#2000  call wtms

 mov A,#LCD_CLS   ;Clear screen call wrcmd

 jmp loop

    ;Chương trình con viết chuỗi ký tự trong DPTR        wrstr: mov R0,#LCD_DATA_WRwrstr1: clr A movc A,@A+DPTR jz wrstr2 movx @R0,A call wtbusy inc DPTR push DPL push DPH pop DPH pop DPL  jmp wrstr1wrstr2: ret

   ;Chương trình con viết chuỗi ký tự trong DPTR theo từng ký tự nhảy rawrslow: mov R0,#LCD_DATA_WRwrslw1: clr A movc A,@A+DPTR jz wrslw2 movx @R0,A call wtbusy inc DPTR

Page 15: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

 push DPL push DPH        mov DPTR,#100        call wtms pop DPH pop DPL  jmp wrslw1wrslw2: ret

   ;chương trình con gởi một lệnh trong thanh chứa A ra LCD:wrcmd: mov R0,#LCD_CMD_WR       &nbs p; ;đưa địa chỉ WR lệnh vào R0  movx @R0,A                      ;xuất lệnh nằm trong thanh chứa A ra LCD  jmp wtbusy                        ;Kiểm tra LCD bận

;chương trình con ghi một ký tự lên LCD:wrchar: mov R0,#LCD_DATA_WR       ; đưa địa chỉ WR dữ liệu vào R0  movx @R0,A                          ;xuất ký tự nằm trong thanh chứa A ra LCD 

;Chương trình con đợi LCD hết bậnwtbusy: mov R1,#LCD_BUSY_RD movx A,@r1 jb ACC.7,wtbusy ret

;Chương trình con đợi tổng số giây có trong thanh chúa A wtsec: push ACC call wtms pop ACC dec A jnz wtsec ret

   ;Chương trình con đợi tổng số mS có trong con trỏ DPTR wtms:   xrl DPL,#0FFh   ;không thể sử dụng lệnh DEC DPTR, do đó vòng lặp sử dụng 2 lớp lặp tăng xrl DPH,#0FFh   ;and incrementing instead. inc DPTRwtms1: mov TL0,#low(-1200)  ;100 xung = 1ms ở tần số thạch anh 1.2MHz mov TH0,#high(-1200)  mov TMOD,#1   ;Timer 0 mode 1 setb TCON.4   ;Timer 0 runswtms2: jnb TCON.5,wtms2  clr TCON.4   ;Timer 0 stops clr TCON.5 inc DPTR mov A,DPL orl A,DPH jnz wtms1 retdelaylc: call wrslow

        mov A,#LCD_SETDDADDR+64  call wrcmd ret

delay1:   call wrslow mov A,#LCD_CLS mov A,#LCD_SETDDADDR+64 call wrcmd

Page 16: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

 mov A,#LCD_CLS call wrcmdret    END

6. Chạy mô phỏng:  

         http://photo.zing.vn/photo/gallery/detail.5345279.html

        http://photo.zing.vn/photo/gallery/detail.5345378.html

Page 17: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

        http://photo.zing.vn/photo/gallery/detail.5345333.html

        http://photo.zing.vn/photo/gallery/detail.5345320.html

Page 18: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

        http://photo.zing.vn/photo/gallery/detail.5345290.html

        http://photo.zing.vn/photo/gallery/detail.5345346.html

Page 19: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

           http://photo.zing.vn/photo/gallery/detail.5345362.html

         http://photo.zing.vn/photo/gallery/detail.5345304.html

                                                                                              

    

 

Page 20: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

      phuc_1076116

Hiện đã có 2 ý kiến thảo luận về bài viết này. Mời bạn cùng trao đổi!

Về đầu trang

In bài viết

Gửi qua email

Thảo luận về bài viết

phuc_1076116

  

                                                   MỤC LỤC

1.Giới thiệu cách lấy linh kiện

Page 21: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

……………………….trang 2

2.Mô tả về LCD………………………………………trang6

3.Sơ đồ giao

Page 22: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

tiếp……………………………………..trang 9

4.Chương trình mô phỏng……………………………tra

Page 23: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ng 10

5.Chạy mô phỏng…………………………………….trang 17

 

1.Giới thiệu cách lấ

Page 24: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

y linh kiện

• Bước 1: Click vào biểu tượng trên thanh công cụ,

 

t

Page 25: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

iếp theo click vào chữ P,ta sẽ thấy một bảng sau:

 

Pick Device/Sym

Page 26: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

bol  từ Menu lệnhhoặc chọn  Library

 

 

 

        Hoặc ta có thể

Page 27: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

bấm phím P trên bàn phím.

• Bước 2:  Chọn linh kiện 80C51 như sau:

Page 28: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

            

Nhấp đúp vào dòng chữ 80C51, ta sẽ thấy:

                           

S

Page 29: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

au đó nhấp vào chữ 80C51, ta được:

               

Sau đó, chúng ta nh

Page 30: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ấp chột trái vào vùng đặt linh kiện thì chip 80C51 sẽ hiện ra:

   

Page 31: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

                        

Tương tự cho tụ điện, thạch anh, LCD…

Ta nhấn phím P trên

Page 32: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

bàn phím, sau đó, gõ vào keywords từ capacitor, crystal, LCD…

    

Page 33: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

 

 

 

 

Ta chọn LCD 14 chân:

 

• Bước 3: Ta chọn nguồn và mass b

Page 34: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ằng cách:

Click vào biểu tượng:   trên thanh công cụ,

 

Thì hộp tho

Page 35: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ại sau xuất hiện:

      

Ta sẽ chọn nguồn khi click vào Power, mas

Page 36: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

s khi click vào Ground.

Đến đây ta sẽ có:

 

 -Nếu chúng ta muốn xo

Page 37: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ay linh kiện thì ta nhấn vào biểu tượng:      thì các linh kiện sẽ

Page 38: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

xoay theo ý muốn của ta.

 2.   Mô tả về LCD

Trong những năm gần đ

Page 39: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ây LCD đang ngày càng được sử dụng rộng rãi thay thế dần các đèn L

Page 40: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ed.

Mô tả các chân, loại 14 chân.

-VCC: cấp nguồn dương

-VSS: cấp

Page 41: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

nguồn âm

-VEE: điều khiển độ tương phản của LCD

-Chân chọn thanh g

Page 42: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

hi RS( Register Select)

Có hai thanh ghi rất quan trọng trong LCD,

Page 43: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

chân RS được dùng để chọn thanh ghi này như sau: Nếu RS =0 thì th

Page 44: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

anh ghi mà lệnh được chọn để cho phép người dùng gửi một lệnh chẳn

Page 45: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

g hạn như xóa màn hình, đưa con trỏ về đầu dòng…Nếu RS=1 thì thanh

Page 46: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ghi dữ liệu được chọn cho phép người dùng gửi dữ liệu cần hiển th

Page 47: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ị trên LCD.

-Chân đọc/ghi (R/W)

Đầu đọc/ghi cho phép người dùng gh

Page 48: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

i thông tin lên LCD khi R/W=0 hoặc đọc thông tin từ nó khi R/W=1

-

Page 49: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

Chân cho phép E (Enable)

Chân cho phép E được sử dụng bởi LCD để c

Page 50: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

hốt thông tin hiện hữu trên chân dữ liệu của nó. Khi dữ liệu được

Page 51: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

cung cấp đến chân dữ liệu thì một xung mức cao xuống thấp phải đượ

Page 52: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

c áp đến chân này để LCD chốt dữ liệu trên các chân dữ liệu. Xung

Page 53: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

này phải rộng tối thiểu là 450 ns.

-Chân D0~D7:

Đây là 8 chân dữ l

Page 54: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

iệu 8 bit, được dùng để gửi thông tin trên LCD hoặc đọc nội dung c

Page 55: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ủa các thanh ghi trong LCD.

Để hiển thị các chữ  cái và các con số

Page 56: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

, chúng ta gửi các mã ASCII của các chữ cái từ A đến Z, a đến f và

Page 57: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

các con số từ 0~9 đến các chân này khi bật RS=1

Cũng như các mã l

Page 58: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ệnh mà có thể được gửi đến LCD để xóa màn hình hoặc đưa con trỏ về

Page 59: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

vị trí đầu dòng hoặc nhấp nháy con trỏ.Chúng ta cũng sử dụng RS=0

Page 60: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

để kiểm tra bit cờ bận để xem LCD có sẵn sàng nhận thông tin. Cờ

Page 61: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

bận là D7 và có thể được đọc khi R/W=1 và RS=0 như sau:

Nếu R/W=1,

Page 62: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

RS=0 khi D7=1(cờ bận 1) thì LCD bận bởi các công việc bên trong v

Page 63: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

à sẽ không nhận bất kì thông tin mới nào. Khi D7 thì LCD sẵn sàng

Page 64: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

nhận thông tin mới. Lưu ý chúng ta nên kiểm tra cờ bận trước khi g

Page 65: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

hi bất khì dữ liệu nào lên LCD

 

 

Chân  Kí hiệu I/O Mô tả

1 VSS -

Page 66: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

 Đất

2 VCC - Dương 5V

3 VEE - Cấp nguồn điều khiển  phản

4 RS I RS

Page 67: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

=0 chon thanh ghi lệnh. RS=1 chọn thanh ghi dữ liệu.

5 R/W I R/W=1

Page 68: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

đọc dữ liệu. R/W=0 ghi

6 E I/O Cho phép

7 DB0 I/O Các bit dữ liệu

Page 69: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

8 DB1 I/O Các bit dữ liệu

9 DB2 I/O Các bit dữ liệu

10 DB3 I/O Cá

Page 70: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

c bit dữ liệu

11 DB4 I/O Các bit dữ liệu

12 DB5 I/O Các bit dữ liệ

Page 71: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

u

13 DB6 I/O Các bit dữ liệu

14 DB7 I/O Các bit dữ liệu

 Các mã lện

Page 72: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

h LCD

Mã Hex Lệnh đến thanh ghi của LCD

1 Xóa màn hình hiển thị

Page 73: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

Trở về đầu dòng

4 Giảm con trỏ (dịch con trỏ sang trái)

5 Tăng con

Page 74: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

rỏ (dịch con trỏ sang phải)

6 Dịch hiển thị sang phải

7 Dịch hiển

Page 75: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

thị sang trái

8 Tắt con trỏ, tắt hiển thị

A Tắt hiển thị, bật con

Page 76: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

trỏ

C Bật hiển thị, tắt con trỏ

E Bật hiển thị, nhấp nháy con trỏ

Page 77: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

F Tắt hiển thị, nhấp nháy con trỏ

10 Dịch vị trí con trỏ sang trá

Page 78: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

i

14 Dịch vị trí con trỏ sang phải

18 Dịch toàn bộ hiển thị sang t

Page 79: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

rái

1C Dịch toàn bộ hiển thị sang phải

80 Ép con trỏ Vũ đầu dòng t

Page 80: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

hứ nhất

C0 Ép con trỏ Vũ đầu dòng thứ hai

38 Hai dòng ma trận

3. 

Page 81: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

Sơ đồ giao tiếp

        Cách nối dây:

Nhấn vào biểu tượng   , tiến

Page 82: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

hành nối bằng cách nhấp chuột vào chân linh kiện và rê đến chỗ cầ

Page 83: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

n nối. muốn tạo đường bus thì nhấn vào biểu tượng  

 

Sau khi nối

Page 84: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

hoàn chỉnh bản vẽ sẽ tương tự như sau:

 

                              4.Chương trìn

Page 85: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

h mô phỏng

$mod51

    ; Chương trình hiển thị LCD

         ; Tần số

Page 86: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

thạch anh 12MHz

   ;Khái báo thanh ghi địa chỉ LCD

LCD_CMD_WR equ  

Page 87: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

0

LCD_DATA_WR equ 1

LCD_BUSY_RD equ 2

LCD_DATA_RD equ 3

;LCD Comman

Page 88: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ds

LCD_CLS  equ 1

LCD_HOME equ 2

LCD_SETMODE equ 4

LCD_SETVISIBLE 

Page 89: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

equ 8

LCD_SHIFT equ 16

LCD_SETFUNCTION equ 32

LCD_SETCGADDR equ 64

Page 90: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

LCD_SETDDADDR equ 128

    ;Vị trí chương trình nhảy đến khi reset

Page 91: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

 org 0000h

 jmp start    ;nhảy đến chương trình chính

    ;Bắt đầu

Page 92: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

chương trình chính

 org 0100h

string1a:db ' !!XIN CHAO!! '

  db 0

Page 93: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

string1b:db '!! XIN CHAO !! '

  db 0

string2:db ' tat ca cac ban..

Page 94: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

. '

 db 0

string3:db ' Day la tieu luan '

 db 0

string4:db '   cua

Page 95: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

Ngoc Phuc !'

 db 0

string5:db 'Em ten la:'

 db 0

string6:db '*Le N

Page 96: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

goc Phuc*'

 db 0

string7:db '*Ma So Sinh Vien*'

 db 0

string8: db

Page 97: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

'  0782743  '

 db 0

string9: db ' Lop 5CDCQDT09'

 db 0

string10: d

Page 98: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

b 'Truong Cong Nghiep'

 db 0

string11: db 'TP Ho Chi Minh.'

db 0

s

Page 99: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

tring12: db 'Em chan thanh'

 db 0

string13: db 'cam on thay:'

 db

Page 100: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

0

string14: db '*TranNguyenBaoTran*'

 db 0

string15: db 'da giup d

Page 101: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

o em'

 db 0

string16: db 'thuc hien tieu'

 db 0

string17: db 'luan

Page 102: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

nay!!'

 db 0

string18: db 'Cam on cac ban da'

 db 0

string19: db

Page 103: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

'quan tam theo doi'

 db 0

string20: db '  $THE_END$ '

 db 0

string

Page 104: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

22: db 'De tai: Chay chu ',0

string23: db 'Tren man hinh LCD'

  db

Page 105: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

0

string24: db ' ung dung IC 8051'

  db 0

string25: db 'mo phong

Page 106: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

bang'

 db 0

string26: db 'phan mem Proteus  '

  db 0

     start: m

Page 107: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ov A,#038h       ;Gửi lệnh 038h đến LCD thông báo LCD sử dụng BUS

Page 108: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

8bit

 

 call wrcmd     ;gọi chương trình con gửi lệnh

loop: mov A,

Page 109: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

#LCD_SETVISIBLE+6  ;gửi lệnh 0Eh vào LCD để LCD được kích hoạt:

 

Page 110: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

          call wrcmd    ;gọi chương trình con gửi lệnh

 mov R7,#2 

Page 111: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

  ;Đưa 2 vào R7 để thực hiện 2 lần vòng lặp

loop2:

 mov DPTR,#str

Page 112: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ing1a    ;Đưa dòng chữ 1a vào con trỏ đại chỉ

 call wrstr  ;gọi ch

Page 113: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ương trình con xuất dòng chữ tới LCD

 

  mov DPTR,#200        &nb s

Page 114: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

p;  ;đưa 200 vào con trỏ địa chỉ để thực hiện việc đợi 200 mS

  ca

Page 115: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ll wtms                        ;Gọi chương trình con đợi 200mS

 

 mov A,#LCD_CLS   ;Xóa mà

Page 116: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

n hình LCD

 mov DPTR,#string1b

 call wrstr

  mov DPTR,#200

  call

Page 117: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

wtms

 mov A,#LCD_CLS   ; Xóa màn hình LCD

 call wrcmd

 djnz R7,loo

Page 118: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

p2                                         ;  lặp lại 2 lần

 mov DPTR,#string1a

 call wrstr

  mov DPTR,#400

Page 119: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

  call wtms

 mov A,#LCD_SETDDADDR+64        ; ; Đưa giá trị lệnh 4

Page 120: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

0H vào A

 call wrcmd

 mov DPTR,#string2

 call wrslow

  mov DPTR,#2

Page 121: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

00

  call wtms

 mov A,#LCD_CLS                           ;Clear screen

 

 mov A,#LCD_SETDDAD

Page 122: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

DR+64        ;   ;Đưa giá trị lệnh 40H vào A

 call wrcmd

 mov A,#LC

Page 123: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

D_CLS  ;Clear screen

 call wrcmd

 mov DPTR,#string3

 call wrslow

  

Page 124: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

      mov A,#LCD_SETDDADDR+64    ;Đưa giá trị lệnh 0FH vào A

 call

Page 125: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

wrcmd

 mov DPTR,#string4

 call wrslow

 mov A,#LCD_CLS

 mov A,#LCD_

Page 126: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

SETDDADDR+64

 call wrcmd

 mov A,#LCD_CLS

 call wrcmd

 mov DPTR,#st

Page 127: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ring5

 call wrslow

 mov A,#LCD_SETDDADDR+64

 call wrcmd

 mov DPTR,

Page 128: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

#string6

 call wrslow

 mov A,#LCD_CLS

 mov A,#LCD_SETDDADDR+64

 ca

Page 129: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ll wrcmd

 mov A,#LCD_CLS

 call wrcmd

 mov DPTR,#string7

 call wrsl

Page 130: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ow

 mov A,#LCD_SETDDADDR+64

  call wrcmd

 mov DPTR,#string8

 call

Page 131: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

wrslow

 mov A,#LCD_CLS

 mov A,LCD_SETDDADDR+64

 call wrcmd

 mov A,

Page 132: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

#LCD_CLS

 call wrcmd

 mov DPTR,#string9

 lcall delay1

 mov DPTR,#s

Page 133: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

tring10

 lcall delay1

 mov DPTR,#string11

 lcall delay1

 mov DPTR,

Page 134: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

#string22

 lcall delay1

 mov DPTR,#string23

 lcall delaylc

 mov DP

Page 135: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

TR,#string24

 lcall delay1

 mov DPTR,#string25

 lcall delaylc

 mov

Page 136: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

DPTR,#string26

 acall delay1

 mov DPTR,#string12

 lcall delay1

 m

Page 137: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ov DPTR,#string13

 lcall delaylc

 mov DPTR,#string14

 lcall delay1

Page 138: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

 mov DPTR,#string15

 lcall delaylc

 mov DPTR,#string16

 lcall del

Page 139: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ay1

 mov DPTR,#string17

 lcall delaylc

 mov DPTR,#string18

 lcall

Page 140: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

delay1

 mov DPTR,#string19

 lcall delaylc

 mov R7,#20

loop1:

 mov

Page 141: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

DPTR,#string20

 call wrstr

  mov DPTR,#1000

  call wtms

 mov A,#LC

Page 142: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

D_CLS   ;Clearscreen

 call rcmd

 mov DPTR,#string20

 call wrstr

  m

Page 143: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ov DPTR,#1000

  call wtms

 mov A,#LCD_CLS   ;Clear screen

 call wrc

Page 144: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

md

 djnz R7,loop1

 mov DPTR,#string20

 call wrstr

  mov DPTR,#400

 

Page 145: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

 call wtms

 mov A,#LCD_SETDDADDR+64

 call wrcmd

;******************

Page 146: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

************************* 

  mov A,#LCD_SETVISIBLE+7;Show theblink

Page 147: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

cursor as well.

 call wrcmd

  mov DPTR,#2000

  call wtms

 mov A,#L

Page 148: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

CD_CLS   ;Clear screen

 call wrcmd

 jmp loop

    ;Chương trình con

Page 149: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

viết chuỗi ký tự trong DPTR

      

wrstr: mov R0,#LCD_DATA_WR

w

Page 150: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

rstr1: clr A

 movc A,@A+DPTR

 jz wrstr2

 movx @R0,A

 call wtbusy

 

Page 151: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

inc DPTR

 push DPL

 push DPH

 pop DPH

 pop DPL 

 jmp wrstr1

wrstr2

Page 152: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

: ret

   ;Chương trình con viết chuỗi ký tự trong DPTR theo từng ký

Page 153: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

tự nhảy ra

wrslow: mov R0,#LCD_DATA_WR

wrslw1: clr A

 movc A,@A+D

Page 154: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

PTR

 jz wrslw2

 movx @R0,A

 call wtbusy

 inc DPTR

 push DPL

 push

Page 155: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

DPH

        mov DPTR,#100

        call wtms

 pop DPH

 pop DPL 

 jm

Page 156: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

p wrslw1

wrslw2: ret

   ;chương trình con gởi một lệnh trong than

Page 157: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

h chứa A ra LCD:

wrcmd: mov R0,#LCD_CMD_WR       &nbs p; ;đưa địa

Page 158: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

chỉ WR lệnh vào R0

 

 movx @R0,A                     ;xuất lệnh nằm trong thanh chứa A

Page 159: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ra LCD

 

 jmp wtbusy                       ;Kiểm tra LCD bận

;chương trình con ghi mộ

Page 160: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

t ký tự lên LCD:

wrchar: mov R0,#LCD_DATA_WR       ; đưa địa chỉ W

Page 161: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

R dữ liệu vào R0

 movx @R0,A                           ;xuất ký tự nằm trong thanh chứa A r

Page 162: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

a LCD

 

;Chương trình con đợi LCD hết bận

wtbusy: mov R1,#LCD_BUSY_

Page 163: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

RD

 movx A,@r1

 jb ACC.7,wtbusy

 ret

;Chương trình con đợi tổng số

Page 164: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

giây có trong thanh chúa A

wtsec: push ACC

 call wtms

 pop ACC

 

Page 165: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

dec A

 jnz wtsec

 ret

   ;Chương trình con đợi tổng số mS có trong

Page 166: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

con trỏ DPTR

wtms:   xrl DPL,#0FFh   ;không thể sử dụng lệnh DEC

Page 167: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

DPTR, do đó vòng lặp sử dụng 2 lớp lặp tăng

xrl DPH,#0FFh   ;and

Page 168: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

incrementing instead.

 inc DPTR

wtms1: mov TL0,#low(-1200)  ;100 x

Page 169: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ung = 1ms ở tần số thạch anh 1.2MHz

mov TH0,#high(-1200) 

 mov TM

Page 170: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

OD,#1   ;Timer 0 mode 1

 setb TCON.4   ;Timer 0 runs

wtms2: jnb TC

Page 171: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

ON.5,wtms2 

 clr TCON.4   ;Timer 0 stops

 clr TCON.5

 inc DPTR

 mo

Page 172: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

v A,DPL

 orl A,DPH

 jnz wtms1

 ret

delaylc:

 call wrslow

        mo

Page 173: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

v A,#LCD_SETDDADDR+64

 call wrcmd

 ret

delay1:  

 call wrslow

 mov

Page 174: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

A,#LCD_CLS

 mov A,#LCD_SETDDADDR+64

 call wrcmd

 mov A,#LCD_CLS

 

Page 175: Dùng 8051 điều khiển chạy chữ trên màn hình LCD

call wrcmd

ret

    END

5. Chạy mô phỏng:  

Read more: http://www.ant7.com/forum/forum_post.asp?TID=5630#ixzz0VyWvlEck