QUANG báo GIAO TIẾP với máy TÍNH DÙNG 8051 (có code và sơ đồ mạch) QUANG báo GIAO TIẾP với máy TÍNH DÙNG 8051 (có code và sơ đồ mạch) QUANG báo GIAO TIẾP với máy TÍNH DÙNG 8051 (có code và sơ đồ mạch) QUANG báo GIAO TIẾP với máy TÍNH DÙNG 8051 (có code và sơ đồ mạch)
QUANG BÁO GIAO TIẾP VỚI MÁY TÍNH DÙNG 8051 MỤC LỤC DANH MỤC CÁC HÌNH VẼ DANH MỤC CÁC BẢNG BIỂU DANH MỤC CÁC TỪ VIẾT TẮT VĐK: vi điều khiển Trans: transistor ĐỒ ÁN Trang 5/40 CHƯƠNG TÌM HIỂU LINH KIỆN CHO MẠCH QUANG BÁO 1.1 Giới thiệu 1.1.1 Mô tả mạch quang báo Mạch quang báo giao tiếp với máy tính dùng vi xử lý 8051 để xử lý tín hiệu Sau nhận nội dung nhập từ máy tính, vi xử lý giải mã, xuất tín hiệu, nội dung lên led matrix 8x8 1.1.2 Mục tiêu • Hiển thị nội dung nhập từ máy tính lên led matrix 8x8 • Dễ dàng nhập nội dung máy tính 1.2 Tìm hiểu linh kiện Mạch quang báo sử dụng linh kiện chính: vi xử lý 8051, IC dịch 74HC595, IC đệm dòng ULN2803, Led matrix 8x8 1.2.1 Vi điều khiển 8051 Hình 1-1: Vi điều khiển 8051 [4] VĐK 8051 có tất bao gồm 40 chân Trong có 24 chân có cơng dụng kép (1 chân có chức năng), đường hoạt động đường xuất nhập điều khiển I/O thành phần bus chứa liệu bus chứa địa để tải địa liệu giao tiếp với nhớ ngồi Quang báo giao tiếp với máy tính dùng 8051 Thông SVTH: Võ Nguyễn Thiện ĐỒ ÁN Trang 6/40 Bảng 1-1: Bảng đặc tính kỹ thuật vi điều khiển 89C51 a Đặc tính Số lượng ROM 4K byte RAM 128 byte Bộ định thời Các chân vào 32 Cổng nối tiếp Nguồn ngắt Sơ đồ chân Hình 1-2: Sơ đồ chân VĐK 8051 [5] b Sơ đồ khối chức Quang báo giao tiếp với máy tính dùng 8051 Thơng SVTH: Võ Nguyễn Thiện ĐỒ ÁN Trang 7/40 Hình 1-3: Sơ đồ khối VĐK 8051 [6] Chức port: Port 0: Là port có chức với số thứ tự chân 32 đến 39 • Trong hệ thống khơng dùng nhớ mở rộng port dùng làm đường điều khiển I/O • Trong hệ thống có sử dụng nhớ mở rộng port có chức bus chứa địa bus chứa liệu AD7 – AD0 (A : Address, D: Data) Port 1: Gồm chân có số thứ tự từ đến Port có chức dùng làm đường điều khiển xuất nhập I/O Port : Là port có chức gồm chân có số thứ tự chân từ 21 đến 28 • Trong hệ thống khơng dùng nhớ mở rộng port dùng làm đường điều khiển I/O • Trong hệ thống điều khiển có sử dụng nhớ mở rộng bên ngồi port có chức bus chứa địa cao A8 – A15 Port : Gồm chân có số thứ tự chân 10 – 17 Các chân port có nhiều chức năng, cơng dụng chuyển đổi có liên hệ với đặc tính đặc biệt 8051 : Quang báo giao tiếp với máy tính dùng 8051 Thông SVTH: Võ Nguyễn Thiện ĐỒ ÁN Trang 8/40 Bit P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 Tên RxD TxD INT0 INT1 T0 T1 WR RD Chức chuyển đổi Ngõ vào nhận liệu nối tiếp Ngõ xuất liệu nối tiếp Ngõ vào ngắt cứng thứ Ngõ vào ngắt cứng thứ Ngõ vào timer/counter thứ Ngõ vào timer/counter thứ Tín hiệu điều khiển ghi liệu lên nhớ bên ngồi Tín hiệu điều khiển đọc liệu từ nhớ bên Bảng 1-2: Bảng tính chân port VĐK 8051 Các ngõ tín hiệu điều khiển: Ngõ tín hiệu (PSEN)’ (Program store enable) : Chân 29 • Cho phép đọc nhớ mở rộng • Kết nối với chân ((OE)’ (RD)’) EPROM để điều khiển đọc mã lệnh • Khi giao tiếp với nhớ mở rộng sử dụng (PSEN)’, khơng có giao tiếp chân (PSEN)’ bỏ trống • Các mã lệnh chương trình đọc từ EPROM qua bus chứa liệu chốt vào ghi lệnh bên VĐK 8051 để giải mã Ngõ tín hiệu điều khiển ALE (Address Latch Enable): • Khi dùng nhớ bên ngoài, ALE điều khiển mạch giải đa hợp để tách đường chứa địa (A7-A0) chứa liệu (D7 – D0) • Là xung port tải địa • Xung ALE có f = 1/6 f thạch anh • Có thể dùng làm xung clock cung cấp cho IC khác Ngõ tín hiệu (EA)’ (External Access): • Nếu (EA)’ = 1(+5V) VĐK thực chương trình nhớ nội • Nếu (EA)’ = 0(0V) VĐK thực chương trình nhớ ngoại • Nhận điện áp lập trình VPP(Program) ghi liệu vào nhớ Flash Rom Ngõ tín hiệu RST (Reset) : • Khi cấp điện nhấn chân RESET reset lại VĐK • Tín hiệu Reset phải mức cao chu kỳ máy Các ngõ vào dao động XTALT1, XTAL2: VĐK 8051 có dao động chip yêu cầu có xung đồng hồ ngồi để chạy Một dao động thạch anh nối tới chân đầu vào XTAL1 (chân số 19) XTAL2 (chân số 18) Chân 40 (VCC) nối lên nguồn có điện áp 5V Chân 20 GND nối với MASS Quang báo giao tiếp với máy tính dùng 8051 Thơng SVTH: Võ Nguyễn Thiện ĐỒ ÁN Trang 9/40 1.2.2 IC dịch 74HC595 IC dịch 74HC595 ghi dịch bit có đầu vào nối tiếp đầu song song nối tiếp, ngõ có đệm trạng thái Hình 1-4: Sơ đồ chân IC 74HC595 [5] Hình 1-5: Sơ đồ logic IC 74HC595 [6] Bảng 1-3: Bảng chức chân 74HC595 Chân Ký hiệu Chức Q1 Ngõ liệu song song Q2 Ngõ liệu song song Q3 Ngõ liệu song song Q4 Ngõ liệu song song Q5 Ngõ liệu song song Quang báo giao tiếp với máy tính dùng 8051 Thông SVTH: Võ Nguyễn Thiện ĐỒ ÁN Trang 10/40 Q6 Ngõ liệu song song Q7 Ngõ liệu song song GND Mass (0V) Q7’ Ngõ liệu nối tiếp 10 MR Đưa trạng thái ban đầu (tích cực mức thấp) Ngõ vào xung clock Một trình chuyển từ mức 11 SH_CP LOW đến mức HIGH chân dịch liệu ghi dịch nhịp Ngõ vào Quá trình chuyển từ mức LOW sang mức 12 ST_CP HIGH Latch clock chốt liệu dịch ghi dịch vào chốt Ngõ cho phép (tích cực mức thấp) Khi chân mức LOW tín hiệu từ chốt xuất đầu 13 OE Khi chân mức HIGH đầu song song trạng thái trở kháng cao Còn đầu nối tiếp khơng bị 14 DS ảnh hưởng chân Dữ liệu vào nối tiếp 15 Q0 Dữ liệu song song 16 Vcc Nguồn Hình 1-6: IC 74HC595 [4] Quang báo giao tiếp với máy tính dùng 8051 Thơng SVTH: Võ Nguyễn Thiện ĐỒ ÁN Trang 30/40 3.3.3 Mơ hình khối hiển thị Hình 3-7: Mơ hình khối hiển thị 3.4 Mơ tả q trình hoạt động mơ hình Khi có tín hiệu truyền nội dung từ chương trình điều khiển máy tính chuyển tới khối hiển thị Led ma trận nhận tín hiệu từ khối điều khiển, giải mã để chuyển led ma trận 8x8 ghép lại, hiển thị nội dung Trong trình khởi động, vi điều khiển đọc lại liệu lưu ROM , VĐK đối chiếu kí tự nội dung truyền xuống để chép font tương ứng vào RAM chương trình hiển thị, gọi chương trình hiển thị để hiển thị nội dung khối hiển thị Khi chương trình điều khiển máy tính nhập nội dung mới, VĐK ngừng việc hiển thị để chờ nhận nội dung từ máy tính Sau lưu nội dung vừa nhận vào ROM để phục vụ cho việc hiển thị quang báo Module hiển thị dùng ma trận led ghép lại với thành hàng 32 cột Các ma trận Led nối chung hàng Module sử dụng IC chốt dịch 74HC595 IC đệm dòng ULN2803 Các chân Clock Latch IC 74HC595 mắc song Quang báo giao tiếp với máy tính dùng 8051 Thơng SVTH: Võ Nguyễn Thiện ĐỒ ÁN Trang 31/40 song với Và chân Data IC 74HC595 nối vào chân vi điều khiển Các chân Data IC lại mắc vào chân số IC dịch 74HC595 trước Ta sử dụng phương pháp quét hàng, nên thời gian định có hàng tích cực sáng, tốc độ nhanh, nên với việc lưu ảnh võng mạc nên ta thấy hình ảnh liên tục 3.5 Kết thực Quang báo giao tiếp với máy tính dùng 8051 Thơng SVTH: Võ Nguyễn Thiện ĐỒ ÁN Trang 32/40 Hình 3-8: Kết hồn thiện Quang báo giao tiếp với máy tính dùng 8051 Thông SVTH: Võ Nguyễn Thiện ĐỒ ÁN Trang 33/40 CHƯƠNG KẾT LUẬN, ỨNG DỤNG VÀ HƯỚNG PHÁT TRIỂN 4.1 Kết luận Mạch mô thực tế giống q trình thực gặp nhiều lỗi Trong trình thực đề tài nhận thấy dược số ưu, khuyết điểm sau: a Ưu điểm • Mạch gọn nhẹ gần gũi với sinh viên • Sinh viên tự làm, qua trao dồi thêm kiến thức • Dễ dàng hiển thị nội dung linh hoạt mà không cần phải thay đổi phần cứng b Khuyết điểm • Mạch chưa hồn thiện tốt • Còn nhiều hạn chế chức hiển thị nên chưa thể áp dụng vào thực tế 4.2 Ứng dụng Với mạch quang báo ta dễ dàng hiển thị nội dung cách linh hoạt nhờ giao tiếp qua máy tính Có thể ứng dụng vào lĩnh vực quảng cáo, trang trí 4.3 Hướng phát triển • Mạch nhiễu nên cần có biện pháp xử lý chỗng nhiễu • Hồn thiện bổ sung số chức để ứng dụng thực tế ( ví dụ: sử dụng nhìu font chữ khác, Led đa màu để hiển thị phong phú hơn, tăng kích thước quang báo • Cần trao dồi thêm kiến thực lập trình Quang báo giao tiếp với máy tính dùng 8051 Thơng SVTH: Võ Nguyễn Thiện ĐỒ ÁN Trang 34/40 TÀI LIỆU THAM KHẢO Sách Tiếng Việt: [1] Tống Văn On – Hoàng Đức Khải, “Họ Vi Điều Khiển 8051” [2] Đặng Quế Vinh, “Lập trình visual basic 6.0 bản” Sách Tiếng Anh: [3] Bruce A.Artwick, “Micromputer interfacing” Tài liệu Internet: [4] http://linhkientot.vn [5] http://www.dientuvietnam.net [6] http://www.datasheetcatalog.com [7] http://codientu.org [8] Thiết kế thi cơng mạch quang báo giao tiếp máy tính, http://luanvan.co/luan-van/thiet-ke-va-thi-cong-mach-quang-bao-giao-tiepmay-tinh-31430/ [9] Lập trình giao tiếp VB6 với VĐK qua RS232, http://codientu.org/threads/1492/ Quang báo giao tiếp với máy tính dùng 8051 Thơng SVTH: Võ Nguyễn Thiện ĐỒ ÁN Trang 35/40 PHỤ LỤC Code chương trình điều khiển: Dim i As Integer Dim nd As Integer Private Sub cmdClear_Click() txtnd.Text = "" End Sub Private Sub cmdRun_Click() Com1.Output = Chr(4) End Sub Private Sub cmdSend_Click() Com1.Output = Chr(2) Com1.Output = Trim(txtnd.Text) Com1.Output = Chr(3) End Sub Private Sub Command1_Click() Text1.Text = Asc(Mid(txtnd.Text, 1, 1)) + Asc(Mid(txtnd.Text, 2, 1)) + Asc(Mid(txtnd.Text, 3, 1)) + Asc(Mid(txtnd.Text, 4, 1)) + Asc(Mid(txtnd.Text, 5, 1)) + Asc(Mid(txtnd.Text, 6, 1)) + Asc(Mid(txtnd.Text, 7, 1)) End Sub Quang báo giao tiếp với máy tính dùng 8051 Thơng SVTH: Võ Nguyễn Thiện ĐỒ ÁN Trang 36/40 Private Sub Com1_OnComm() End Sub Private Sub Form_Load() With Com1 Settings = "9600,N,8,1" CommPort = RThreshold = SThreshold = InputMode = comInputModeText InputLen = Handshaking = comNone InBufferSize = 1024 OutBufferSize = 1024 If PortOpen = False Then PortOpen = True End If End With End Sub Private Sub txtnd_Change() If Len(txtnd.Text) > 70 Then Quang báo giao tiếp với máy tính dùng 8051 Thơng SVTH: Võ Nguyễn Thiện ĐỒ ÁN Trang 37/40 txtnd.Text = Left(txtnd.Text, 70) End If End Sub Code chương trình chính: #include #include #include #include #include //khai bao phan cung #define rck P2_6 #define dt P2_5 #define clk P2_4 #define Hang P0 //unsigned char code chuA[16]={0xFF,0x83,0xF5,0xF6,0xF5,0x83,0xFF,0xFF, //0xFF,0x80,0xFD,0xF3,0xFD,0x8 0,0xFF,0xFF}; unsigned char string[70] = {"DO AN MON HOC"}; unsigned char buffer[33]; unsigned int code ha[8] = {1,2,4,8,16,32,64,128}; int is,n=52,isrun=0; //so ki tu hien thi Quang báo giao tiếp với máy tính dùng 8051 Thơng SVTH: Võ Nguyễn Thiện ĐỒ ÁN Trang 38/40 char c; void serial_IT() interrupt { if (RI) { /* Khi nhan duoc du lieu */ RI = 0; /* Xoa co RI (RI de xac dinh du lieu da duoc truyen tu PC xuong?) */ c = SBUF; // Nhan du lieu PC truyen xuong if(c==2) { n =0; is =1; } else { if(c==3) { is = 0; string[n++]=' '; string[n++]=' ';string[n++]=' ';string[n+ +]=' ';string[n++]=' '; isrun = 1; } else { if(is==1 && n