Đồ án Giao tiếp bàn phím hiển thị LCD dùng 89C51

MỤC LỤC . CHƯƠNG I : 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 II : 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 CHÚ THÍCH : TÀI LIỆU TRÊN GỒM FILE PDF + FILE WORD

doc88 trang | Chia sẻ: lvcdongnoi | Lượt xem: 6089 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đồ án Giao tiếp bàn phím hiển thị LCD dùng 89C51, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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ị 10 ĐỒ ÁN 1 ùng bộ nhớ mở rộng. dù  TRẦN NGỌC L LÝ_070642D_07DD2D d//.Port 3: (P P3.0 – P3.7 7) Port 3 làà port có táác dụng kép p trên các cchân 10-17 7. các chân của port này y có nhiều c chức năng - Các tín biệt. n hiệu điều khiển _ có ó sử dụng b ộ nhớ ngo oài hoặc cáác chức năn đặc - Khi lập hi ệu điều khhiển ROM tron ng chip thì Port 3 đón ng vai trò làà ngõ vào của các tín - các cônng dụng ch bản sau: huyển đổi ccó liên hệ với các đặc tính đặt biệt của 89C C51 như ở - Chức năng của các  c chân Portt 3:  11 vn htttp://www.eebook.edu.v ĐỒ ÁN 1 R Cácc ngõ tín hiệu điều kh a/ Ngõ tínn hiệu PSEEN:  hiển:  TRẦN NGỌC L LÝ_070642D_07DD2D PSEN là tíín hiêu ngõ - P õ ra ở chân 29 có tác d ụng cho p phép đọc bộ nhớ chươ ng trình mở rộng thư ng được nói đén ch hân OE của ho phép đọc các byte mở rộng . PSEN ở mức thấp tro - P ong thời giaan Microco ontroller 8951 lấy lệnnh. Các mã ã lệnh của chương trình h được đọc ừ Eprom m qua bus d ữ liệu và đ c chốt t ừ thanh gh hi lệnh bêên trong 89 951 để giải ệnh. K Khi 8951 tthi hành ch ương trìnhh trong ROM nội SEN sẽ ở mức logic 1. PS b/ Ngõ tínn hiệu điều khiển ALE  E(Address latch Enab  ble): Khi 89C51 - K 1 truy xuất bộ nhớ bêên ngoài, po ort 0 có chức năng làà bus địa chỉ và bus dữ liệu do đó phải tách h các đườn ng dữ liệu v và địa chỉ. T Tín hiệu raa ALE ở ch hân thứ 30 ùng làm tínn hiệu điều dù húng với ICC chốt. ch ển để g ải đa hợp đường địa chỉ v và dữ liệu k khi kết nối Tín hiệu raa ở chân AL - T LE là một xung trong g khoảng th ời gian po ort 0 đóng vai trò là địa chỉ thấp nên chốt đ a chỉ hoàn n toàn tự đ ng. - Bộ dao độn được tícch hợp bên n trong 89C C51, khi sử dụng 89C C51 người tthiết kế chỉ cần kết nối thêm th ạch anh vàà các tụ như hình vẽ ttrong sơ đồ. Tần số thạch anh thường sử dụng cho 89 9C51 là 12 2Mhz. f  OSC  c. Lưu ý: fAL LE =6  vn → có thể dùng làm m xung cloc ck cho các mạch khác  12 htttp://www.eebook.edu.v ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D - 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. - GND (chân 20) - Chức năng: • Cung cấp nguồn điện cho chip 8051 hoạt động. • Vcc = +5V ± 10%. • GND = 0V 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 ý: 13 ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D tR  : thời g  gian reset  TO  : chu kỳ dao động TM : ch hu kỳ máy f/Các  c ngõ vào bộ dao động  g X1, X2 ((Chân XTA  AL1, XTAL  L2): nguồn - XTA AL (Crystaal): tinh thể thạch anh h, chân số 18-19. - Chức năng: • Dùnng để nối v ới thạch an  nh hoặc mạch dao độ ng tạo xunng clock bê  ên ngoài, ung cấp tín cu n hiệu xung g clock cho o chip hoạt động. • XTA AL1 → ng gõ vào mạcch tạo xung g clock tron ng chip. • XTA Lưu ý: AL2 → ng gõ ra mạch tạo xung cclock trong g chip. fT: tần số d  danh định  fOSC: tần số mạch dao động trên  n chip fC : tần số mạch dao động bên n ngoài 1.1.5.  TỔ CHỨC CỦA C  CHIP 8051: - Bộ vi xử lý có ó không giaan nhớ chu ung cho cả chương trìình và dữ liệu  14 vn htttp://www.eebook.edu.v ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D → chương ttrình và dữ liệu nằm cchung trên RAM. - Bộ vii điều khiển có không g gian nhớ riêng cho dữ liệu và chương trìình. →chương trrình và dữ liệu nằm riiêng trên R R Tổ c ức bộ nhớ của chipp 8051: vn htttp://www.eebook.edu.v  ROM và RA  AM.  15 ĐỒ ÁN 1 htttp://www.eebook.edu.vvn  TRẦN NGỌC LLÝ_070642D_07DD2D 16 ĐỒ ÁN 1 R Tổ c ức nhớ trrong chip 8  8051:  TRẦN NGỌC L LÝ_070642D_07DD2D 1.1.6.  BỘ NHỚ CHƯƠN  NG TRÌNH  H (ROM) - Dùn ng để lưu tr ữ chương trình điều khiển cho chip 8051 hoạt động - Chiip 8051 có 4 KB ROM R Bộ n ớ dữ liệu M trong, địa chỉ truy xuất: 000H H – FFFH. - Dùn ng để lưu tr ữ các dữ lliệu.  . - Chiip 8051 có 128 byte R RAM trong g, địa chỉ trruy xuất: 000H – 7FH. - RAM M trong của chip 805 51 được ch hia ra: • RAM đa chức năng: • RAM định địa vn htttp://www.eebook.edu.v  ỉ bit:  17 ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D → cho phép  p xử lý từng  g bit dữ liệu riêng lẻ m  mà không ảnh hưởng  g đến các b  bit khác trong cả bytte. • Cácc dãy thanh  h ghi:  . → cho phép p truy xuất dữ liệu nhaanh, lệnh ttruy xuất đơ n giản vàà ngắn gọn. + Lưu ý: Ở cchế độ mặc định thì d dãy thanh g ghi tích cực (đang đư ược sử dụng) là dãy y 0 và các tthanh ghi ttrong dãy lần lượt có tên là R0 -- R7. Có thể thay đổi dãy tích cực (xem phần thanh g ghi PSW). A ột số tthanh ghi c R Thaanh ghi A: R Thaanh ghi B: chức năng đ c biệt:  18 vn htttp://www.eebook.edu.v ĐỒ ÁN 1 - Phéép nhân 2 số 8 bit khô  TRẦN NGỌC L ông dấu _ kết quả là s ố 16 bit LÝ_070642D_07DD2D • Bytte cao _ chứa vào than nh ghi B • Bytte thấp _ chứa vào thaanh ghi A - Phé ép chia 2 số 8 bit _ thư ương số vàà số dư là số 8 bit A • Thư ng số _ c chứa vào th hanh ghi A • Số dư _ chứa vào thanh ghi B vn htttp://www.eebook.edu.v  19 ĐỒ ÁN 1 R Thaanh ghi định  h thời:  TRẦN NGỌC LLÝ_070642D_07DD2D R Sơ lược về hoạt động củaa bộ định tthời: vn htttp://www.eebook.edu.v  20 ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D • Tần  ố: tần số xung ngõ ra bằng tần  ố xung n  ngõ vào ch  hia cho 2N. • Giá á trị: giá trị nhị phân ttrong các F FF của bộ đ nh thời làà số đếm của các ung clock ttại ngõ vào xu o từ khi bộ định thời b ắt đầu đếm • Tràn n: xảy ra h ện tượng tràn (cờ trà àn = 1) khii số đếm chhuyển từ giiá trị lớn nh ất xuống g giá trị nhỏ nhất của bộ định thời. V ụ: Bộ định thời 16 6 bit (chứa 16 FF bên n trong). *T ần số: Giá trị: số đếm nằm ttrong khoản *G  ng 0 (0000  ). 0H) _ 65535 (FFFFH) Tràn: cờ tràn bằng 1 k *T khi số đếm m từ FFFFH H chuyển x xuống 00000H. H họa đơn giản hoạt độ vn ộng của bộ định thời 3 3 bit:  21 htttp://www.eebook.edu.v ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D • Ứng  g dụng định thời gian  n (TIMER)): Bộ định tthời được lập trình sa  ao cho nó sẽ tràn sau m ột khoảng bằng 1. g thời gian n đã qui địn đó ờ tràn của bộ định h thời sẽ • Ứng g dụng đếm ự kiện ((COUNTER): để xác định số lần n xuất hiện ủa một kíích thích từ bên ngoà xu ống 0). ài tới 1 chân n của chip 8051 (kích D): h thích chu uyển trạng tthái từ 1 R Thaanh ghi chế độ định thời (TMOD • Tha anh ghi TM MOD (Timeer Mode R Register) ch ứa các bit dùng để th ết lập chế độ hoạt động cho b ộ định thời 0 và bộ đ nh thời 1 • Thaanh ghi TMMOD được nạp giá trị một lần tại thời điểm  m bắt đầu của chương trình h để qui định chế độ h hoạt động của các bộ định thời.. • Cấu h ghi TMO vn OD:  22 htttp://www.eebook.edu.v ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D R Thaanh ghi điều  ển địn  ời (TC  CON): • Thaanh ghi TC CON (Time er Control R Register) chứa các bit it dùng để điều khiển vàà báo trạng g thái của bộ định thời 0 và bộ đ nh thời 1. N: • Cấu h ghi TCON vn  23 htttp://www.eebook.edu.v ĐỒ ÁN 1 R Chế độ định th ời 13bit (C C ế độ 0 (MMode 0): • Chế độ định th ời 13 bit.  Chế độ 0):  TRẦN NGỌC L LÝ_070642D_07DD2D • Sử dụng 8 bit của thanh ghi THx v bộ định thời và 5 bit thấp ủa thanh h ghi TLx để tạo ra • Số đ m: 0000H → 1FFF FH nghĩa là à từ 0 → 8191. Thời g gian định tthời: từ 0 → (213–1))TTimer nghĩa là từ 0 → 8191TTim mer. • Tha anh ghi TH Hx và TLx cchứa giá trrị của bộ định thời.  24 vn htttp://www.eebook.edu.v ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D • Khii có xung c Hx/TLx. TH  clock, bộ định thời bắt đầu đếm lên từ giá trị chứa tro  ong • Xảy ờ tràn TFx x=1) khi số đếm chuy ển từ 1FFF FH sang 00 000H và vi ệc đếm sẽ tiếp tục đế m lên từ g giá trị 0000 0H. Chế đ định thời 16bit (Chhế độ 1): C ế độ 1 (M  Mode 1): • Chế độ định th ời 16 bit. • Sử dụng thanh h ghi THx và TLx để tạo ra bộ đ nh thời. • Số đ m: 0000H → FFFF FH nghĩa là à từ 0 → 65 5535. Thờii gian định h thời: từ 0 → (216– Timer ng ghĩa là từ 0 → 65535 5TTimer. • Thaanh ghi TH Hx và TLx cchứa giá trrị của bộ định thời. • Khii có xung c Hx/TLx. TH clock, bộ định thời bắt đầu đếm lên từ giá trị chứa tro ong • Xảy ờ tràn TFx x=1) khi số đếm chuy ển từ FFFF FH sang 00 000H và vi ệc đếm sẽ tiếp tục đế m lên từ g giá trị 0000 0H. R Chế độ định th ời 8bit tự nạp lại (Ch ế độ 2): C ế độ 2 (M  Mode 2): • Chế độ định th ời 8 bit tự nạp lại. • Sử dụng thanh h ghi TLx đ để tạo ra bộ định thời • Số đ m: 00H → FFH ng ghĩa là từ 0 → 255. Thời gian địịnh thời: từ 0 → (28–1)TTimer ng ghĩa là từ 0 → 255TTiimer.  25 vn htttp://www.eebook.edu.v ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D • Tha  anh ghi TLx chứa giáá trị của bộ định thời v  và thanh gh  hi THx chứa giá trị sẽ được dùn ng để nạp lại cho bộ đ định thời. • Khii có xung c clock, bộ định thời bắt đầu đếm lên từ giá trị chứa tro ong TLx. • Xảy ờ tràn TFx x=1) khi số đếm chuy ển từ FFH H sang 00H và việc đếm sẽ tiếp tục đếm lê ên từ giá trị chứa tron ng thanh gh hi THx. R Chế độ định th ời chia sẻ (Chế độ 3): C ế độ 3 (M  Mode 3) là: • Chế độ định th ời chia sẻ. R Bộ đ nh thời 0 được chiaa ra: +/ Bộ định + h thời 8 bit thứ I: → Sử dụng than nh ghi TL0 0 để tạo ra bộ định thời. → Số đếm: 00H → FFH n nghĩa là từ 0 → 255. Thời gian đ định thời: từ 0 → (28–1)TTimer ng ghĩa là từ 0 → 255TTiimer . → Th hanh ghi T TL0 chứa giiá trị của bộ định thời.  . → Kh hi có xung g clock, bộ định thời b ắt đầu đếm ừ giiá trị chứa ttrong TL0. → Xảy ra tràn ((cờ tràn TF F0=1) khi ssố đếm chu uyển từ FFH H sang 00H H và việc đếm sẽ tiếp tục đếm lê ên từ giá trị 00H. +// Bộ định tthời 8 bit th ứ II: → Sử dụng thannh ghi TH0  0 để tạo ra bộ định th ời. → Số đếm: 00H → FFH ng ghĩa là từ 0 → 255. T ời gian đ định thời: t ừ 0 → (28–1)TTimernghĩa là từ 0 → 255TTimer. → Th hanh ghi T TH0 chứa g giá trị của bộ định thời.  26 vn htttp://www.eebook.edu.v ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D H0. TH  → Kh  hi có xung  g clock, bộ định thời b ắt đầu đếm  ừ giiá trị chứa ttrong → Xảy ra tràn ((cờ tràn TF F1=1) khi ssố đếm chu uyển từ FFH H sang 00H H và việc đếm sẽ tiếp tục đếm lê +// Bộ định tthời 1: ên từ giá trị 00H. - Là b ộ định thời 16 bit. - Khôông hoạt độ ng ở chế đ độ 0, 1, 2).  độ 3 nhưng  g có thể hoạt động cáác chế độ k  khác (chế - Khôông có cờ b báo tràn như các bộ đ nh thời kh hác. a từ: ra R Ngu ồn xung clock cho bộ định thời: Nguồn x xung cho bộ định thời được tạo n. • Mạch dao động trên chip → dù ùng cho tính h năng định thời gian Xung kích • X h thích bên ngoài → d dùng cho tíính năng đế m sự kiện R Trường hợp định thời giaan: Nếu C/T=0 thì: • Bộ định th ời được dùùng để địnhh thời gian  n (Timer). Nguồn xun • N Lưu ý: ng clock định thời đư ược lấy từ mạch dao đ ng trên cchip. - Tần số xun ng clock cu ung cấp cho o bộ định tthời bằng 1 1/12 tần số của mạch dao động rên chip 80 tr 051. - T ời gian đ nh thời là à khoảng th ời gian tín nh từ lúc b ộ định thời bắt đầu đ m cho đến lúc bộ đ nh thời bắt đầu tràn (thời gian này phụ th ộc vào ggiá trị ban đ u được nạp cho các thanh ghi THx và TL vn htttp://www.eebook.edu.v Lx).  27 ĐỒ ÁN 1 R Trường hợp đếm sự kiện Nếu C/T=1 thì:  TRẦN NGỌC L LÝ_070642D_07DD2D • Bộ định th ời được dù ùng để đếm m sự kiện (C Counter). Nguồn xun • N ng clock định thời đư ược lấy từ x xung kích tthích bên n ngoài tại ha ai chân T0 vàà T1 của ch Lưu ý: hip 8051. - Tần số kích h thích tối đa cho phéép tại chân n T0 và T1 là 500KHz Hz (trong trư ng hợp hip 8051 dù ch ùng thạch anh 12MH Hz). - Số lượng sự kiện (số xung) mà bộ định thời đếm đượ hanh ghi THHx và TLx. th ợc sẽ được chứa trong g các - Một kích thhích được gọi là một sự kiện kh 0 ở ngõ vào T0 và T1. vn htttp://www.eebook.edu.v hi xảy ra sự chuyển trạng thái từ 1 xuống 28 ĐỒ ÁN 1 1.2. GIỚI 1.2.1. 1.2.2.  TRẦN NGỌC L ỆU V Ề LCD ((TEXT LCCD) HÌNH ẢNH LCD U7 D LCD CD LC LCD 116×2 GIỚI TH ỆU SƠ LƯỢC VỀ LCD LÝ_070642D_07DD2D +/ Trrong những g năm gần đây LCD đang ngày càng đượcc sử dụng rộng rãi hay thế dần th đèn L Led. +/ Te ext LCD là các loại m màn hình tin nh thể lỏng g nhỏ dùng g để hiển thị các òng chữ hoặc số trong bảng mã dò ã ASCII. Kh hông giống g các loại L LCD lớn, T Text LCD ược chia sẵn thành từng ô và ứn đư ng với mỗi ô chỉ có thể hiển thị một ký tự ASCII. Cũng vì lý d do chỉ hiện thị được kký tự ASCIII nên loại LCD này đ được gọi là à Text LCD (để ph hân biệt với LCD có thể hiển thị h hình ảnh). Mỗi ô của Text LCD baao gồm các c “chấm” tinh thể lỏn vn ệc kết ợp “ẩn” và “hiện” các chấm n này sẽ tạo 29 htttp://www.eebook.edu.v 1 2 VSS 3 4 5 6 VD D VEE RS RW 6 7 8 9 RW E D0 D1 10 11 12 13 D 2 D3 D4 D 5 13 14 15 16 5 D6 D7 A K K ĐỒ Á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… R 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 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ả: 30 ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D - Tha  anh ghi IR : Để điều k  khiển LCD  D, người dù  ùng phải “rra lệnh” thô  ông qua ám đường b tá bus DB0-D DB7. Mỗi lệnh được n nhà sản xuất LCD đánnh địa chỉ rõ ràng. N ười dùng g chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào th hanh ghi IR R. Nghĩa à, khi ta nạp là h ghi IR m ột chuỗi 8 bit, chíp H HD44780 ssẽ tra bảng mã lệnh tại địa chỉ m mà IR cung cấp và thực hiện lệnh đó. V ệnh “ “hiển thị m màn hình” ccó địa chỉ lệnh là 00001100 (DB B7…DB0) Lệnh “hiển tthị màn hìn nh và con ttrỏ” có mã lệnh là 00001110 - Tha anh ghi DR : Thanh g ghi DR dùn ng để chứa dữ liệu 8 b bit để ghi v vào vùng R AM hoặc C CGRAM (ở chế độ gh hi) hoặc dù ùng để chứa dữ liệu từ 2 vùng R ởi ra cho M MPU (ở chế độ đọc). Nghĩa là, k khi MPU g ghi thông tiin vào DR, mạch nội bê ên trong ch híp sẽ tự độ ng ghi thông tin này vào DDRA AM hoặc C CGRAM. H ặc khi thô ông tin về địa chỉ đượ ợc ghi vào IR, dữ liệu ở địa chỉ này trong vùng R ội của HD4478 80 sẽ được chuyển ra DR để tru uyền cho M MPU. Bằng cách điều kh ển chân R RS và R/W W chúng ta có thể chu uyển qua lại giữ 2 than nh ghi này y khi giao tiếp. Xem bảng thiết lập đối với h M +// Chân đọc/ghi R/W (chân 5) hai chân R RS và R/W theo mục đích giao tiếp với C ựa chọn giữa việc đọc và gghi. Nếu R R/W=0 thì d ữ liệu sẽ đ được ghi từ bộ điều kh ển ngoài (vi điều kh ển AVR chẳng hạn D. Nếu R/W W=1 thì dữ liệu sẽ ược đọc từ LCD ra nggoài. Tuy nnhiên, chỉ c đư có duy nhất 1 trường hợp mà dữ liệu có thể đọc từ L LCD ra, đó là đọc trạn ng thái LCD D để biết L LCD có đan ng bận hay y không (cờ Busy Fla ag - BF). D Do LCD là một thiết bị hoạt độn ương đối chậm (so với vi  31 vn htttp://www.eebook.edu.v ĐỒ Á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: 0 0 1 1 RS R/W 0 1 0 1 Khi cần Ghi vào thanh ghi IR để ra lệnh cho LCD (VD: cần display clear,…) Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở DB0-DB6 Ghi vào thanh ghi DR Đọ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 32 ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D 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 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 R 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. R 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). 33 ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D Lưu ý: Thời gian cập n  nhật AC kh  hông được  hời gian thhực thi lệnh  h mà được cập nhật sauu khi cờ BF F lên mức ccao (not bu usy), cho nên khi lập trình hiển thị, bạn phải delay m ột khoảng g tADD kh hoảng 4uS-5uS (ngay sau khi BF F=1) trước ạp dữ liệu mới.. Xem thêm m hình Giản đồ xung cập nhật A AC. Tóm tắt cácc lệnh có thể ghi vào  o LCD Danh sáách lệnh trê ên được tô 2 màu khá ác nhau, cá ác lệnh màuu đỏ sẽ đượ ợc dùng thường xuyêên trong lú úc hiển thị L LCD và cá ác lệnh màu u xanh thườ ng chỉ đư ược dùng 1 lần trong lúc c khởi động g LCD, riêêng lệnh Re ead BF có thể được ddùng hoặc k không tùy heo cách viiết chương trình wait_ th _LCD. Phần tiếp theo o giải thíchh ý nghĩa của các lệnh và tham m số kèm th . heo chúng. +// Trước kh LCD : hi tìm hiểu tập lệnh của LCD, sa au đây là m ột vài chúú ý khi giao o tiếp với * T Tuy trong sơ đồ khối của LCD c có nhiều khối khác nh hau, nhưng g khi lập  R trìình điều kh hiển LCD tta chỉ có thể tác động g trực tiếp đ c vào 22 thanh ghii DR và IR hông qua cáác chân DB th Bx, và ta phải thiết lập chân RS, R/W phù ù hợp để ch huyển qua lại giữ 2 thaanh ghi này y. (xem bản ng giới thiệu 2 thanh ghi này) * Với mỗi lện ần một kho ảng thời gian để hoàn a n tất, thời g gian này ó thể khá lâ có âu đối với tốc độ của M a cần kiểm ờ BF hoặc đợi ((delay) cho o. o LCD thựcc thi xong llệnh hiện hàành mới có ó thể ra lện vn ếp theo  34 htttp://www.eebook.edu.v ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D * Địa chỉ của RAM (AC) sẽ tự động tăng (giảm) 1 đơn vị, mỗi khi có lệnh ghi vào RAM. (Điều này giúp chương trình gọn hơn) * Các lệnh của LCD có thể chia thành 4 nhóm như sau : • Các lệnh về kiểu hiển thị. VD : Kiểu hiển thị (1 hàng / 2 hàng), chiều dài dữ liệu (8 bit / 4 bit), … • Chỉ định địa chỉ RAM nội. • Nhóm lệnh truyền dữ liệu trong RAM nội. • Các lệnh còn lại . (!!!) Trước hết là nhóm lệnh đỏ: +/ Clear display – xóa LCD: lệnh này xóa toàn bộ nội dung DDRAM và vì thế xóa toàn bộ hiển thị trên LCD. Vì đây là 1 lệnh ghi Instruction nên chân RS phải được reset về 0 trước khi ghi lệnh này lên LCD. Mã lệnh xóa LCD là 0x01(ghi vào D0:D7). Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 DBx = 0 0 0 0 0 0 0 1 Lệnh Clear Display (xóa hiển thị) sẽ ghi một khoảng trống-blank (mã hiển thị kí tự 20H) vào tất cả ô nhớ trong DDRAM, sau đó trả bộ đếm địa AC=0, trả lại kiểu hiện thị gốc nếu nó bị thay đổi. Nghĩa là : Tắt hiển thị, con trỏ dời về góc trái (hàng đầu tiên), chế độ tăng AC +/ Cursor home – đưa con trỏ về vị trí đầu, dòng 1 của LCD: lệnh này thực hiện việc đưa con trỏ về vị trí đầu tiên của bộ nhớ DDRAM, vì thế nếu sau lệnh này một biến được ghi vào DDRAM thì biến này sẽ nằm ở vị trí đầu tiên (1;1). RS cũng phải bằng 0 trước khi ghi lệnh. Mã lệnh là 0x02 hoặc 0x03(chọn 1 trong 2 mã lệnh, tùy ý). +/ Set DDRAM address (texe(max)=37uS): Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0. DBx = 1 [AD] [AD] [AD] [AD] [AD] [AD] [AD] Lệnh này ghi vào AC địa chỉ của DDRAM, dùng khi cần thiết lập tọa độ hiển thị mong muốn. Ngay sau lệnh này là lệnh đọc/ghi dữ liệu từ DDRAM tại địa chỉ đã 35 ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D được chỉ định. Khi ở chế độ hiển thị 1 hàng: địa chỉ có thể từ 00H đến 4FH. Khi ở chế độ hiển thị 2 hàng, địa chỉ từ 00h đến 27H cho hàng thứ nhất, và từ 40h đến 67h cho hàng thứ 2. Định vị trí con trỏ cho DDRAM: di chuyển con trỏ đến một vị trí tùy ý trong DDRAM và vì thế có thể được dùng để chọn vị trí cần hiển thị trên LCD. Để thực hiện lệnh này cần reset RS=0. Bit MSB của mã lệnh (D7) phải bằng 1, 7 bit còn lại của mã lệnh chính là địa chỉ DDRAM muốn di chuyển đến. Ví dụ chúng ta muốn di chuyển con trỏ đến vị trí thứ 3 trên dòng 2 của LCD (địa chỉ 42) chúng ta cần ghi mã lệnh 0xAA vì 0xAA=10101010 (binary) trong đó bit MSB bằng 1, bảy bit còn lại là 0101010=42, địa chỉ của ô nhớ muốn đến. +/ Read BF fand address(texe(max)=0uS): Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0. DBx = [BF] [AC] [AC] [AC] [AC] [AC] [AC] [AC] (RS=0, R/W=1). Như đã đề cập trước đây, khi cờ BF bật, LCD đang làm việc và lệnh tiếp theo (nếu có) sẽ bị bỏ qua nếu cờ BF chưa về mức thấp. Cho nên, khi lập trình điều khiển, bạn phải kiểm tra cờ BF trước khi ghi dữ liệu vào LCD. Khi đọc cờ BF, giá trị của AC cũng được xuất ra các bit [AC]. Nó là địa chỉ của CG hay DDRAM là tùy thuộc vào lệnh trước đó. +/ Write to CGRAM or DDRAM(texe(max)=37uS, tadd=4uS) : Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0. DBx = [Write data] (RS=1, R/W=0). Khi thiết lập RS=1, R/W=0, dữ liệu cần ghi được đưa vào các chân DBx từ mạch ngoài sẽ được LCD chuyển vào trong LCD tại địa chỉ được xác định từ lệnh ghi địa chỉ trước đó (lệnh ghi địa chỉ cũng xác định luôn vùng RAM cần ghi). Sau khi ghi, bộ đếm địa chỉ AC tự động tăng/giảm 1 tùy theo thiết lập Entry mode. Lưu ý là thời gian cập nhật AC không tính vào thời gian thực thi lệnh. Ghi dữ liệu vào CGRAM hoặc DDRAM: vì đây không phải là lệnh ghi instruction mà là 1 lệnh ghi dữ liệu nên chân RS cần được set lên 1 trước khi ghi lệnh vào LCD. Lệnh này cho phép ghi mã ASCII của một ký tự cần hiển thị vào thanh ghi DDRAM. Trường hợp ghi vào CGRAM không được khảo sát. Kế đến là nhóm lệnh màu xanh: nhóm lệnh này thường chỉ thực hiện 1 lần (ít nhất là trong bài học này) và thường được viết chung trong 1 chương trình con khởi 36 ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D động LCD (chúng ta gọi là init_LCD trong bài học này). +/ Entry mode set(texe(max)=37uS) : Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0. DBx = 0 0 0 0 0 1 [I/D] [S]. Xác lập các hiện thị liên tiếp cho LCD: nói một cách dễ hiểu, lệnh này chỉ ra cách mà bạn muốn hiển thị một ký tự tiếp theo 1 ký tự trước đó. Ví dụ nếu bạn muốn hiện thị 2 ký tự liên tiếp AB, trước hết bạn viết A tại vị trí 5, dòng 1. Sau đó bạn ghi B vào LCD, lúc này có 4 cách mà LCD có thể hiển thị B như sau: hiển thị B bên phải A tại vị trí số 6 (cách 1); B cũng có thể được hiển thị bên trái A, tại vị trí số 4(cách 2); hoặc LCD có thể tự dịch chuyển A về bên trái đến vị trí 4 sau đó hiển thị B bên phải A, tại vị trí 5(cách 3); và khả năng cuối cùng là LCD dịch chuyển A về bên phải đến vị trí 6 sau đó hiển thị B bên trái A, tại vị trí 5(cách 4). Chúng ta có thể chọn 1 trong 4 cách hiển thị trên thông qua lệnh Entry mode set. Đây là lệnh ghi Instruction nên RS=0, 5 bit cao D7:3=00000, bit D2=1, hai bit còn lại D1:0 chứa mã lệnh để lựa chọn 1 trong 4 cách hiển thị. Xem lại bảng 2, bit D1 chứa giá trị I/D và D0 chứa S. Trong đó I/D nghĩa là tăng hoặc giảm (Increment or Decrement). I/D= 1 là hiển thị tăng tức ký tự sau sẽ hiển thị bên phải ký tự trước, nếu I/D=0 thì hiển thị giảm, tức ký tự sau hiển thị bên trái ký tự trước. S là giá trị Shift, nếu S=1 thì các ký tự trước đó sẽ được “đẩy” đi, ký tự sau chiếm chỗ ký tự trước, ngược lại nếu S=0 thì vị trí hiển thị của các ký tự trước đó không thay đổi. Có thể tóm tắt 4 mode hiển thị ứng với 4 mã lệnh như sau: + D7:0 = 0x04 (00000100) : hiển thị giảm và không shift (cách 2 trong ví dụ) + D7:0 = 0x05 (00000101) : hiển thị giảm và shift (cách 4 trong ví dụ) + D7:0 = 0x06 (00000110) : hiển thị tăng và không shift (cách 1, khuyến khích) + D7:0 = 0x07 (00000111) : hiển thị tăng và shift (cách 3 trong ví dụ) 37 ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D +/ Disp  play on/offf control (teexe(max)=  =37uS): Mã  ã lệnh : DB  Bx = DB7 D  DB6 DB5 DB4 DBB3 DB2 DB B1 DB0. D DBx = 0 0 0 0 0 1 [D] [C C] [B] D Hiển thị màn hình k khi D=1 vàà ngược lại ắt hiển thị, nộii dung DDRAM hông thay đ i. kh C Hiển thị con trỏ khii C=1 và n  ngược lại. V ị trí và hìn  nh dạng co  on trỏ, xem  m hình 8 B Nhấp nhááy kí tự tại ị trí con trỏ khi B= =1 và ngược ại. Chu kkì nhấp nháy khoảng 09,6ms khii mạch dao động nội LCD là 25 40 50kHz. X ập cáchh hiện thị c cho LCD: llệnh này ba ao gồm các c thông số cho phép L LCD hiển thị, cho phépp hiển thị c cursor và m ở/tắt blink king. Đây cũng là một lệnh ghi nstrcution n In nên RS phải bằng 0. M Mã lệnh ch ho lệnh này y có dạng 00001DCB B trong đó D cho phép h ển thị LC CD nếu ma ang giá trị 1, C (Curso or) bằng 1 thì cursor sẽ được hiển ị và B llà blinking g cho cursor tại vị trí h ển thị (bllinking là d dạng 1 ô đe ấp nh háy tại vị trrí ký tự đan ng hiển thị) ệnh được dùng g phổ biến cho lệnh nàày là 0x0E (00001110 0 - hiển thị cursor nh ưng không g hiển thị b blinking).  38 vn htttp://www.eebook.edu.v ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D +/ Funcction set(tex  xe(max)=3  37uS): Mã lệnh : DBx = DB7 D  DB6 DB5 D  DB4 DB3 D DB0. DBx = = 0 0 1 [DL L] [N] [F] * * X ập chức năng cho o LCD: đây y là lệnh th ết lập phư ng thức ggiao tiếp với LCD, kíích thước ffont chữ vàà số lượng line của LC CD. RS cũng phải bằng 0 khi sử dụng lệnh này. M Mã lệnh func ction set có ó dạng 001 1D¬¬LNFx xx. Trong đó nếu DL=1 (DL: D h) thì mode e giao tiếp 8 bit sẽ đư ược dùng, lú úc này tất cả các chân n từ D0 đến D7 phải được kết nối với bộ điều khiển ếu DL=0 th hì mode 4 b bit được  à ùng, trong trường hợp ỉ ccó 4 chân D dù D4:7 được dùng để tru uyền nhận dữ liệu và kết nối với b ộ điều khiiển ngoài, ccác chân D D0:3 được đ trống. N quy định số dòng của LCD, vìì chúng ta đang khảo sát LCD lo ại hiển thị 2 dòng nêên N=1 (N  cho trư ng hợp L LCD 1 dòn ng). F là kíích thước ffont chữ hiển thị, do L LCD có 2 b ộ font chữ có sẵn ttrong CGR ROM nên ch húng ta cần ựa chọn thông quaa bit F, nếu F=1 bộ ont 5x10 đư fo ược sử dụn ếu F F=0 thì fon nt 5x8 được ển thị. 2 2 bit thấp ttrong mã lệnh này có thể được g gán giá trị ttùy ý. Mã llệnh được d dùng phổ b ến cho lệnh unction set là 0x38 (0 fu 00111000 – – giao tiếp 8 bit, 2 dòn ng với fontt 5x8 ) hoặc 0x28 00101000 – (0 * Chú ý: – giao tiếp 4 bit, 2 dò òng với fon nt 5x8 ). • Chỉ tthực hiện tthay đổi F Function se et ở đầu chương trình h. Và sau k khi được thực thi 1 lần, lệnh th hay đổi Fun nction set không đượ ợc LCD chấp nhận nữa ngoại 39 vn htttp://www.eebook.edu.v ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D trừ thiết lập chuyển đổi giao thức giao tiếp. • Không thể hiển thị kiểu kí tự 5x10 điểm ảnh ở kiểu hiển thị 2 hàng R Giao tiếp 8 bit và 4 bit Như trình bày trong lệnh function set, có 2 mode để ghi và đọc dữ liệu vào LCD đó là mode 8 bit và mode 4 bit: - Mode 8 bit: Nếu bit DL trong lệnh function set bằng 1 thì mode 8 bit được dùng. Để sử dụng mode 8 bit, tất cả các lines dữ liệu của LCD từ D0 đến D7 (từ chân 7 đến chân 14) phải được nối với 1 PORT của chip điều khiển bên ngoài (ví dụ PORTC của ATmega32 trong ví dụ của bài này) như trong hình 3. Ưu điểm của phương pháp giao tiếp này là dữ liệu được ghi và đọc rất nhanh và đơn giản vì chip điều khiển chỉ cần xuất hoặc nhận dữ liệu trên 1 PORT. Tuy nhiên, phương pháp này có nhược điểm là tổng số chân dành cho giao tiếp LCD quá nhiều, nếu tính luôn cả 3 chân điều khiển thì cần đến 11 đường cho giao tiếp LCD. - Mode 4 bit: LCD cho phép giao tiếp với bộ điều khiển ngoài theo chế độ 4 bit. Trong chế độ này, các chân D0, D1, D2 và D3 của LCD không được sử dụng (để trống), chỉ có 4 chân từ D4 đến D7 được kết nối với chip bộ điều khiển ngoài. Các instruction và data 8 bit sẽ được ghi và đọc bằng cách chia thành 2 phần, gọi là các Nibbles, mỗi nibble gồm 4 bit và được giao tiếp thông qua 4 chân D7:4, nibble cao được xử lí trước và nibble thấp sau. Ưu điểm lớn nhất của phương pháp này tối thiểu số lines dùng cho giao tiếp LCD. Tuy nhiên, việc đọc và ghi từng nibble tương đối khó khăn hơn đọc và ghi dữ liệu 8 bit. Trong bài học này, tôi sẽ trình bày 2 chương trình con được viết riêng để ghi và đọc các nibbles gọi là Read2Nib và Write2Nib. 1.2.3. SƠ ĐỒ, CHỨC NĂNG LIÊN KẾT CÁC CHÂN CỦA LCD  40 ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D Chân 1 2  Kí hiệu VSS VCC  I/O - -  Mô tả Đất Chân c ấp nguồn c  cho LCD, k  khi thiết kế mạch ta nối c khiển chân này với VCC=5V V của mạc điều 3 VEE - Cấp ng guồn điều k khiển độ tư ương phản 4 RS I Chân c chọn thanh ghi (Regisster select). Nối chân R RS với logic c “0” (GND D) hoặc log gic “1” (VC hi. CC) để chọn thanh gh + Logicc “0”: Bus DB0-DB77 sẽ nối với thanh ghi lệnh IR của LLCD (ở chế độ “ghi” -- write) h hoặc nối với bộ đếm địa chỉ của vn htttp://www.eebook.edu.v (ở chế độ “đọc” - read) + Logicc “1”: Bus DB0-DB77 sẽ nối với thanh  41 ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D ghi dữ liệu DR bên trong LCD 5 6 R/W E I Chân ế độ đọc/ghi (Read/Write). Nối chân R/W với logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc I/O Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E. + Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD 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 chân E. + Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (lowto- high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp 7÷14 DB0÷DB14 I/O Tám ng của bus dữ liệu dùng để trao đổi thông tin với MPU. Có 2 chế độ sử dụng 8 đường bus này : + Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7. + Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7 R Các mã lệnh của LCD Mã Hex 1 Lệnh đến thanh ghi của LCD Xóa màn hình hiển thị  42 ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D 2 4 5 6 7 8 A C E F 10 14 18 1C 80 C0 38  Trở về đầu dòng Giảm con trỏ (dịch con trỏ sang trái) Tăng con rỏ (dịch con trỏ sang phải) Dịch hiển thị sang phải Dịch hiển thị sang trái Tắt con trỏ, tắt hiển thị Tắt hiển thị, bật con trỏ Bật hiển thị, tắt con trỏ Bật hiển thị, nhấp nháy con trỏ Tắt hiển thị, nhấp nháy con trỏ Dịch vị trí con trỏ sang trái Dịch vị trí con trỏ sang phải Dịch toàn bộ hiển thị sang trái Dịch toàn bộ hiển thị sang phải Ép con trỏ Vũ đầu dòng thứ nhất Ép con trỏ Vũ đầu dòng thứ hai Hai dòng ma trận 1.2.4. GIỚI THIỆU SƠ LƯỢC VỀ HD44780U +/ Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển HD44780U bên trong lớp vỏ và chỉ đưa ra các chân giao tiếp cần thiết +/ HD44780U là bộ điều khiển cho các Text LCD dạng ma trận điểm (dot-matrix), chip này có thể được dùng cho các LCD có 1 hoặc 2 dòng hiển thị. HD44780U có 2 mode giao tiếp là 4 bit và 8 bit. Nó chứa sẵn 208 ký tự mẫu kích thước font 5x8 và 32 ký tự mẫu font 5x10 (tổng cộng là 240 ký tự mẫu khác nhau) R HD44780U có 2 thanh ghi 8 bits là INSTRUCTION REGISTER (IR) và DATA REGISTER (DR). Thanh ghi IR chứa mã lệnh điều khiển LCD và là thanh ghi “chỉ ghi” (chỉ có thể ghi vào thanh ghi này mà không đọc được nó). Thanh ghi DR chứa các các loại dữ liệu như ký tự cần hiển thị hoặc dữ liệu đọc ra từ bộ nhớ 43 ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D LCD…Cả 2  2 thanh ghi đều được nối với các đường dữ liệu D0:7  7 của Text LCD và ược lựa chọn tùy theo đư o các chân điều khiển Thực tế để điều khiển Text LCD chúng ta không cần quan tâ âm đến các ch thức hoạt động củaa 2 thanh g ghi này, vì thế cũng khô . ông cần kh ảo sát chi tiết chúng. R HD4 44780U có ó 3 loại bộ nhớ, đó là bộ nhớ RA AM dữ liệu u cần hiển thị D Didplay Da ata RAM), b bộ nhớ chứa ROM ch ứa bộ fon nt tạo ra ký tự C Character G Generator R ROM) và bộ nhớ RAM M chứa bộ font tạo ra a các ymbol tùy c sy chọn CGR RAM (Charracter Geneerator RAM M). Để điều u khiển hiển thị Text LCD chúng ta cần hiểu ổ chức vvà cách thức hoạt độn DDRAM. D ủa các bộ nhớ này DDRAM M là bộ nhớ tạm chứaa các ký tự cần hiển tthị lên LCD D, bộ nhớ n này gồm ó 80 ô đượ có ợc chia thàn nh 2 hàng, mỗi ô có đ rộng 8 b bit và được đánh số từ 0 đến 39 ho dòng 1; từ 64 đến 103 cho dò ch òng 2. Mỗi ớ tươ ng ứng vớ i 1 ô trên m màn hình LCD. Như cchúng ta biiết LCD loại 16x2 có thể hiển th ị tối đa 32 2 ký tự (có 32 ô hiển thị), vì thế c có một số ô ô nhớ của D DDRAM k không được ử dụng lààm các ô h ển thị. Đ hiểu rõ hơn chúng ta tham kh Tổ chức của M. hảo hình bê ên dưới Chỉ có 1 16 ô nhớ có địa chỉ từ 0 đến 15 và 16 ô địa chỉ từ 64 đến 79 là được hiển thị trên LCD D. Vì thế m ốn hiển tthị một ký tự nào đó ttrên LCD cchúng ta cần viết ký tự đó vào DD DRAM ở 1 1 trong 32 địa chỉ trên n. Các ký t ự nằm ngo oài 32 ô nh ớ trên sẽ hông được hiển thị, tu kh ác mục đích khác nếu cá uy nhiên v ần thiết vẫn không b ị mất đi, c chúng có thể được dù ùng cho  44 vn htttp://www.eebook.edu.v ĐỒ ÁN 1 CGROM. C  TRẦN NGỌC L LÝ_070642D_07DD2D CGROM M là vùng n nhớ cố địn nh chứa địn ĩa fo ont cho cácc ký tự. Chú úng ta hông trực ttiếp truy xu ất vùng nh ớ này mà chip HD44780U sẽ tự thực hiện khi có kh yêêu cầu đọc font để hiện thị. Mộtt điều đáng g lưu ý là đ a chỉ fontt của mỗi k ký tự vùng nh ớ CGROM M chính là mã ASCIII của ký tự đó. Ví dụ ký tự ‘a’ ccó mã ASC CII là 97, ham khảo tổ chức của th ớ CGROM trong hình h 4 bạn sẽ n nhận thấy đ a chỉ ont của ‘a’ có 4 bit thấp là 0001 và 4 bit ca fo = 97. ao là 0110,, địa chỉ tổn ng hợp là 0 01100001 CGROMM và DDR RAM được tự động ph ối hợp trong quá trìnnh hiển thị của LCD. G ả sử chún ng ta muốn hiển thị ký ý tự ‘a’ tại vị trí đầu ttiên, dòng tthứ 2 của L LCD thì ác bước thực hiện sẽ như sau: trrước hết ch cá húng ta biết rằng vị trrí đầu tiên của dòng 2 có địa chỉ là 64 trong g bộ nhớ D DDRAM (x xem hình 3), vì thế ch húng ta sẽ g ghi vào ô nh ớ có địa cchỉ 64 một giá trị là 97 (mã ASC CII của ký tự ‘a’). Tiếp theo, ch hip H đọc giá trị 97 này vàà coi như là à địa chỉ của vùng nhhớ CGROM M, nó sẽ tìm đến vùn ng nhớ CGR ROM có địa chỉ 97 và à đọc bảng g font đã đư ược định nghĩa sẵn ở đâ đó xuất bản fo ont này ra các “chấm n hình LCD D tại vị trí đ u tiên  45 vn htttp://www.eebook.edu.v ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D của dòng 2 ttrên LCD. Đây chính  h là cách mà 2 bộ nhớ DDRAM và CGROM phối hợp với nha au để hiển tthị các ký t ự. Như mô ô tả, công v ệc của người lập trìình điều kh ển LCD t ương đối đ n giản, đó là viết m mã ASCII v vào bộ nhớ DDRAM M tại đúng vị trí được y yêu cầu, bư c tiếp theeo sẽ do HD D44780U đ m nhiệm Mối liên hệ giữa địa c chỉ của RO OM và dữ lliệu tạo mẫu kí tự  g N ư vậy, để có thể ghii vào vị trí thứ x trên màn hình một kí tự y y nào đó, n người dùng phải ghi vào o vùng DDRAM tại đ a chỉ x (x xem bảng m ối liên hệ giữa DDR RAM và vị tríí hiển thị) m ột chuỗi mã kí tự 8 8 bit trên CGROM. Ch hú ý là tron ng bảng m mã kí tự trong CGRO OM ở hình bên dưới ccó mã ROM vn M A00.  46 htttp://www.eebook.edu.v ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D V  ụ : Ghi vào DDRA  AM tại địaa chỉ “01” m ột chuỗi 8  8 bit “0110  00010” thì trên LCD tại ô thứ 2 từ trái sang (dòòng trên) sẽ hiển thị k Bảng mã kíí tự (ROM code A00) vn htttp://www.eebook.edu.v  kí tự “b”  47 ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D CGRAM. CGRAM là vùng nhớ chứa các symbol do người dùng tự định nghĩa, mỗi symbol được có kích thước 5x8 và được dành cho 8 ô nhớ 8 bit. Các symbol thường được định nghĩa trước và được gọi hiển thị khi cần thiết. Vùng này có tất cả 64 ô nhớ nên có tối đa 8 symbol có thể được định nghĩa Như trên bảng mã kí tự, nhà sản xuất dành vùng có địa chỉ byte cao là 0000 để người dùng có thể tạo các mẫu kí tự đồ họa riêng. Tuy nhiên dung lượng vùng này rất hạn chế: Ta chỉ có thể tạo 8 kí tự loại 5x8 điểm ảnh, hoặc 4 kí tự loại 5x10 điểm ảnh. Để ghi vào CGRAM, hãy xem hình 6 bên dưới Mối liên hệ giữa địa chỉ của CGRAM, dữ liệu của CGRAM, và mã kí tự 48 ĐỒ ÁN 1 R SƠ ĐỒ KHỐI CỦA HDD44780U vn htttp://www.eebook.edu.v  TRẦN NGỌC LLÝ_070642D_07DD2D 49 ĐỒ ÁN 1 R Điều  ển hi ển thị Texxt LCD vn  TRẦN NGỌC LLÝ_070642D_07DD2D 50 htttp://www.eebook.edu.v ĐỒ ÁN 1  TRẦN NGỌC L LÝ_070642D_07DD2D 1.3. GIỚI 1.3.1.  ỆU V Ề BÀN P HÌNH ẢNH  PHÍM GIA  AO TIẾP 4×4 1.3.2.  THUẬT  Hình miinh họa QUÉT PHÍÍM R Một ột được đặt ở mức cao (ngõ rra) vn  51 htttp://www.eebook.edu.v ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D R Các hàng lần lượt được đặt ở mức thấp (ngõ vào) và sau đó các cột được đọc R Nếu 1 hay nhiều cột (thuộc hàng đang ở mức thấp), ở mức thấp thì các phím của các cột tương ứng tích cực và các giá trị tương ứng của chúng sẽ hiện ra màn hình R Để đọc toàn bộ bàn phím, mỗi hàng lần lượt được đặt vào như nhau: +/ Dữ liệu 0111 được ghi ra các bit cổng xuất +/ Các bit cổng nhập được ghi vào, nếu không có phím nào được nhấn trên hàng đó thì giá trị đọc vào sẽ là 1111, nếu có bất cứ phím nào được nhấn thì trên hàng đó sẽ có 0 bit tương ứng +/ Dữ liệu 1011 được ghi vào cổng xuất bằng cách dịch bit 0 vào cột kế tiếp và cổng nhập được ghi vào +/ Dữ liệu 1101 được ghi vào cổng xuất bằng cách dịch bit 0 vào cột kế tiếp và cổng nhập được ghi vào +/ Dữ liệu 1110 được ghi vào cổng xuất bằng cách dịch bit 0 vào cột kế tiếp và cổng nhập được ghi vào +/ Chu kỳ này được lập lại vô tận bằng cách quay về bit 1 5vVCC R3 10k 8  1 4 7 *  R4 10k 2 5 8 0 7  R5 10k 3 6 9 # 6  R6 10k A B C D 5  1 2 3 4  52 ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D - Phím bấm được nối thành ma trận 4 hàng x 4cột, các hàng và cột được nối với các chân cổng vào ra của vi điều khiển Psoc. Khi một phím được bấm, nó sẽ nối một hàng và một cột tương ứng. Như vậy ta sẽ có 16 nút nhấn mà chỉ mất có 8 chân vi điều khiển. Khi nút 0 được nhấn thì nó nối giữa cột 1 hàng 1. Còn nút 1 được nhấn thì cột 2 và hàng 1 được nối hay nút 2 được nhấn thì nối giữa cột 3 và hàng 1... cứ như vậy đến nút thứ 15 - Sự kết nối theo ma trận tiết kiệm số kết nối và số chân của vi điều khiển. Ví dụ 1 bàn phím có 4 hàng 4 cột đòi hỏi 17 kết nối( 16+1 nối đất) nếu mỗi phím được kết nối 1 cách riêng biệt vào port của vi điều khiển. Sử dụng kiểu kết nối ma trận và dùng phần mềm để quét sẽ giảm được số kết nối và số chân vi điều khiển cần thiết bây giờ chỉ là 8(4 hàng, 4 cột) - Khi 1 phím được nhấn, hàng và cột chứa phím đó sẽ được kết nối với nhau. Do đó ngõ vào nối với cột chứa phím bị nhấn sẽ có mức logic của ngõ ra nối với hàng chứa phím đó - Bây giờ các cột(ngõ vào) luôn ở mức logic cao do chúng được nối với các điện trở kéo lên, cách duy nhất để đưa các cột về mức logic thấp là nhấn phím và đặt hàng nối với phím đó ở mức thấp. Bằng cách đưa mỗi hàng về mức thấp một cách tuần tự kế tiếp nhau, và đọc mức logic ở ngõ vào nối với cột trong mỗi lần đưa hàng về mức thấp đó, ta sẽ xác định được phím nào đã bị nhấn. Trong mặt nạ hàng, hàng 1 là bit có trọng số lớn nhất và hàng 4 là bit có trọng số nhỏ nhất. Tương tự trong mặt nạ cột, cột 1 là bit có trọng số lớn nhất, và cột 4 là bit có trọng số nhỏ nhất Micro-controller Port Pin Keypad Connector Pin# P2.0 1 P2.1 2 P2.2 3 P2.3 4 P2.4 5 P2.5 6 P2.6 7  53 ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D P2.7 8 GND VCC Tác động Không phím nào được nhấn Phím ở hàng 1 cột 1 được nhấn Phím ở hàng 1 cột 2 được nhấn Phím ở hàng 1 cột 3 được nhấn Phím ở hàng 1 cột 4 được nhấn Phím ở hàng 2 cột 1 được nhấn Phím ở hàng 2 cột 2 được nhấn Phím ở hàng 2 cột 3 được nhấn Phím ở hàng 2 cột 4 được nhấn Phím ở hàng 3 cột 1 được nhấn Phím ở hàng 3 cột 2 được nhấn Phím ở hàng 3 cột 3 được nhấn Phím ở hàng 3 cột 4 được nhấn Phím ở hàng 4 cột 1 được nhấn Phím ở hàng 4 cột 2 được nhấn Phím ở hàng 4 cột 3 được nhấn  Mặt nạ hàng(Row Mask) XXXX 0111 0111 0111 0111 1011 1011 1011 1011 1101 1101 1101 1101 1110 1110 1110 9 10 Mặt nạ cột(column Mask) 1111 0111 1011 1101 1110 0111 1011 1101 1110 0111 1011 1101 1110 0111 1011 1101 54 ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D Phím ở hàng 4 cột 4 được nhấn  1110  1110 sau:  R Port2 được nối với jack cắm bàn phím với cấu hình được cho trong bảng Port Hàng/ cột Đặc tính Port2.0 Port2.1 Port2.2 Port2.3 Port2.4 Port2.5 Port2.6 Port2.7  Hàng 1 Hàng 2 Hàng 3 Hàng 4 Cột 1 Cột 2 Cột 3 Cột 4  Ngõ ra Ngõ ra Ngõ ra Ngõ ra Ngõ vào Ngõ vào Ngõ vào Ngõ vào - Trong thanh ghi điều khiển chiều xuất nhập của port, các chân port nối với các hàng được định nghĩa như là các ngõ ra và các chân port nối với các cột được định nghĩa như là các ngõ vào. Mỗi phím trên bàn phím được gán cho một giá trị cho trước bởi người lập trình trước khi thao tác. 55 ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D CHƯƠNG 2. THỰC HIỆN MÔ HÌNH ĐỒ ÁN 2.1. SƠ ĐỒ NGUYÊN LÝ VCC  VCC J1 CON16 KHOI HIEN THI  RESISTOR DIP 8 10K J3  2 1 KHOI NGUON - ~ D4 + R1 10R  1 U3 LM7805 IN OUT  3 VCC  VCC  J2 CON8  1 2 CON2  39 38  U1 P0.0/AD0 P0.1/AD1 ~ P2.0/A8 P2.1/A9  21 22 C1 470uF/25V R2 10R 3 4 5 6 7 8  KHOI GIAO TIEP 37 36 35 34 33 32 1 2 P0.2/AD2 P2.2/A10 P0.3/AD3 P2.3/A11 P0.4/AD4 P2.4/A12 P0.5/AD5 P2.5/A13 P0.6/AD6 P2.6/A14 P0.7/AD7 P2.7/A15 P1.0 P3.0/RXD P1.1 23 24 25 26 27 28 10 11 3 P3.1/TXD 12 4 P1.2 P3.2/INT0 13 E 5 P1.3 P3.3/INT1 14 RW 6 P1.4 P3.4/T0 15 RS 7 P1.5 P3.5/T1 16 VCC 8 P1.6 P1.7 31 P3.6/WR 17 P3.7/RD 30 C2  C3  R3 330  VCC  SW1 RESET 10uF C4 R4 100R  R5  9 EA/VPP ALE/PROG PSEN RST AT89C51 Y1 12MHz 29 KHOI DIEU KHIEN 104 100uF D2 LED KHOI RESET 8K2  33P  C5  C6 33P  KHOI DAO DONG  56 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2 GN D RW RS 1 2 3 4 5 6 7 8 9 18 19 XT A L2 XT A L1 E ĐỒ ÁN 1 2.2. MẠC  OUT  TRẦN NGỌC LLÝ_070642D_07DD2D 57 htttp://www.eebook.edu.vvn ĐỒ ÁN 1 TRẦN NGỌC LÝ_070642D_07DD2D 2.3. LƯU ĐỒ GIẢI THUẬT RESET  KHAI BÁO QUÉT PHÍM CHƯƠNG TRÌNH CHO PHÍM  BẮT ĐẦU KHỞI TẠO CÁC PORT VÀO RA CHO AT89C51 CHƯƠNG TRÌNH CHÍNH XỬ LÝ DỮ LIỆU HIỂN THỊ LÊN LCD KẾT THÚC END!  CHƯƠNG TRÌNH DELAY THIẾT LẬP CÁC LỆNH KẾT NỐI CHO LCD CHƯƠNG TRÌNH CHO LCD NHẤN PHÍM  58

Các file đính kèm theo tài liệu này:

  • docGiao tiep ban phim hien thi LCD su dung 89C51.doc
  • rarcode.rar
  • pdfGiao tiep ban phim hien thi LCD su dung 89C51.pdf
  • docxTIEU DE.docx