Tải bản đầy đủ (.docx) (26 trang)

MẠCH đo NHỊP TIM XUẤT LCD dùng 89c51 ( có code và mạch in )

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (699.71 KB, 26 trang )

Đề tài: Mạch đo nhịp tim xuất LCD

BÁO CÁO ĐỒ ÁN 2

MẠCH ĐO NHỊP TIM XUẤT LCD
MỤC LỤC

1|Page


Đề tài: Mạch đo nhịp tim xuất LCD

DANH MỤC HÌNH ẢNH

2|Page


Đề tài: Mạch đo nhịp tim xuất LCD

DANH MỤC BẢNG BIỂU

3|Page


CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1 KHẢO SÁT VÀ PHÂN TÍCH BÀI TOÁN
Sức khỏe là một vấn đề quan trọng bậc nhất trong cuộc sống từ xưa đến nay.
Sức khỏe liên quan mật thiết đến hầu hết các hoạt động của chúng ta từ làm việc, học
tập cho đến vui chơi. Sức khỏe không phải là thứ chúng ta có thể mua. Tuy nhiên, nó
có thể là một tài khoản tiết kiệm cực kỳ giá trị. Vì vậy, để tài khoản ấy được ổn định
chúng ta cần theo dõi thường xuyên và chủ động hơn.


Một trong những cơ quan quan trọng nhất và ảnh hưởng nhiều nhất đến sức
khỏe chúng ta đó là tim, với chức vụ co bóp đều đặn để đẩy máu theo các động
mạch và đem dưỡng khí và các chất dinh dưỡng đến toàn bộ cơ thể, đồng thời loại bỏ
các chất thải trong quá trình trao đổi chất. Tim hút máu từ tĩnh mạch về tim sau đó
đẩy máu đến phổi để trao đổi khí CO2 lấy khí O2.
Với những chức năng tối quan trọng với sức khỏe thì tim là cơ quan cần được
theo dõi thường xuyên nhất nhằm chẩn đoán và chữa trị kịp thời khi có những vấn đề
về tim mạch. Ngoài ra, việc theo dõi tim thông qua số nhịp tim cũng rất quan trọng
trong việc luyện tập thể thao nhằm tránh tình trạng luyện tập quá sức và nguy hiểm đến
tính mạng.
1.1.1 Ý tưởng

Với cuộc sống hiện đại ngày nay, chúng ta không có nhiều thời gian cho
các công việc đến bệnh viện và kiểm tra sức khỏe định kỳ cụ thể là việc đo và
theo dõi nhịp tim. Dựa trên nhu cầu thực tế đó đòi hỏi cần có một sản phẩm giúp
đo nhịp tim nhanh chóng và chính xác nhằm giải quyết những khó khăn trên.
1.1.2 Mục tiêu

Mục tiêu của đồ án là sử dụng LED hồng ngoại với chức năng cảm biến
và đếm xung nhịp tim cùng với vi điều khiển AT89C51 để thiết kế và thi công
mạch đo nhịp tim. Nhằm phục vụ cho việc theo dõi tim mạch dễ dàng và chính
xác hơn phương pháp bắt mạch cổ điển.
4|Page


1.2 LỰA CHỌN GIẢI PHÁP THỰC HIỆN
1.2.1 Giải pháp thiết kế

 Đầu vào hệ thống lấy dữ liệu từ LED hồng ngoại, là linh kiện có chức năng quan sát
và đếm số xung nhịp tim tương ứng với số lần tim co bóp và bơm máu.

 Xử lý tín hiệu bằng mạch lọc RC và mạch khuếc đại thuật toán. Ghi dữ liệu lên
vi điều khiển AT89C51. Lập trình vi điều khiển để xử lý dữ liệu.
 Để hiển thị: Lấy giá trị số nhịp tim được lưu tạm trong RAM vi điều khiển xuất
lên LCD.
 Xóa dữ liệu sau khi đo, để mạch quay lại trạng thái ban đầu.
1.2.2 Xác định bài toán và giới hạn của đề tài:

 Đầu vào hệ thống lấy dữ liệu từ LED hồng ngoại, là linh kiện cảm biến đếm và cung
cấp số nhịp tim. Đầu ra được hiển thị trên LCD.
 Hiển thị chính xác số nhịp tim.
 Làm việc với điện áp cấp từ nguồn 5V.
 Làm việc được lâu dài và ổn định.

5|Page


CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 NGUYÊN LÝ THIẾT KẾ
Dựa vào quá trình tìm hiểu và phân tích thì Mạch đo nhịp tim có nguyên lý hoạt
động như sau:
Cảm biến nhận
tín hiệu

Mạch lọc RC

Hiển thị LCD

Mạch khuếch đại
thuật toán


Vi điều khiển
xử lý đếm xung
nhịp tim

Hình 2. Sơ đồ nguyên lý
o Cảm biến: sử dụng LED hồng ngoại dựa vào mức độ che sáng khác nhau
của mạch máu trên ngón tay. Khi tim co bóp, tiết diện và áp suất trong
máu thay đổi, dẫn đến mức độ che sáng đi qua thay đổi.
o Mạch lọc và mạch khuếch đại: có chức năng loại bỏ thành phần một
chiều và khuếch đại tín hiệu. Nó giúp vi điều khiên dễ dàng xử lý. Ngoài
ra, sau khi lọc, ta sẽ chỉ lấy sóng xung tạo ra mỗi lần tim bắt đầu co bóp
nên rất dễ dàng khi tính nhịp tim.
o Vi điều khiển: có chức năng xử lý tín hiệu ngõ vào, đếm số xung nhịp tim
và điều khiển trình xuất ra LCD.

6|Page


2.2 LỰA CHỌN LINH KIỆN:
2.2.1 LED thu phát hồng ngoại:

Hình 2. LED thu phát hồng ngoại
LED là viết tắt của Light Emitting Diode (Diode phát quang) là các diode
có khả năng phát ra ánh sáng hay tia hồng ngoại,tử ngoại.Cũng giống như
diode,LED được cấu tạo từ một khối bán dẫn loại P ghép với một khối bán dẫn
loại N.
Nguyên lý: khi LED thu không nhận được tín hiệu từ LED phát,điện trở
của LED thu rấtlớn, lối ra điện áp bằng 0. khi LED thu nhận được tín hiệu từ
LED phát,điện trở của LEDthu giảm xuống mạnh (việc giảm này phụ thuộc vào
cường độ LED phát),khi đó lối ra điệnáp bằng 5v.Khi gặp vật cản tín hiệu hồng

ngoại sẽ va chạm và phản xạ ngược lại,còn trường hợp không gặp vật cảntín
hiệu hồng ngoạisẽ chạm vào LED thu.
2.2.2 IC LM358:
IC LM358 là bộ khuếch đại thuật toán kép, gồm hai bộ khuếch đại thuật
toán bên trong. Mỗi Op-amp có 3 chân, ngõ vào đảo, ngõ vào không đảo và
ngõ ra. Hoạt động với một nguồn cung cấp, ngưỡng điện áp vào thay đổi trong
phạm vi rộng.

Hình 2. IC LM 358

7|Page


2.2.2Vi điều khiển AT89C51

AT89C51 là một vi điều khiển 8 bit, chế tạo theo công nghệ CMOS chất
lượng cao, với 4 KB EEPROM (Flash Programmable and erasable read only
memory). Thiết bị này được chế tạo bằng việc sử dụng bộ nhớ không bốc hơi
mật độ cao của ATMEL và tương thích với chuẩn công nghiệp MCS-51 về tập
lệnh và các chân ra. ATMEL AT89C51 là một vi điều khiển mạnh (có công suất
lớn) mà nó cung cấp một sự linh động cao và giải pháp về giá cả đối với nhiều
ứng dụng vi điều khiển.
Các đặc điểm của AT89C51 được tóm tắt như sau:
o
o
o
o
o
o
o

o
o
o

4 KB bộ nhớ có thể lập trình lại nhanh.
Tần số hoạt động từ 0Hz đến 24 MHz.
2 bộ Timer/Counter 16 bit.
128 byte RAM nội.
Port xuất nhập I/O 8 bit.
Giao tiếp nối tiếp.
64 KB vùng nhớ mã ngoài.
64 KB vùng nhớ dữ liệu ngoài.
Xử lý Boolean (hoạt động trên bit đơn).
210 vị trí nhớ có thể định vị bit.

Hình 2. Sơ đồ chân AT89C51
8|Page


Chức năng các chân của vi điều khiển AT89C51:
89C51 có tất cả 40 chân có chức năng như các đường xuất nhập. Trong
đó có 24 chân có tác dụng kép (1 chân có 2 chức năng), mỗi đường có thể hoạt
động như đường xuất nhập, đường điều khiển hay hoạt động như thành phần
của các bus dữ liệu và bus địa chỉ.
Chân VCC:
Chân số 40 là VCC cấp điện áp nguồn cho vi điều khiển. Điện áp làm
việc của vi điều khiển là 5V±20%. Do đó khi thiết kế khối nguồn ta cần sử dụng
IC ổn áp 7805 để tránh làm hỏng vi điều khiển.
Chân GND:
Chân số 20 nối GND.

Port 0 (P0):
Port 0 có 8 chân (32-39) và có hai chức năng sau:
Chức năng xuất/nhập: bình thường thì các chân của port 0 có chức năng
xuất dữ liệu. Khi muốn nhận dữ liệu từ bên ngoài talập trình đưa các chân đó lên
mức 1.
Chức năng làm bus dữ liệu và bus địa chỉ: trong các thiết kế lớn có dùng
bộ nhớ ngoài,các chân này còn có nhiệm vụ nhận dữ liệu từ ROM và RAM
ngoại.
Port 1 (P1):
Port 1 có 8 chân (1-8) chỉ có chức năng là xuất/nhập, được dùng để giao
tiếp với thiết bị bên ngoài khi có yêu cầu. Ngoài ra không có chức năng nào
khác, nghĩa là chúng chỉ được sử dụng để giao tiếp với các thiết bị ngoại vi.
Port 2 (P2):
Port 2 gồm 8 chân (21-28) có 2 công dụng: làm nhiệm vụ xuất/nhập và
làm byte địa chỉ cao của bus địa chỉ 16-bit cho các thiết kế có bộ nhớ chương
trình ngoài hoặc các thiết kế có nhiều hơn 256 byte bộ nhớ dữ liệu ngoài.

9|Page


Port 3 (P3):
Port 3 gồm các chân từ(10-17) có 2 công dụng. Khi không hoạt động
xuất/nhập, các chân của port 3 có các chức năng như bảng sau:
Bit
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5

P3.6
P3.7
P1.0
P1.1

Tên
RxD
TxD
INT0
INT1
T0
T1
WR
RD
T2
T2X

Chức năng
Ngõ vào nhận dữ liệu nối tiếp
Ngõ xuất dữ liệu nối tiếp
Ngõ vào ngắt cứng thứ 0
Ngõ vào ngắt cứng thứ 1
Ngõ vào của Timer/Counter thứ 0
Ngõ vào của Timer/Counter thứ 1
Ngõ điều khiển ghi dữ liệu lên bộ nhớ ngoài
Ngõ điều khiển đọc dữ liệu từ bộ nhớ bên ngoài
Ngõ vào của Timer/Counter thứ 2
Ngõ nạp lại/thu nhận của Timer/Counter thứ 2

Bảng 2. Chức năng của các chân của port 3 và port 1

Chân RESET (RST):
Ngõ vào RST ở chân 9 là ngõ vào xóa chính của 89C51 dùng để thiết lập
lại trạng thái ban đầu cho hệ thống. Khi ngõ vào này được treo ở logic 1 tối
thiểu hai chu kì máy, các thanh ghi bên trong của 89C51 được nạp các giá trị
thích hợp cho việc khởi động lại toàn hệ thống.

Hình 2. Cấu hình ngõ vào của chân reset
Chân XTAL1 và XTAL2:

10 | P a g e


Hai chân này có vị trí chân là 18 và 19 được sử dụng để nhận nguồn xung
clock từ bên ngoài để hoạt động, thường được ghép nối với thạch anh và các tụ
để tạo nguồn xung clock ổn định. Cách kết nối trên hai chân XTAL1 và XTAL2:

Hình 2. Mạch tạo dao động cho vi điều khiển
Chân EA:
Ngõ vào chân 31 có thể được nối với 5 V hoặc với GND. Khi chân này
nối lên 5 V, vi điều khiển thực thi chương trình trong ROM nội, nếu nối với
GND thì vi điều khiển thực thi chương trình từ bộ nhớ ngoài.
Chân cho phép chốt địa chỉ ALE:
Khi vi điều khiển truy xuất bộ nhớ từ bên ngoài, port 0 vừa có chức năng
là bus địa chỉ vừa có chức năng là bus dữ liệu. Do đó cần phải tách các đường
dữ liệu và địa chỉ. Tín hiệu ở chân ALE dùng làm tín hiệu điều khiển để giải đa
hợp. Các xung tín hiệu ALE có tốc độ bằng 1/6 tần số dao động của mạch dao
động bên trong vi điều khiển và có thể được dùng làm xung clock cho phần còn
lại của hệ thống.
Chân cho phép bộ nhớ chương trình PSEN:
Tín hiệu cho phép bộ nhớ chương trình PSEN là tín hiệu xuất trên chân

29. Đây là tín hiệu điều khiển cho phép truy xuất bộ nhớ ngoài của chương
trình. Chân này thường được nối với chân OE của EPROM để cho phép đọc các
byte lệnh. Khi vi điều khiển làm việc với chương trình ngoài, chân này phát ra

11 | P a g e


tín hiệu kích hoạt ở mức thấp và được kích hoạt 2 lần trong một chu kỳ máy.
Khi thực thi một chương trình ở ROM nội, chân này được duy trì ở logic 0.
2.2.3 LCD 16x2:

Sử dụng LCD 16x2, hiển thị số nhịp tim linh hoạt, hiển thị được nhiều ký
tự, giúp cho việc hiển thị dễ dàng và giải quyết hạn chế khi hiển thị bằng LED 7
đoạn.

Hình 2. LCD 16x2

12 | P a g e


Bảng 2. Chức năng các chân LCD16x2

CHƯƠNG 3: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG
3.1 SƠ ĐỒ KHỐI CỦA HỆ THỐNG
Theo nguyên lý hoạt động của hệ thống, ta có sơ đồ khối của hệ thống như sau:

KHỐI NGUỒN

KHỐI


KHỐI

KHỐI

CẢM BIẾN

VI ĐIỀU KHIỂN

HIỂN THỊ

Hình 3. Sơ đồ khối

o Khối nguồn: sử dụng biến áp và 7805 để tạo nguồn 5Vdc cung cấp cho toàn
mạch hoạt động. Đầu ra của khối nguồn dao động từ 4.8 đến 5.2V.
o Khối cảm biến: là LED hồng ngoại sẽ đảm nhận vai trò nhận tín hiệu xung
nhịp tim từ ngón tay, sau đó đưa vào vi điều khiển để xử lý.
o Khối vi điều khiển: sử dụng AT89C51 nhận tính hiệu xung từ LED hồng ngoại,
tiến hành đếm xung và trình xuất kết quả ra LCD.
o Khối hiển thị: dùng LCD 16x2 hiển thị số xung đếm từ dữ liệu của vi điều
khiển.

13 | P a g e


3.2 MẠCH NGUYÊN LÝ VÀ MẠCH IN
3.2.1 Khối nguồn:

Hình 3. Khối nguồn
3.2.2 Khối cảm biến:


Hình 3. Khối cảm biến

14 | P a g e


3.2.3 Khối Vi điều khiển và hiển thị:

Hình 3. Khối điều khiển và hiển thị
3.2.4 Mạch in

Hình 3. Mạch in

15 | P a g e


3.3 LƯU ĐỒ GIẢI THUẬT
BẮT ĐẦU

KIỂM TRA TÍN
HIỆU TỪ LED

NHẤN START

ĐẾM NHỊP TIM
VÀ LƯU VÀO RAM 89C51

GIẢI MÃ BCD

XUẤT DỮ LIỆU
LÊN LCD


NHẤN CLEAR

KẾT THÚC

Hình 3. Lưu đồ giải thuật
16 | P a g e


3.4 HÌNH ẢNH MẠCH THỰC TẾ:

Hình 3. Mạch thực tế
3.5 ĐÁNH GIÁ CHẤT LƯỢNG:
• Kết quả đánh giá được đo trên cùng một chủ thể trong cùng một thời điểm và
cùng một tình trạng sức khỏe.
Phương Pháp
Dùng ứng dụng
“INSTANT
HEART
RATE”
trên Iphone 5s

Nguyên lý
Quan sát sự thay đổi
mao mạch trên đầu
ngón tay thông qua
camera và đèn flash
trên điện thoại.
Dùng mạch đo Sử dụng LED hồng
nhịp tim

ngoại dựa vào mức
độ che sáng khác
nhau của mạch máu
trên ngón tay.
Dùng phương pháp Dùng ngón tay bắt
cổ điển: Bắt mạch. mạch ở cổ tay hoặc
ở cổ và đếm số nhịp
tim.

Kết quả
Lần 1: 64 BPM
Lần 2: 69 BPM
Lần 3: 75 BPM

Sai Số
Dùng làm tham số
chuẩn

Lần 1: 70 BPM
Lần 2: 66 BPM
Lần 3: 78 BPM

Sai số
khoảng 5 -10%

Lần 1: 72 BPM
Lần 2: 72 BPM
Lần 3: 78 BPM

Sai số

Khoảng 5 - 10%

Bảng 3. Đánh giá chất lượng
• Đánh giá: Mạch đo nhịp tim cho kết quả sai số tương đương phương pháp bắt
mạch nhưng việc đo nhịp dễ dàng và nhanh chóng hơn.
17 | P a g e


CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
 Sau thời gian tìm hiểu lý thuyết và thực hiện đề tài dưới sự hướng dẫn tận tình
của TS.Đặng Ngọc Minh Đức, em đã hoàn thành đề tài “Mạch đo nhịp tim xuất
LCD”.
 Mạch hiển thị được nhịp tim sau khi xử lý bằng vi điều khiển, có thể đo được
nhiều lần.
 Do thời gian có hạn và kiến thức còn hạn chế nên đề tài còn một số khuyết
điểm:
o LED thu phát hồng ngoại cho kết quả sai số còn lớn và chưa tối ưu.
o Chưa thể hiển thị được dạng sóng nhịp tim.
 Qua việc thực hiện đồ án này, em được củng cố kiến thức vi xử lý đã học, kết
hợp được với thực tiễn và phục vụ cho công việc tương lai rất nhiều.
 Cũng với đề tài này, trong tương lai em có thể phát triển nó ở mức cao hơn:
nâng cấp cảm biến và thêm chức năng lưu trữ và so sánh kết quả sau nhiều lần
đo, kết hợp với các thiết bị khác để sử dụng trong thực tiễn cuộc sống như đồng
hồ thời gian thực kèm đo nhiệt độ, hẹn giờ.

18 | P a g e


DANH MỤC CÁC TÀI LIỆU THAM KHẢO
[1] Tống Văn On & Hoàng Đức Hải,Họ vi điều khiển 8051, Nhà xuất bản lao động xã

hội, Thành phố Hồ Chí Minh, 2009.
[2] Th.S Trần Công Thịnh, Giáo trình kỹ thuật vi xử lý, Tài liệu lưu hành nội bộ ĐH
Tôn Đức Thắng, Thành phố Hồ Chí Minh, 2011
[3] Khoa Điện – Điện tử. Thí nghiệm vi xử lý. Tp.HCM, Đại học Tôn Đức Thắng,
2012.

19 | P a g e


PHỤ LỤC
Code của chương trình được viết bằng hợp ngữAssembly
;===============CHUONG TRINH DO NHIP TIM==============
;=================KHAI BAO GIAO TIEP LCD===============
RS
BIT P2.5
RW BIT P2.6
EN BIT P2.7
LCD EQU P0
BUSY BIT P0.7
:======================================================
ORG 00H
LJMP MAIN
ORG 0BH
LJMP NGAT
ORG 30H
;===============DOAN CHUONG TRINH CHINH============
MAIN:
MOV SP,#5FH
MOV TMOD,#51H;// T1-COUNTER-MODE 1, T0-TIMER-MODE 1
MOV TH0,#HIGH(-50000)

MOV TL0,#LOW(-50000)
SETB TR0
MOV TH1,#0
MOV TL1,#0
SETB TR1
MOV IE,#82H;// CHO PHEP NGAT, NGAT TIMER 0
LCALL
LCD_INIT;// KHOI DONG LCD
MOV DPTR,#TEXT1;// QUANG NHUT
MOV A,#80H;// DONG 1
LCALL
COMMAND
LCALL
HIENTHIMACDINH
MOV DPTR,#TEXT2;// MSSV: 41202179
MOV A,#0C0H;// DONG 2
LCALL
COMMAND
20 | P a g e


LCALL

HIENTHIMACDINH

MP00:
LCALL
DELAY1S
MOV A,#01H
;clear LCD

ACALL COMMAND
MOV DPTR,#TEXT3;// nhan START
MOV A,#80H;// DONG 1
LCALL
COMMAND
LCALL
HIENTHIMACDINH
MP0:
JNB P3.7,NHANSTART
SJMP MP0
MP1:
MOV 20,#0;//BIEN TINH SO GIAY
MP2:
MOV A,20
CJNE A,#200,MP2;//KIEM TRA DU 10S CHUA
CLR TR1
CLR TR0
;=======XU LY XUNG NHIP TIM=================
MOV A,TL1;LAY SO XUNG DEM DUOC SAU 10S
MOV B,#6; NHAN VOI 6 LA DUOC 60S=1P
MUL AB
MOV 21,A;// O NHO 21 LUU GIA TRI GOC SAU 1 PHUT
MOV B,#100
DIV AB
MOV 22,A;// O NHO 22 LUU GIA TRI HANG TRAM CHUA DOI
MOV A,B
MOV B,#10
DIV AB
MOV 23,A;// O NHO 23 LUU GIA TRI HANG CHUC CHUA DOI
MOV 24,B;// O NHO 24 LUU GIA TRI HANG DON VI CHUA DOI

;======HIEN THI KET QUA=========
21 | P a g e


MOV A,#01H
;XOA LCD
ACALL COMMAND
MOV DPTR,#TEXT5;// ket qua nhip tim
MOV A,#80H;// DONG 1
LCALL
COMMAND
LCALL
HIENTHIMACDINH
MOV DPTR,#TEXT6
;// la: BPM
MOV R0,#50
;DU LIEU HT DONG 1 CAT TU O 50-59
NAPCHU:
MOV A,#0
MOVC
A,@A+DPTR
JZ
THOAT2
MOV @R0,A
INC DPTR
INC R0
SJMP NAPCHU
THOAT2:
=======CHUYEN VE MA ASCII HIEN THI LCD========
MOV A,22

ADD A,#30H
MOV 54,A
MOV A,23
ADD A,#30H
MOV 55,A
MOV A,24
ADD A,#30H
MOV 56,A
MOV A,#0C0H;// DONG 2
LCALL
COMMAND
LCALL
HIENTHIGIATRI
MOV P1,21;TL1
MP3:
JNB P3.6,NHANCLEAR
SJMP MP3
NHANSTART:
22 | P a g e


JNB P3.7,NHANSTART
JB
P3.7,NHASTART
SJMP NHANSTART
NHASTART:
MOV A,#01H
;CLEAR LCD
ACALL COMMAND
LCALL

DELAY1S
MOV DPTR,#TEXT4;// DOI 15S......
MOV A,#80H;// DONG 1
LCALL
COMMAND
LCALL
HIENTHIMACDINH
LJMP MP1
NHANCLEAR:
JNB P3.6,NHANCLEAR
JB
P3.6,NHACLEAR
SJMP NHANCLEAR
NHACLEAR:
MOV A,#01H
;CLEAR LCD
ACALL COMMAND
MOV DPTR,#TEXT7;// da xoa ket qua !
MOV A,#80H;// DONG 1
LCALL
COMMAND
LCALL
HIENTHIMACDINH
LJMP MP00
NGAT:
CLR TR0
CLR TF0
MOV TH0,#HIGH(-50000)
MOV TL0,#LOW(-50000)
INC 20

SETB TR0
RETI
;==== CTC CHO HIEN THI CAC DONG CHU TREN LCD======
HIENTHIMACDINH:
MOV A,#0
MOVC
A,@A+DPTR
23 | P a g e


JZ
THOATHIENTHIMACDINH
LCALL
SEND_DATA
INC DPTR
SJMP HIENTHIMACDINH
THOATHIENTHIMACDINH:
RET
;=========HIEN THI TU THANH GHI=========
HIENTHIGIATRI:
MOV R0,#50
LAPHIENTHIGIATRI:
MOV A,@R0
LCALL
SEND_DATA
INC R0
CJNE R0,#61,LAPHIENTHIGIATRI
RET
;=======CTC KHOI TAO VA GIAO TIEP VOI LCD 16X2======
=======KHOI TAO LCD==========

LCD_INIT:
MOV A,#38H
;2 line 5x7
ACALL COMMAND
MOV A,#0CH
;LCD on cursor on
ACALL COMMAND
MOV A,#01H
;clear LCD
ACALL COMMAND
MOV A,#06H
;shift cursor right
ACALL COMMAND
RET
COMMAND:
ACALL READY
;is LCD ready?
CLR RS
;RS=0 for command;RS=1 for data reg
CLR RW
;R/W=0 to write to LCD
MOV LCD,A
;issue command code
SETB EN
;E=1 for H-to-L pulse
CLR EN
;E=0 ,latch in
RET
;=========GUI DU LIEU HIEN THI TREN LCD========
24 | P a g e



SEND_DATA:
ACALL READY
;is LCD ready?
SETB RS
;RS=1 for data
CLR RW
;R/W=0 to write to LCD
MOV LCD,A
;issue data
SETB EN
;E=1 for H-to-L pulse
CLR EN
;E=0 ,latch in
RET
READY:
CLR RS
;RS=0 access command reg
SETB RW
;R/W=1 read command reg
MOV LCD,#0FFH
;make P1.7 input port
;read command reg and check busy flag
BACK:
CLR EN
;E=1 for H-to-L pulse
SETB EN
;E=0 H-to-l pulse
JB

BUSY,BACK
;stay until busy flag=0
RET
DELAY1S:
MOV R7,#10;// 2S
LAPDEL2:
MOV R6,#200;// 100mS
LAPDEL1:
MOV R5,#250
DJNZ R5,$
DJNZ R6,LAPDEL1
DJNZ R7,LAPDEL2
RET
;====DU LIEU HIEN THI LCD=====
TEXT1:
DB ' QUANG NHUT ',0
TEXT2:
DB ' MSSV: 41202179 ',0
TEXT3:
DB ' nhan START ',0
TEXT4:
25 | P a g e


×