GIAO TIẾP BÀN PHÍM HIỂN THỊ LCD DÙNG 89C51
Trang 1GI
TỔNGTRƯỜN
N – ĐIỆN
O ĐỒ
HÍM HI 89C51
Ths ĐẶN TRẦN NG 070642D : 11
năm 2010
G VIỆT NĐỨC TH
** LỚ
NAM HẮNG
Trang 2ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
-o0o -
Giáo viên hướng dẫn
Trang 3-o0o -
Giáo viên phản biện
Trang 4ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
LỜI CẢM ƠN!
h Trước khi giới thiệu hoàn chỉnh báo cáo này, em xin được bày tỏ lòng biết
ơn đến các thầy cô đã quan tâm, hướng dẫn em hoàn thành tốt, đặc biệt là thầy
Đặng Ngọc Minh Đức, người trực tiếp hướng dẫn thực hiện đồ án này Trong quá
trình làm đồ án , em không thể tránh khỏi những sai sót, lúng túng nếu không có sự
giúp đỡ tận tình của các thầy cô thì có lẽ em khó có thể hoàn thành tốt Một lần nữa,
em xin được gửi những lời cảm ơn chân thành nhất đến các thầy cô
h Trong đồ án này cũng có tham khảo các tài liệu trên trang web, sách hướng
dẫn của các tác giả khác
Trang 5MỤC LỤC
CHƯƠNG 1: TÌM HIỂU YÊU CẦU ĐỀ TÀI
CHƯƠNG 1.1: GIỚI THIỆU VỀ AT89C51
CHƯƠNG 1.1.1: GIỚI THIỆU HỌ MSC-51 CHƯƠNG 1.1.2: SƠ ĐỒ CHÂN CỦA AT89C51
CHƯƠNG 1.1.3: SƠ ĐỒ KHỐI CỦA AT89C51
CHƯƠNG 1.1.4: CHỨC NĂNG CÁC CHÂN CỦA AT89C51
CHƯƠNG 1.1.5: TỔ CHỨC CỦA CHIP 8051
CHƯƠNG 1.1.6: BỘ NHỚ CHƯƠNG TRÌNH (ROM)
CHƯƠNG 1.2: GIỚI THIỆU VỀ LCD (TEXT LCD)
CHƯƠNG 1.2.1: HÌNH ẢNH LCD CHƯƠNG 1.2.2: GIỚI THIỆU SƠ LƯỢC VỀ LCD
CHƯƠNG 1.2.3: SƠ ĐỒ, CHỨC NĂNG LIÊN KẾT CÁC CHÂN CỦA LCD
CHƯƠNG 1.2.4: GIỚI THIỆU SƠ LƯỢC VỀ HD44780U
CHƯƠNG 1.3: GIỚI THIỆU VỀ BÀN PHÍM GIAO TIẾP 4×4
CHƯƠNG 1.3.1: HÌNH ẢNH BÀN PHÍM CHƯƠNG 1.3.2: THUẬT TOÁN QUÉT PHÍM
CHƯƠNG 2: THỰC HIỆN MÔ HÌNH ĐỒ ÁN
CHƯƠNG 2.1: SƠ ĐỒ MẠCH NGUYÊN LÝ
CHƯƠNG 2.2: MẠCH LAYOUT
CHƯƠNG 2.3: LƯU ĐỒ GIẢI THUẬT
Trang 7CHƯƠNG 1 TÌM HIỂU YÊU CẦU ĐỀ TÀI
1.1 GIỚI THIỆU VỀ AT89C51
1.1.1 GIỚI THIỆU HỌ MSC-51
h MCS-51 là họ IC vi điều khiển do hãng Intel sản xuất Các IC tiêu biểu cho họ là 8051 và 8031 Các sản phẩm MSC-51 thích hợp cho những ứng dụng điều khiển Việc xử lý trên Byte và các toán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế đọ truy xuất dữ liệu nhanh trên RAM nội Chíp này có đặc điểm : 4 port , 8bit , có tốc độ , công suất thấp có lập trình được nhờ bộ nhớ Flash và dùng thuật ngữ lập trình 80C51 Được sử dụng để điều khiển công nghiệp hay tự dộng hoá
h AT89C51 cung cấp những đặc tính chuẩn như sau : 4 KB bộ nhớ chỉ đọc
có thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 2
TIMER/COUNTER 16 Bit, vecto ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp bán song công, 1 mạch dao động tạo xung Clock và dao động ON-CHIP Thêm vào đó, AT89C51 được thiết kế với logic tĩnh cho hoạt động đến mức không tần
số và hỗ trợ hai phần mềm có thể lựa chọn những chế độ tiết kiện công suất, chế
độ chờ (IDLE MODE) sẽ dừng CPU trong khi vẫn cho phép RAM, timer/counter, port nối tiếp và hệ thống ngát tiếp tục hoạt động Chế độ giảm công suất sẽ lưu nội dung RAM những sẽ treo bộ dao động làm khả năng hoạt động của tất cả những chức năng khác cho đến khi Reset hệ thống
- 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
- 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
Trang 8ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
- Nhân / Chia trong 4 us
- Tương thích với MCS-51
- 4K Bytes của hệ thống-Trong Reprogrammable Flash Memory
- Độ bền: 1.000 Viết / Erase Cycles
- Hoàn toàn tĩnh hoạt động: 0 Hz đến 24 MHz
- Năng lượng thấp xuống Idle và chế độ Power
1.1.2 SƠ ĐỒ CHÂN CỦA AT89C51
U5
AT89C51
9
18 19
29 30 31
1 2 3 4 5 6 7 8
21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17
39 38 37 36 35 34 33 32
RST
XTAL2 XTAL1
PSEN ALE/PROG EA/VPP
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
Trang 9ạt động
rol: Điều k
ời (TIMER0
ệu ngắt nàys: Các than
ory): Bộ nh
C51
Đơn vị xử lý_ tạo tín h
_ nhận tín 1) và từ cổ
U để xử lý
c _ lưu trữ trong suốt
Bộ nhớ dữ
hớ chương
ý trung tâmhiệu xung c
hiệu ngắt t
ng nối tiếp
dữ liệu củquá trình h
ữ liệu trongtrình trong
m _ tính toáclock cung
từ bên ngo
p (SERIAL
ủa các port hoạt động
g chip _ lưu
g chip _ lư
án và điều cấp cho
ài (INT0\,
L PORT),
xuất/nhập,của hệ
u trữ các
ưu trữ
,
Trang 10ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
- 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 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.4 CHỨC NĂNG CÁC CHÂN CỦA AT89C51
h 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 (có nghĩa 1 chân có 2 chức năng), mỗi dường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của
các bus dữ liệu và bus địa chỉ
a/ port 0: Port 0 (P0.0 – P0.7) là port có hai chức năng ở các chân 32-39 của
89C51 trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng, nó có chức năng như các đường IO Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu
Lưu ý: Khi Port 0 đóng vai trò là port xuất nhập dữ liệu thì phải sử dụng các điện trở kéo lên bên ngoài
- 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)
b/.Port 1: (P1.0 – P1.7) Port 1 là port IO trên các chân 1-8 các chân được kí hiệu
p1.0, p1.1, p1.2, có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài
c/.Port 2: (P2.0 – P2.7) Port 2 là 1 port có tác dụng kép trên các chân 21-28 được
dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị
Trang 11p trên các coài hoặc cá
ng vai trò làtính đặt bi
chân 10-17
ác chức năn
à ngõ vào ciệt của 89C
7 các chân
ng đặc của các tínC51 như ở
n
Trang 12õ ra ở chân nói đén chong thời gia
ch hợp bênhạch anh và9C51 là 12 → có thể
hiển:
29 có tác dhân OE của
an Microco
m qua bus dKhi 8951 t
E(Address
ên ngoài, po
ng dữ liệu vgiải đa hợp
xung trong
n toàn tự đ
n trong 89C
à các tụ nh2Mhz
ể dùng làm
TRẦ
dụng cho p
a Eprom chontroller 8
dữ liệu và đthi hành ch
latch Enabort 0 có chứ
và địa chỉ T
p các đườn
g khoảng thđộng
ble):
ức năng là Tín hiệu ra
g địa chỉ vhời gian po
ử dụng 89Ctrong sơ đồ
thiết kế hạch anh
c
Trang 13- Khi lệnh lấy dữ liệu từ RAM ngoài (MOVX) được thực hiện thì 1 xung ALE bị bỏ qua
c/ Chân 40 (vcc) được nối lên nguồn.các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chíp và có thể được dùng làm tín hiệu clock cho các phần khác của hệ thống chân ALE được dùng làm ngõ vào xung lập trình cho Eprom trong 89C51
d/ Ngõ tín hiệu EA\(External Access):
- Tín hiệu vào EA\ ở chân 31 thường được mất lên mức 1 hoặc mức 0 nếu ở mức 1, 89C51 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp 8KB Nếu ở mức 0, AT89c51 sẽ thi hành chương trình từ bộ nhớ mở rộng chân EA\ được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 89c51
EA\ = 0 → Chip 8051 sử dụng chương trình của ROM ngoà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/89xx, 21V/80xx,87xx)
Lưu ý: Chân EA\ luôn luôn phải được nối lên Vcc (sử dụng chương trình của ROM trong) hoặc xuống Vss (sử dụng chương trình của ROM ngoài)
e/ Ngõ tín hiệu RST (Reset):
- Ngõ vào RST ở chân 9 là ngõ vào reset của 89C51 khi ngõ vào tín hiệu này đưa lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống khi cấp điện mạch tự động Reset
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
Lưu ý:
Trang 14ngoài
g clock tronclock trong
Trang 16Đ Ồ ÁN 1 TRẦ ẦN NGỌC L LÝ_070642D_07DD2D
Trang 17chip 8051xuất: 000H
Trang 18ực (xem phchức năng đ
ệu riêng lẻ m
anh, lệnh tdãy thanh gtrong dãy lầhần thanh gđặc biệt:
ẦN NGỌC L
ảnh hưởng
ơn giản và
c (đang đưtên là R0 -
Trang 19ông dấu _ k
nh ghi B anh ghi Aương số vàhanh ghi Aghi B
Trang 21o từ khi bộ hiện tượng nhất của b
6 bit (chứa
trong khoảnkhi số đếm
ản hoạt độ
ra bằng tầntrong các Fđịnh thời btràn (cờ trà
m
i số đếm ch
5 (FFFFH)xuống 0000
3 bit:
hia cho 2N
à số đếm củhuyển từ gi
Trang 22bộ định thờMOD được
ị một lần tạcủa các bộ
n xuất hiệnuyển trạng t
dùng để th
m bắt đầu c
D_07DD2D
ao cho nó
h thời sẽ
n của một thái từ 1
hiết lập của
Trang 23CON):
Register) cđịnh thời 1
hứa các bit
it dùng để đđiều khiển
Trang 25Hx và TLx cclock, bộ đị
ờ tràn TFx
ếm lên từ ghời 8bit tự
hời 8 bit tự
h ghi TLx đ
→ FFH ngghĩa là từ 0
ịnh thời bắ
x=1) khi sốgiá trị 0000
hế độ 1):
và TLx để
FH nghĩa là
0 → 65535chứa giá trịnh thời bắ
x=1) khi sốgiá trị 0000nạp lại (Ch
ự nạp lại
để tạo ra bghĩa là từ 0
ắt đầu đếm
ố đếm chuy0H
định thời
5535 Thời
ịnh thời
lên từ giá yển từ FFFF
h thời:
ong 000H và
Trang 26
ờ tràn TFx
ên từ giá trịhời chia sẻ
hời chia sẻ
0 được chiathứ I:
nh ghi TL0
H → FFH nghĩa là từ 0 TL0 chứa gi
g clock, bộ (cờ tràn TF
ên từ giá trị
hứ II:
nh ghi TH0H→ FFH ng
ừ 0 → 255TTH0 chứa g
á trị của bộ định thời
ịnh thời bắx=1) khi số
ị chứa tron(Chế độ 3
ẻ
a ra:
0 để tạo ra nghĩa là từ
iá trị của bđịnh thời bF0=1) khi s
ị 00H
0 để tạo ra ghĩa là từ 0
bộ định th
0 → 255
bộ định thờbắt đầu đếm
Trang 27chip → dùngoài → dịnh thời gia
ùng để địnhịnh thời đư
ung cấp cho
à khoảng th
ắt đầu tràn THx và TL
h thời gianược lấy từ m
o bộ định t
thời gian tín(thời gian Lx)
bắt đầu đếm
số đếm chu
g có thể ho
định thời khời: Nguồn x
h năng địnính năng đế
n (Timer)
mạch dao đ
thời bằng 1
nh từ lúc bnày phụ th
m lên từ giuyển từ FFH
o
Trang 28đa cho phé anh 12MH xung) mà b gọi là một
n:
m sự kiện (Cược lấy từ x
ép tại chân Hz)
Trang 29các loại m
g bảng mã ừng ô và ứn thị được k
i Graphic Linh thể lỏn
ộng rãi
hị các Text LCD ASCII
à Text Text LCD này sẽ tạo
Trang 30ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
thành một ký tự cần hiển thị Trong các Text LCD, các mẫu ký tự được định nghĩa sẵn Kích thước của Text LCD được định nghĩa bằng số ký tự có thể hiển thị trên 1 dòng và tổng số dòng mà LCD có Ví dụ LCD 16x2 là loại có 2 dòng và mỗi dòng
có thể hiển thị tối đa 16 ký tự Một số kích thước Text LCD thông thường gồm 16x1, 16x2, 16x4, 20x2, 20x4…
h Mô tả các chân, loại 16 chân
+/ 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 4 bit hay 8 bit mà các chân từ D0 đến D3 có thể bỏ qua hoặc nối với vi điều khiển
+/ 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ả:
Trang 31h ghi IR mcấp và thựmàn hình” c
nh và con t
R : Thanh g
CGRAM (ởMPU (ở chếhíp sẽ tự độđịa chỉ đượ
là đọc trạn
Do LCD là
khiển LCDệnh được n
ịa chỉ lệnh một chuỗi 8
ực hiện lệnh
có địa chỉ lệtrỏ” có mã ghi DR dùn
ở chế độ gh
ế độ đọc)
ộng ghi thô
ợc ghi vào chuyển ra
có thể chuhai chân R
ghi Nếu Rchẳng hạnnhiên, chỉ c
ng thái LCDmột thiết b
D, người dùnhà sản xuấbằng cách bit, chíp H
h đó
ệnh là 000lệnh là 00
ng để chứahi) hoặc dùNghĩa là, k
ng tin này
IR, dữ liệu
DR để truuyển qua lạ
RS và R/W
R/W=0 thì dn) vào LCD
01100 (DB
001110
dữ liệu 8 bùng để chứkhi MPU gvào DDRA
u ở địa chỉ uyền cho M
i giữ 2 thantheo mục đ
dữ liệu sẽ đ
D Nếu R/W
ất 1 trường LCD có đan
ng tương đố
ra lệnh” thô
nh địa chỉ hanh ghi IR
sẽ tra bảng B7…DB0)
bit để ghi v
ứa dữ liệu từghi thông ti
AM hoặc Cnày trong MPU Bằng
nh ghi nàyđích giao t
được ghi từW=1 thì dữ hợp mà dữ
y khi giao iếp với
ừ bộ điều liệu sẽ
ữ liệu có
y không
o với vi
Trang 32ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D
đ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 ngoà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ị Trong bài này tôi hướng dẫn bạn cách tổng quát là cách 1, để sử dụng cách 2 bạn chỉ cần một thay đổi nhỏ trong chương trình wait_LCD (sẽ trình bày chi tiết sau) và kết nối chân R/W của LCD xuống GND Tóm tắt bảng chức năng sau:
clear,…)
0 1 Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở DB0-DB6
1 1 Đọc dữ liệu từ DR
+/ 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