Chương trình điều khiển được viết như sau:

Một phần của tài liệu vi xử lý hệ thống điều khiển lcd (Trang 27 - 32)

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

;CHUONG TRINH DIEU KHIEN LCD, HIEN THI DONG CHU "Micro-controller Designed by: PQT". ;SU DUNG GIAO TIEP 4 BIT. CHUONG TRINH KHONG DUNG PHUONG PHAP KIEM TRA CO ;BAO TRAN (BF) MA DUNG PHUONG PHAP TAO THOI GIAN TRE GIUA HAI LENH.

;*************************************************** ;KET NOI: DATA -> PORT1 (P1.4 - P1.7)

; RD/WR -> P1.1

; RS -> P1.2

; ENABLE -> P1.3

;CHE DO: GIAO TIEP 4 BIT, CAC CHAN DB4 - DB7 CUA LCD DUOC NOI VOI P1.4 - P1.7

; CUA VI DIEU KHIEN

;CHU Y: CAN PHAI XAC DINH CAC CHAN PORT DUNG DE DIEU KHIEN LCD HOAT DONG:

; LCD_ENABLE, LCD_RD_WR, LCD_REG_SELECT VA PORT KET NOI VOI LCD. NGOAI

; RA CUNG CAN PHAI XAC DINH DIA CHI CUA KY TU DAU TIEN CHO MOI DONG.

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

ORG 00H

MAIN:

MOV SP,#59H ;KHAI BAO NGAN XEP 60H - 7FH INIC:

Bài 3: Chương trình điều khiển LCD hiển thị hai dòng chữ “PULSE = ” và “DESIGNED BY PHAM QUANG TRI – ELECTRIC TRAINING CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY” trên hai TRI – ELECTRIC TRAINING CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY” trên hai dòng của màn hình LCD với yêu cầu: số lượng xung đếm được (00 – 99) tại chân P3.0 sẽ được hiển thị trên dòng thứ nhất tiếp phía sau dòng chữ “PULSE =”, dòng chữ thứ hai sẽ dịch chuyển từ phải sang trái. Xung được tạo ra bằng cách nhấn nút nhấn KEY0.

START:

MOV A,#80H ;LENH CHO PHEP KY TU SE HIEN THI TAI VI TRI DAU TIEN CUA DONG THU NHAT ;TREN MAN HINH LCD.

ACALL LCD_SEND_COMMAND ;GOI CTC DAT TRANG THAI HOAT DONG CHO LCD. MOV A,#'M' ;HIEN THI KY TU 'M'.

ACALL LCD_SEND_DATA ;GOI CTC TRUYEN KY TU CHO LCD. MOV A,#'i' ;HIEN THI KY TU 'i'.

ACALL LCD_SEND_DATA

MOV A,#'c' ;HIEN THI KY TU 'c'. ACALL LCD_SEND_DATA

MOV A,#'r' ;HIEN THI KY TU 'r'. ACALL LCD_SEND_DATA

MOV A,#'o' ;HIEN THI KY TU 'o'. ACALL LCD_SEND_DATA

MOV A,#'-' ;HIEN THI KY TU '-'. ACALL LCD_SEND_DATA

MOV A,#'c' ;HIEN THI KY TU 'c'. ACALL LCD_SEND_DATA

MOV A,#'o' ;HIEN THI KY TU 'o'. ACALL LCD_SEND_DATA

MOV A,#'n' ;HIEN THI KY TU 'n'. ACALL LCD_SEND_DATA

MOV A,#'t' ;HIEN THI KY TU 't'. ACALL LCD_SEND_DATA

MOV A,#'r' ;HIEN THI KY TU 'r'. ACALL LCD_SEND_DATA

MOV A,#'o' ;HIEN THI KY TU 'o'. ACALL LCD_SEND_DATA (adsbygoogle = window.adsbygoogle || []).push({});

MOV A,#'l' ;HIEN THI KY TU 'l'. ACALL LCD_SEND_DATA

MOV A,#'l' ;HIEN THI KY TU 'l'. ACALL LCD_SEND_DATA

MOV A,#'e' ;HIEN THI KY TU 'e'. ACALL LCD_SEND_DATA

MOV A,#'r' ;HIEN THI KY TU 'r'. ACALL LCD_SEND_DATA

MOV A,#0C0H ;LENH CHO PHEP KY TU SE HIEN THI TAI VI TRI DAU TIEN CUA DONG THU ;HAI TREN MAN HINH LCD.

ACALL LCD_SEND_COMMAND ;GOI CTC DAT TRANG THAI HOAT DONG CHO LCD. MOV A,#'D' ;HIEN THI KY TU 'D'.

ACALL LCD_SEND_DATA

MOV A,#'e' ;HIEN THI KY TU 'e'. ACALL LCD_SEND_DATA

MOV A,#'s' ;HIEN THI KY TU 's'. ACALL LCD_SEND_DATA

MOV A,#'i' ;HIEN THI KY TU 'i'. ACALL LCD_SEND_DATA

MOV A,#'g' ;HIEN THI KY TU 'g'. ACALL LCD_SEND_DATA

MOV A,#'n' ;HIEN THI KY TU 'n'. ACALL LCD_SEND_DATA

MOV A,#'e' ;HIEN THI KY TU 'e'. ACALL LCD_SEND_DATA

MOV A,#'d' ;HIEN THI KY TU 'd'. ACALL LCD_SEND_DATA

MOV A,#' ' ;HIEN THI KY TU ' '. ACALL LCD_SEND_DATA

MOV A,#'b' ;HIEN THI KY TU 'b'. ACALL LCD_SEND_DATA

MOV A,#'y' ;HIEN THI KY TU 'y'. ACALL LCD_SEND_DATA

MOV A,#':' ;HIEN THI KY TU ':'. ACALL LCD_SEND_DATA

Bài 3: Chương trình điều khiển LCD hiển thị hai dòng chữ “PULSE = ” và “DESIGNED BY PHAM QUANG TRI – ELECTRIC TRAINING CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY” trên hai TRI – ELECTRIC TRAINING CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY” trên hai dòng của màn hình LCD với yêu cầu: số lượng xung đếm được (00 – 99) tại chân P3.0 sẽ được hiển thị trên dòng thứ nhất tiếp phía sau dòng chữ “PULSE =”, dòng chữ thứ hai sẽ dịch chuyển từ phải sang trái. Xung được tạo ra bằng cách nhấn nút nhấn KEY0.

ACALL LCD_SEND_DATA

MOV A,#'P' ;HIEN THI KY TU 'P'. ACALL LCD_SEND_DATA

MOV A,#'Q' ;HIEN THI KY TU 'Q'. ACALL LCD_SEND_DATA

MOV A,#'T' ;HIEN THI KY TU 'T'. ACALL LCD_SEND_DATA

SJMP $

;*************************************************** ;KHAI BAO BIEN VA THONG TIN CAU HINH.

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

LCD_ENABLE BIT P1.3 ;BIT DIEU KHIEN CHAN ENABLE CUA LCD. LCD_RD_WR BIT P1.1 ;BIT DIEU KHIEN CHAN RW CUA LCD. LCD_REG_SELECT BIT P1.2 ;BIT DIEU KHIEN CHAN RS CUA LCD. LCD_PORT SET P1 ;PORT KET NOI VOI LCD.

BUSY BIT P1.7 ;CHAN PORT SE XUAT HIEN CO BAO BAN.

LCD_START_ROW1 EQU 00H ;DIA CHI CUA KY TU DAU TIEN THUOC DONG THU NHAT TREN LCD. LCD_START_ROW2 EQU 40H ;DIA CHI CUA KY TU DAU TIEN THUOC DONG THU HAI TREN LCD. LCD_DB: ;CO SO DU LIEU CUA THONG TIN CAU HINH CHO LCD.

DB 00111100B ;0 - 8 BIT, 2 DONG, DINH DANG 5x7. DB 00101100B ;1 - 4 BIT, 2 DONG, DINH DANG 5x7. DB 00011000B ;2 - DICH HIEN THI/CON TRO, PHAI/TRAI. (adsbygoogle = window.adsbygoogle || []).push({});

DB 00001100B ;3 - BAT HIEN THI, TAT CON TRO, TAT NHAP NHAY CON TRO. DB 00000110B ;4 - CHE DO TANG DIA CHI, TAT DICH HIEN THI.

DB 00000010B ;5 - DUA HIEN THI/CON TRO VE DAU DONG. DB 00000001B ;6 - XOA HIEN THI.

DB 00001000B ;7 - TAT HIEN THI, TAT CON TRO, TAT NHAP NHAY CHON TRO. ;***************************************************

LCDINIT: ;CTC KHOI DONG CAU HINH CHO LCD.

MOV DPTR,#LCD_DB ;NAP DIA CHI CO SO DU LIEU (LCD_DATABASE) CHUA THONG TIN CAU HINH LCD. ;BA DOAN LENH KHOI DONG LCD HOAT DONG O CHE DO 8 BIT DUOI DAY DUOC THUC HIEN ;TAI THOI DIEM BAT DAU (DE DAM BAO CHO LCD HOAT DONG ON DINH TRONG

;TRUONG HOP KHI CUNG CAP NGUON CHO LCD MA DIEN AP NGUON TANG LEN CHAM). MOV A,#0 ;LCD_DATABASE = 0 | 8 BIT, 2/1 DONG, DINH DANG 5x10/5x7. ACALL LCDINIT_STATUS_8 ;GOI CTC GUI CAU HINH KHOI DONG LCD (KIEU LCD 8 BIT). MOV A,#0 ;LCD_DATABASE = 0 | 8 BIT, 2/1 DONG, DINH DANG 5x10/5x7. ACALL LCDINIT_STATUS_8

MOV A,#0 ;LCD_DATABASE = 0 | 8 BIT, 2/1 DONG, DINH DANG 5x10/5x7.

ACALL LCDINIT_STATUS_8

;CHUYEN DOI TU CHE DO 8 BIT SANG CHE DO 4 BIT. MOV A,#1 ;LCD_DATABASE = 1 | 4 BIT, 2/1 DONG, DINH DANG 5x10/5x7. ACALL LCDINIT_STATUS_8

;BAT DAU TU VI TRI NAY CHUONG TRINH THUC THI O CHE DO 4 BIT.

MOV A,#1 ;LCD_DATABASE = 1 | 4 BIT, 2/1 DONG, DINH DANG 5x10/5x7.

ACALL LCDINIT_STATUS ;GOI CTC GUI CAU HINH KHOI DONG LCD (KIEU LCD 4 BIT).

MOV A,#3 ;LCD_DATABASE = 3 | BAT HIEN THI, TAT CON TRO, TAT NHAP NHAY CON TRO. ACALL LCDINIT_STATUS

MOV A,#6 ;LCD_DATABASE = 6 | XOA HIEN THI.

ACALL LCDINIT_STATUS

MOV A,#4 ;LCD_DATABASE = 4 | CHE DO TANG DIA CHI, TAT DICH HIEN THI.

ACALL LCDINIT_STATUS RET

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

LCDINIT_STATUS_8: ;CTC KHOI DONG LCD (KIEU LCD 8 BIT) CAN CU VAO LCD_DATABASE PUSH B

MOVC A,@A+DPTR ;LAY GIA TRI CAU HINH KHOI DONG CHO LCD TU LCD_DATABASE. CLR LCD_REG_SELECT ;RS = 0 - CHON BUS LENH.

CLR LCD_RD_WR ;R/W = 0 - CHON GHI DU LIEU LEN LCD. ACALL LCD_PORT_OUT ;GOI CTC XUAT DU LIEU RA PORT VI DIEU KHIEN.

Bài 3: Chương trình điều khiển LCD hiển thị hai dòng chữ “PULSE = ” và “DESIGNED BY PHAM QUANG TRI – ELECTRIC TRAINING CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY” trên hai TRI – ELECTRIC TRAINING CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY” trên hai dòng của màn hình LCD với yêu cầu: số lượng xung đếm được (00 – 99) tại chân P3.0 sẽ được hiển thị trên dòng thứ nhất tiếp phía sau dòng chữ “PULSE =”, dòng chữ thứ hai sẽ dịch chuyển từ phải sang trái. Xung được tạo ra bằng cách nhấn nút nhấn KEY0.

DJNZ B,$ ;TRONG SUOT QUA TRINH KHOI DONG. DJNZ B,$

DJNZ B,$ POP B

RET

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

LCDINIT_STATUS: ;CTC KHOI DONG LCD (KIEU LCD 4 BIT) CAN CU VAO LCD_DATABASE.

MOVC A,@A+DPTR ;LAY GIA TRI CAU HINH KHOI DONG CHO LCD TU LCD_DATABASE. ACALL LCD_SEND_COMMAND ;GUI THONG SO CAU HINH DEN LCD DE KHOI DONG LCD.

RET

;*************************************************** (adsbygoogle = window.adsbygoogle || []).push({});

LCD_SEND_COMMAND: ;CTC CHUYEN LENH DIEU KHIEN LEN LCD. PUSH B

CLR LCD_REG_SELECT ;RS = 0 - CHON BUS LENH.

CLR LCD_RD_WR ;R/W = 0 - CHON GHI DU LIEU LEN LCD. MOV B,#255 ;NAP GIA TRI DE TAO THOI GIAN TRE.

DJNZ B,$ ;TAO KHOANG THOI GIAN TRE GIUA CAC LAN GUI LENH.

DJNZ B,$ DJNZ B,$

ACALL LCD_PORT_OUT ;GOI CTC XUAT LENH RA PORT VI DIEU KHIEN (4 BIT CAO CUA LENH).

SWAP A ;HOAN DOI VI TRI 4 BIT CAO VA 4 BIT THAP TRONG ACC.

DJNZ B,$ ;TAO KHOANG THOI GIAN TRE GIUA CAC LAN GUI LENH.

DJNZ B,$ DJNZ B,$

ACALL LCD_PORT_OUT ;GOI CTC XUAT LENH RA PORT VI DIEU KHIEN (4 BIT THAP CUA LENH). POP B

RET

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

LCD_SEND_DATA: ;CTC CHUYEN DU LIEU CAN HIEN THI LEN LCD. PUSH B

SETB LCD_REG_SELECT ;RS = 1 - CHON BUS DU LIEU.

CLR LCD_RD_WR ;R/W = 0 - CHON GHI DU LIEU LEN LCD. MOV B,#255 ;NAP GIA TRI DE TAO THOI GIAN TRE.

DJNZ B,$ ;TAO KHOANG THOI GIAN TRE GIUA CAC LAN GUI DU LIEU.

ACALL LCD_PORT_OUT ;GOI CTC XUAT DU LIEU RA PORT VI DIEU KHIEN (4 BIT CAO CUA DU LIEU).

SWAP A ;HOAN DOI VI TRI 4 BIT CAO VA 4 BIT THAP TRONG ACC.

DJNZ B,$ ;TAO KHOANG THOI GIAN TRE GIUA CAC LAN GUI DU LIEU.

ACALL LCD_PORT_OUT ;GOI CTC XUAT DU LIEU RA PORT VI DIEU KHIEN (4 BIT THAP CUA DU LIEU). POP B

RET

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

LCD_PORT_OUT: ;CTC CHUYEN CAC LENH HOAC DU LIEU RA PORT VI DIEU KHIEN KET NOI LCD (DANG 4 BIT). PUSH ACC

PUSH B

MOV B,LCD_PORT ;GHI NHO LAI GIA TRI HIEN TAI (4 BIT THAP - THANH GHI B) CUA PORT VI DIEU ;KHIEN

Bài 3: Chương trình điều khiển LCD hiển thị hai dòng chữ “PULSE = ” và “DESIGNED BY PHAM QUANG TRI – ELECTRIC TRAINING CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY” trên hai TRI – ELECTRIC TRAINING CENTER - HO CHI MINH UNIVERSITY OF INDUSTRY” trên hai dòng của màn hình LCD với yêu cầu: số lượng xung đếm được (00 – 99) tại chân P3.0 sẽ được hiển thị trên dòng thứ nhất tiếp phía sau dòng chữ “PULSE =”, dòng chữ thứ hai sẽ dịch chuyển từ phải sang trái. Xung được tạo ra bằng cách nhấn nút nhấn KEY0.

ORL A,#00001111B ;ENABLE (EN), REGISTER SELECT (RS), READ/WRITE (RD/WR). SAU DO KET HOP VOI ;GIA TRI

ANL A,B ;CUA CAC BIT DATA (4 BIT CAO - THANH GHI A) THEO CAC LENH/DU LIEU CAN

;CHUYEN TOI LCD

MOV LCD_PORT,A ;XUAT CAC LENH HOAC DU LIEU CAN HIEN THI RA PORT KET NOI VOI LCD. SETB LCD_ENABLE ;EN = 1 - TAO XUNG ENABLE (CHUYEN TRANG THAI TU CAO XUONG THAP) CLR LCD_ENABLE ;EN = 0 - TAI CHAN EN CUA LCD -> GUI LENH/DU LIEU LEN LCD. (adsbygoogle = window.adsbygoogle || []).push({});

POP B

POP ACC

RET

;*************************************************** END ;KET THUC CHUONG TRINH

Bài 4: Chương trình điều khiển LCD hiển thị dòng chữ “> KHOA DIEN TU <” và 8 ký tự người dùng tạo ra (ký tự không được thiết kế sẵn trên LCD) trên hai dòng của màn hình LCD. (ký tự không được thiết kế sẵn trên LCD) trên hai dòng của màn hình LCD.

1 Trình tự tiến hành thí nghiệm: 1.1 Kết nối thiết bị thí nghiệm.

Một phần của tài liệu vi xử lý hệ thống điều khiển lcd (Trang 27 - 32)