Tải bản đầy đủ (.pdf) (32 trang)

BÁO CÁO đồ án đề TÀI MẠCH TẠO SỐ NGẪU NHIÊN SỬ DỤNG 8051 HIỂN THỊ TRÊN LCD

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 (1.03 MB, 32 trang )

lOMoARcPSD|9242611

BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

BÁO CÁO ĐỒ ÁN
ĐỀ TÀI: MẠCH TẠO SỐ NGẪU NHIÊN SỬ DỤNG 8051
HIỂN THỊ TRÊN LCD

Giảng viên hướng dẫn: Đặng Văn Hải
Sinh viên thực hiện:
Nguyễn Văn Ninh
Lê Minh Tuấn
Nguyễn Ngọc Huy

Hà Nội, ngày 18 tháng 12 năm 2020
1
Downloaded by tran quang ()


lOMoARcPSD|9242611

MỤC LỤC
CHƯƠNG 1: TÌM HIỂU VỀ 8051.............................................................................4
1.1. GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 8051........................................................4
1.1.1. Sơ lược về lịch sử...........................................................................................4
1.1.2. Cấu trúc vi điều khiển 8051...........................................................................6
CHƯƠNG 2: TÌM HIỂU VỀ LCD 16X2.................................................................19
2.1. TỔNG QUAN VỀ LCD...................................................................................19
2.1.1. Giới thiệu về LCD........................................................................................19


2.1.2. Sơ đồ, chức năng, liên kết các chân của LCD.............................................20
CHƯƠNG 3: THỰC HIỆN MƠ HÌNH ĐỒ ÁN......................................................25
3.1. MẠCH NGUN LÝ......................................................................................25
3.2. MẠCH IN, 3D...................................................................................................25
3.3. CHƯƠNG TRÌNH CHÍNH.............................................................................25
Kết luận........................................................................................................................26

2
Downloaded by tran quang ()


lOMoARcPSD|9242611

LỜI NÓI ĐẦU
Trong những thập niên cuối thế kỉ XX, từ sự ra đời của công nghệ bán dẫn, kĩ
thuật điện tử đã có sự phát triển vượt bậc. Các thiết bị điện tử sau đó đã được tích hợp
với mật độ cao và rất cao trong các diện tích nhỏ, nhờ vậy các thiết bị điện tử nhỏ hơn
và nhiều chức năng hơn. Các thiết bị điện tử ngày càng nhiều chức năng trong khi giá
thành ngày càng rẻ hơn, chính vì vậy điện tử có mặt khắp mọi nơi.
Ngày nay, các bộ vi điều khiển có ứng dụng ngày càng rộng rãi và thâm nhập
ngày càng nhiều trong các lĩnh vực kỹ thuật và đời sống xã hội. Hầu hết các thiết bị
kỹ thuật từ phức tạp đến đơn giản như thiết bị điều khiển tự động, thiết bị văn phịng
cho đến các thiết bị trong gia đình đều có dùng các bộ vi điều khiển. Rất nhiều họ vi
điều khiển của nhiều nhà chế tạo khác nhau lần lượt được đưa ra thị trường. Để tăng
tính năng điều khiển, các bộ vi điều khiển đã không ngừng được cải tiến, nâng cấp,
chỉnh sửa và tối ưu để phù hợp với công nghệ phát triển hiện nay. Đỉnh cao của việc
sử dụng vi điều khiển là dùng trong người máy (Robot) và các thiết bị PLC để điều
khiển logic chương trình hóa dây chuyền sản xuất tự động. Và một trong những họ vi
điều khiển đang được ứng dụng rộng rãi ngày nay là họ vi điều khiển 8051.
Họ vi điều khiển 8051 được ứng dụng trong thực tế rất phổ biến như ứng dụng

để điều khiển động cơ, điều khiển LED, điều khiển đèn giao thông, làm bộ đếm sản
phẩm, …trong nhiều ứng dụng đó nhóm sinh viên chúng em đã tham gia vào thực
hiện đề tài “MẠCH TẠO SỐ NGẪU NHIÊN SỬ DỤNG 8051 HIỂN THỊ TRÊN
LCD”. Trong quá trình thực hiện làm do chúng em chưa có kinh nghiệm nhiều nên
cịn thiếu sót mong thầy (cô) chỉ dạy chúng em thêm trong những lần tiếp theo để
chúng em thực hiện đề tài thành công hơn.
Chúng em xin chân thành cảm ơn!!!
NHÓM SINH VIÊN THỰC HIỆN ĐỒ ÁN

3
Downloaded by tran quang ()


lOMoARcPSD|9242611

CHƯƠNG 1: TÌM HIỂU VỀ 8051
1.1. GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 8051
1.1.1. Sơ lược về lịch sử
Bộ xử lý 4 bit: Vào năm 1971, vi xử lý đầu tiên trên thế giới được Intel ra mắt với tên
gọi là 4004.

Hình 1.1. Vi điều khiển 4004
Intel 4004 là một bộ vi xử lý 4-bit, 16 chân, hoạt động ở tốc độ 740KHz - khoảng tám
chu kỳ đồng hồ cho mỗi chu kỳ lệnh (nhận lệnh, giải mã, thực hiện), con chip có khả
năng thực hiện 46250 đến 92500 lệnh mỗi giây.
Bộ xử lý 8 bit: Ra đời năm 1972 có tên là Intel 8008 nó có tốc độ từ 200kHz đến
800kHz cao hơn phiên bản cũ.
Vào năm 1981, Hãng Intel giới thiệu bộ vi điều khiển 8-bit được gọi là 8051. Vi điều
khiển đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất khác sản xuất và
bán bất kỳ dạng biến thế nào của 8051 mà họ thích với điều kiện họ phải để mã lại

tương thích với 8051.

4
Downloaded by tran quang ()


lOMoARcPSD|9242611

Hình 1.2. Vi điều khiển 8051
Bộ xử lý 64 bit: Ra đời từ năm 2004 với nhiều phiên bản trong đó có các phiên bản
như: P4 Prescott (2004), Premium D (2005), Premium Extreme Edition (2005), kiến
trúc Core I (2006 đến nay), Core 2 Duo, Core 2 Quad, Core 2 Extreme là đỉnh cao của
bộ vi xử lý năm 2007 có khả năng ép xung, QX9650.

Hình 1.3. Chip Intel Core i Series 9th Gen
Kể từ khi ra mắt năm 2006 dòng Core I này liên tục phát triển qua 8 thế hệ: Nehalem,
Sandy Bridge, Ivy Bridge, Haswell, Broad Well, Skylake, Kabylake, Coffelake, ...
Thế hệ mới nhất hiện nay là thế hệ thứ 10 Ice Lake.
Ngày nay với những cái tên như Core i3, Core i5, Core i7, Core i9 ngày càng
thông dụng. Càng phiên bản mới hơn thì những cơng nghệ, tốc độ, tích hợp cao hơn
mạnh mẽ hơn.

5
Downloaded by tran quang ()


lOMoARcPSD|9242611

Các tính năng của vi điều khiển 8051:
- Bộ nhớ chương trình bên trong: 4 KB (ROM)

- Bộ nhớ dữ liệu bên trong: 128 byte (RAM)
- Bộ nhớ chương trình bên ngoài: 64 KB (ROM)
- Bộ nhớ dữ liệu bên ngoài: 64 KB (RAM)
- 4 port xuất nhập (I/O port) 8-bit
- 2 bộ định thời 16-bit
- Tần số hoạt động từ: 0Hz đến 24 MHz
- Mạch giao tiếp nối tiếp
- Bộ xử lý bit (thao tác trên các bit riêng lẻ)
- 210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit
- Nhân / Chia trong 4 µs
- 32 thanh ghi đa dụng 8-bit
- Thanh ghi PC và DP 16-bit
- UART, ADC, ….
Có hai bộ vi điều khiển thành viên khác của họ 8051 là 8052 và 8031.
8052: vi điều khiển 8052 chứa tất cả đặc tính của 8051 nhưng nó bổ sung thêm
128byte RAM, 4Kb ROM và 1 bộ định thời nữa.
8031: Khơng có sẵn ROM. Để sử dụng, bạn phải tự thêm ROM cho 8031. Bên cạnh
đó, nó chỉ có 2 port 8-bit thay vì 4 port như 8051.
Đặc tính
ROM trên chip
RAM
Bộ định thời
Chân vào ra
Cổng nối tiếp
Nguồn ngắt

8051
4K byte
128 byte
2

32
1
6

8052
8K byte
256 byte
3
32
1
8

Bảng 1.1. So sánh các đặc tính của các thành viên họ 8051
1.1.2. Cấu trúc vi điều khiển 8051
1.1.2.1. Sơ đồ khối và chức năng của khối vi điều khiển 8051

6
Downloaded by tran quang ()

8031
OK
28 byte
2
32
1
6


lOMoARcPSD|9242611


Hình 1.4. Sơ đồ khối của vi điều khiển 8051
- CPU (Central Processing Unit): đơn vị xử lý trung tâm → tính tốn và điều khiển
q trình hoạt động của hệ thống.
- OSC (Oscillator): Mạch dao động → tạo tín hiệu xung clock cung cấp cho các khối
trong chip hoạt động.
- Interrupt control: điều khiển ngắt → nhận tín hiệu ngắt từ bên ngoài (INT0\, INT1\),
từ bộ định thời (Timer 0, Timer 1) và từ cổng nối tiếp (Serial port), lần lượt đưa các
tín hiệu ngắt này đến CPU để xử lý.
- Other registers: Các thanh ghi khác → lưu trữ dữ liệu của các port xuất/nhập, trạng
thái làm việc của các khối trong chip trong suốt quá trình hoạt động của hệ thống.
- RAM (Random Access Memory): Bộ nhớ dữ liệu trong chip → lưu trữ các dữ liệu.
- ROM (Read Only Memory): Bộ nhớ chương trình trong chip → lưu trữ chương
trình hoạt động của chip.
- I/O ports (In/Out ports): Các port xuất/nhập → điều khiển việc xuất nhập dữ liệu
dưới dạng song song giữa trong và ngoài chip thông qua các port P0, P1, P2, P3.
- Serial port: Port nối tiếp → điều khiển việc xuất nhập dữ liệu dưới dạng nối tiếp
giữa trong và ngoài chip thông qua các chân TxD, RxD.
- Timer 0, Timer 1: Bộ định thời 0, 1 → dùng để định thời gian hoặc đếm sự kiện
(đếm xung) thông qua các chân T0, T1.
- Bus control: điều khiển bus → điều khiển hoạt động của hệ thống bus và việc di
7
Downloaded by tran quang ()


lOMoARcPSD|9242611

chuyển thông tin trên hệ thống bus.
- Bus system: Hệ thống bus → liên kết các khối trong chip lại với nhau.
1.1.2.2. Sơ đồ chân và các chức năng của vi điều khiển 8051


Hình 1.5. Sơ đồ chân 8051
Port 0:
- Port 0 (P0.0 – P0.7) có số chân từ 32 – 39.
- Port 0 có hai chức năng:
• Port xuất nhập dữ liệu (P0.0 - P0.7) → không sử dụng bộ nhớ ngồi.
• Bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7) → có sử dụng bộ
nhớ ngoài.
- Ở chế độ mặc định (khi reset) thì các chân Port 0 (P0.0 - P0.7) được cấu hình là port
xuất dữ liệu. Muốn các chân Port 0 làm port nhập dữ liệu thì cần phải lập trình lại,
bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port trước khi bắt đầu
nhập dữ liệu từ port.
- Khi lập trình cho ROM trong chip thì Port 0 đóng vai trị là ngõ vào của dữ liệu (D0
– D7).
Port 1:
8
Downloaded by tran quang ()


lOMoARcPSD|9242611

- Port 1 (P1.0 – P1.7) có số chân từ 1 – 8.
- Port 1 có một chức năng:
• Port xuất nhập dữ liệu (P1.0 – P1.7) → sử dụng hoặc khơng sử dụng bộ nhớ
ngồi.
- Ở chế độ mặc định (khi reset) thì các chân Port 1 (P1.0 – P1.7) được cấu hình là port
xuất dữ liệu. Muốn các chân Port 1 làm port nhập dữ liệu thì cần phải lập trình lại,
bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port trước khi bắt đầu
nhập dữ liệu từ port.
- Khi lập trình cho ROM trong chip thì Port 1 đóng vai trị là ngõ vào của địa chỉ byte
thấp (A0 – A7).

Port 2:
- Port 2 (P2.0 – P2.7) có số chân từ 21 – 28.
- Port 2 có hai chức năng:
• Port xuất nhập dữ liệu (P2.0 – P2.7) → không sử dụng bộ nhớ ngồi.
• Bus địa chỉ byte cao (A8 – A15) → có sử dụng bộ nhớ ngồi.
- Ở chế độ mặc định (khi reset) thì các chân Port 2 (P2.0 – P2.7) được cấu hình là port
xuất dữ liệu. Muốn các chân Port 2 làm port nhập dữ liệu thì cần phải lập trình lại,
bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port trước khi bắt đầu
nhập dữ liệu từ port.
- Khi lập trình cho ROM trong chip thì Port 2 đóng vai trò là ngõ vào của địa chỉ byte
cao (A8 – A11) và các tín hiệu điều khiển.
Port 3:
- Port 3 (P3.0 – P3.7) có số chân từ 10 – 17.
- Port 3 có hai chức năng:
• Port xuất nhập dữ liệu (P3.0 – P3.7) → không sử dụng bộ nhớ ngồi hoặc các
chức năng đặc biệt.
• Các tín hiệu điều khiển → có sử dụng bộ nhớ ngồi hoặc các chức năng đặc
biệt.
- Ở chế độ mặc định (khi reset) thì các chân Port 3 (P3.0 – P3.7) được cấu hình là port
xuất dữ liệu. Muốn các chân Port 3 làm port nhập dữ liệu thì cần phải lập trình lại,
bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port trước khi bắt đầu
nhập dữ liệu từ port
- Khi lập trình cho ROM trong chip thì Port 3 đóng vai trị là ngõ vào của các tín hiệu
điều khiển.
9
Downloaded by tran quang ()


lOMoARcPSD|9242611


- Chức năng của các chân Port 3:
Bit
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7

Tên
RxD
TxD

∫0
∫1
T0
T1
WR
RD

Địa chỉ bit
B0H
B1H
B2H
B3H
B4H
B5H
B6H

B7H

Chức năng
Chân nhận dữ liệu của port nối tiếp
Chân phát dữ liệu của port nối tiếp
Ngõ vào ngắt ngoài 0
Ngõ vào ngắt ngoài 1
Ngõ vào của bộ định thời/đếm 0
Ngõ vào của bộ định thời/đếm 1
Điều khiển ghi vào RAM ngoài
Điều khiển đọc từ RAM ngoài

Bảng 1.2. Chức năng của các chân Port 3

PSEN :

- PSEN (Program Store Enable): cho phép bộ nhớ chương trình, chân số 29.
- Chức năng:
• Là tín hiệu cho phép truy xuất (đọc) bộ nhớ chương trình (ROM) ngồi.
• Là tín hiệu xuất, tích cực mức thấp.
PSEN = 0 → trong thời gian CPU tìm - nạp lệnh từ ROM ngoài.
PSEN = 1 → CPU sử dụng ROM trong (khơng sử dụng ROM ngồi).
- Khi sử dụng bộ nhớ chương trình bên ngồi, chân PSEN thường được nối với
chân OE của ROM ngoài để cho phép CPU đọc mã lệnh từ ROM ngoài.
ALE:
- ALE (Address Latch Enable): cho phép chốt địa chỉ, chân số 30.
- Chức năng:
• Là tín hiệu cho phép chốt địa chỉ để thực hiện việc giải đa hợp cho bus địa chỉ byte
thấp và bus dữ liệu đa hợp (AD0 – AD7).
• Là tín hiệu xuất, tích cực mức cao. ALE = 0 → trong thời gian bus AD0 - AD7 đóng

vai trò là bus D0 - D7. ALE = 1 → trong thời gian bus AD0 - AD7 đóng vai trị
là bus A0 - A7.
- Khi lập trình cho ROM trong chip thì chân ALE đóng vai trị là ngõ vào của xung
lập trình ( PGM ).
- Khi lệnh lấy dữ liệu từ RAM ngồi (MOVX) được thực hiện thì một xung ALE bị
bỏ qua.
10
Downloaded by tran quang ()


lOMoARcPSD|9242611

EA :

- EA (External Access): truy xuất ngoài, chân số 31.
- Chức năng:
• Là tín hiệu cho phép truy xuất (sử dụng) bộ nhớ chương trình (ROM) ngồi.
• Là tín hiệu nhập, tích cực mức thấp.
EA = 0 → Chip 8051 sử dụng chương trình của ROM ngồi.
EA = 1 → Chip 8051 sử dụng chương trình của ROM trong.
- Khi lập trình cho ROM trong chip thì chân EA đóng vai trị là ngõ vào của điện áp
lập trình (Vpp = 12V – 12,5V cho họ 89xx; 21V cho họ 80xx, 87xx).
XTAL1, XTAL2:
- XTAL (Crystal): tinh thể thạch anh, chân số 18-19.
- Chức năng:
• Dùng để nối với thạch anh hoặc mạch dao động tạo xung clock bên ngoài,
cung cấp tín hiệu xung clock cho chip hoạt động.
• XTAL1 → ngõ vào mạch tạo xung clock trong chip.
• XTAL2 → ngõ ra mạch tạo xung clock trong chip.
RST:

- RST (Reset): thiết lập lại, chân số 9.
- Chức năng:
• Là tín hiệu cho phép thiết lặp (đặt) lại trạng thái ban đầu cho hệ thống.
• Là tín hiệu nhập, tích cực mức cao.
RST = 0 → Chip 8051 hoạt động bình thường.
RST = 1 → Chip 8051 được thiết lặp lại trạng thái ban đầu.
Vcc, GND:
- Vcc, GND: nguồn cấp điện, chân số 40 và 20.
- Chức năng:
• Cung cấp nguồn điện cho chip 8051 hoạt động.
• Vcc = +5V ± 10% và GND = 0V.
1.1.2.3. Tổ chức bộ nhớ
Các chip vi điều được dùng làm thành phần trung tâm trong các thiết kế hướng
điều khiển, trong đó bộ nhớ có dung lượng giới hạn, khơng có ổ đĩa và hệ điều hành.
Chương trình điều khiển phải thường trú trong ROM nên 8051 có khơng gian bộ nhớ
11
Downloaded by tran quang ()


lOMoARcPSD|9242611

riêng cho chương trình và dữ liệu, cả hai bộ nhớ chương trình và dữ liệu đều đặt trong
chip, tuy nhiên ta có thể mở rộng bộ nhớ chương trình và bộ nhớ dữ liệu bằng cách sử
dụng các chip nhớ bên ngoài với dung lượng tối đa là 64K.
- Bộ vi xử lý → có khơng gian bộ nhớ chung cho dữ liệu và chương trình.

→ chương trình và dữ liệu nằm chung trên RAM trước khi đưa vào CPU để thực thi.

- Bộ vi điều khiển → có không gian bộ nhớ riêng cho dữ liệu và chương trình.


→ chương trình và dữ liệu nằm riêng trên ROM và RAM trước khi đưa vào CPU để
thực thi.
- Tổ chức bộ nhớ của chip 8051:

12
Downloaded by tran quang ()


lOMoARcPSD|9242611

Hình 1.6. Khơng gian bộ nhớ của vi điều khiển 8051
Bộ nhớ nội trong chip bao gồm ROM và RAM. RAM trên chip bao gồm vùng
RAM đa chức năng (general purpose RAM: 30H-7FH ) , vùng RAM với từng bit
được định địa chỉ (bit address locations gọi tắt là vùng RAM định địa chỉ bit: 20H2FH ) , các dãy thanh ghi ( bank : 00H-1FH) và các thanh ghi chức năng đặc biệt SFR
(spectial function register : 80H-FFH ).
8051 chứa 210 vị trí bit được định địa chỉ trong đó 128-bit chứa trong các byte
ở địa chỉ từ 20H đến 2FH (16 byte x 8 bit = 128 bit) và phần còn lại chứa trong các
thanh ghi đặc biệt. Ngồi ra 8051 cịn có các port xuất/nhập có thể định địa chỉ từng
bit, điều này làm đơn giản việc giao tiếp bằng phần mềm với các thiết bị xuất/nhập
đơn bit.

Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H đến 7FH, bên dưới
vùng này từ địa chỉ 00H đến 2FH là vùng nhớ có thể được sử dụng tương tự. Bất kỳ
vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truy xuất tự do bằng
cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp. Bất kỳ vị trí nhớ nào trong
vùng RAM đa mục đích đều có thể được truy xuất tự do bằng cách sử dụng các kiểu
định địa chỉ trực tiếp hoặc gián tiếp.
Cũng như các thanh ghi từ R0 đến R7, ta có 21 thanh ghi chức năng đặc biệt
SFR chiếm phần trên của Ram nội từ địa chỉ 80H đến FFH. Cần lưu ý là không phải
tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉ có 21 địa chỉ được

định nghĩa.

13
Downloaded by tran quang ()


lOMoARcPSD|9242611

Hình 1.7. 128 byte cao của bộ nhớ dữ liệu

Các dãy thanh ghi:
32 vị trí thấp nhất của bộ nhớ nội chứa các dãy thanh ghi. Các lệnh của 8051 hỗ
trợ 8 thanh ghi từ R0 – R7 thuộc dãy 0 (bank 0). Đây là dãy mặc định sau khi reset hệ
thống. Các thanh ghi này ở các địa chỉ từ 00H – 07H.
Các lệnh sử dụng các thanh ghi từ R0 – R7 là các lệnh ngắn và thực hiện nhanh hơn
so với các lệnh tương đương sử dụng kiểu định địa chỉ trực tiếp. Các giá trị thường
được sử dụng nên chứa ở một trong các thanh ghi này. Dãy thanh ghi đang được sử
dụng được gọi là dãy thanh ghi tích cực. Dãy thanh ghi tích cực có thể được thay đổi
bằng cách thay đổi các bit chọn dãy trong thanh ghi PSW.
1.1.2.4. Các thanh ghi đặc biệt
8051 có 21 thanh ghi chức năng đặc biệt SFR chiếm phần trên của Ram nội từ
địa chỉ 80H đến FFH. Cần lưu ý là không phải tất cả 128 địa chỉ từ 80H đến FFH đều
được định nghĩa mà chỉ có 21 địa chỉ được định nghĩa. Hình 4 mô tả các thanh ghi
đặc biệt trong vùng nhớ dữ liệu 80H đến FFH và giá trị của chúng sau khi Reset.

14
Downloaded by tran quang ()


lOMoARcPSD|9242611


Hình 1.9. Các thanh ghi đặc biệt
Thanh ghi chính:
Thanh ghi tính tốn chính của vi điều khiển 8051 ACC (Accumulator). Là
thanh ghi đặc biệt của 8051 dùng để thực hiện các phép tốn của CPU, thường kí hiệu
là A.
Thanh ghi phụ:
Thanh ghi tính tốn phụ của vi điều khiển 8051 là B. Thanh ghi B ở địa chỉ
F0H được dùng chung với thanh chứa A trong các phép toán nhân, chia. Lệnh
MUL AB nhân 2 số 8-bit không dấu chứa trong A và B và chứa kết quả 16 bit vào cặp
thanh ghi B, A (thanh chứa A cất byte thấp và thanh ghi B cất byte cao).
Lệnh chia DIV AB chia A bởi B, thương số cất trong thanh chứa A và dư số cất
trong thanh ghi B. Thanh ghi B còn được xử lý như một thanh ghi nháp. Các bit được
định địa chỉ của thanh ghi B có địa chỉ từ F0H đến F7H.
Thanh ghi trạng thái chương trình (PSW):
Thanh ghi trạng thái chương trình PSW (địa chỉ: D0H) là thanh ghi mơ tả tồn bộ
trạng thái chương trình đang hoạt động của hệ thống. Bảng 2 và Bảng 3 sẽ mô tả
15
Downloaded by tran quang ()


lOMoARcPSD|9242611

thanh ghi này.
7
CY

6
AC


5
F0

4
RS1

3
RS0

2
OV

1
-

0
P

Bảng 1.3. Thanh ghi trạng thái chương trình PSW

Bit
PSW.7

Ký Hiệu
CY

Địa Chỉ
D7H

PSW.6


AC

D6H

PSW.5
PSW.4
PSW.3

FO
RS1
RS0

D5H
D4H
D3H

PSW.2

OV

D2H

PSW.1
PSW.0

P

D1H
D0H


Mô tả Bit
Cờ nhớ (Carry Flag): được Set nếu có Bit
nhớ từ Bit 7 trong phép cộng hoặc có Bit
mượn cho Bit 7 trong phép trừ.
Cờ nhớ phụ: được Set trong phép cộng
nếu có Bit nhớ từ Bit 3 sang Bit 4 hoặc
kết quả trong 4 Bit thấp nằm trong
khoảng 0AH->0FH.
Cờ O: dành cho người sử dụng.
Chọn dãy thanh ghi (Bit 1)
Chọn dãy thanh ghi (Bit 0)
00=Bank 0: Địa chỉ 00H->07H
01=Bank 1: Địa chỉ 08H->0FH
10=Bank 2: Địa chỉ 10H->17H
11=Bank 3: Địa chỉ 18H->1FH
Cờ tràn (Overflow Flag): được Set khi
phép tốn có dấu có kết quả > +127 hoặc
< -128.
Chưa dùng
Cờ kiểm tra chẵn lẻ: được Set hoặc
Clear bởi phần cứng sau mỗi 1 chu kỳ
lệnh, để chỉ ra rằng có 1 số chẵn hoặc số
lẻ Bit 1 trong thanh chứa.

Bảng 1.4. Chi tiết các bit trong thanh ghi PSW
Thanh ghi ngăn xếp (Stack Pointer):
Con trỏ stack SP (stack pointer) là 1 thanh ghi 8 bit ở địa chỉ 81H. SP chứa địa
chỉ của dữ liệu hiện đang ở đỉnh của stack. Các lệnh liên quan đến satck bao gồm lệnh
16

Downloaded by tran quang ()


lOMoARcPSD|9242611

cất dữ liệu vào stack và lệnh lấy dữ liệu ra khỏi stack. Việc cất vào stack làm tăng SP
trước khi ghi dữ liệu và việc lấy dữ liệu ra khỏi stack sẽ giảm SP. Vùng stack của
8051 được giữ trong RAM nội và được giới hạn đến các địa chỉ truy xuất được bởi
kiểu định địa chỉ gián tiếp. Các lệnh PUSH và POP sẽ cất dữ liệu vào stack và lấy dữ
liệu từ stack, các lệnh gọi chương trình con (ACALL, LCALL) và lệnh trở về (RET,
RETI) cũng cất và phục hồi nội dung của bộ đếm chương trình PC (Program counter).
Con trỏ dữ liệu DPTR:
Con trỏ dữ liệu DPTR (data pointer) được dùng để truy xuất bộ nhớ chương
trình ngồi hoặc bộ nhớ dữ liệu ngồi. DPTR là một thanh ghi 16 bit có địa chỉ là 82H
(DPL, byte thấp) và 83H (DPH, byte cao).
Thanh ghi các cổng P0-P3:
Các port xuất/nhập của 8051 bao gồm Port 0 tại địa chỉ 80H, Port 1 tại địa chỉ
90H, Port 2 tại địa chỉ A0H và Port 3 tại địa chỉ B0H. Tất cả các port đều được định
địa chỉ từng bit nhằm cung cấp các khả năng giao tiếp mạnh.
Thanh ghi bộ đệm truyền thông nối tiếp (Serial Data Buffer):
Bộ đệm truyền thông được chia thành hai bộ đệm, bộ đệm truyền dữ liệu và bộ
đệm nhận dữ liệu. Khi dữ liệu được chuyển vào thanh ghi SBUF, dữ liệu sẽ được
chuyển vào bộ đệm truyền dữ liệu và sẽ được lưu giữ ở đó cho đến khi quá trình
truyền dữ liệu qua truyền thơng nối tiếp kết thúc. Khi thực hiện việc chuyển dữ liệu từ
SBUF ra ngoài, dữ liệu sẽ được lấy từ bộ đệm nhận dữ liệu của truyền thông nối tiếp.
Thanh ghi của bộ định thời/bộ đếm:
8051 có 2 bộ đếm/định thời (counter/timer) 16 bit để định các khoảng thời gian
hoặc để đếm các sự kiện. Các cặp thanh ghi (TH0, TL0) và (TH1, TL1) là các thanh
ghi của bộ đếm thời gian. Bộ định thời 0 có địa chỉ 8AH (TL0, byte thấp) và 8CH
(TH0, byte cao). Bộ định thời 1 có địa chỉ 8BH (TL1, byte thấp) và 8DH (TH1, byte

cao). Hoạt động của bộ định thời được thiết lập bởi thanh ghi chế độ định thời TMOD
(Timer Mode Register) ở địa chỉ 88H. Chỉ có TCON được định địa chỉ từng bit.
Các thanh ghi ngắt:
8051 có một cấu trúc ngắt với hai mức ưu tiên và năm nguyên nhân ngắt. Các
ngắt bị vơ hiệu hóa sau khi reset hệ thống và sau đó được cho phép ngắt bằng cách ghi

17
Downloaded by tran quang ()


lOMoARcPSD|9242611

vào thanh ghi cho phép ngắt IE (interrupt enable register) ở địa chỉ A8H. Mức ưu tiên
ngắt được thiết lập qua thanh ghi ưu tiên ngắt IP (interrupt priority register) ở địa chỉ.
Hoạt động Reset:
8051 được reset bằng cách giữ chân RST ở mức cao tối thiểu 2 chu kỳ máy và
sau đó chuyển về mức thấp. RST có thể được tác động tay hoặc đựơc tác động khi cấp
nguồn bằng cách dùng một mạch RC.

Thanh ghi

Nội dung

Bộ đếm chương trình
Thanh chứa A
Thanh ghi B
PSW
SP
DPTR
Port 0-3

IP

0000H
00H
00H
00H
07H
0000H
FFH
xxx00000B (8051)
xx000000B (8052)
0xx00000B (8051)
0x000000B (8052)
00H
00H
00H
0xxxxxxxB
0xxx0000B

IE
Các thanh ghi định thời
SCON
SBUF
PCON (HMOS)
PCON (CMOS)

Bảng 1.5. Trạng thái của các thanh ghi sau khi reset

18
Downloaded by tran quang ()



lOMoARcPSD|9242611

CHƯƠNG 2: TÌM HIỂU VỀ LCD 16X2
2.1. TỔNG QUAN VỀ LCD
2.1.1. Giới thiệu về LCD
Thế kỷ 21 đã chứng kiến sự phát triển vượt bậc của các ngành công nghệ. Một
trong số các cơng nghệ đó chúng ta phải kể đến đó là cơng nghệ LCD. Nhà vật lý
người Áo Frinitzen Reinitzer đã phát hiện ra các tinh thể lỏng vào năm 1888. Màn
hình tinh thể lỏng đầu tiên đuợc sản xuất vào những năm 70 của thế ký 20 với những
ứng dụng ban đầu trong máy tính, đồng hồ và quan sát phần tử…. Cơng nghệ màn
hình tinh thể lỏng phát triển rất mạnh mẽ với giá thành ngày càng thấp, tiêu hao ít
năng luợng kiểu dáng gọn nhẹ với rất nhiều các ứng dụng trong thực tế như: tivi, màn
hình máy tính, màn hình điện thoại…
Ngày nay, thiết bị hiển thị LCD (Liquid Crystal Display) được sử dụng trong
rất nhiều các ứng dụng của VĐK. LCD có rất nhiều ưu điểm so với các dạng hiển thị
khác: Nó có khả năng hiển thị kí tự đa dạng, trực quan (chữ, số và kí tự đồ họa), dễ
dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn rất ít tài
nguyên hệ thống và giá thành rẽ …
LCD là tên viết tắt của (Liquid Crystal Display) hay còn được biết đến cái tên dân dã
hơn là màn hình tinh thể lỏng. Có rất nhiều loại màn hình LCD khác nhau. Với những
ứng dụng nhỏ thường sử dụng loại màn hình cỡ nhỏ đơn giản là loại LCD16x2. Các
ký tự được hiển thị trên màn hình với 2 hàng, mỗi hàng hiển thị được 16 ký tự.

Hình 2.1. Màn hình LCD 16x2
Có thể chia các module LCD làm 2 loại chính:
+ Loại hiển thị ký tự (charater LCD) gồm có các các kích cỡ 16x1(16 kí tự x1
dòng) ;16x2(16 ký tự x2 dòng); 16x4 (16 ký tự x4 dòng); 20x1 (20 ký tự x1 dòng).
+ Loại hiển thị đồ họa (graphic LCD) đen trắng hoặc màu gồm các kích cỡ 1,47

inch (128x128 điểm ảnh); 1,8 inch (128x160 điểm ảnh); 2,4 inch (240x320 điểm ảnh).
19
Downloaded by tran quang ()


lOMoARcPSD|9242611

Thông số kỹ thuật:
 Điện áp hoạt động là 5 V.
 Kích thước: 80 x 36 x 12.5 mm
 Chữ đen, nền xanh lá
 Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với
Breadboard.
 Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, đi dây
điện.
 Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử dụng
ít điện năng hơn.
 Có thể được điều khiển với 6 dây tín hiệu.
2.1.2. Sơ đồ, chức năng, liên kết các chân của LCD
Sơ đồ chân LCD:

Hình 2.2. Sơ đồ chân LCd 16x2
Mơ tả các chân, loại 16 chân
- VDD (chân 2): cấp nguồn dương 5v +/ VSS (chân 1): cấp nguồn âm (GND)
- VEE (chân 3): điều khiển độ tương phản của LCD (contrast), chân này cần được nối
với 1 biến trở 10k để chia áp. Trong khi hoạt động, chỉnh để thay đổi giá trị biến trở
để đạt được độ tương phản cần thiết, sau đó giữ mức biến trở này. Các chân điều
khiển RS, R/W, EN và các đường dữ liệu được nối trực tiếp với vi điều khiển. Tùy
theo chế độ hoạt động 4bit hay 8bit mà các chân từ D0 đến D3 có thể bỏ qua hoặc nối
với vi điều khiển.


20
Downloaded by tran quang ()


lOMoARcPSD|9242611

o Trong một số LCD, 2 chân LED nền được đánh số 15 và 16 nhưng trong một
số trường hợp 2 chân này được ghi là A (Anode) và K (Cathode), gọi là 2 chân
nguồn cho “đèn LED nền”.
- Chân chọn thanh ghi RS (chân 4_Register Select):
Có hai thanh ghi rất quan trọng trong LCD, chân này cho phép lựa chọn 1 trong
2 thanh ghi IR hoặc DR để làm việc. Vì cả 2 thanh ghi này đều được kết nối với các
chân Data của LCD nên cần 1 bit để lựa chọn giữa chúng. Nếu RS=0, thanh ghi IR
được chọn, 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 và nếu RS=1 thanh ghi DR được chọn, 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úng ta đều biết thanh
ghi IR là thanh ghi chứa mã lệnh cho LCD, vì thế nếu muốn gửi 1 mã lệnh đến LCD
thì chân RS phải được reset về 0. Ngược lại, khi muốn ghi mã ASCII của ký tự cần
hiển thị lên LCD thì chúng ta sẽ set RS=1 để chọn thanh ghi DR. Hoạt động của chân
RS được mô tả như sau:
o Thanh ghi IR: Để điều khiển LCD, người dùng phải “ra lệnh” thông qua tám
đường bus DB0-DB7. Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng.
Người dùng chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR.
Nghĩa là, khi ta nạp vào thanh ghi IR một chuỗi 8-bit, chip HD44780 sẽ tra
bảng mã lệnh tại địa chỉ mà IR cung cấp và thực hiện lệnh đó.
 VD: Lệnh “hiển thị màn hình” có địa chỉ lệnh là 00001100 (DB7...DB0)
Lệnh “hiển thị màn hình và con trỏ” có mã lệnh là 00001110
o Thanh ghi DR: Thanh ghi DR dùng để chứa dữ liệu 8 bit để ghi vào vùng
RAM DDRAM hoặc CGRAM (ở chế độ ghi) hoặc dùng để chứa dữ liệu từ 2

vùng RAM này gởi ra cho MPU (ở chế độ đọc). Nghĩa là, khi MPU ghi thông
tin vào DR, mạch nội bên trong chip sẽ tự động ghi thông tin này vào DDRAM
hoặc CGRAM. Hoặc khi thông tin về địa chỉ được ghi vào IR, dữ liệu ở địa chỉ
này trong vùng RAM nội của HD44780 sẽ được chuyển ra DR để truyền cho
MPU. Bằng cách điều khiển chân RS và R/W chúng ta có thể chuyển qua lại
giữ 2 thanh ghi này khi giao tiếp. Xem bảng thiết lập đối với hai chân RS và
R/W theo mục đích giao tiếp với MPU.
=> Bằng cách điều khiển chân RS và R/W chúng ta có thể chuyển qua lại giữ 2
thanh ghi này khi giao tiếp với MPU. Bảng sau đây tóm tắt lại các thiết lập đối
với hai chân RS và R/W theo mục đích giao tiếp.

21
Downloaded by tran quang ()


lOMoARcPSD|9242611

RS

R/W

Chức năng

0

0

Ghi vào thanh ghi IR để ra lệnh cho LCD

0


1

Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở
DB0-DB6

1

0

Ghi vào thanh ghi DR

1

1

Đọc dữ liệu từ DR

Bảng 2.1. Các thiết lập đối với hai chân RS và R/W
- Chân đọc/ghi R/W (chân 5)
Chân lựa chọn giữa việc đọc và ghi. Nếu R/W=0 thì dữ liệu sẽ được ghi từ bộ
điều khiển ngoài (vi điều khiển AVR chẳng hạn) vào LCD. Nếu R/W=1 thì dữ liệu sẽ
được đọc từ LCD ra ngồi. Tuy nhiên, chỉ có duy nhất 1 trường hợp mà dữ liệu có thể
đọc từ LCD ra, đó là đọc trạng thái LCD để biết LCD có đang bận hay khơng (cờ
Busy Flag - BF). Do LCD là một thiết bị hoạt động tương đối chậm (so với vi điều
khiển), vì thế một cờ BF được dùng để báo LCD đang bận, nếu BF=1 thì chúng ta
phải chờ cho LCD xử lí xong nhiệm vụ hiện tại, đến khi nào BF=0 một thao tác mới
sẽ được gán cho LCD. Vì thế, khi làm việc với Text LCD chúng ta nhất thiết phải có
một chương trình con tạm gọi là wait_LCD để chờ cho đến khi LCD rảnh. Có 2 cách
để viết chương trình wait_LCD. Cách 1 là đọc bit BF về kiểm tra và chờ BF=0, cách

này đòi hỏi lệnh đọc từ LCD về bộ điều khiển ngồi, do đó chân R/W cần được nối
với bộ điều khiển ngoài. Cách 2 là viết một hàm delay một khoảng thời gian cố định
nào đó (tốt nhất là trên 1ms). Ưu điểm của cách 2 là sự đơn giản vì khơng cần đọc
LCD, do đó chân R/W không cần sử dụng và luôn được nối với GND. Tuy nhiên,
nhược điểm của cách 2 là khoảng thời gian delay cố định nếu quá lớn sẽ làm chậm
quá trình thao tác LCD, nếu quá nhỏ sẽ gây ra lỗi hiển thị.
- Chân cho phép E (chân 6_Enable)
Chân cho phép LCD hoạt động (Enable), chân này cần được kết nối với bộ điều
khiển để cho phép thao tác LCD. Để đọc và ghi data từ LCD chúng ta cần tạo một
“xung cạnh xuống” trên chân EN, nói theo cách khác, muốn ghi dữ liệu vào LCD
trước hết cần đảm bảo rằng chân EN=0, tiếp đến xuất dữ liệu đến các chân D0^7, sau
đó set chân EN lên 1 và cuối cùng là xóa EN về 0 để tạo 1 xung cạnh xuống, nói cách
khác 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

22
Downloaded by tran quang ()


lOMoARcPSD|9242611

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à 450ns.
- Chân D0+D7:
Đâ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=1 Cũ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 khì dữ liệu nào
lên LCD
Cờ báo bận BF: (Busy Flag)
Khi thực hiện các hoạt động bên trong chíp, mạch nội bên trong cần một
khoảng thời gian để hoàn tất. Khi đang thực thi các hoạt động bên trong chip như thế,
LCD bỏ qua mọi giao tiếp với bên ngoài và bật cờ BF (thơng qua chân DB7 khi có
thiết lập RS=0, R/W=1) lên để báo cho MPU biết nó đang “bận”. Dĩ nhiên, khi xong
việc, nó sẽ đặt cờ BF lại mức 0.
Bộ đếm địa chỉ AC: (Address Counter)
Như trong sơ đồ khối, thanh ghi IR không trực tiếp kết nối với vùng RAM
(DDRAM và CGRAM) mà thông qua bộ đếm địa chỉ AC. Bộ đếm này lại nối với 2
vùng RAM theo kiểu rẽ nhánh. Khi một địa chỉ lệnh được nạp vào thanh ghi IR, thông
tin được nối trực tiếp cho 2 vùng RAM nhưng việc chọn lựa vùng RAM tương tác đã
được bao hàm trong mã lệnh.
Sau khi ghi vào (đọc từ) RAM, bộ đếm AC tự động tăng lên (giảm đi) 1 đơn vị và nội
dung của AC được xuất ra cho MPU thơng qua DB0-DB6 khi có thiết lập RS=0 và
R/W=1 (xem bảng tóm tắt RS - R/W).
Lưu ý: Thời gian cập nhật AC khơng được tính vào thời gian thực thi lệnh mà được
cập nhật sau khi cờ BF lên mức cao (not busy), cho nên khi lập trình hiển thị, bạn phải
delay một khoảng tADD khoảng 4uS-5uS (ngay sau khi BF=1) trước khi nạp dữ liệu
mới.

23
Downloaded by tran quang ()


lOMoARcPSD|9242611


Hình 2.3. Giản đồ xung cập nhật AC
Vùng RAM hiển thị DDRAM : (Display Data RAM)
Đây là vùng RAM dùng để hiển thị, nghĩa là ứng với một địa chỉ của RAM là
một ơ kí tự trên màn hình và khi bạn ghi vào vùng RAM này một mã 8 bit, LCD sẽ
hiển thị tại vị trí tương ứng trên màn hình một kí tự có mã 8 bit mà bạn đã cung cấp.
Hình sau đây sẽ trình bày rõ hơn mối liên hệ này :

Hình 2.4. Mối liên hệ giữa địa chỉ của DDRAM và vị trí hiển thị của LCD
Vùng RAM này có 80x8 bit nhớ, nghĩa là chứa được 80 kí tự mã 8 bit. Những vùng
RAM cịn lại khơng dùng cho hiển thị có thể dùng như vùng RAM đa mục đích.
Lưu ý là để truy cập vào DDRAM, ta phải cung cấp địa chỉ cho AC theo mã HEX
Vùng ROM chứa kí tự CGROM: Character Generator ROM
24
Downloaded by tran quang ()


lOMoARcPSD|9242611

Vùng ROM này dùng để chứa các mẫu kí tự loại 5x8 hoặc 5x10 điểm ảnh/kí tự,
và định địa chỉ bằng 8 bit. Tuy nhiên, nó chỉ có 208 mẫu kí tự 5x8 và 32 mẫu kí tự
kiểu 5x10 (tổng cộng là 240 thay vì 2^8 = 256 mẫu kí tự). Người dùng không thể thay
đổi vùng ROM này.

CHƯƠNG 3: THỰC HIỆN MƠ HÌNH ĐỒ ÁN
3.1. MẠCH NGUN LÝ

25
Downloaded by tran quang ()



×