Báo cáo Giao tiếp bàn phím ma trận, LCD và PPI8255

RS (register select): Coù 2 thanh ghi raát quan troïng trong LCD laø thanh ghi leänh vaø thanh ghi döõ lieäu. Neáu RSôû möùc thaáp, thanh ghi leänh seõ ñöôïc choïn, cho pheùp ngöôøi söû duïng gôûi caùc meänh leänh ñeán LCD chaúng haïn nhö xoùa maøn hình hieån thò hoaëc chuyeån con troû veà ñaàu doøng, Neáu RS ôû möùccao, thanh ghi döõ lieäu seõ ñöôïc choïn, cho pheùp ngöôøi söû duïng gôûi caùc döõ lieäu kyù töï ñeå hieån thò leân LCD. • R/W (read/write): Cho pheùp ghi caùc leänh hay döõ lieäu kyù töï leân LCD hoaëc ñoïc caùc döõ lieäu kyù töï hay thoâng tin traïng thaùi töø caùc thanh ghi cuûa noù. • E (enable): Duøng ñeå choát caùc leänh hay döõ lieäu giöõa module LCD vaø caùcñöôøng döõ lieäu cuûa noù. Khi ghi döõ lieäu ra maøn hình hieån thò LCD, döõ lieäu seõ ñöôïc choát khi coù xung caïnh xuoáng ôû chaân naøy. Xung naøy phaûi coù ñoä roäng toái thieåu laø 450ns. Tuy nhieân, khi ñoïc döõ lieäu ra töø LCD, sau khi coù xung caïnh leân ôû chaân naøy thì döõ lieäu ñoïc ñöôïc môùi laø döõ lieäu coù yù nghóa.

docx29 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3122 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Báo cáo Giao tiếp bàn phím ma trận, LCD và PPI8255, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC GIAO THƠNG VẬN TẢI THÀNH PHỐ HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ VIỄN THƠNG -----š›&š›----- BÁO CÁO Giao tiếp bàn phím ma trận, LCD và PPI8255 GVHD: Thầy Nguyễn Thanh Hiếu Danh sách nhĩm 9: Nguyễn Thanh Duy Nguyễn Thị Các Linh Phan Thị Huỳnh Giao Phạm Văn Hiếu Bùi Văn Thời Nguyễn Ngọc Thương Nhận xét của Giáo Viên Hướng Dẫn & …………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… TP.HCM, ngày…. .Tháng 12 năm 2013 Giáo viên hướng dẫn Yêu cầu : Bàn phím ma trận nhận dữ liệu được nhập vào và xuất ra LCD Nội dung báo cáo A. PHẦN 1 Tìm hiểu về vi điều khiển 8051……………….4 Giới thiệu về PPI 8255………………………...7 Giới thiệu về bàn phím giao tiếp 4×4………...11 Giới thiệu về LCD………………………….…14 B. PHẦN 2 Sơ đồ nguyên lý………………………………21 Lưu đồ giải thuật……………………………...22 Viết chương trình cho vi điều khiển…………..23 Mạch mơ phỏng protues PHẦN 1 Giới thiệu vi điều khiển 8501 GIỚI THIỆU HỌ MSC-51 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 tố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ự động 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) Cấu trúc của 8051 Chức năng các chân của AT89C51 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 đườ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ỉ. Các port: 1/ Port 0 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. 2/ 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ị ngồ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 ngồi. 3/ 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ị dùng bộ nhớ mở rộng. 4/ Port 3 là port cĩ tác dụng kép trên các chân 10-17 các chân, các chân của port này cĩ nhiều chức năng, các cơng dụng chuyển đổi cĩ liên hệ với các đặc tính đặc biệt của 89C51 như bảng sau  Các ngõ ra tín hiệu điều khiển: a/Ngõ tín hiệu PSEN: Psen là tín hiệu ngõ ra ở chân 29 cĩ tác dụng cho phép đọc bộ nhớ chương trình mở rộng thường nĩi đến chân OE của Eprom cho phép đọc các byte mở rộng Psen ở mức thấp trong thời gian Microcontroller 8951 lấy lệnh. Các mã lệnh của chương trình đọc từ Eprom qua bus dữ liệu và được chốt từ thanh ghi bên trong 8951 để giải mã lệnh. Khi 8951 thi hành chương trình trong Rom nội Psen sẽ ở mức logic1. b/ Ngõ tín hiệu điều khiển 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. c/Chân EA\: - EA (External Access): truy xuất ngồ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 d/Chân RST 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 mạch điện tự động reset. GIỚI THIỆU VỀ PPI 8255 Giới thiệu về PPI8255 - PPI: programmable peripheral interface – giao tiếp ngoại vi lập trình được - Dùng 8255 để mở rộng I/O. từng port cĩ thể lập trình là input hay output một cách linh hoạt bằng phần mềm (so sánh với việc thiết kế I/O port dùng 74LS244 và 74LS373 ở chương 1 → input hay output được thiết kế “cứng”,cố định). - Các chân: D0÷D7: bus dữ liệu 2 chiều PA0÷PA7: port A. PB0÷PB7: port B. PC0÷PC7: port C. /RD: Read. (Nối với /RD (P3.7) của 8051.) /WR: Write. (Nối với /WR của 8051.) RESET: khởi động lại 8255. (thường được nối với mạch reset của 8051 hoặc GND. /CS: chọn chíp.) A0, A1: địa chỉ port. (Nối với bus địa chỉ.) - hoạt động I/O cơ bản của 3 mode: o Mode 0: I/O đơn giản o Mode 1: I/O cĩ bắt tay o Mode 2: bus 2 chiều Sơ đồ ghép nối PPI 8255 với IC 8051 Giao tiếp PPI8255 với LCD Giới thiệu về bàn phím giao tiếp 4×4. Cĩ 2 cách xác định phím nhấn bằng phần cứng và phần mềm: Ở đây ta xác định mã các phím nhấn bằng phần mềm: - Khi nhấn phím thì hàng và cột tương ứng sẽ được nối với nhau. - Để xác định được phím nhấn ta quét bàn phím: ta thực hiện quét từng hàng, đầu tiên cho hàng 1 ở mức logic 0, các hàng và cột khác ở mức logic 1, ta đọc giá trị hàng và cột thơng qua Port 1. - Nếu 1 phím nào đĩ được nhấn: hàng và cột tương ướng nối với nhau và ở mức logic 0, tuân theo quy tắc sau ta xác định mã phím: +Ta cĩ số hàng là 4: đếm theo thứ tự: hi = 1(ứng với H4), 2( ứng với H3), 3(ứng với H2), 4(ứng với H1) ci = 0 (ứng với C1), 4(ứng với C2), 8(ứng với C3), 12(ứng với C4). Ta cĩ thể thấy các cột hơn kém nhau 4 đơn vị Ma phimi = (4-hi)+ci - Ta thực hiện quét 4 lần, lần lượt 4 hàng - Thuật tốn quét bàn phím như sau: Chương trình quét bàn phím được viết như sau: SCAN_KEY: MOV R1,#0FEH MOV R6,#4 SCAN: MOV P1,R1 MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,GET_CODE XCH A,R1 RL A XCH A,R1 DJNZ R6,SCAN CLR F0 LJMP EXIT GET_CODE: PUSH ACC MOV A,#4 CLR C SUBB A,R6 MOV R5,A POP ACC SWAP A MOV R4,#4 LOOP2: RRC A JNC SET_FLAG XCH A,R5 ADD A,#4 XCH A,R5 DJNZ R4,LOOP2 SET_FLAG: SETB F0 MOV A,R5 EXIT: MOV R1,#00H MOV R6,#00H RET VI. Giao tiếp với LCD - Trong những năm gần đây, LCD đã được sử dụng rộng rãi thay thế cho LED 7 đoạn hay các loại LED nhiều đoạn khác. Đó là do giá thành ngày càng giảm của các loại LCD; khả năng hiển thị đa dạng bao gồm cả chữ số, chữ cái và cả các ký tự graphic; việc tích hợp các bộ điều khiển LCD vào cùng một module, giúp cho CPU khỏi phải điều khiển liên tục việc hiển thị dữ liệu; và sự dễ dàng trong việc lập trình hiển thị trên LCD. Để chuẩn hóa việc điều khiển các loại LCD khác nhau, các hãng sản xuất LCD thường sử dụng một loại IC điều khiển là HD44780 của hãng Hitachi. Điều này giúp cho việc điều khiển LCD được dễ dàng và chuẩn hóa. Mô tả các chân của LCD Chân số Tên Mức logic Chức năng 1 VSS GND GND 2 VDD +5V Cực + của nguồn 3 Vo 0 . . . +5 V Điều khiển độ tương phản 4 RS H/L Chọn thanh ghi L: Thanh ghi lệnh; H: Thanh ghi dữ liệu 5 R/W H/L Đọc/Ghi L: Đọc; H: Ghi 6 E H/L Cho phép 7-14 DB0 - DB7 H/L Các bit dữ liệu ƒ VSS, VDD: các chân nguồn và GND của LCD ƒ Vo: chân điều khiển độ tương phản của màn hình hiển thị. RS (register select): Có 2 thanh ghi rất quan trọng trong LCD là thanh ghi lệnh và thanh ghi dữ liệu. Nếu RSở mức thấp, thanh ghi lệnh sẽ được chọn, cho phép người sử dụng gởi các mệnh lệnh đến LCD chẳng hạn như xóa màn hình hiển thị hoặc chuyển con trỏ về đầu dòng, … Nếu RS ở mứccao, thanh ghi dữ liệu sẽ được chọn, cho phép người sử dụng gởi các dữ liệu ký tự để hiển thị lên LCD. R/W (read/write): Cho phép ghi các lệnh hay dữ liệu ký tự lên LCD hoặc đọc các dữ liệu ký tự hay thông tin trạng thái từ các thanh ghi của nó. E (enable): Dùng để chốt các lệnh hay dữ liệu giữa module LCD và cácđường dữ liệu của nó. Khi ghi dữ liệu ra màn hình hiển thị LCD, dữ liệu sẽ được chốt khi có xung cạnh xuống ở chân này. Xung này phải có độ rộng tối thiểu là 450ns. Tuy nhiên, khi đọc dữ liệu ra từ LCD, sau khi có xung cạnh lên ở chân này thì dữ liệu đọc được mới là dữ liệu có ý nghĩa. DB0 – DB7: 8 đường bus dữ liệu (từ D0 đến D7). Dữ liệu có thể được chuyển đến và lấy ra khỏi bộ hiển thị LCD theo dạng một byte 8 bit hay dạng hai nửa byte 4 bit. Trong trường hợp sau chỉ có 4 đường dữ liệu cao được sử dụng (từ D4 đến D7). Chế độ 4 bit này thuận tiện khi sử dụng vi xử lý vì cần có ít đường I/O hơn. *Bảng ký tự chuẩn của LCD (ROM CODE A00) - Chương trình con kiểm tra trạng thái bận của LCD WAIT_LCD: CLR E ; E = 0 để tạo cạnh lên, bắt đầu lệnh LCD CLR RS ;chọn chế độ gởi lệnh SETB RW ;chọn chế độ đọc dữ liệu MOV DATA,#0FFH ;chọn DATA là input SETB E ;tạo cạnh lên MOV A,DATA ;đọc giá trị trả về JB ACC.7,WAIT_LCD ;nếu DB7 = 1, LCD vẫn bận CLR RW ;tắt RW cho các lệnh LCD kế RET Khởi động LCD - Trước khi có thể sử dụng LCD thì ta phải khởi động và đặt cấu hình cho nó. - Toàn bộ mã khởi động như sau: INIT_LCD: SETB E ;E = 1 để tạo cạnh xuống, bắt đầu lệnh LCD CLR RS ;chọn chế độ gởi lệnh MOV DATA,#38H ;chọn bus 8 bit, font ký tự 5x8, 2 hàng CLR E ;tạo cạnh xuống trên E LCALL WAIT_LCD ;chờ đến khi LCD hết bận SETB E ;E = 1 để tạo cạnh xuống, bắt đầu lệnh CLR RS ;chọn chế độ gởi lệnh MOV DATA,#0EH ;LCD on, cursor off CLR E ;tạo cạnh xuống trên E LCALL WAIT_LCD ;chờ đến khi LCD hết bận SETB E ;E = 1 để tạo cạnh xuống, bắt đầu lệnh CLR RS ;chọn chế độ gởi lệnh MOV DATA,#06H ;vị trí cursor tự động dịch sang phải khi có CLR E ;tạo cạnh xuống trên E LCALL WAIT_LCD ;chờ đến khi LCD hết bận RET Xóa màn hình hiển thị LCD CLR_LCD: SETB E CLR RS MOV DATA,#01H CLR E LCALL WAIT_LCD RET Ghi ra màn hình WRITE_TEXT: SETB E SETB RS MOV DATA,A CLR E LCALL WAIT_LCD RET Phần 2: thực hành Sơ đồ nguyên lý Lưu đồ giải thuật Start Chương trình Delay KKhai báo quét phím Thiết lập các lệnh khởi tạo cho LCD Khởi tạo các port của PPI 8255 Khởi tạo các port vào ra của 8051 Nhấn phím Chương trình cho phím Chương trình chính Xử lý dữ liệu Hiển thị lên LCD RESET END Chương trình cho LCD Giao tiếp PPI 8255 với LCD Giao tiếp PPI 8255 với 8051 Chương trình cho vi điều khiển-code asm ORG 0H RS EQU P1.0 RW EQU P1.1 E EQU P1.2 DB0 EQU P0.0 DB1 EQU P0.1 DB2 EQU P0.2 DB3 EQU P0.3 DB4 EQU P0.4 DB5 EQU P0.5 DB6 EQU P0.6 DB7 EQU P0.7 H1 EQU P2.0 H2 EQU P2.1 H3 EQU P2.2 H4 EQU P2.3 C1 EQU P2.4 C2 EQU P2.5 C3 EQU P2.6 C4 EQU P2.7 DATA_LCD EQU P0 MAIN: mov DPTR,#string1 MOV R3,#0H MOV R2,#0H ACALL CAUHINH_PPI8255 LCALL KHOITAO_LCD LCALL XUAT_CHUOI MOV R7,#30 LAP: ACALL DELAY DJNZ R7,LAP ACALL KHOITAO_LCD MOV R1,#0H LOOP: ACALL QUETPHIM SJMP LOOP CAUHINH_PPI8255: SETB P3.4 SETB P3.5 MOV DATA_LCD,#83H SETB P3.6 CLR P3.7 SETB P3.7 RET DELAY: MOV TMOD,#01H MOV TH0,#HIGH(-50000) MOV TL0,#LOW (-50000) SETB TR0 CLR TF0 JNB TF0,$ CLR TF0 CLR TR0 RET XUAT_CHUOI: MOV R0,#0H L1: MOV A,R0 MOVC A,@A+DPTR CJNE A,#0H,CONT_WRITE SJMP END_WRITE CONT_WRITE: CJNE R0,#0FH,TIEP MOV R2,#0C0H ACALL XUAT_LENH TIEP: INC R0 MOV R3,A ACALL XUAT_DATA SJMP L1 END_WRITE: RET KHOITAO_LCD: MOV R2,#38H ;BUS 8 BIT ,FONT 5X8 ,2 HANG ACALL XUAT_LENH MOV R2,#0EH ;LCD BAT CURSOR TAT ACALL XUAT_LENH MOV R2,#06H ; VI TRI CURSOR TU DONG DICH PHAI KHI CĨ KI TU CHUYEN VAO ACALL XUAT_LENH MOV R2,#80H ; CON TRO O VI TRI HANG TREN NGOAI CUNG BEN TRAI ACALL XUAT_LENH MOV R2,#01H ;XOA MAN HINH ACALL XUAT_LENH RET XUAT_LENH: SETB E CLR RS CLR RW CLR P3.4 CLR P3.5 MOV DATA_LCD,R2 SETB P3.6 CLR P3.7 SETB P3.7 CLR E LCALL DELAY RET XUAT_DATA: SETB E SETB RS CLR RW CLR P3.4 CLR P3.5 CJNE R1,#0FH,XUAT MOV R2,#0C0H ACALL XUAT_LENH XUAT: INC R1 MOV DATA_LCD,R3 SETB P3.6 CLR P3.7 SETB P3.7 CLR E LCALL DELAY RET CHONGRUNG: MOV R7,#2 LAP1: MOV R6,#250 LAP2: MOV R5,#250 DJNZ R5,$ DJNZ R6,LAP2 DJNZ R7,LAP1 RET QUETPHIM: LJMP QUET HIEN1: ACALL CHONGRUNG MOV R3,#31H ACALL XUAT_DATA SETB H1 LJMP THOAT HIEN2: ACALL CHONGRUNG MOV R3,#32H ACALL XUAT_DATA SETB H1 LJMP THOAT HIEN3: ACALL CHONGRUNG MOV R3,#33H ACALL XUAT_DATA SETB H1 LJMP THOAT CHU_A: ACALL CHONGRUNG MOV R3,#41H ACALL XUAT_DATA SETB H1 LJMP THOAT HIEN4: ACALL CHONGRUNG MOV R3,#34H ACALL XUAT_DATA SETB H2 LJMP THOAT HIEN5: ACALL CHONGRUNG MOV R3,#35H ACALL XUAT_DATA SETB H2 LJMP THOAT HIEN6: ACALL CHONGRUNG MOV R3,#36H ACALL XUAT_DATA SETB H2 LJMP THOAT CHU_B: ACALL CHONGRUNG MOV R3,#42H ACALL XUAT_DATA SETB H2 LJMP THOAT QUET: CLR H1 JNB C1,HIEN1 JNB C2,HIEN2 JNB C3,HIEN3 JNB C4,CHU_A SETB H1 CLR H2 JNB C1,HIEN4 JNB C2,HIEN5 JNB C3,HIEN6 JNB C4,CHU_B SETB H2 CLR H3 JNB C1,HIEN7 JNB C2,HIEN8 JNB C3,HIEN9 JNB C4,CHU_C SETB H3 CLR H4 JNB C1,HIEN_SAO JNB C2,HIEN0 JNB C3,HIEN_THANG JNB C4,T SETB H4 SJMP QUET HIEN7: ACALL CHONGRUNG MOV R3,#37H ACALL XUAT_DATA SETB H3 LJMP THOAT HIEN8: ACALL CHONGRUNG MOV R3,#38H ACALL XUAT_DATA SETB H3 LJMP THOAT HIEN9: ACALL CHONGRUNG MOV R3,#39H ACALL XUAT_DATA SETB H3 LJMP THOAT CHU_C: ACALL CHONGRUNG MOV R3,#43H ACALL XUAT_DATA SETB H3 LJMP THOAT HIEN_SAO: ACALL CHONGRUNG MOV R3,#2AH ACALL XUAT_DATA SETB H4 LJMP THOAT HIEN0: ACALL CHONGRUNG MOV R3,#30H ACALL XUAT_DATA SETB H4 LJMP THOAT HIEN_THANG: ACALL CHONGRUNG MOV R3,#23H ACALL XUAT_DATA SETB H4 LJMP THOAT CLEAR: ACALL CHONGRUNG ACALL KHOITAO_LCD MOV R1,#0H SETB H4 LJMP THOAT THOAT: RET STRING1: DB ' GROUP 9 !!! ' DB 0 EXIT: END ˜ END ™

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

  • docxnhom_9_1132.docx