Trong những thập niên cuối thế kỉ XX, từ sự ra đời của công nghệ bán dẫn, kĩ thuật điện tử đã có sự phát triển vượt bậc. Các thiết bị điện tử sau đó đã được tích hợp với mật độ cao và rất cao trong các diện tích nhỏ, nhờ vậy các thiết bị điện tử nhỏ hơn và nhiều chức năng hơn. Các thiết bị điện tử ngày càng nhiều chức năng trong khi giá thành ngày càng rẻ hơn, chính vì vậy điện tử có mặt khắp mọi nơi.Ngày nay, các bộ vi điều khiển có ứng dụng ngày càng rộng rãi và thâm nhập ngày càng nhiều trong các lĩnh vực kỹ thuật và đời sống xã hội. Hầu hết các thiết bị kỹ thuật từ phức tạp đến đơn giản như thiết bị điều khiển tự động, thiết bị văn phòng cho đến các thiết bị trong gia đình đều có dùng các bộ vi điều khiển. Rất nhiều họ vi điều khiển của nhiều nhà chế tạo khác nhau lần lượt được đưa ra thị trường. Để tăng tính năng điều khiển, các bộ vi điều khiển đã không ngừng được cải tiến, nâng cấp, chỉnh sửa và tối ưu để phù hợp với công nghệ phát triển hiện nay. Đỉnh cao của việc sử dụng vi điều khiển là dùng trong người máy (Robot) và các thiết bị PLC để điều khiển logic chương trình hóa dây chuyền sản xuất tự động. Và một trong những họ vi điều khiển đang được ứng dụng rộng rãi ngày nay là họ vi điều khiển 8051.Họ vi điều khiển 8051 được ứng dụng trong thực tế rất phổ biến như ứng dụng để điều khiển động cơ, điều khiển LED, điều khiển đèn giao thông, làm bộ đếm sản phẩm, …trong nhiều ứng dụng đó nhóm sinh viên chúng em đã tham gia vào thực hiện đề tài “MẠCH TẠO SỐ NGẪU NHIÊN SỬ DỤNG 8051 HIỂN THỊ TRÊN LCD”. Trong quá trình thực hiện làm do chúng em chưa có kinh nghiệm nhiều nên còn thiếu sót mong thầy (cô) chỉ dạy chúng em thêm trong những lần tiếp theo để chúng em thực hiện đề tài thành công hơn.
BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT Mà ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ BÁO CÁO ĐỒ ÁN ĐỀ TÀI: MẠCH TẠO SỐ NGẪU NHIÊN SỬ DỤNG 8051 HIỂN THỊ TRÊN LCD Giảng viên hướng dẫn: Đặng Văn Hải Sinh viên thực hiện: Nguyễn Văn Ninh Lê Minh Tuấn Nguyễn Ngọc Huy Hà Nội, ngày 18 tháng 12 năm 2020 MỤC LỤC LỜI NÓI ĐẦU Trong thập niên cuối kỉ XX, từ đời công nghệ bán dẫn, kĩ thuật điện tử có phát triển vượt bậc Các thiết bị điện tử sau tích hợp với mật độ cao cao diện tích nhỏ, nhờ thiết bị điện tử nhỏ nhiều chức Các thiết bị điện tử ngày nhiều chức giá thành ngày rẻ hơn, điện tử có mặt khắp nơi Ngày nay, vi điều khiển có ứng dụng ngày rộng rãi thâm nhập ngày nhiều lĩnh vực kỹ thuật đời sống xã hội Hầu hết thiết bị kỹ thuật từ phức tạp đến đơn giản thiết bị điều khiển tự động, thiết bị văn phòng thiết bị gia đình có dùng vi điều khiển Rất nhiều họ vi điều khiển nhiều nhà chế tạo khác đưa thị trường Để tăng tính điều khiển, vi điều khiển không ngừng cải tiến, nâng cấp, chỉnh sửa tối ưu để phù hợp với công nghệ phát triển Đỉnh cao việc sử dụng vi điều khiển dùng người máy (Robot) thiết bị PLC để điều khiển logic chương trình hóa dây chuyền sản xuất tự động Và họ vi điều khiển ứng dụng rộng rãi ngày họ vi điều khiển 8051 Họ vi điều khiển 8051 ứng dụng thực tế phổ biến ứng dụng để điều khiển động cơ, điều khiển LED, điều khiển đèn giao thông, làm đếm sản phẩm, …trong nhiều ứng dụng nhóm sinh viên chúng em tham gia vào thực đề tài “MẠCH TẠO SỐ NGẪU NHIÊN SỬ DỤNG 8051 HIỂN THỊ TRÊN LCD” Trong trình thực làm chúng em chưa có kinh nghiệm nhiều nên cịn thiếu sót mong thầy (cơ) dạy chúng em thêm lần để chúng em thực đề tài thành công Chúng em xin chân thành cảm ơn!!! NHÓM SINH VIÊN THỰC HIỆN ĐỒ ÁN CHƯƠNG 1: TÌM HIỂU VỀ 8051 1.1 GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 8051 1.1.1 Sơ lược lịch sử Bộ xử lý bit: Vào năm 1971, vi xử lý giới Intel mắt với tên gọi 4004 Hình 1.1 Vi điều khiển 4004 Intel 4004 vi xử lý 4-bit, 16 chân, hoạt động tốc độ 740KHz - khoảng tám chu kỳ đồng hồ cho chu kỳ lệnh (nhận lệnh, giải mã, thực hiện), chip có khả thực 46250 đến 92500 lệnh giây Bộ xử lý bit: Ra đời năm 1972 có tên Intel 8008 có tốc độ từ 200kHz đến 800kHz cao phiên cũ Vào năm 1981, Hãng Intel giới thiệu vi điều khiển 8-bit gọi 8051 Vi điều khiển trở nên phổ biến sau Intel cho phép nhà sản xuất khác sản xuất bán dạng biến 8051 mà họ thích với điều kiện họ phải để mã lại tương thích với 8051 Hình 1.2 Vi điều khiển 8051 Bộ xử lý 64 bit: Ra đời từ năm 2004 với nhiều phiên có phiên như: P4 Prescott (2004), Premium D (2005), Premium Extreme Edition (2005), kiến trúc Core I (2006 đến nay), Core Duo, Core Quad, Core Extreme đỉnh cao vi xử lý năm 2007 có khả ép xung, QX9650 Hình 1.3 Chip Intel Core i Series 9th Gen Kể từ mắt năm 2006 dòng Core I liên tục phát triển qua hệ: Nehalem, Sandy Bridge, Ivy Bridge, Haswell, Broad Well, Skylake, Kabylake, Coffelake, Thế hệ hệ thứ 10 Ice Lake Ngày với tên Core i3, Core i5, Core i7, Core i9 ngày thông dụng Càng phiên cơng nghệ, tốc độ, tích hợp cao mạnh mẽ Các tính vi điều khiển 8051: - Bộ nhớ chương trình bên trong: KB (ROM) - Bộ nhớ liệu bên trong: 128 byte (RAM) - Bộ nhớ chương trình bên ngoài: 64 KB (ROM) - Bộ nhớ liệu bên ngoài: 64 KB (RAM) - port xuất nhập (I/O port) 8-bit - định thời 16-bit - Tần số hoạt động từ: 0Hz đến 24 MHz - Mạch giao tiếp nối tiếp - Bộ xử lý bit (thao tác bit riêng lẻ) - 210 vị trí nhớ định địa chỉ, vị trí bit - Nhân / Chia µs - 32 ghi đa dụng 8-bit - Thanh ghi PC DP 16-bit - UART, ADC, … Có hai vi điều khiển thành viên khác họ 8051 8052 8031 8052: vi điều khiển 8052 chứa tất đặc tính 8051 bổ sung thêm 128byte RAM, 4Kb ROM định thời 8031: Khơng có sẵn ROM Để sử dụng, bạn phải tự thêm ROM cho 8031 Bên cạnh đó, có port 8-bit thay port 8051 Đặc tính ROM chip RAM 8051 4K byte 128 byte 8052 8K byte 256 byte 8031 OK 28 byte Bộ định thời Chân vào Cổng nối tiếp Nguồn ngắt 32 32 32 Bảng 1.1 So sánh đặc tính thành viên họ 8051 1.1.2 Cấu trúc vi điều khiển 8051 1.1.2.1 Sơ đồ khối chức khối vi điều khiển 8051 Hình 1.4 Sơ đồ khối vi điều khiển 8051 - CPU (Central Processing Unit): đơn vị xử lý trung tâm → tính tốn điều khiển trình hoạt động hệ thống - OSC (Oscillator): Mạch dao động → tạo tín hiệu xung clock cung cấp cho khối chip hoạt động - Interrupt control: điều khiển ngắt → nhận tín hiệu ngắt từ bên (INT0\, INT1\), từ định thời (Timer 0, Timer 1) từ cổng nối tiếp (Serial port), đưa tín hiệu ngắt đến CPU để xử lý - Other registers: Các ghi khác → lưu trữ liệu port xuất/nhập, trạng thái làm việc khối chip suốt trình hoạt động hệ thống - RAM (Random Access Memory): Bộ nhớ liệu chip → lưu trữ liệu - ROM (Read Only Memory): Bộ nhớ chương trình chip → lưu trữ chương trình hoạt động chip - I/O ports (In/Out ports): Các port xuất/nhập → điều khiển việc xuất nhập liệu dạng song song chip thông qua port P0, P1, P2, P3 - Serial port: Port nối tiếp → điều khiển việc xuất nhập liệu dạng nối tiếp ngồi chip thơng qua chân TxD, RxD - Timer 0, Timer 1: Bộ định thời 0, → dùng để định thời gian đếm kiện (đếm xung) thông qua chân T0, T1 - Bus control: điều khiển bus → điều khiển hoạt động hệ thống bus việc di chuyển thông tin hệ thống bus - Bus system: Hệ thống bus → liên kết khối chip lại với 1.1.2.2 Sơ đồ chân chức vi điều khiển 8051 Hình 1.5 Sơ đồ chân 8051 Port 0: - Port (P0.0 – P0.7) có số chân từ 32 – 39 - Port có hai chức năng: • Port xuất nhập liệu (P0.0 - P0.7) → không sử dụng nhớ ngồi • Bus địa byte thấp bus liệu đa hợp (AD0 – AD7) → có sử dụng nhớ ngồi - Ở chế độ mặc định (khi reset) chân Port (P0.0 - P0.7) cấu hình port xuất liệu Muốn chân Port làm port nhập liệu cần phải lập trình lại, cách ghi mức logic cao (mức 1) đến tất bit port trước bắt đầu nhập liệu từ port - Khi lập trình cho ROM chip Port đóng vai trị ngõ vào liệu (D0 – D7) Port 1: - Port (P1.0 – P1.7) có số chân từ – 8 - Port có chức năng: • Port xuất nhập liệu (P1.0 – P1.7) → sử dụng khơng sử dụng nhớ ngồi - Ở chế độ mặc định (khi reset) chân Port (P1.0 – P1.7) cấu hình port xuất liệu Muốn chân Port làm port nhập liệu cần phải lập trình lại, cách ghi mức logic cao (mức 1) đến tất bit port trước bắt đầu nhập liệu từ port - Khi lập trình cho ROM chip Port đóng vai trị ngõ vào địa byte thấp (A0 – A7) Port 2: - Port (P2.0 – P2.7) có số chân từ 21 – 28 - Port có hai chức năng: • Port xuất nhập liệu (P2.0 – P2.7) → không sử dụng nhớ ngồi • Bus địa byte cao (A8 – A15) → có sử dụng nhớ ngồi - Ở chế độ mặc định (khi reset) chân Port (P2.0 – P2.7) cấu hình port xuất liệu Muốn chân Port làm port nhập liệu cần phải lập trình lại, cách ghi mức logic cao (mức 1) đến tất bit port trước bắt đầu nhập liệu từ port - Khi lập trình cho ROM chip Port đóng vai trị ngõ vào địa byte cao (A8 – A11) tín hiệu điều khiển Port 3: - Port (P3.0 – P3.7) có số chân từ 10 – 17 - Port có hai chức năng: • Port xuất nhập liệu (P3.0 – P3.7) → không sử dụng nhớ ngồi chức đặc biệt • Các tín hiệu điều khiển → có sử dụng nhớ chức đặc biệt - Ở chế độ mặc định (khi reset) chân Port (P3.0 – P3.7) cấu hình port xuất liệu Muốn chân Port làm port nhập liệu cần phải lập trình lại, cách ghi mức logic cao (mức 1) đến tất bit port trước bắt đầu nhập liệu từ port - Khi lập trình cho ROM chip Port đóng vai trị ngõ vào tín hiệu điều khiển - Chức chân Port 3: Bit Tên Địa bit Chức P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 RxD TxD T0 T1 B0H B1H B2H B3H B4H B5H B6H B7H Chân nhận liệu port nối tiếp Chân phát liệu port nối tiếp Ngõ vào ngắt Ngõ vào ngắt Ngõ vào định thời/đếm Ngõ vào định thời/đếm Điều khiển ghi vào RAM Điều khiển đọc từ RAM Bảng 1.2 Chức chân Port : - PSEN (Program Store Enable): cho phép nhớ chương trình, chân số 29 - Chức năng: • Là tín hiệu cho phép truy xuất (đọc) nhớ chương trình (ROM) ngồi • Là tín hiệu xuất, tích cực mức thấp = → thời gian CPU tìm - nạp lệnh từ ROM ngồi = → CPU sử dụng ROM (khơng sử dụng ROM ngồi) - Khi sử dụng nhớ chương trình bên ngồi, chân thường nối với chân ROM phép CPU đọc mã lệnh từ ROM 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 để thực việc giải đa hợp cho bus địa byte thấp bus liệu đa hợp (AD0 – AD7) • Là tín hiệu xuất, tích cực mức cao ALE = → thời gian bus AD0 - AD7 đóng vai trị bus D0 - D7 ALE = → thời gian bus AD0 - AD7 đóng vai trị bus A0 - A7 - Khi lập trình cho ROM chip chân ALE đóng vai trị ngõ vào xung lập trình () - Khi lệnh lấy liệu từ RAM ngồi (MOVX) thực xung ALE bị bỏ qua : - EA (External Access): truy xuất ngoài, chân số 31 - Chức năng: 10 liệu từ SBUF ngoài, liệu lấy từ đệm nhận liệu truyền thông nối tiếp Thanh ghi định thời/bộ đếm: 8051 có đếm/định thời (counter/timer) 16 bit để định khoảng thời gian để đếm kiện Các cặp ghi (TH0, TL0) (TH1, TL1) ghi đếm thời gian Bộ định thời có địa 8AH (TL0, byte thấp) 8CH (TH0, byte cao) Bộ định thời có địa 8BH (TL1, byte thấp) 8DH (TH1, byte cao) Hoạt động định thời thiết lập ghi chế độ định thời TMOD (Timer Mode Register) địa 88H Chỉ có TCON định địa bit Các ghi ngắt: 8051 có cấu trúc ngắt với hai mức ưu tiên năm ngun nhân ngắt Các ngắt bị vơ hiệu hóa sau reset hệ thống sau cho phép ngắt cách ghi vào ghi cho phép ngắt IE (interrupt enable register) địa A8H Mức ưu tiên ngắt thiết lập qua ghi ưu tiên ngắt IP (interrupt priority register) địa Hoạt động Reset: 8051 reset cách giữ chân RST mức cao tối thiểu chu kỳ máy sau chuyển mức thấp RST tác động tay đựơc tác động cấp nguồn cách dùng mạch RC Thanh ghi Nội dung Bộ đếm chương trình Thanh chứa A Thanh ghi B PSW SP DPTR Port 0-3 IP 0000H 00H 00H 00H 07H 0000H FFH xxx00000B (8051) xx000000B (8052) 0xx00000B (8051) 0x000000B (8052) 00H IE Các ghi định thời 17 SCON SBUF PCON (HMOS) PCON (CMOS) 00H 00H 0xxxxxxxB 0xxx0000B Bảng 1.5 Trạng thái ghi sau reset 18 CHƯƠNG 2: TÌM HIỂU VỀ LCD 16X2 2.1 TỔNG QUAN VỀ LCD 2.1.1 Giới thiệu LCD Thế kỷ 21 chứng kiến phát triển vượt bậc ngành công nghệ Một số công nghệ phải kể đến cơng nghệ LCD Nhà vật lý người Áo Frinitzen Reinitzer phát tinh thể lỏng vào năm 1888 Màn hình tinh thể lỏng đuợc sản xuất vào năm 70 ký 20 với ứng dụng ban đầu máy tính, đồng hồ quan sát phần tử… Cơng nghệ hình tinh thể lỏng phát triển mạnh mẽ với giá thành ngày thấp, tiêu hao luợng kiểu dáng gọn nhẹ với nhiều ứng dụng thực tế như: tivi, hình máy tính, hình điện thoại… Ngày nay, thiết bị hiển thị LCD (Liquid Crystal Display) sử dụng nhiều ứng dụng VĐK LCD có nhiều ưu điểm so với dạng hiển thị khác: Nó có khả hiển thị kí tự đa dạng, trực quan (chữ, số kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn tài nguyên hệ thống giá thành rẽ … LCD tên viết tắt (Liquid Crystal Display) hay biết đến tên dân dã hình tinh thể lỏng Có nhiều loại hình LCD khác Với ứng dụng nhỏ thường sử dụng loại hình cỡ nhỏ đơn giản loại LCD16x2 Các ký tự hiển thị hình với hàng, hàng hiển thị 16 ký tự Hình 2.1 Màn hình LCD 16x2 Có thể chia module LCD làm loại chính: + Loại hiển thị ký tự (charater LCD) gồm có các kích cỡ 16x1(16 kí tự x1 dịng) ;16x2(16 ký tự x2 dòng); 16x4 (16 ký tự x4 dòng); 20x1 (20 ký tự x1 dòng) 19 + Loại hiển thị đồ họa (graphic LCD) đen trắng màu gồm kích cỡ 1,47 inch (128x128 điểm ảnh); 1,8 inch (128x160 điểm ảnh); 2,4 inch (240x320 điểm ảnh) Thơng số kỹ thuật: • Điện áp hoạt động V • Kích thước: 80 x 36 x 12.5 mm • Chữ đen, xanh • Khoảng cách hai chân kết nối 0.1 inch tiện dụng kết nối với Breadboard • Tên chân ghi mặt sau hình LCD hổ trợ việc kết nối, dây điện • Có đèn led nền, dùng biến trở PWM điều chình độ sáng để sử dụng điện • Có thể điều khiển với dây tín hiệu 2.1.2 Sơ đồ, chức năng, liên kết chân LCD Sơ đồ chân LCD: Hình 2.2 Sơ đồ chân LCd 16x2 Mơ tả 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 LCD (contrast), chân cần nối với biến trở 10k để chia áp Trong hoạt động, chỉnh để thay đổi giá trị biến trở để đạt độ tương phản cần thiết, sau giữ mức biến trở Các chân điều khiển RS, R/W, EN đường liệu nối trực tiếp với vi điều khiển Tùy theo chế độ hoạt động 4bit hay 8bit mà chân từ D0 đến D3 bỏ qua nối với vi điều khiển 20 Trong số LCD, chân LED đánh số 15 16 số trường hợp chân ghi A (Anode) K (Cathode), gọi chân nguồn cho “đèn LED nền” - Chân chọn ghi RS (chân 4_Register Select): Có hai ghi quan trọng LCD, chân cho phép lựa chọn ghi IR DR để làm việc Vì ghi kết nối với chân Data LCD nên cần bit để lựa chọn chúng Nếu RS=0, ghi IR chọn, ghi mà lệnh chọn phép người dùng gửi lệnh chẳng hạn xóa hình RS=1 ghi DR chọn, ghi liệu chọn cho phép người dùng gửi liệu cần hiển thị LCD Chúng ta biết ghi IR ghi chứa mã lệnh cho LCD, muốn gửi mã lệnh đến LCD chân RS phải reset Ngược lại, muốn ghi mã ASCII ký tự cần hiển thị lên LCD set RS=1 để chọn ghi DR Hoạt động chân RS mô tả sau: o o o Thanh ghi IR: Để điều khiển LCD, người dùng phải “ra lệnh” thông qua tám đường bus DB0-DB7 Mỗi lệnh nhà sản xuất LCD đánh địa rõ ràng Người dùng việc cung cấp địa lệnh cách nạp vào ghi IR Nghĩa là, ta nạp vào ghi IR chuỗi 8-bit, chip HD44780 tra bảng mã lệnh địa mà IR cung cấp thực lệnh • VD: Lệnh “hiển thị hình” có địa lệnh 00001100 (DB7 DB0) Lệnh “hiển thị hình trỏ” có mã lệnh 00001110 Thanh ghi DR: Thanh ghi DR dùng để chứa liệu bit để ghi vào vùng RAM DDRAM CGRAM (ở chế độ ghi) dùng để chứa liệu từ vùng RAM gởi cho MPU (ở chế độ đọc) Nghĩa là, MPU ghi thông tin vào DR, mạch nội bên chip tự động ghi thông tin vào DDRAM CGRAM Hoặc thông tin địa ghi vào IR, liệu địa vùng RAM nội HD44780 chuyển DR để truyền cho MPU Bằng cách điều khiển chân RS R/W chuyển qua lại giữ ghi giao tiếp Xem bảng thiết lập hai chân RS R/W theo mục đích giao tiếp với MPU => Bằng cách điều khiển chân RS R/W chuyển qua lại giữ ghi giao tiếp với MPU Bảng sau tóm tắt lại thiết lập hai chân RS R/W theo mục đích giao tiếp RS R/W Chức 21 0 Ghi vào ghi IR để lệnh cho LCD Đọc cờ bận DB7 giá trị đếm địa DB0-DB6 Ghi vào ghi DR 1 Đọc liệu từ DR Bảng 2.1 Các thiết lập hai chân RS R/W - Chân đọc/ghi R/W (chân 5) Chân lựa chọn việc đọc ghi Nếu R/W=0 liệu ghi từ điều khiển (vi điều khiển AVR chẳng hạn) vào LCD Nếu R/W=1 liệu đọc từ LCD ngồi Tuy nhiên, có trường hợp mà liệu đọc từ LCD ra, đọc trạng thái LCD để biết LCD có bận hay khơng (cờ Busy Flag - BF) Do LCD thiết bị hoạt động tương đối chậm (so với vi điều khiển), cờ BF dùng để báo LCD bận, BF=1 phải chờ cho LCD xử lí xong nhiệm vụ tại, đến BF=0 thao tác gán cho LCD Vì thế, làm việc với Text LCD thiết phải có chương trình tạm gọi wait_LCD để chờ LCD rảnh Có cách để viết chương trình wait_LCD Cách đọc bit BF kiểm tra chờ BF=0, cách đòi hỏi lệnh đọc từ LCD điều khiển ngồi, chân R/W cần nối với điều khiển Cách viết hàm delay khoảng thời gian cố định (tốt 1ms) Ưu điểm cách đơn giản khơng cần đọc LCD, chân R/W không cần sử dụng nối với GND Tuy nhiên, nhược điểm cách khoảng thời gian delay cố định lớn làm chậm trình thao tác LCD, nhỏ gây lỗi hiển thị - Chân cho phép E (chân 6_Enable) Chân cho phép LCD hoạt động (Enable), chân cần kết nối với điều khiển phép thao tác LCD Để đọc ghi data từ LCD cần tạo “xung cạnh xuống” chân EN, nói theo cách khác, muốn ghi liệu vào LCD trước hết cần đảm bảo chân EN=0, tiếp đến xuất liệu đến chân D0^7, sau set chân EN lên cuối xóa EN để tạo xung cạnh xuống, nói cách khác chân cho phép E sử dụng LCD để chốt thông tin hữu chân liệu Khi liệu cung cấp đến chân liệu xung mức cao xuống thấp phải áp đến chân để LCD chốt liệu chân liệu Xung phải rộng tối thiểu 450ns - Chân D0+D7: Đây chân liệu bit, dùng để gửi thông tin LCD đọc nội dung ghi LCD 22 Để hiển thị chữ số, gửi mã ASCII chữ từ A đến Z, a đến f số từ 0~9 đến chân bật RS=1 Cũng mã lệnh mà gửi đến LCD để xóa hình đưa trỏ vị trí đầu dòng nhấp nháy trỏ Chúng ta 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 D7 đọc R/W=1 RS=0 sau: Nếu R/W=1, RS=0 D7=1(cờ bận 1) LCD bận công việc bên khơng nhận thơng tin Khi D7 LCD sẵn sàng nhận thơng tin Lưu ý nên kiểm tra cờ bận trước ghi bất khì liệu lên LCD Cờ báo bận BF: (Busy Flag) Khi thực hoạt động bên chíp, mạch nội bên cần khoảng thời gian để hoàn tất Khi thực thi hoạt động bên chip thế, LCD bỏ qua giao tiếp với bên ngồi bật cờ BF (thơng qua chân DB7 có thiết lập RS=0, R/W=1) lên để báo cho MPU biết “bận” Dĩ nhiên, xong việc, đặt cờ BF lại mức Bộ đếm địa AC: (Address Counter) Như sơ đồ khối, ghi IR không trực tiếp kết nối với vùng RAM (DDRAM CGRAM) mà thông qua đếm địa AC Bộ đếm lại nối với vùng RAM theo kiểu rẽ nhánh Khi địa lệnh nạp vào ghi IR, thông tin nối trực tiếp cho vùng RAM việc chọn lựa vùng RAM tương tác bao hàm mã lệnh Sau ghi vào (đọc từ) RAM, đếm AC tự động tăng lên (giảm đi) đơn vị nội dung AC xuất cho MPU thơng qua DB0-DB6 có thiết lập RS=0 R/W=1 (xem bảng tóm tắt RS - R/W). Lưu ý: Thời gian cập nhật AC khơng tính vào thời gian thực thi lệnh mà cập nhật sau cờ BF lên mức cao (not busy), lập trình hiển thị, bạn phải delay khoảng tADD khoảng 4uS-5uS (ngay sau BF=1) trước nạp liệu 23 Hình 2.3 Giản đồ xung cập nhật AC Vùng RAM hiển thị DDRAM : (Display Data RAM) Đây vùng RAM dùng để hiển thị, nghĩa ứng với địa RAM kí tự hình bạn ghi vào vùng RAM mã bit, LCD hiển thị vị trí tương ứng hình kí tự có mã bit mà bạn cung cấp Hình sau trình bày rõ mối liên hệ : Hình 2.4 Mối liên hệ địa DDRAM vị trí hiển thị LCD Vùng RAM có 80x8 bit nhớ, nghĩa chứa 80 kí tự mã bit Những vùng RAM cịn lại khơng dùng cho hiển thị dùng vùng RAM đa mục đích Lưu ý để truy cập vào DDRAM, ta phải cung cấp địa cho AC theo mã HEX Vùng ROM chứa kí tự CGROM: Character Generator ROM Vùng ROM dùng để chứa mẫu kí tự loại 5x8 5x10 điểm ảnh/kí tự, định địa bit Tuy nhiên, có 208 mẫu kí tự 5x8 32 mẫu kí tự kiểu 5x10 (tổng cộng 240 thay 2^8 = 256 mẫu kí tự) Người dùng thay đổi vùng ROM 24 CHƯƠNG 3: THỰC HIỆN MƠ HÌNH ĐỒ ÁN 3.1 MẠCH NGUYÊN LÝ 3.2 MẠCH IN, 3D 25 26 3.3 CHƯƠNG TRÌNH CHÍNH CODE 27 #include #define lcd P0 sbit sbit sbit sbit rs=P2^0; e=P2^1; sw=P3^0; rst=P3^1; unsigned int i=0; void void void void void void delay (int); display (unsigned char); cmd (unsigned char); string (char *); init (void); int_lcd(unsigned int); void delay (int d) { unsigned char i=0; for(;d>0;d ) { for(i=250;i>0;i ); for(i=248;i>0;i ); } } void cmd (unsigned char c) { lcd=c; rs=0; e=1; delay(5); e=0; } void display (unsigned char c) { lcd=c; rs=1; e=1; delay(5); e=0; } 28 void string (char *p) { while(*p) { display(*p++); } } void init (void) { cmd(0x38); cmd(0x0c); cmd(0x01); cmd(0x80); } void int_lcd(unsigned int n) { char a[4]={0},i=0; if(n==0) { display('0'); return; } else { while(n>0) { a[i++]=(n%10)+48; n/=10; } for( i;i>=0;i ) { display(a[i]); } } } void main() { sw=1; rst=1; init(); cmd(0x80); string(" Random Number "); 29 } cmd(0xc0); string(" Generator "); delay(2000); cmd(0x01); while(1) { cmd(0x80); string("Press the button"); while(sw!=0) { i=++i; if(i==100) i=0; } cmd(0x80); string("RAND NUM: "); cmd(0x8a); int_lcd(i); while(rst!=0); //cmd(0x01); } 30 KẾT LUẬN Ba chương đồ án thể mục tiêu đặt thực đồ án đạt Cụ thể: Chương hệ thống lại kiến thức tổng quan 8051 Chương hệ thống lại kiến thức tổng quan LCD 16x2 Trong chương 3, chương trình minh họa hoạt động mạch đề tài Sở dĩ lược đồ OAEP chọn việc chuyển đổi rõ theo lược đồ PKCS #1 v1.5 thực cách dễ dàng, việc minh họa chương trình khơng thực cần thiết Chương trình trình bày chương mặt cho thấy nắm vững hoạt động mạch nguyên lý, mặt khác có ý nghĩa ứng dụng giúp cho người làm quen với nắm bắt hoạt động nhanh chóng Dù vậy, số vấn đề liên quan đến chuyển đổi rõ chưa giải đồ án Trước hết, đồ án đề cập đến việc ứng dụng lược đồ chuyển đổi rõ mà chưa làm rõ chất lý thuyết lược đồ Việc áp dụng lược đồ chuyển đổi rõ xem xét cho trường hợp mã hóa mà chưa xem xét cho trường hợp kí số Và đồ án chưa làm rõ hiểu lý điều chỉnh lược đồ chuyển đổi rõ qua phiên khác chuẩn mật mã RSA Việc giải điểm tồn hướng phát triển tương lai đồ án 31 ... thiết bị hiển thị LCD (Liquid Crystal Display) sử dụng nhiều ứng dụng VĐK LCD có nhiều ưu điểm so với dạng hiển thị khác: Nó có khả hiển thị kí tự đa dạng, trực quan (chữ, số kí tự đồ họa), dễ... …trong nhiều ứng dụng nhóm sinh viên chúng em tham gia vào thực đề tài “MẠCH TẠO SỐ NGẪU NHIÊN SỬ DỤNG 8051 HIỂN THỊ TRÊN LCD? ?? Trong trình thực làm chúng em chưa có kinh nghiệm nhiều nên cịn thiếu... hình LCD khác Với ứng dụng nhỏ thường sử dụng loại hình cỡ nhỏ đơn giản loại LCD1 6x2 Các ký tự hiển thị hình với hàng, hàng hiển thị 16 ký tự Hình 2.1 Màn hình LCD 16x2 Có thể chia module LCD