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

đề tài môn thực tập vi điều khiển là thiết kế mạch “đo tần số và hiển thị qua 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 (304.07 KB, 35 trang )

LỜI MỞ ĐẦU
Ngày nay bộ vi điều khiển (Micro-controller) đã rất phổ biến trong các
thiết bị điện và điện tử dân dụng, các bộ vi điều khiển khống chế hoạt động của
các thiết bị như TV, máy giặt, đầu đọc laser, điện thoại…Trong hệ thống sản
xuất tự động, bộ vi điều khiển được sử dụng trong robot, dây chuyền tự động.
Các hệ thống càng thông minh thì vai trò của vi điều khiển càng quan trọng.
Nhưng bộ vi điều khiển là gì, nó có tác dụng và hoạt động như thế nào?
Thực ra bộ vi điều khiển (Micro-controller) là một mạch tích hợp trên một
bộ Chíp có thể lập trình được, dùng để điều khiển hoạt động của hệ thống. Bộ vi
điều khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin, đo lường thời gian và
tiến hành đọc mở một cơ cấu nào đó.Người lập trình có thể sử dụng nhiều ngôn
ngữ để lập trình cho vi điều khiển. Nhưng thông thường người ta thường sử
dụng hai ngôn ngữ chính để lập trình là: ngôn ngữ lập trình C và Assembly.
Trong qúa trình thực tập và đặc biệt được sự giúp đỡ tận tình của các
thầy côn bộ môn điện tự động công nghiệp khoa Điện –Điện tử tàu biển trường
đại học Hàng Hải Việt Nam - nhóm sinh viên chúng em đã được giao đề tài
môn thực tập vi điều khiển là thiết kế mạch “đo tần số và hiển thị qua LCD”.
Nội dung đồ án gồm 3 phần:
Phần I : cơ sở lý thuyết liên quan đến nội dung đồ án
Phần II : trình tự thiết kế và hoàn chỉnh đồ án
Phần III : kết luận tổng quan về đồ án
Tuy đã rất cố gắng tìm hiểu,nghiên cứu và hoàn thiện bài thực tập nhưng
có thể vẫn còn có những sai sót. Chúng em rất mong nhận được sự góp ý của
thầy giáo và các bạn để có thêm những kiến thức vững chắc trong lĩnh vực điện
tử đang theo học. Chắc chắn những kiến thức đó sẽ giúp chúng em rất nhiều
trong việc nghiên cứu học tập và công tác sau này.
1
Chúng em xin chân thành cảm ơn !
Giáo viên hướng dẫn : Nguyễn Văn Tiến
Phạm Văn Toàn
Sinh viên thực hiện : Nguyễn Văn Hà


Nguyễn Thị Hằng
Nguyễn Trọng Hiếu
Nguyễn Sỹ Đạt
Hoàng Đình Kì
Lớp ĐTĐ51ĐH1 -N01
2
BỘ ĐO TẦN SỐ HIỂN THỊ BẰNG MÀN
HÌNH LCD
I. CƠ SỞ LÝ THUYẾT LIÊN QUAN NỘI DUNG ĐỒ ÁN
1. Họ vi điều khiển 8051
Ngày nay trong quá trình công nghiệp hoá và hiện đại hoá cần đến các bộ vi
điều khiển để hỗ trợ cho các bộ điều khiển ngày càng phát triển và hoàn thiện
hơn. Mỗi bộ vi điều khiển thường được chế tạo thành một chíp, trên đó có các
cổng vào ra, các bộ nhớ để có thể phối ghép với các thiết bị khác và thực hiện
các chức năng điều khiển. Trong các bộ vi điều khiển hiện nay họ MCS_51 của
hãng INTEL là thông dụng nhất, để nhìn nhận một cách tổng quát về họ
MCS_51 ta có bảng tổng kết.
Tên gọi Công
nghệ
Rom trong Rom ngoài Ram trong Ram ngoài Timmer/Counter
8031 NMOS Không 64Kbyte 128Kbyte 64Kbyte 2
8051 NMOS 4Kbyte 64Kbyte 128Kbyte 64Kbyte 2
8751 NMOS 4Kbyte
EPROM
64Kbyte 128Kbyte 64Kbyte 2
8032 NMOS Không 64Kbyte 256Kbyte 64Kbyte 3
8052 NMOS 4Kbyte 64Kbyte 256Kbyte 64Kbyte 3
Phần lớn các bộ vi xử lý 8051 được đóng vỏ theo kiểu hai hàng DIL với
tổng cộng 40 chân. Một số khác được đóng vỏ theo kiểu hình vuông PLCC với
44 chân. Hình sau là sơ đồ chân của IC8051 theo kiểu DIL 40 chân.

3
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
PO.0
PO.1
PO.2
PO.3
PO.4
PO.5
PO.6
PO.7
21
22
23
24
25

26
27
28
1
2
3
4
5
6
7
8
39
38
37
36
35
34
33
32
AD5
AD1
AD0
AD3
AD2
AD4
AD6
AD7
A11
A9
A10

A15
A13
A12
A14
A8
13
11
10
12
15
14
16
17
RD\
WR\
T1
T2
INT1
INT2
TXD
RXD
33p
33p
11,0592 MHz
29
30
31
9
PSEN
ALE

EA
RST
40
20
19
18
Giải thích sơ đồ chân và chức năng của 8051.
Số
chân
Ký hiệu Chức năng
1÷8 P1.0÷P1.7
Cổng vào/ra Port
9 Reset Lối vào Reset tích cực ở mức cao
10÷17 P3.0÷p3.7
Cổng vào/ra Port và tất cả các đường dẫn với
chức năng đặc biệt
18 XLAT 2 Lối vào của bộ dao động thạch anh bên trong
19 XLAT 1 Lối vào của bộ dao động thạch anh bên trong
20 V
SS
Chân nguồn nối 0V
21÷28 P2.0÷P2.7
Cổng vào/ra Port 2 nối các đường địa chỉ cao từ
A8÷A15
29 PSEN Dùng cho bộ nhớ chương trình ngoài
30 ALE Cho phép chốt địa chỉ
31 EA Để làm việc với Rom ngoài hay Rom trong
32÷39 P0.7÷P0.0
Cổng vào/ra Port 0, các đường địa chỉ thấp từ
4

A7÷A0
40 V
DD
Nguồn cung cấp 5V
1.1.Sơ đồ khối của bộ vi xử lý 8051:
EA
RST
ALE
PSEN
Oscillation
CPU
Bus
control
TIMER 0
Interrupt
control
Other
registers
Serial port
INT1*
INT0*
TIMER 1
P1P0 P2 P3
I/O Port
RXD*TXD*
Serial
port
128 Byte
RAM
ROM

4K
TIMER 0
TIMER 1
-Interrupt control: Điều khiển ngắt
-Other registere: Các thanh ghi khác : C¸c thanh ghi kh¸c
-128 Byte RAM: :
-Timer 1, 0: Bộ định thời
-CPU: Đơn vị điều khiển trung tâm
-Osillator: Mạch dao động
-Bus control: Điều khiển Bus
-I/O port: Các Port xuất/nhập
-Serial Port : Port nối tiếp
-Address/data: Địa chỉ dữ liệu
-Cổng truyền nối tiếp RS - 232
1.1.2 Cách tổ chức và truy cập bộ nhớ của 8051
5
Bộ nhớ của 8051 nói riêng và họ MCS_51 nói chung chia làm 2 vùng bộ
nhớ riêng biệt: Bộ nhớ chương trình và Bộ nhớ dữ liệu.
1.1.2.1 Bộ nhớ chương trình (Program Memory)
Bộ nhớ chương trình (ROM, EPROM) có thể đọc nhưng không ghi được,
bộ nhớ chương trình có thể tới 64 Kbyte. Đối với 8051 có ROM trong với dung
lượng 4 Kbyte, với những loại không có ROM trong ta phải dùng ROM ngoài để
lưu giữ chương trình, khi đọc ROM ngoài phải thông qua tín hiệu PSEN
(Program Store Enable). Do vậy tín hiệu PSEN chỉ có tác dụng với ROM ngoài
còn đối với ROM trong tín hiệu PSEN sẽ không có tác dụng.
Sau khi RESET CPU bắt đầu thực hiện từ vùng 0000H, tiếp theo là đến
vùng đặt các ngắt của XPU từ địa chỉ 0003H đến 0023H. Việc sử dụng ROM
trong (đối với những loại có ROM trong) và ROM ngoài được biểu hiện bằng
cách sử dụng chân EA (External Acess).
*Khi chân EA nối với Vcc:

- Đối với những loại có ROM trong 4 Kbyte nh 8051 thì chương trình
thực hiện từ địa chỉ 0000H đến 0FFFH của ROM trong sau đó tiếp tục
từ địa chỉ 1000H đến FFFFH của ROM ngoài.
- Đối với những loại có ROM trong là 8 Kbyte sẽ chọn từ địa chỉ 0000H
đến 1FFFH của ROM trong và từ địa chỉ 2000F đến FFFFH của ROM
ngoài.
- Đối với những loại có ROM trong là 16 Kbyte sẽ chọn từ địa chỉ
0000H đến 3FFFH của ROM trong và từ địa chỉ 4000G đến FFFFH
của ROM ngoài.
*Khi chân EA nối với Vss:
- Lóc đó CPU sẽ làm việc toàn bộ với ROM ngoài. Do vậy đối với những
loại không có ROM trong thì chân EA phải được nối với Vss.
Trong khi truy cập bộ nhớ ngoài CPU sẽ viết 0FFH tới bộ chốt của Port 0
như vậy nó sẽ xoá bất cứ thông tin tại Port 0 mà SFR có thể còn đang giữ, nên
việc viết ra Port 0 trong khi đang truy cập bộ nhớ ngaòi sẽ bị sai. Vì vậy nên
nhớ: không ghi ra Port 0 khi bộ nhớ chương trình ngoài đang được sử dụng.1
2.1.2.2 Bộ nhớ dữ liệu
6
Bộ nhớ dữ liệu (RAM) nếu có địa chỉ là 8 bit thì cho phép CPU 8 bit thao
tác nhanh hơn, nếu địa chỉ là 16 bit để có thể truy cập được phải thông qua thanh
ghi DPTR (Data Pointer). Với 8051 có 128 Byte RAM trong có thể ghép với 64
Kbyte RAM ngoài. Trong suốt quá trình CPU truy cập tới bộ nhớ dữ liệu sẽ phát
tín hiệu đọc RD và tín hiệu ghi WR.
Đối với 128 Byte của RAM trong bao gồm: 32 byte thấp nhất là nhóm 4
bank thanh ghi, mỗi bank thanh ghi gồm 8 thanh ghi R0 ÷ R7. Khi sử dụng các
thanh ghi trong chương trình phải nạp 2 bit vào thanh ghi Program Status Word
(PSW). Tiếp theo là 16 byte trên vùng các bank thanh ghi từ địa chỉ 20H ÷ 2FH
là vùng các bit địa chỉ, vùng này có 128 bit. Bit 0 của byte 20H có địa chỉ là 0 và
bit 7 của byte 2FH có địa chỉ là 7FH.
1.1.3 Các thanh ghi chức năng đặc biệt (Special Function Registers – SFRs)

SFRs- các thanh ghi với chức năng đặc biệt gồm có thanh ghi số liệu và
thanh ghi điều khiển nh Timer, cổng nối tiếp, hệ thống ngắt SFRs có địa chỉ từ
80H đến FFH.
Thanh ghi từ trạng thái chương trình (Program Status Word - PSW) bao gồm các
bit trạng thái phản ánh trạng thái của CPU. Thanh ghi PSW được đặt trong các
thanh ghi chức năng đặc biệt SFRs
CY AC FO RS0 OV P
*PSW 0 (Parity – P): Bit kiểm tra chẵn lẻ, được đặt bởi phần cứng
P=1: Nếu số các bit =1 trong thanh ghi ACC là lẻ
P=0: Nếu số các bit = 1 trong thanh ghi ACC là chẵn
*PSW 1: Để người dùng định nghĩa cờ.
*PSW 2 (Over flow – OV): Cờ báo tràn, được đặt khi có tràn xảy ra của
phép tính số học.
*PSW 3 (RS0): Dùng để chọn bank thanh ghi.
*PSW 4 (RSI): Dùng để chọn bank thanh ghi.
*PSW 5 (F0): Cờ trạng thái.
*PSW 6 (auxiliary Carry Flag – AC): Cờ nhớ phụ, được thành lập khi có
nhớ sang từ bit 3 của toán hạng trong phép cộng.
7
*PSW 7 (Carry Flag – CY): Cờ nhớ, được thành lập khi có sự nhớ từ bit 7
của toán hạng của bộ ALU.
1.1.4 Các chế độ địa chỉ trong 8051
1.1.4.1 Chế độ địa chỉ trực tiếp (Direct Addressing)
Trong chế độ này một toán hạng chứa địa chỉ của một ô nhớ, địa chỉ của ô
nhớ được cho rõ xác định bởi 8 bit địa chỉ còn toán hạng kia là thanh ghi. Ví dụ:
ADDA,7FH A,7FH
Câu lệnh này sẽ thực hiện cộng nội dung ô nhớ 7FH với nội dung trong
thanh ghi A, kết quả chuyển vào thanh ghi A.
Chế độ địa chỉ dùng khi làm việc với RAM trong và các thanh ghi trong
SFRx.

1.1.4.2 Chế độ địa chỉ gián tiếp (Indirect Addressing)
Chế độ địa chỉ này dùng với cả RAM trong và RAM ngoài. Trong chế độ
này một toán hạng là 1 thanh ghi được sử dụng để chứa địa chỉ của ô nhớ còn
toán hạng kia là thanh ghi. Nếu địa chỉ của ô nhí 8 bit ta có thể dùng các thanh
ghi R0 ÷ R7 của các bank thanh ghi hoặc là Stack Pointer. Nếu địa chỉ là 16 bit
ta chỉ có thể dùng thanh ghi. Ví dụ:
ADDA,@R0 A,@R0
Câu lệnh này sẽ thực hiện cộng nội dung của ô nhớ có địa chỉ đặt trong
thanh ghi R0 với nội dung trong thanh ghi A, kết quả chuyển vào thanh ghi A.
1.1.4.3 Chế độ địa chỉ thanh ghi (Regiter Addressing)
Trong chế độ này toán hạng nguồn hoặc toán hạng đích có thể là 1 trong 8
thanh ghi của bank thanh ghi đã chọn. Ví dụ:
MOVR0, B R0, B
MOVA, R7 A, R7
1.1.4.4 Chế độ địa chỉ tức thì (Immediate Addressing)
Trong chế độ này toán hạng nguồn là hằng số có kèm theo mã. Ví dụ:
MODA, #100; Nạp vào A sè 100 ở hệ cơ số 10 A, #100;
MODA, #10H; Nạp vào A sè 10 ở hệ cơ số 16 A, #10H;
8
1.1.4.5 Chế độ thanh ghi đặc trưng (Register – Specific Addressing)
Trong một số trường hợp ta dùng chế độ này để gọi thanh ghi. Ví dụ:
MOV0E0H, #1; Chuyển hằng số 1 vào trong SFR 0H
0E0H,
1.1.4.6 Chế độ địa chỉ thanh ghi chỉ số (Register – Specific Addressing)
Chế độ này chỉ đươc dùng để tra bảng (Look – Up Table). Trong chế độ
này địa chỉ nguồn hoặc địa chỉ đích được đặt trong hoặc là DPTR (Data Pointer)
hoặc là PC (Program Counter). Ví dụ:
MOVDPTR, #8100H DPTR, #8100H
MOVA, #0 A, #0
MOVA, @A+ DPTR A, @A+ DPTR

1.1.5 Cổng vào ra song song
8051 có 4 cổng vào ra song song: Port 0 (P0), Port 1 (P1), Port 2 (P2, Port
3 (P3)
• Khi cổng được sử dụng là cổng ra: Số liệu được đưa vào thanh ghi SFR
tương ứng, đồng thời được đưa ra để chốt và tiếp tục phát ra tín hiệu sau khi
việc ghi được hoàn thành, giá trị đưa ra cổng ra được thay đổi khi giá trị mới
được chốt.
• Khi cổng được sử dụng làm cổng vào: Đầu tiên là viết giá trị FFH ra cổng,
sau đó chân nào của cổng có mức điện áp thấp sẽ được nhận biết là 0 và cổng
có thể đọc vào SFRs tương ứng.
Port 0, Port 2, Port 3 ngoài các chức năng của các cổng vào/ra còn có các
chức năng khác. Để thực hiện các chức năng khác nhau thì các bit tương ứng
của các thanh ghi trong SFRs tương ứng phải được đặt (thường là bằng 1).
Port 0, Port 2 được dùng để ghép nối với bộ nhớ ngoài, Port 2 đưa ra byte
cao của 16 bit địa chỉ còn Port 0 đầu tiên đưa ra byte thấp của 16 bit địa chỉ
và sau đó có thể gửi hoặc nhận byte dữ liệu. Byte địa chỉ thấp phải được chốt
ở bên ngoài, để làm việc này thì bộ vi điều khiển phát ra tín hiệu tại chân
ALE để chốt byte địa chỉ thấp.
9
Port 3 bao gồm các ngắt, các đầu vào Timer/Counter, đầu vào/ra của cổng
nối tiếp, các tín hiệu điều khiển cho phép ghép nối với bộ nhớ ngoài.
Pin Alternate Funtion Mnemonic/Designation
P3.0
Serial Input Port
RXD
P3.1
Serial Output Port
TXD
P3.2 External Interrupt 0 INT0#
P3.3 External Interrupt 1 INT1#

P3.4 Timer/Counter 0 External Input T0
P3.5 Timer/Counter 1 External Input T1
P3.6 External Memory Write Strobe WR#
P3.7 External Memory Write Strobe RD#
1.1.6 Timer/ Counter
8051 có 2 Timer/Counter 16 bit, cả 2 có thể hoạt động nh Timer cũng có
nh Counter. Khi hoạt động nh Timer thanh ghi được tăng lên 1 tại mọi chu kỳ
máy, ta có thể coi là đếm chu kỳ máy, mỗi chu kỳ máy gồm 12 chu kỳ dao động
của thạch anh. Khi hoạt động nh Counter thanh ghi tăng tương ứng với sự thay
đổi 1 về 0 tại đầu vào chân T0, T1. Chức năng là Timer hay Counter phải được
lùa chọn đồng thời cũng phải chọn 1 trong 4 chế độ hoạt động. Việc khởi tạo
hoạt động và điều khiển các Timer/Counter dùa trên 2 thanh ghi TMOD và
TCON trong vùng các thanh ghi có chức năng đặc biệt SFRs.
1.1.6.1 Thanh ghi TMOD (Timer/ Counter Mode Control Register)
GATE C/T M1 M0 GATE C/T M1 M0
*Gate:
- Khi GATE = 1: Timer/Counter “x” được phép hoạt động chỉ khi chân
“INTx” ở mức cao và chân điều khiển “TRx” được đặt.
- Khi GATE = 0: Timer “x” được phép hoạt động bất cứ lúc nào bit điều
khiển được đặt
*C/T: Lùa chọn Counter hay Timer
- C/T = 1: Counter, nội dung bộ đếm được tăng lên bởi xung ngoài kích
vào T0 (P3.4).
- C/T = 0: Timer
10
*M0, M1 : Chấp nhận đếm theo các giá trị tương ứng nh sau
M1M0Mode M0 Mode
000; đếm 13 bit 0 0
102; đếm 8 bit tự động nạp lại 0
113 ; Timer 1 không hoạt động 1

1.1.6.2 Thanh ghi TCON (Timer/ Counter Control Register)
TF1 TR1 TE0 TR0 IE1 IT1 IE0 IT0
*TF1 (TCON 7): Cờ báo tràn của Timer 1. Đặt bởi phần cứng khi
Timer/Counter tràn. Xoá bởi phần cứng khi xử lý vectơ phục vụ ngắt
*TR1 (TCON 6): Bit điều khiển Timer 1 được đặt và xoá bằng phần mềm
*TF0 (TCON5): Cờ báo tràn của Timer 0. Đặt bởi phần cứng khi
Timer/Counter tràn. Xoá bởi phần cứng khi xử lý vectơ phục vụ ngắt
*TR0 (TCON 4): Bit điều khiển Timer được đặt và xoá bằng phần mềm
*IEI (TCON 3): Cờ ngắt 1 theo sườn. Được đặt bởi phần cứng khi sườn của
xung ngắt ngoài đưa vào chân INT# được phát hiện và xoá khi xử lý ngắt.
*IT1 (TCON 2): Bit điều khiển ngắt 1. Đặt và xoá bằng phần mềm, việc đặt IT1
tại sườn xuống của tín hiệu và tại INT#, việc xoá IT1 khi tín hiệu ngoài tại chân
INT1# được phát hiện và xoá khi xử lý.
*IE0 (TCON 1): Cờ ngắt 0 theo sườn. Được đặt bởi phần cứng của xung ngắt
ngoài đưa vào chân INT0# được phát hiện và xoá khi xử lý ngắt.
*IT0 (TCON 0): Bit điều khiển kiểu ngắt 0. Đặt và xoá bằng phần mềm việc đặt
IT0 tại sườn xuống của tín hiệu và tại INT0#, việc xoá IT0 khi tín hiệu ngoài tại
chân INT0# là mức thấp.
1.1.6.3 Các chế độ hoạt động của Timer/Counter
*Mode 0: Là bộ đếm 8 bit, tín hiệu ngắt xuất hiện khi đếm tràn, vì vậy nó đếm
được 2
13
hay 8192 xung sẽ cho 1 tín hiệu báo ngắt.
*Mode 1: Hoạt động giống nh Mode 0 nhưng ở chế độ này là 16 bit tức là đếm
được 2
16
hay 65536 xung sẽ cho tín hiệu báo ngắt.
*Mode 2: Chế độ 8 bit tự động nạp lại. TLi sẽ làm việc nh bé
11
Timer/Counter 8 bit, khi đếm tràn số đếm được đặt trong THi (Phần byte cao

của thanh ghi 16 bit) sẽ tự động nạp vào trong TLi và bộ đếm lại tiếp tục làm
việc, tín hiệu ngắt được phát ra khi Timer đếm tràn và tự động nạp lại.
*Mode 3: Timer 1 không hoạt động vào giữa số đếm của nó,, việc này đồng
nghĩa với đặt TR1 = 0. Timer 0 ở chế độ này thiết lập TL0 và TH0 nh 2 bộ đếm
riêng biệt, TL0 sử dụng các bit điều khiển của Timer 0, TH0 với chức năng và
Timer (đếm chu kỳ máy) và tiếp nhận sử dụng TR1 và TF1 từ Timer 1. Vì vậy
TH0 coi là Timer 1.
2. Tổng quan LCD
Hiện nay trên thị trường có rất nhiều loại LCD với mẫu mã và hình dạnh
khác nhau. Dựa vào kích cỡ và hiển thị ta có thể chia LCD làm 2 loại chính:
- Loại hiển thị ký tự (character LCD) có các kích cỡ: 16x1, 16x2,
16x4…mỗi ký tự được tạo thành bởi một ma trận các điểm sáng kích
thước 5x7 hoặ 5x10 điểm ảnh.
- Loại hiển thị đồ họa (Grafic LCD) đen trắng hoặc màu, gồm các kíc
thước 1.47 inch (128x128 điểm ảnh) 1,8 inch (128x160 điểm ảnh), 2
inch (176x220 điểm ảnh), 2,2 inch (240x320 điểm ảnh), 2,4 inch
(240x320 điểm ảnh), 3,5 inch (320x240 điểm ảnh), 4,3 inch (480x272
điểm ảnh ), 7 inch (800x480 điểm ảnh), 8 inch (800x600 điểm ảnh).
Được dùng nhiều trong điện thoại di động, máy ảnh số, camera…
2.1. Cấu tạo LCD
Hình ảnh minh họa hình dạng thực tế LCD:
12
Hình dạng thực tế của LCD 16x2
LCD được nói trong mục này có 16 chân, chức năng của các chân được
cho trong bảng 3.
Chân Ký hiệu I/O Mô tả
1 Vss - Đất
2 Vcc - Dương nguồn 5 V
3 Vee - Cấp nguồn cho điều khiển
4 RS I

RS= 0 chọn 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 dữ
liệu
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
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 chân của LCD
a. Chân Vcc, Vss và Vee.
Cấp dương nguồn -5V và đất tương ứng thì Vee được dùng để điều khiển
độ tương phản của LCD.
b. Chân chọn thanh ghi RS (Register select).
13
Có hai thanh ghi rất quan trọng bên trong LCD, chân RS được dùng để
chọn các 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 đến một lệnh như xóa màn hình, 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.
c. Chân đọc/ghi(R/W).
Đầu đọc/ghi cho phép người dùng ghi thông tin trên LCD. Khi R/W = 0
thì ghi, R/W = 1 thì đọc.
d. 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 cấp đến chân đữ liệu thì một mức xung từ
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
chốt dữ liệu. Xung này phải rộng tối thiểu 450ns.
e. Chân D0- D7.
Đây là 8 chân dữ liệu 8 bit, được dùng để gửi thông tin lên LCD hoặc đọc
nội dung của các thanh ghi trên 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 đến 9 đến các chân này khi RS =
1.
Cũng có các mã lệnh mà có thể gửi đến LCD để xóa màn hình hoặc đưa
con trỏ về đầu dòng hoặc nhấp nháy con trỏ.
Chúng ta cũng dùng RS = 0 để kiểm tra bit cờ bận để xem LCD có sẵn
sàng nhận thông tin hay không. 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 bằng 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 = 0 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 kỳ dữ liệu nào lên LCD.
14
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ỏ (Con trỏ dịch sang trái)
6 Tăng con trỏ (Con trỏ dịch sang phải)
5 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 con trỏ, 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 và ma trận 5 x7
Bảng 4. các mã lệnh LCD
2.2 Các lệnh giao tiếp LCD
Để thực hiện các giao tiếp với LCD cần có các lệnh và địa chỉ lệnh.
Các lệnh được mô tả dưới bảng sau:
Lệnh
RS
R/W
Mô tả
Thời
gian
thực
Xóa
màn
hình
0 0 0 0 0 0 0 0 0 1
Xóa toàn bộ màn
hình và đặt địa
chỉ 0 của DD
RAM vào bộ nhớ
1.64
µs
15

Trở
về
đầu
dòng
0 0 0 0 0 0 0 0 1 -
Đặt địa chỉ 0 của
DD RAM như bộ
đếm địa chỉ. Trả
hiển thị dịch về
vị trí gốc DD
RAM không thay
đổi
1.64
µs
Đặt
chế
độ
truy
nhập
0 0 0 0 0 0 0 1 1 S
/
D
Đặt hướng
chuyển dịch con
trỏ và xác định
dịch hiển thị các
thao tác này
được thực hiện
khi đọc và ghi dữ
liệu

40µs
Điều
khiển
bật/tắ
t hiển
thị
0 0 0 0 0 0 1 D C B
Đặt bật/ tắt màn
hình
(D) Bật/ tắt con
trỏ
(C) Và nhấp
nháy ký tự ở vị
trí con trỏ(B)
40µs
Dịch
hiển
thị và
con
trỏ
0 0 0 0 0 1 S R - -
/ /
C L
Dịch con trỏ và
dịch hiển thị mà
không thay đổi
DD RAM
40µs
Đặt 0 0 0 0 1 D N F - - Thiết lập độ dài 40µs
16

chức
năng
L
dữ liệu (DL) số
dòng hiển thị (L)
và dòng ký tự (F)
Đặt
địa
chỉ
chi
CG
RAM
0 0 0 1 AGC
Thiết lập địa chỉ
C6 RAM dữ liệu
CG RAM được
gửi đi và nhận
sau thiết lập này
40µs
Thiết
lập
địa
chỉ
DD
RAM
0 0 1 ADD
Thiết lập địa chỉ
DD RAM dữ liệu
DD RAM được
gửi và nhận sau

thiết lập này
40µs
Cờ
bận
đọc
và địa
chỉ
0 1 BF ADD
Cờ bận đọc (BF)
báo hoạt động
bên trong đang
được thực hiện
và đọc nội dung
đếm địa chỉ
40µs
Ghi
dữ
liệu
CG
hoặc
DD
RAM
1 0 GHI DỮ LIỆU
Ghi dữ liệu vào
DD RAM hoặc
CG RAM
40µs
17
Đọc
dữ

liệu
CG
hoặc
DD
RAM
1 1 ĐỌC DỮ LIỆU
Đọc dữ liệu từ
CG RAM hoặc
DD RAM
40µs
Bảng 5. Các lệnh giao tiếp LCD
• Ghi chú:
- Thời gian thời gian cực đại khi tần số fCP hoặc fosc là 250KHz.
- Thời gian thực thay đổi khi tần số thay đổi. Khi tần số fEP hay fosc là
270kHz thì thời gian thực hiện được tính 250/270 x 4 = 35 µs…
- Các ký hiệu viết tắt trong bảng là :
DD RAM : RAM dữ liệu hiển thị (Display Data RAM).
CG RAM : RAM máy phát ký tự (character Generator).
ACC : Địa chỉ của RAM máy phát ký tự.
ADD : Địa chỉ của RAM dữ liệu hiển thị phù hợp với địa
chỉ con trỏ
AC : Bộ đếm địa chỉ (Address Counter) được dùng cho
các địa chỉ DD RAM và CG RAM.
1/D : Tăng 1/D = 0
S=1 : Kèm dịch hiển thị.
S/C=1 : Dịch hiển thị
S/C=0 : Dịch con trỏ
R/L=1 : Dịch sang phải
R/L=0 : Dịch sang trái
DL=1 : 8 bit

18
DL=0 : 4 bit
N=1 : 2 dòng
N=0 : 1 dòng
F=1 : Ma trận điểm 5x10
F=0 : Ma trận điểm 5x7
BF=1 : LCD bận
BF=0 : LCd có thể nhận lệnh.
3. Tạo tần số sử dụng IC 555
3.1. Cấu tạo của IC 555:
Cấu tạo LM555 gồm OP-amp so sánh điện áp, mạch lật và transistor để
xả điện. Cấu tạo của IC đơn giản nhưng họat động tốt. Bên trong gồm 3 điện
trở mắc nối tiếp chia điện áp Vcc thành 3 phần. Cấu tạo này tạo nên điện áp
chuẩn. Điện áp 1/3 Vcc nối vào chân dương của OP-amp 1 và điện áp 2/3 Vcc
nối vào chân âm của OP-amp 2. khi điện áp ở chân 2 nhỏ hơn 1/3 Vcc, chân S =
[1] và FF được kích. Khi điện áp ở chân 6 lớn hơn 2/3 Vcc, chân R của FF = [1]
và FF được reset.
Hình 4. Sơ đồ nguyên lý của IC 555
19
3.2. Giải thích sự dao động:
Ký hiệu 0 là mức thấp bằng 0V, 1 là mức cao gần bằng Vcc. Mạch FF là
loại RS Flip-Flop, Khi S = [1] thì Q= [1] và
Q
= [0].
Sau đó, khi S = [0] thì Q=[1] và
Q
= [0].
Khi R = [1] thì
Q
= [1] và Q = [0].

Tóm lại, khi S = [1] thì Q = [1] và khi R = [1] thì Q = [0] bởi vì
Q
= [1],
transistor mở dần, cực C nối đất. Cho nên điện áp không nạp vào tụ C, điện áp ở
chân 6 không vượt quá V2. Do lối ra của OP-amp 2 ở mức 0, FF không reset.
3. 3.Giai đoạn ngõ ra ở mức 1
Khi bấm công tắc khởi động, chân 2 ở mức 0. Vì điện áp ở chân 2 (V-)
nhỏ hơn V1(V+), ngõ ra của OP-amp 1 ở mức 1 nên S = [1], Q = [1] và
Q
= [0].
Ngõ ra của IC ở mức 1. Khi
Q
= [0], transistor tắt, tụ C tiếp tục nạp qua R, điện
áp trên tụ tăng. Khi nhấn công tắc lần nữa OP-amp 1 có V- =[1] lớn hơn V+ nên
ngõ ra của OP-amp 1 ở mức 0, S=[0]q và
Q
vẫn không đổi. Trong khi điện áp tụ
C nhỏ hơn V2, FF vẫn giữ nguyên trạng thái đó.
3.4.Giai đoạn ngõ ra ở mức 0:
Khi tụ C nạp tiếp, OP-amp 2 có V+ lớn hơn V-=2/3 Vcc, R=[1] nên
Q=[0] và
Q
=[1]. Ngõ ra của IC ở mức 0.
20

Q
=[1], transisitor mở dẫn, OP-amp 2 có V+ = [0] bé hơn V-, ngõ ra
của OP-amp 2 ở mức 0. Vì vậy Q và
Q
không đổi giá trị, tụ C xả điện thông qua

transistor.
Hình5. Sơ đồ chân IC 555
3.5. Khâu tạo xung 555 trong bài
Tần số xung trong 555
21
Nhìn vào sơ đồ mạch trên ta có công thức tính tần số , độ rộng xung.
+ Tần số của tín hiệu đầu ra là
f = 1/(ln2.C.(R1 + 2R2))
+ Chu kì của tín hiệu đầu ra : t = 1/f
+ Thời gian xung ở mức H (1) trong một chu kì
t1 = ln2 .(R1 + R2).C
+ Thời gian xung ở mức L (0) trong 1 chu kì
t2 = ln2.R2.C
II. TRÌNH TỰ THIẾT KẾ VÀ HOÀN CHỈNH ĐỒ ÁN
1. Lập lưu đồ thuật toán
a. Lưu đồ thuật toán tính tần số:
22
S
S Đ
Đ
S Đ
23
BEGIN
P3.7=1
P3.7=0
P3.5=1
P3.5=0
TMOD=01010001B
TH1=00H
TL1=00H

TR1=1
P3.5=1
DELAY_1S
TR1=0
TF1=0
TF0=0
TR0=0
GUILCD
CHUYENMA
(CHUYỂN HEX SANG
BCD)
b,Lưu đồ thuật toán chuyển mã Hexa sang BCD
KIEMTRA
S
Đ
GUILCD
S
S
KIEMTRA
Đ
S
KIEMTRA
Đ
24
A=0
R1=R2=R3=R4=R5=A
BH=TH1
BL=TL1
R2=10
R1=0

R2=R2+1
R1=10
BH=0
BL=0
BL=255
BH=BH-1
A=BL
A=A-1
BL=A
R1=R1+1
S
KIEMTRA
Đ
S
KIEMTRA
Đ
KIEMTRA
2. Lập trình
#include "C:\Program Files\Rigel\Reads51\Include\sfr51.inc"
#include "C:\Program Files\Rigel\Reads51\Include\sfr51.inc"
ORG 0000H
BL EQU 61H
BH EQU 62H
RS BIT P2.0
RW BIT P2.1
E BIT P2.2
DOIANPHIM:
25
R4=0
R5=R5+1

R4=10
R3=0
R4=R4+1
R3=10
R2=0
R3=R3+1

×