TRƢỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ VIỄN THÔNG ĐỒ ÁN MÔN HỌC HỌC PHẦN KỸ THUẬT VI XỬ LÝ ĐỀ TÀI MÁY TÍNH CỘNG TRỪ NHÂN CHIA HIỂN THỊ TRÊN LCD Giảng viên hƣớng dẫn Th S[.]
Trang 1TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ VIỄN THÔNG
ĐỒ ÁN MÔN HỌC HỌC PHẦN: KỸ THUẬT VI XỬ LÝ
ĐỀ TÀI: MÁY TÍNH CỘNG TRỪ NHÂN
CHIA HIỂN THỊ TRÊN LCD
Giảng viên hướng dẫn :Th.S Lê Công Danh Nhóm thực hiện : Nhóm 8
Lớp : DC20B
Tp Hồ Chí Minh, tháng 01 năm 2023
Trang 2Danh sách thành viên nhóm
Lê Hữu Thoại DC20B 2051060204 Liêu Thành Tâm DC20B 2051060174 Huỳnh Hiếu Nghĩa DC20B 2051060142 Nguyễn Phúc Thiện DC20B 2051060200 Huỳnh Thị Quỳnh DC20B 2051060164
Trang 3MỤC LỤC
Lời mở đầu .1
CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI 2
1.1 Giới thiệu về máy tính bỏ túi 2
1.2 Các giải pháp và cách xác định bài toán 2
1.2.1 Yêu cầu của hệ thống 2
1.2.2 Lựa chọn phương án 2
CHƯƠNG 2 GIỚI THIỆU VI ĐIỀU KHIỂN 8051 VÀ CÁC LINH KIỆN TRONG MẠCH 4
2.1 Vi điều khiển AT89C51 .4
2.1.2 Hoạt động định thời, cổng nối tiếp ,ngắt và xử lý ngắt của họ 8051 11
2.1.3 Các thanh ghi đặc biệt của 89C51 (SFR – Special Function Registers) 12
2.2 LCD hiển thị 16
2.2.1 Hình dáng và kích thước 16
2.2.2.Chức năng các chân 16
2.3 Bàn phím 21
2.3.1 Số lượng và chức năng phím nhấn 22
2.3.2 Xác định cách kết nối với VĐK 22
2.3.3 Sơ đồ nguyên lý 22
2.3.4.Nguyên tắc hoạt động 23
2.3.5 Ghép nối vi điều khiển với bàn phím 25
CHƯƠNG 3 CÁC SỐ ĐỒ MẠCH 26
3.1 Sơ đồ khối LCD 26
3.2 Khối bàn phím 26
3.3 Khối trung tâm 27
3.4 Mô phỏng trên Proteus 27
CHƯƠNG 4 LẬP TRÌNH CHO VI XỬ LÝ 28
4.1 Lưu đồ thực toán 28
4.2.Chương trình hợp ngữ Assembly 51
CHƯƠNG 5 Những kết quả thu được và hướng phát triển 63
Trang 45.1 Những kết quả thu được 63 CHƯƠNG 6 KẾT LUẬN 64 Tài liệu tham khảo 65
Trang 5MỤC LỤC HÌNH
Hình 1 1 Máy tính bỏ túi .2
Hình 2 1 Sơ đồ khối của AC89C51……… 5
Hình 2 2 Sơ đồ chân của AC89C51 5
Hình 2 3 Cổng vào/ra 7
Hình 2 4 Xuất mức 0 7
Hình 2 5 Trở treo nội tại chân 8
Hình 2 6 Xuất mức 1 8
Hình 2 7 Hình dạng của LCD 16
Hình 2 8 Sơ đồ chân của LCD 16
Hình 2 9 Kết nối 8 bit: chân D0 đến D7 của LCD sẽ kết nối với 8 chân của MCU 21 Hình 2 10 Cấu tạo của một phím 22
Hình 2 11 Bàn phím với mã phím 23
Hình 2 12 Cách ghép nối bàn phím trong mô phỏng – dùng module bàn phím 25
Hình 3 1 Sơ đồ khối LCD………26
Hình 3 2 Sơ đồ khối bàn phím 26
Hình 3 3 Khối trung tâm 27
Hình 3 4 Mô phỏng trên Proteus 27
Trang 6MỤC LỤC BẢNG
Bảng 2 1 Các chức năng đặc biệt của port 3 10
Bảng 2 2 Chọn bank thanh ghi: 13
Bảng 2 3 chọn chế độ hoạt động của port nối tiếp 15
Bảng 2 4 Chức năng các chân LCD 18
Bảng 2 5 Bảng mã lệnh điều khiển 20
Trang 71
LỜI MỞ ĐẦU
Máy tính bỏ túi là một công cụ học tập quen thuộc của học sinh, sinh viên, đặt biệt là sinh viên kỹ thuật Trong đời sống hàng ngày, nó là một vật cần thiết cho việc tính tiền trong các vụ mua bán Trong sản xuất, nó được dùng để tính toán số sản phẩm làm ra Và còn rất nhiều ứng dụng khác của máy tính bỏ túi, cho thấy sự phổ biến, cần thiết của nó
Nhận thấy vai trò của máy tính bỏ túi trong học tập, lao động và đời sống nên nhóm em quyết định chọn đề tài “ Máy tính cộng trừ nhân chia, hiện lên màn hình
LCD” Em xin chân thành cảm ơn giảng viên Lê Công Danh đã giúp đỡ nhóm em
trong suốt quá trình làm đồ án
Một lần nữa nhóm em xin chân thành cảm ơn Thầy
Thành phố Hồ Chí Minh, tháng 01 năm 2023
Trang 82
CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI
Với mỗi gia đình, cơ quan, xí nghiệp, trường học hay bất cứ nơi đâu ta cũng bắt gặp được máy tính bỏ túi Hiện nay trên thị trường có rất nhiều các nhà sản xuất máy tính bỏ túi khác nhau, với nhiều chức năng, kiểu dáng đa dang
Máy tính bỏ túi nói chung là một thiết bị dùng để tính toán các công thức toán học mà người lập trình đã lập trình sẵn cho nó
Hình 1 1 Máy tính bỏ túi
Nhìn chung thì máy tính đước sản xuất từ các nhà sản xuất lớn như TOSHIBA, VNC,CASIO
1.2.1 Yêu cầu của hệ thống
Qua tham khảo các sản phẩm máy tính bỏ túi trên thị trường thì yêu cầu của một bộ sản phẩm máy tính bỏ túi thông thường:
Dao diện người dung dễ sử dụng
Thực hiện một số phép tính đơn giản như cộng trừ nhân chia
Yêu cầu kết quả luôn luôn đúng
Điện áp hoạt động của hệ thống không gây nguy hiểm đến người sử dụng
1.2.2 Lựa chọn phương án
Với yêu cầu về tính năng như trên, chúng em chọn các thiết bị chính:
Trang 93
Vi điều khiển AT89C51
Màn hình LCD 16x2 với mục đích hiển thị thông tin, giao tiếp vi điều khiển với người dùng
Bàn phím 16 phím có các phím số và phím chức năng đưa đầu vào là các số và các phép tính
Trang 104
CHƯƠNG 2 GIỚI THIỆU VI ĐIỀU KHIỂN 8051 VÀ
CÁC LINH KIỆN TRONG MẠCH
2.1.1 Giới thiệu tổng quan về họ vi điều khiển 8051
AT89C51 là một vi điều khiển 8 bit, chế tạo theo công nghệ CMOS chất lượng cao, công suất thấp với 4 KB PEROM ( Flash Programeable and erasable read only memory)
Các đặc điểm của 8951 được tóm tắt như sau:
4 KB PEROM (Flash Programmable and Erasable Read Only Memory), có khả năng tới 1000 chu kỳ ghi xoá
Tần số hoạt động từ: 0Hz đến 24 MHz
mức khóa bộ nhớ lập trình
128 Byte RAM nội
4 Port xuất /nhập I/O 8 bit
chu kỳ máy (4 µs đối với thạch anh 12MHz) cho hoạt động nhân hoặc chia
Có các chế độ nghỉ (Low-power Idle) và chế độ nguồn giảm (Power-down)
Ngoài ra, một số IC khác của họ MCS-51 có thêm bộ định thời thứ 3 và 256
byte RAM nội
Trang 115
2.1.1.1 Sơ đồ khối và sơ đồ chân của AT89C51
Hình 2 1 Sơ đồ khối của AC89C51
Hình 2 2 Sơ đồ chân của AC89C51
Trang 126
Chip AT89C51 có các tín hiệu điều khiển cần phải lưu ý như sau:
Tín hiệu vào /EA trên chân 31 thường đặt lên mức cao ( +5V) hoặc mức thấp
(GND) Nếu ở mức cao, 8951 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp (4K hoặc tối đa 8k đối với 89C52) Nếu ở mức thấp, chương trình được thi
hành từ bộ nhớ mở rộng (tối đa đến 64Kbyte) Ngoài ra người ta còn dùng /EA làm
chân cấp điện áp 12V khi lập trình EEPROM trong 8051
2.1.1.2 Chức năng các chân của AT89C51
™ Chân PSEN (Program store enable):
PSEN là chân tín hiệu ra trên chân 29 Nó là tín hiệu điều khiển cho phép chương trình mở rộng, PSEN thường được nối đến chân /OE (Output Enable) của một EPROM hoặc ROM để cho phép đọc các bytes mã lệnh
Hãy nhớ rằng : bình thường chân /PSEN sẽ được thả trống ( No Connect).Chỉ khi nào cho /EA ở mức thấp thì lúc đó: /PSEN sẽ ở mức thấp trong thời gian lấy lệnh Các mã nhị phân của chương trình được lấy từ EPROM qua bus dữ liệu và được chốt vào thanh ghi lệnh của 8951 để giải mã lệnh /PSEN ở mức thụ động (mức cao) nếu thành chương trình trong ROM nội của 8951
™ Các chân nguồn:
AT89C51 hoạt động ở nguồn đơn +5V Vcc được nối vào chân 40, và Vss
(GND) được nối vào chân 20
Cổng vào/ra
Tất cả các vi điều khiển 8051 đều có 4 cổng vào/ra 8 bit có thể thiết lập như cổng vào hoặc ra Như vậy có tất cả 32 chân I/O cho phép vi điều khiển có thể kết nối với các thiết bị ngoại vi
Trang 137
Hình 2 3 Cổng vào/ra
Hình 2 4 Xuất mức 0
Trang 148
Chân vào/ra (I/O)
Hình trên mô tả sơ đồ đơn giản của mạch bên trong các chân vi điều khiển trừ cổng P0 là không có điện trở kéo lên (pull-up)
Hình 2 5 Trở treo nội tại chân Chân ra
Một mức logic 0 đặt vào bit của thanh ghi P làm cho transistor mở, nối chân tương ứng với đất
Hình 2 6 Xuất mức 1 Chân vào
Một bit 1 đặt vào một bit của thanh ghi cổng, transistor đóng và chân tương ứng được nối với nguồn Vcc qua trở kéo lên
Port 0
Port 0 là port có 2 chức năng ở các chân 32 – 39 của AT89C51:
Trang 159
- Chức năng I/O (xuất/nhập): dùng cho các thiết kế nhỏ Tuy nhiên, khi dùng chức năng này thì Port 0 phải dùng thêm các điện trở kéo lên (pull-up), giá trị của điện trở phụ thuộc vào thành phần kết nối với Port
- Khi dùng làm ngõ vào, Port 0 phải được set mức logic 1 trước đó
- Chức năng địa chỉ / dữ liệu đa hợp: khi dùng các thiết kế lớn, đòi hỏi phải sử dụng
bộ nhớ ngoài thì Port 0 vừa là bus dữ liệu (8 bit) vừa là bus địa chỉ (8 bit thấp) Ngoài ra khi lập trình cho AT89C51, Port 0 còn dùng để nhận mã khi lập trình
và xuất mã khi kiểm tra (quá trình kiểm tra đòi hỏi phải có điện trở kéo lên)
Port 1:
Port1 (chân 1 – 8) chỉ có một chức năng là I/O, không dùng cho mục đích khác (chỉ trong 8032/8052/8952 thì dùng thêm P1.0 và P1.1 cho bộ định thời thứ 3) Tại Port 1 đã có điện trở kéo lên nên không cần thêm điện trở ngoài
Port 1 có khả năng kéo được 4 ngõ TTL và còn dùng làm 8 bit địa chỉ thấp trong quá trình lập trình hay kiểm tra
Khi dùng làm ngõ vào, Port 1 phải được set mức logic 1 trước đó
Port 2:
Port 2 (chân 21 – 28) là port có 2 chức năng:
- Chức năng I/O (xuất / nhập)
- Chức năng địa chỉ: dùng làm 8 bit địa chỉ cao khi cần bộ nhớ ngoài có địa chỉ 16 bit Khi đó, Port 2 không được dùng cho mục đích I/O
- Khi dùng làm ngõ vào, Port 2 phải được set mức logic 1 trước đó
- Khi lập trình, Port 2 dùng làm 8 bit địa chỉ cao hay một số tín hiệu điều khiển
Port 3:
Port 3 (chân 10 – 17) là port có 2 chức năng:
- Chức năng I/O Khi dùng làm ngõ vào, Port 3 phải được set mức logic 1 trước đó
- Chức năng khác: mô tả như sau:
Trang 1610
Bảng 2 1 Các chức năng đặc biệt của port 3
Chân RST
RST (Reset – chân 9): mức tích cực của chân này là mức 1, để reset ta phải đưa mức 1 (5V) đến chân này với thời gian tối thiểu 2 chu kỳ máy (tương đương 2µs đối với thạch anh 12MHz
Chân ALE
ALE (Address Latch Enable): ALE là tín hiệu để chốt địa chỉ vào một thanh ghi bên ngoài trong nửa đầu của chu kỳ bộ nhớ Sau đó các đường port 0 dùng để xuất hoặc nhập dữ liệu trong nửa chukỳ sau của bộ nhớ
Chân PSEN
PSEN (Program Store Enable): PSEN là chân điều khiển cho phép bộ nhớ chương trình mở rộng và thường được nối với đến chân OE (Output Enable) của
Trang 1711
một EPROM để cho phép đọc các bytes mã lệnh PSEN sẽ ở mức thấp trong thời gian đọc lệnh Các mã nhị phân của chương trình được đọc từ EPROM qua Bus và được chốt vào thanh ghi lệnh của bộ vi điều khiển để giải mã lệnh Khi thi hành chương trình trong ROM nội, PSEN sẽ ở mức thụ động (mức cao)
Với 8051 ta chỉ có 2 timer đó là timer 0 và timer 1 còn đối với 8052 thì có thêm
bộ định thời thứ 3 là timer 2,các timer này có rất nhiều ứng dụng quan trọng trong các lĩnh vực như đo lường, điều khiển
2.1.2.2 Cổng nối tiếp
AT89S52 có một cổng nối tiếp trên chip có thể hoạt động ở nhiều chế độ khác nhau Chức năng chủ yếu của cổng nối tiếp là chuyển đổi song song sang nối tiếp và chuyển đổi nối tiếp sang song song với dữ liệu nhập để có thể giao tiếp với máy tính qua cổng nối tiếp hoặc các thiết bị tương tự
2.1.2.3 Ngắt và xử lý ngắt
Để tận dụng khả năng của cpu chúng ta phải sử dụng đến ngắt, ngắt giúp ta tạm ngừng công việc của CPU để phục vụ việc trao đổi giữ liệu Sau khi hoàn thành việctrao đổi dữ liệu thì CPU phải quay về làm nốt công việc đang bị gián đoạn Điều này giúp cho CPU làm việc hiệu quả hơn rất nhiều
Với AT89S52 ta có 6 nguồn ngắt:
Ngắt ngoài đến từ chân #INT0
Ngắt ngoài đến từ chân #INT1
Ngắt do bộ timer 0
Ngắt do bộ timer 1
Ngắt do bộ timer 2
Trang 1812
Ngắt do port nối tiếp
2.1.3 Các thanh ghi đặc biệt của 89C51 (SFR – Special Function Registers)
2.1.3.1 Thanh ghi tích luỹ (Accumulator)
Thanh ghi tích luỹ là thanh ghi sử dụng nhiều nhất trong AT89C51, được ký hiệu trong câu lệnh là A Ngoài ra, trong các lệnh xử lý bit, thanh ghi tích luỹ được ký hiệu là ACC
2.1.3.2 Thanh ghi B
Thanh ghi tích luỹ có thể truy xuất trực tiếp thông qua địa chỉ E0H (byte) hay truy xuất từng bit thông qua địa chỉ bit từ E0H đến E7H.
2.1.3.3 Thanh ghi từ trạng thái chương trình (PSW - Program Status Word)
Thanh ghi từ trạng thái chương trình PSW nằm tại địa chỉ D0H và có các địa chỉ bit từ D0H – D7H, bao gồm 7 bit (1 bit không sử dụng) có các chức năng như sau:
Bit 7 6 5 4 3 2 1 0 Chức
năng
CY AC FO RS1 RSO OV - P
CY (Carry): cờ nhớ, thường được dùng cho các lệnh toán học (C = 1 khi có nhớ
trong phép cộng hay mượn trong phép trừ)
AC (Auxiliary Carry): cờ nhớ phụ (thường dùng cho các phép toán BCD)
F0 (Flag 0): được sử dụng tuỳ theo yêu cầu của người sử dụng
RS1, RS0: dùng để chọn bank thanh ghi sử dụng Khi reset hệ thống, bank 0 sẽ
được sử dụng
OV (Overflow): cờ tràn Cờ OV = 1 khi có hiện tượng tràn số học xảy ra (dùng cho
số nguyên có dấu)
P (Parity): kiểm tra parity (chẵn) Cờ P = 1 khi tổng số bit 1 trong thanh ghi A là số
lẻ (nghĩa là tổng số bit 1 của thanh ghi A cộng thêm cờ P là số chẵn)
Trang 19Bảng 2 2 Chọn bank thanh ghi:
Ví dụ như: A = 10101010b có tổng cộng 4 bit 1 nên P = 0 Cờ P thường được dùng
để kiểm tra lỗi truyền dữ liệu
2.1.3.4 Thanh ghi con trỏ stack (SP – Stack Pointer)
Con trỏ stack SP nằm tại địa chỉ 81H và không cho phép định địa chỉ bit SP dùng để chỉ đến đỉnh của stack Stack là một dạng bộ nhớ lưu trữ dạng LIFO (Last
In First Out) thường dùng lưu trữ địa chỉ trả về khi gọi một chương trình con Ngoài
ra, stack còn dùng như bộ nhớ tạm để lưu lại và khôi phục các giá trị cần thiết Đối với AT89C51, stack được chứa trong RAM nội (128 byte đối với 8031/8051 hay
256 byte đối với 8032/8052) Mặc định khi khởi động, giá trị của SP là 07H, nghĩa
là stack bắt đầu từ địa chỉ 08H (do hoạt động lưu giá trị vào stack yêu cầu phải tăng nội dung thanh ghi SP trước khi lưu
2.1.3.5 Con trỏ dữ liệu DPTR (Data Pointer)
Con trỏ dữ liệu DPTR là thanh ghi 16 bit bao gồm 2 thanh ghi 8 bit: DPH (High) nằm tại địa chỉ 83h và DPL (Low) nằm tại địa chỉ 82H Các thanh ghi này không cho phép định địa chỉ bit DPTR được dùng khi truy xuất đến bộ nhớ có địa chỉ 16 bit
2.1.3.6 Các thanh ghi Port
Gồm 4 thanh ghi tương ứng với 4 port:
P0 Port 0 : ở địa chỉ 80H đến dịa chỉ 87H
P1 Port 1 : ở địa chỉ 90H đến địa chỉ 97H
P2 Port 2 : ở địa chỉ A0H đến địa chỉ A7H
P3 Port 3 : ở địa chỉ B0H đến địa chỉ B7H
Trang 2014
Nếu truy suất Port ta truy suất các thanh ghi Port tương ứng Các thanh ghi này được định địa chỉ từng Bit
2.1.3.7 Các thanh ghi bộ định thời (Timer)
AT89c51 có hai thanh ghi bộ định thời/đếm 16 bit được dùng cho định thời hoặc đếm sự kiên
Thanh ghi chế độ định thời (TMOD)
Không được định địa chỉ bit
Dùng để định chế độ hoạt động cho TIMER
Chức năng từng bit
Thanh ghi điều khiển định thời (TCON):
Chứa các bit điều khiển và trạng thái của Timer 0, 1 ở 4 bit cao, 4 bit thấp được dùng cho chức năng ngắt (interrupt)
Chức năng từng bit:
2.1.3.8 Các thanh ghi port nối tiếp (Serial port)
2.1.3.8.1 Thanh ghi SBUF (Serial Buffer)
Ở địa chỉ 99H là bộ đệm nhập/xuất nối tiếp, khi xuất dữ liệu thì ghi lên SBUF, khi nhập dữ liệu thì đọc từ SBUF
Các chế độ hoạt động khác nhau của port nối tiếp được lập trình thông qua thanh ghi điều khiển port nối tiếp SCON (Serial Control) ở địa chỉ 98H Đây là thanh ghi được địa chỉ từng bit
2.1.3.8.2 Thanh ghi điều khiển port nối tiếp SCON
Trang 2115
Địa chỉ 99H
Định địa chỉ bit
Chức năng các bit
SM0, SM1: chọn chế độ hoạt động của port nối tiếp
Bảng 2 3 chọn chế độ hoạt động của port nối tiếp
SM2: chọn chế độ hoạt động của port nối tiếp
SM2 = 1: cho phép truyền thông đa xử lý ở các chế độ 2 và 3; bit
RI sẽ không được tích cực nếu bit thứ 9 nhận được là 0
REN: bit cho phép thu
REN = 1: cho phép thu
REN = 0: không cho phép thu
TB8: bit phát thứ 9 (ở chế độ 2 và 3), có thể đặt và xóa bằng phần mềm
RB8: bit thu thứ 9 (ở chế độ 2 và 3), có thể đặt và xóa bằng phần mềm. 2.1.3.9 Các Thanh Ghi Ngắt (Interrupt)
8031/8051 có 5 nguồn ngắt:
2 ngắt ngoài: ngắt ngoài 0: qua chân INT0 (P3.2)
ngắt ngoài 1: qua chân INT1 (P3.3)
3 ngắt trrong: ngắt timer 0, ngắt timer 1, ngắt port nối tiếp
2.1.3.10 Hoạt động reset
Trang 22tự và đặt tên như bên dưới :
Hình 2 8 Sơ đồ chân của LCD
2.2.2.Chức năng các chân
Trang 23VCC=5V của mạch điều khiển
3 Vee Chân này dùng để điều chỉnh độ tương phản của
chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ
“đọc” - read) + Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi
dữ liệu DR bên trong LCD
Trang 2418
chuyển vào(chấp nhận) thanh ghi bên
trong nó khi phát hiện một xung (high-to-low transition) của tín hiệu
bit DB7
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường
từ DB4 tới DB7, bit MSB là DB7
Bảng 2 4 Chức năng các chân LCD
Để LCD hoạt động và hiển thị được dữ liệu thì ta phải điều khiển hai thanh ghi:
Thanh ghi lệnh và thanh ghi dữ liệu:
+ Thanh ghi IR lưu trữ mã lệnh: Như xóa hiện thị và dịch con trỏ, và chứa thông tin địa chỉ cho vùng RAM dữ liệu hiển thị (DDRAM) và vùng RAM tạo ký tự CGRAM IR chỉ có thể ghi từ vi điều khiển
+ Thanh ghi DR dùng để lưu trữ tạm thời dữ liệu để ghi đến DDRAM hoặc CGRAM và dữ liệu lưu trữ tạm thời có thể đọc từ DDRAM hoặc CGRAM
Dữ liệu được ghi đến thanh ghi DR, dữ liệu đó sẽ tự động được truyền đến DDRAM hoặc CGRAM một cách tự động Thanh ghi DR cũng là vùng lưu
Trang 2519
trữ dữ liệu tạm thời khi ta muốn đọc dữ liệu DDRAM hoặc CGRAM Khi các thông tin về địa chỉ được ghi đến thanh ghi IR, dữ liệu được từ DDRAM hoặc CGRAM được đọc và lưu trữ vào DR một cách tự động bởi LCD Khi đó ta tiến hành đọc dữ liệu lưu trữ ở thanh ghi DR Sau khi đọc, dữ liệu trong
DDRAM hoặc CGRAM tại địa chỉ kế tiếp được đưa đến thanh ghi DR để sẳn sàng cho lần đọc kế tiếp từ vi điều khiển Nhờ tín hiệu lựa chọn thanh ghi (RS), khi đó ta thể lựa chọn giữa hai thanh ghi IR và DR
Gởi lệnh điều khiển thanh ghi lệnh LCD:
Bước 1: Kéo chân RW xuống mức thấp để chọn chế độ ghi (chân RW thường trong thiết kế người ta nói xuống GND)
Bước 2: Kéo chân RS xuống mức thấp cho LCD hiểu là chúng ta muốn ghi lệnh (chọn thanh ghi lệnh)
Bước 3: Gởi byte lệnh ra các chân D0 đến D7
Bước 4: Tạo một xung tại chân E, xung mức cao-thấp( E=1 rồi delay rồi E =0)
Gởi dữ liệu ra thanh ghi dữ liệu để hiển thị dữ liệu ra LCD
Sau khi gởi lệnh điều khiển LCD chúng ta sẽ gởi dữ liệu cần hiển thị lên màn hình LCD:
Bước 1: Kéo RW xuống mức thấp để chọn chế độ ghi (chân RW thường trong thiết
kế người ta nói xuống GND)
Bước 2: Kéo chân RS lên mức cao cho LCD hiểu là chúng ta muốn ghi dữ liệu ra màn hình (chọn thanh ghi dữu liệu)
Bước 3: Gởi ký tự cần hiểu thị ra chân D0 đến D7
Bước 4: Tạo một xung tại chân E, xung mức cao-thấp( E=1 rồi delay rồi E =0)
2.2.3 Các mã lệnh đều khiển thanh ghi lệnh của LCD:
Để điều khiển hoạt động của LCD người ta xây dựng các mã lệnh HEX để điều khiển LCD như sau:
2.2.3.1 Mã lệnh điều khiển: (Thanh ghi lệnh)
Trang 260x02 Di chuyển con trỏ về vị trí đầu của màn hình
0x04 Di chuyển con trỏ sang trái 1 đơn vị
0x06 Di chuyển con trỏ sang phải 1 đơn vị
0x18 Dịch toàn bộ nội dung sang trái
0x1C Dịch toàn bộ nội dung sang phải
0x08 Tắt hiển thị và tắt con trỏ
0x0A Tắt hiển thị và bậc con trỏ
0x0C Bậc hiển thị là tắt con trỏ
0x0E Bậc hiển thị và bậc con trỏ
0x80 Di chuyên con trỏ về đầu dòng thứ 1
0xC0 Di chuyển con trỏ về đầu dòng thứ 2
0x38 Chọn giao tiếp 8 bit(từ D0 đến D7), hiển thị 2 dòng, kích
thước font 5x7 0x28 Chọn giao tiếp 4 bit(từ D4 đến D7), hiển thị 2 dòng, kích
thước font 5x7
Bảng 2 5 Bảng mã lệnh điều khiển
2.2.3.2 Cách kết nối LCD 16x2 với vi điều khiển (MCU)
Trang 27Khi ấn nút, tấm than sẽ tiếp xúc đóng tiếp điểm hàng và cột tương ứng với con số vừa ấn để báo cho mạch mã hóa trong IC phát số biết có phím được ấn Khi thôi ấn, nhờ sức đàn hồi của cao su, tấm than tách rời tiếp điểm về trạng thái nghỉ
Trang 2822
Hình 2 10 Cấu tạo của một phím
2.3.1 Số lượng và chức năng phím nhấn
Bàn phím gồm các loại phím và số lượng như sau:
RST: khởi động lại hoạt động ban đầu
AC: xóa màn hình nhưng còn lại kết quả
Để giảm bớt số chân của VĐK kết nối với nút nhấn khi số lượng nút nhấn nhiều,
ta cần kết nối nút nhấn dưới dạng ma trận và dùng phương pháp quét phím để xác
định phím nào được nhấn
Với ma trận phím 4*4 ta có vừa đủ số phím cần dùng
2.3.3 Sơ đồ nguyên lý
Trong bàn phím ma trận 4*4 sẽ có 4 hàng H[0:3] đóng vai trò là các ngõ vào
bình thường ở mức cao H và có 4 cột dùng để xuất mã quét 4 hàng và 4 cột được
Trang 29Để xác định phím nào được nhấn, ta kết nối 4 hàng với một port của VĐK, 5 cột với port khác, VĐK xuất mã quét (mã quét là mã nhị phân có một bit 0, còn lại là các bit 1) ra các cột và sau đó đọc dữ liệu từ các hàng, nếu có hàng nào xuống mức thấp thì có phím được nhấn trong hàng đó, dựa vào mã quét hiện thời, ta xác được cột nào có phím được nhấn Như vậy, ta có thể xác định được phím nhấn Nếu không có phím được nhấn thì tất cả các hàng đều ở mức cao Các bước như sau:
Bước 1: Đưa cột 0 C0=0V và các cột còn lại có mức cao “H”, thực hiện đọc dữ
liệu trên các hàng H[0:3] Ta có thể xác định được sw0, sw1, sw2, sw3
Bước 2: Đưa cột 1 C1=0V và các cột còn lại có mức cao “H”, thực hiện đọc dữ liệu trên các hàng H[0:3] Ta có thể xác định được sw4, sw5, sw6, sw7
Bước 3: Đưa cột 2 C2=0V và các cột còn lại có mức cao “H”, thực hiện đọc dữ liệu trên các hàng H[0:3] Ta có thể xác định được sw8, sw9, swA, swB
Bước 4: Đưa cột 3 C3=0V và các cột còn lại có mức cao “H”, thực hiện đọc dữ
Trang 3024
liệu trên các hàng H[0:3] Ta có thể xác định được swC, swD, swE, swF
Các chân rs, rw, e dùng để điểu khiển việc đọc ghi dữ liệu
Bốn chân D4-D7 dùng để truyền dữ liệu giữa LCD và VĐK theo chế độ 4 bit
Trang 3125
2.3.5 Ghép nối vi điều khiển với bàn phím
Hình 2 12 Cách ghép nối bàn phím trong mô phỏng – dùng module bàn
Trang 3327
Hình 3 3 Khối trung tâm
Hình 3 4 Mô phỏng trên Proteus
Trang 34 Lưu đồ chương trình đầu vào
Lưu đồ chương trình đầu ra
Lưu đồ chương trình dấu cộng
Lưu đồ chương trình dấu trừ
Lưu đồ chương trình dấu nhân
Lưu đồ chương trình dấu chia
Lưu đồ chương trình quét bàn phím
Lưu đồ chương trình hiển thị LCD
Lưu đồ nạp các lệnh vào thanh ghi LCD
Lưu đồ chương trình xuất kí tự
Trang 35STOP