Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội Bộ giáo dục đào tạo Trờng đại học bách khoa hà nội cộng Hòa xà hội chủ nghĩa việt nam Độc lập Tự Hạnh phúc Nhiệm vụ thiết kế tốt nghiệp Họ tên Ngô Quốc Toàn Khoá: Ngành Điều khiển Tự động Khoa: Điện Đề tài: Thiết kế mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với thiết bị ngoại vi : LCD, ADC0809, RTC DS12887 bàn phím số HEX Các số liệu ban đầu: Nội dung phần thuyết minh tính toán: Các vẽ đồ thị (ghi rõ loại vẽ kích thớc vẽ): ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………………… ………… C¸n bé híng dÉn: ………… Vũ Vân Hà SV: Ngô Quốc Toàn ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội Ngày giao nhiệm vụ thiÕt kÕ:………………………… ……………… Ngµy hoµn thµnh nhiƯm vơ: Ngày tháng 04 năm 2006 Chủ nhiệm môn cán hớng dẫn (Ký, ghi rõ họ tên) (Ký, ghi rõ họ tên) Sinh viên đà hoàn thành Ngày tháng 04 năm 2006 (Ký, ghi rõ họ tên) Mục Lục Lời cảm ơn .7 Mở đầu .8 Phần I: Tổng quan VđK 8051 Các thiết bị ngoại vi .9 Chơng I: Vi ®iỊu khiĨn 8051 I Khái niệm chung Vi điều khiển I.1 Sù ®êi I.2 Điểm khác biệt VĐK VXL dùng chung I.3 Tiªu chuÈn lùa chän bé vi ®iỊu khiĨn 10 II Vi ®iỊu khiĨn 8051 10 II.1 Sơ đồ khối cña 8051 10 II.2 Sơ đồ chức chân 8051 11 II.2.1 Sơ đồ chân .11 II.2.2 Chức chân 11 II.2.3 CÊu tróc cđa c¸c cỉng xt/nhËp 14 SV: Ng« Quốc Toàn ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội II.3 Tổ chøc bé nhí 8051 .14 II.3.1 Vïng RAM ®a mơc ®Ých .15 II.3.2 Vùng RAM định ®Þa chØ bit 15 II.3.3 C¸c d·y ghi 15 II.3.4 Các ghi chức ®Ỉc biƯt 15 II.3.4.1 Tõ trạng thái chơng trình PSW 15 II.3.4.2 Thanh ghi B .16 II.3.4.3 Con trá stack 16 II.3.4.4 Con trá d÷ liƯu 17 II.3.4.5 C¸c ghi port 17 II.3.4.6 Các ghi định thời TMOD TCON 17 II.3.4.7 Thanh ghi cđa cỉng nèi tiÕp .19 II.3.4.8 Các ghi ngắt 20 II.3.4.9 Thanh ghi ®iỊu khiĨn ngn .20 II.4 Bé nhí ngoµi 21 II.4.1 Truy xuất nhớ chơng trình 21 II.4.2 Truy xt bé nhí d÷ liệu 22 II.4.3 Hoạt ®éng Reset 23 III TËp lƯnh cđa 8051 .24 III.1 Các kiểu định địa chØ 24 III.1.1 Định địa ghi 24 III.1.2 Định địa trực tiếp 24 III.1.3 Định địa gián tiếp 25 III.1.4 Định địa tức thời 26 III.1.5 Định địa tơng đối 26 III.1.6 Định địa tuyệt đối 26 III.1.7 Định địa dài 27 III.1.8 Định ®Þa chØ chØ sè .27 III.2 Các loại lệnh .27 III.2.1 LÖnh sè häc 27 III.2.2 C¸c lƯnh Logic .28 III.2.3 Nhãm lƯnh di chun d÷ liƯu .30 III.2.4 C¸c lƯnh xö lý bit 31 III.2.5 C¸c lƯnh rÏ nh¸nh 31 SV: Ngô Quốc Toàn ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội III.2.6 Nhóm lệnh dịch, quay 33 III.2.7 Các lệnh làm việc với Stack 33 IV Hoạt động định thời .33 IV.1 Các định thêi cña 8051 33 IV.2 Thanh ghi chế độ định thời 34 IV.2.1 Các chế độ định thời cờ tràn 34 IV.2.1.1 Chế độ định thời 13-bit 34 IV.2.1.2 Chế độ định thời 16-bit 34 IV.2.1.3 ChÕ ®é tù n¹p l¹i 8-bit 34 IV.2.1.4 Chế độ định thời chia xẻ 35 IV.3 Nguồn xung clock định thời 35 V Ho¹t ®éng ng¾t 35 V.1 Tỉ chøc ng¾t cđa 8051 35 V.1.1 Cho phÐp không cho phép ngắt 35 V.1.2 Ưu tiên ngắt 35 V.1.3 Chuỗi vòng 36 V.2 Xö lý ng¾t 36 V.3 Các vector ngắt .36 V.4 Các ngắt port nèi tiÕp 36 V.5 Các ngắt 37 VI LËp tr×nh hợp ngữ 37 VI.1 Trình dịch hợp ngữ 37 VI.2 Khuôn dạng chơng trình hợp ngữ 37 VI.3 Cấu trúc chơng trình 38 VI.4 Tổ chức chơng trình 38 Chơng II: Các Thiết Bị Ngoại vi 39 I §ång hå thêi gian thùc DS12887 39 I.1 Hoạt động .40 I.2 Chøc chân 41 I.3 Bản đồ địa 43 I.4 Các ghi điều khiển 46 I.5 Minh häa ghÐp nèi gi÷a DS12887 víi 8051 49 II ThiÕt bÞ hiĨn thÞ LCD 49 SV: Ngô Quốc Toàn ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hµ Néi II.1 LCD .49 II.2 Minh häa ghÐp nèi gi÷a LCD víi 8051 52 III ADC0809 52 III.1 Sơ đồ ch©n cđa ADC0809 53 III.2 Các bớc lập trình cho ADC0809 54 III.3 Minh häa ghÐp nèi ADC0809 víi 8051 .55 IV.Bµn phÝm HEX 55 IV.1 Minh häa ghÐp nèi bµn phÝm víi 8051 56 V Giải mà địa chØ 74LS138 57 VI Chốt địa 74HC373 57 V.1.Sơ đồ chân 74HC373 57 V.2 Hoạt động cña 74LS373 57 PhÇn II ThiÕt kÕ 59 Ch¬ng I: ThiÕt kÕ phÇn cøng 59 I Mạch nguyên lý .59 II.Sơ đồ mạch 61 Chơng II: Thiết kế phần mềm 62 I Chuơng trình quét bàn phÝm HEX 62 II Đọc thời gian từ đồng hồ thời gian thực RTC DS12887 67 III Điều khiển ADC0809 để thùc hiƯn chun ®ỉi 74 KÕt luËn .78 Tài liệu tham khảo 79 Lêi cảm ơn Trớc hết chúng em gửi lời cám ơn tới tập thể thầy cô giáo môn Điều khiển tự động - Khoa điện trờng Đại học Bách khoa Hà Nội Đà giúp đỡ truyền đạt cho chúng em kiến thức quý báu qúa trình học tập trờng SV: Ngô Quốc Toàn ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội Chúng em xin chân thành cảm ơn thầy giáo hớng dẫn Vũ Vân Hà đà nhiệt tình hỡng dẫn chúng em trình làm đồ án Sinh viên thực Trịnh Mạnh Hùng Nguyễn Xuân Linh Ngô Quốc Toàn mở đầu Đề tài: Thiết kế mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với thiết bị ngoại vi : LCD, ADC0809, RTC DS12887 bàn phím số HEX Điều khiển tự động, ngày đà đợc ứng dụng vào nhiều ngành sản xuất sống Từ nhà máy, dây chuyền sản xuất đồ dùng phục vụ sinh hoạt nh: máy giặt, lò vi sóng Để thực việc điều khiển tự động có nhiều phơng pháp, cách thức nh máy tính, vi xử lý hay hệ điều khiển chuyên dụng Tùy vào lĩnh vực mà lựa chọn hệ thống điều khiển thích hợp Với sinh viên học chuyên ngành điều khiển tự động phải nắm bắt đợc tất kiến thức sở, tổng quát để từ giải toán điều khiển đặt công việc sau Một kiến thức cần phải có việc nghiên cứu thiết kế mạch ứng dụng sử dụng vi điều khiển Do ®ã chóng em ®· chän ®Ị tµi : ThiÕt kÕ mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với thiết bị ngoại vi LCD, ADC0809, RTC DS12887 HEX-keypad Các công việc thực hiện: SV: Ngô Quốc Toàn ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội ã Tìm hiểu Vi điều khiển 8051, thiết bị ngoại vi ã Thiết kế mạch nguyên lý ã Xây dựng toán điều khiển Phơng pháp thực ã Tìm hiểu thiết bị ã Vẽ mạch nguyên lý phần mềm Protel ã Viết phần mềm hợp ngữ KeilC Phần I :tổng quan Vi đIều khiển 8051 thiết bị ngoại vi Chơng I: Vi điều khiển 8051 I Khái niệm chung Vi điều khiển I.1 Sự đời Vào năm 1971 tập ®oµn Intel ®· giíi thiƯu 8080, bé vi xư lÝ thành công đầu tiên, tiếp không lâu Motorola, RCA, MOS Technology Zilog đà giới thiệu vi xử lí tơng tự : 6800, 1801, 6502 Z80 Bản thân vi mạch nhiều hiệu sử dụng nhng phần máy tinh đơn board (Single Board Computer), chúng trở thành thành phần trung tâm sản phẩm có ích dùng để nghiên cứu thiết kế Năm 1976 Intel giíi thiƯu bé vi ®iỊu khiĨn( Micro Controller) 8748, chip tơng tự nh vi xử lí chip họ vi điều khiển MCS48 8748 vi mạch chứa 17000 transistor bao gåm mét CPU, 1Kbyte EPROM, 64 byte RAM, 27 chân xuất nhập định thời bit Sự đời IC IC khác họ MCS-48 đà nhanh chóng trở thành chuẩn công nghiệp ứng dụng hớng điều khiển (Control Oriented Application) Độ phức tạp, kích thớc khả vi điều khiển đợc tăng thêm bậc quan trọng vào năm 1980 Intel công bố chip 8051, vi điều khiển họ vi ®iỊu khiĨn MCS-51 So víi 8048, chip 8051 chøa trªn 60000 transistor bao gåm 4Kbyte ROM, 128 byte RAM, 32 ®êng xuÊt nhËp, port nèi tiÕp vµ bé ®Þnh thêi 16 bit Vi ®iỊu khiĨn 8051 cịng nh họ vi điều khiển MCS51 vi điều khiển 8-bit mạnh linh hoạt nhất, đà trở thành vi điều khiển hàng đầu năm gần I.2 Điểm khác biệt vi điều khiển vi xử lý dùng chung Những vi xư lý dïng chung thêng gỈp nh hä Intel x86 (8086, 80286, 80386, 80486, Pentium ) hc hä 680x0 cđa Motorola (6800, 68010, 68020, 68030, 68040…) Nh÷ng bé vi xư lý RAM, ROM port I/O chip, sử dụng thiết kế hệ thống phải bổ sung thêm RAM, ROM, I/O định thời (Timer/Counter) chúng hoạt động SV: Ngô Quốc Toàn ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội đợc Tuy việc làm cho hệ thống cồng kềnh, phức tạp giá thành cao nhng chúng lại có u điểm linh hoạt so víi vi ®iỊu khiĨn Trong ®ã víi vi ®iỊu khiĨn nã cã s½n : CPU( bé vi xư lý) lợng cố định RAM, ROM, cổng I/O Timer/Counter đợc tích hợp tất chip I.3 Tiªu chuÈn lùa chän bé vi ®iỊu khiĨn HiƯn cã nhiỊu lo¹i vi ®iỊu khiĨn, với loại vi điều khiển 8bit có loại sau: 6811 (Motorola), 8051 (Intel), Z8 (Zilog) vµ PIC16x (Micro Technology) Mỗi loại có tập lệnh ghi riêng nên chúng không tơng thích lẫn Ngoài có vi điều khiển 16bit 32bit, để lựa chọn vi điều khiển thiết kế cần phải dựa tiêu chuẩn sau: Đáp ứng nhu cầu tính toán toán cách hiệu giá thành đầy đủ chức nhìn thấy đợc: a Tốc độ: tốc độ lớn mà vi điều khiển hỗ trợ bao nhiêu? b Kiểu đóng vá: kiÓu DIP (Dual In-line Package) hay QFP (Quadrangle Flat Package) Đây điều quan trọng yêu cầu không gian, kiểu lắp ráp tạo mẫu cho sản phẩm c Công suất tiêu thụ d Dung lợng RAM, ROM chip e Số cổng vào/ra Timer/Counter chip f Giá thành đơn vị sản phẩm Công cụ phát triển phần mềm Nguồn cung cấp vi điều khiển: tức khả sẵn sàng đáp ứng số lợng tơng lai II Vi điều khiển 8051 Vi điều khiển 8051 thành viên họ MCS-51 Intel, sau đố nhà sản xuất IC khác nh Siemens, Advanded Devices, Phillips đợc cấp phép làm nhà cung cÊp thø cho c¸c chip cđa hä MCS-51 II.1 Sơ đồ khối 8051 Chip 8051 có đặc trng sau: - Kbyte ROM - 128 Byte RAM - I/O port 8bit - điều khiển ngắt ( Interrupt Control) - Mạch dao ®éng néi (Oscillatior) - bé ®iỊu khiĨn bus (Bus Control) - Timer 16bit - M¹ch giao tiÕp nối tiếp - Không gian nhớ chơng trình (mÃ) 64Kbyte - Không gian nhớ liệu 64Kbyte SV: Ngô Quốc Toàn ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội - Bộ xử lý bit - 210 vị trí nhớ đợc định địa - Nhân/chia 4às Hình 1: Sơ đồ khối chip 8051 II.2 Sơ đồ chức chân 8051 II.2.1 Sơ đồ chân : Hình 2: Sơ đồ chân 8051 II.2.2 Chức chân a Port : Port (các chân từ 32 39) có công dụng: đợc sử dụng làm nhiệm vụ xuất/nhập trở thành bus địa bus liệu đa hợp b Port 1: Port (các chân từ 8) có công dụng xuất/nhập c Port 2: Port (các chân từ 21 28) có công dụng: làm nhiệm vụ xuất/nhập byte địa cao bus địa 16-bit d Port 3: Port (các chân 10 17) có công dụng Khi không hoạt động xuất/nhập, chân Port có nhiều chức riêng Bit Tên P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 RXD TXD INT INT T0 T1 SV: Ngô Quốc Toàn Địa bit B0H B1H B2H B3H B4H B5H Chức 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 Timer/Counter Ngõ vào Timer/Counter ĐKTĐ - K4 Đồ án tốt nghiệp P3.6 P3.7 Trờng đại học Bách Khoa Hà Nội WR RD B6H B7H Điều khiển ghi nhớ liệu Điều khiển đọc nhớ liệu Hình 2: Sơ đồ chân 8051 e Chân PSEN (Program Store Enable) : (chân 29) tín hiệu điều khiển cho phép truy xuất nhớ chơng trình Chân thờng đợc nối với chân cho phép xuất OE (Output Enable) EPROM (hoặc ROM) phép đọc byte lệnh Tín hiệu PSEN ë møc logic suèt thêi gian t×m nạp lệnh Khi thực thi chơng trình ROM nội , PSEN đợc trì mức logic (logic không tích cực) f Chân ALE (chân 30): chân xuất tín hiệu cho phép chốt địa (Address Latch Enable) để giải đa hợp (Demultiplexing) bus liệu bus địa Tín hiệu ALE có tần số f=1/6 f osc (fosc: tần số dao động bên 8051) đợc dùng làm xung clock cho phần lại hệ thống Chân ALE đợc dùng để nhận xung ngõ vào lập trình cho EPROM g Chân truy xuất EA (chân 31) : ngõ vào đợc nối +5V (mức logic 1) nối đất (mức logic 0) Nếu chân có mức logic 1: 8051 thực thi chơng trình ROM nội, mức logic 8051 thực thi chơng trình chứa nhớ Các phiên EPROM SV: Ngô Quốc Toàn 10 ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội ã Chơng trình hợp ngữ $debug $tilte (** org main: TEST PROGRAM for the MyBOARD 0000h call call scan convert **) ; Gọi chơng trình quét bàn phím ; Gọi chơng trình đổi HexASCII call display ; Gọi chơng trình hiển thị LCD ;========================================================; ; Chơng trình quét bàn phím SCAN ; SV: Ngô Quốc Toàn 56 ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội ;========================================================; scan: mov A,#00H ; Đa cột mov P1,A mov A,P1 ; Đọc hàng anl A,#0F0H ; Che c¸c bit thÊp cjne A,#0F0H,scan_key ; NÕu cã phÝm ấn, gọi chơng trình tìm ; phím ấn ret ; Không có phím ấn thoát ;==========================================================; ; Scan_KEY: đọc trạng thái bàn phím ; ; trả C=0 phím đợc ấn ; ; trả vỊ C=1 vµ m· hex cđa phÝm Ên ACC nÕu cã phÝm Ên ; ;==========================================================; scan_key: mov A,#0FEh ; Bắt đầu quét từ cột mov R6,#4 ; Dùng R6 làm đếm quet: mov P1,A ; Tích cực cét mov R7,A ; Lu mÉu quÐt mov A,P1 ; Đọc trở lại cổng Port1 anl A,#0F0h ; Che bit thÊp cjne A,#0F0h, tao_ma ; Cã hµng tÝch cùc, gọi chơng trình ; tạo mà mov A,R7 ; NÕu kh«ng, di chun tíi cét kÕ rl A ; quay trái A djnz R6,quet clr C ; Không có phím đợc ấn Xóa C=0 sjmp exit ; Thoát tao_ma: mov R7,A ; Lu R7 mov A,#4 ; ChuÈn bÞ tÝnh träng sè cét clr C subb A,R6 ; Träng sè cét = 4-R6 mov R6,A ; Lu R6 mov A,R7 ; Phôc håi m· quÐt swap A ; Đặt bit thấp mov R5,#4 ; Dùng R5 làm đếm again: rrc A ; Quay phải A víi cê nhí jnc done ; Thùc thi xong C=0 inc R6 ; Céng ®Õn thÊy hàng tích cực inc R6 inc R6 SV: Ngô Quốc Toàn 57 ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội inc R6 djnz R5,again done: setb C ; C=1 (có phím đợc ấn) mov A,R6 ; Mà đợc cất A exit: ret ret ; Kết thúc chơng trình quét ;==========================================================; ; Chơng trình hiển thị LCD ; ;==========================================================; display: mov R3,A ; Cất liệu A vào ghi R3 mov A,#38h ; Khởi tạo LCD dòng, ma trận điểm ; 5x7 call write ; Gọi chơng trình ghi lệnh điều khiển ; LCD call delay ; Tạo độ trƠ cho LCD mov A,R3 call d_data ; Gäi ch¬ng trình hiển thị liệu write: mov P2,A ; Đa lệnh clr P3.7 ; Đặt RS = để chọn ghi lệnh clr P3.6 ; Đặt RW = để ghi lệnh setb P3.4 ; Đặt E = clr P3.4 ; E = 0, t¹o xung cao xuèng thÊp ret d_data: mov P2,A ; Sao chÐp d÷ liệu cần hiển thị P2 setb P3.7 ; Đặt RS = để chọn ghi liệu clr P3.6 ; Đặt RW = để ghi liệu setb P3.4 ;E=1 clr P3.4 ;E=0 ret delay: mov R2,#50 ; Tạo độ trễ here: djnz R2,here ret ret ;========================================================; ; Chơng trình Chuyển đổi mà HEX thành mà ASCII ; ;========================================================; convert: anl A,#0Fh ; Xãa c¸c bit cao cjne A,#0Ah,$+3 ; So s¸nh xem A cã nhá 0Ah SV: Ngô Quốc Toàn 58 ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội ;không? htoa: jc add add ret END htoa A,#7 A,#0 ; có, cộng thêm ; Không, chuyển đổi trực tiếp ; Hết chơng trình II Đọc thời gian từ đồng hồ thời gian thực RTC DS12887 Để thực công việc đọc thời gian từ DS12887, trớc hết ta phải tiến hành chọn chip thông qua 74ALS138 Chân CS DS 12887 đợc nối với chân Y1 74ALS138 Để chọn chân Y1, phải đặt A = 0, B = 1, C = Sau chän chip, tiến hành đặt thông số để đọc liệu: Đặt địa ghi B DS12887: đa địa ghi B 0Bh vào R0 (của 8051) Gửi địa đến Port để gửi tới DS12887 Đặt thông số cho ghi B: SET = : kh«ng cho phép cập nhật thời gian chơng trình PIE = : Cho phÐp ng¾t AIE = : Cho phép tín hiệu ngắt đầu IRQ UIE = SQWE = DM = : d÷ liệu thông tin thời gian đợc định dạng BCD 24 12 = 1: ChÕ ®é thêi gian 24h DSE = : Không sử dụng chế độ mùa đông Ta quan tâm tới bit SET, PIE, DM, 2412 , bit lại ghi B toán không cần ý tới SV: Ngô Quốc Toàn 59 ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội §äc thêi gian : - §Þa chØ byte giê DS12887 04h Đọc xong lu vào R2(của 8051) - Địa byte phút DS12887 02h Đọc xong lu vào ghi R3 (của 8051) - Địa byte giây DS12887 00h Đọc xong lu vào ghi R4( 8051) Chuyển đổi d÷ liƯu thêi gian tõ m· BCD sang m· ASCII để hiển thị LCD Hiển thị LCD ã Lu đồ toán: SV: Ngô Quốc Toàn ã Tiến trình đọc thông tin 60 ĐKTĐ - K4 Đồ án tốt nghiệp ã Lu đồ hàm khởi tạo LCD SV: Ngô Quốc Toàn Trờng đại học Bách Khoa Hà Nội ã Lu đồ hàm kiểm tra LCD 61 ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội ã Chơng trình hợp ngữ $debug $tilte (** TEST PROGRAM for the MyBOARD **) org 0000h ljmp Main org 0003h ; Điểm nhập vector ngắt ;=======================================================; ; Trình xử lý ngắt ; ;=======================================================; Ex0IRS: setb P3.0 ; Hđy bá viƯc chän DS12887 SV: Ngô Quốc Toàn 62 ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội ; đọc clr P3.1 ; xong liệu clr EX0 ; Cấm ngắt reti ; Hết chơng trình xử lý ngắt ;=======================================================; ; Main Program ; ;=======================================================; org 0030h Main: call select_chip ;Gọi chơng trình chọn ;chip setb P3.6 ; Cho phÐp ghi here: mov A,#0Bh ;Địa ghi B ;DS12887 mov P0, A ; §a cỉng P0 setb ALE ; Cho ALE = clr ALE ; ALE = 0, t¹o xung cao xuống ; thấp để chân DS cho phép chốt ; địa DS12887 mov P0,#01010010b ; Đặt giá trị điều khiển cho ; ghi B DS12887 setb ALE ;Tạo mức cao chân DS để giải ; phóng việc chốt địa mov A,#0FFh mov P0,A ; Thiết lập P0 làm đầu vào mov R0,#04h ; Địa byte clr ALE mov P0,@R0 ; §äc byte giê mov R4,P0 ; Lu giê vµo ghi R4(của ; 8051) setb ALE mov R0,#02h ; Địa chØ byte clr ALE mov P0,@R0 ; §äc mov R3, P0 ; Lu vµo ghi R3(cđa ; 8051) setb ALE mov R0,#00h ; Địa byte giây clr ALE mov P0,@R0 ; Đọc giây mov R2,P0 ; Lu giây vào ghi R2 ; (của 8051) SV: Ngô Quốc Toàn 63 ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội setb ALE setb EA ; Cho phép ngắt setb EX0 ; Cho phép ngắt set IT0 ; Kích cạnh âm call LCD_setup ; Khởi tạo LCD mov A,R2 ; Lấy lại byte giây từ R2 call convert ; Chun ®ỉi sang m· ASCII call display ; Hiển thị LCD call Space ; Tạo dấu : LCD mov A,R3 ; Lấy lại byte phút từ R3 call convert ; ChuyÓn m· call display ; HiÓn thị LCD call space mov A,R4 ; Lấy lại byte giê tõ R4 call convert ; ChuyÓn m· call display ; Hiển thị simp $ ;=======================================================; ; Chơng trình CONVERT chun m· BCD thµnh ASCII ; ;=======================================================; convert: mov R5, A ; Tạo BCD vào R5 anl A,#0Fh ; Xãa phÇn bit cao orl A,#30h ; Tạo thành mà ASCII mov R6,A ; Lu lại phần thấp byte ; liệu đà đợc chuyển mà mov A,R5 ; Lấy lại giá trị ban đầu anl A,#0F0h ; Xóa phần thấp byte liệu swap A ; Hoán đổi bit cao bit thấp orl mov A,#30h R5,A ; Tạo thành mà ASCII ; Lu phần cao byte liệu ; đà đợc chuyển đổi vào R5 ret ;=======================================================; ; Chơng trình setup LCD ; ;=======================================================; LCD_setup: mov A,#38h ; Khëi t¹o LCD dßng ma trËn ; 5x7 pixel call ready ; Kiểm tra LCD đà sẵn sàng ;cha? SV: Ngô Quốc Toàn 64 ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội mov clr P2,A P3.7 clr P3.6 setb clr ; XuÊt m· lÖnh ;Đặt RS = 0, chọn ghi ;lệnh LCD ;RW = cho phÐp truy cËp ;thanh ghi lÖnh ; E =1 ; E= 0, t¹o xung cao xuèng thấp, ; để chốt liệu P3.4 P3.4 ret ;========================================================; ; Chơng trình DISPLAY ; ;========================================================; display call ready ;Kiểm tra LCD đà sẵn sàng ;cha? mov P2,R6 ; Đọc phần thấp byte liệu, ; R6 call write ; Ghi LCD mov P2,R5 ; §äc phần cao byte liệu, ; R5 call write ; Đa LCD ret ;=======================================================; ; Chơng trình WRITE ; ;=======================================================; write: setb P3.7 ; RS = 1, chän ghi d÷ liƯu ; cđa LCD clr P3.6 ; RW = 0, để ghi liệu setb P3.4 ;E=1 clr P3.4 ; E = 0, t¹o xung cao xng thÊp ; ®Ĩ cho phÐp LCD ret ;=======================================================; ; Chơng trình kiểm tra xem LCD đà sẵn sàng cha? ; ;=======================================================; ready: setb P2.7 ;LÊy P2.7 lµm cỉng vµo kiĨm ;tra clr P3.7 ; RS = 0, chän ghi lƯnh setb P3.6 ; RW = 1, ®äc d÷ liƯu tõ LCD back: setb P3.4 ; E =1 clr P3.4 ; E = 0, ®Ĩ cho phÐp LCD SV: Ngô Quốc Toàn 65 ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội jb P2.7,back ; Đợi LCD rảnh ret ;=======================================================; ; Chơng trình tạo dấu : dùng để hiển thị thêi gian theo kiÓu “h:m:s” ; ;=======================================================; space: call ready mov A,#: call write ret ;=======================================================; ; Chơng trình chän chip ; ;=======================================================; select_chip: clr P3.0 ; A = (74ALS138) setb P3.1 ; B = (74ALS138), C = (do ; chân đợc nối đất.) ABC = ; 010 → Y1 = ret END ; Hết chơng trình III Điều khiển ADC0809 để thực chuyển đổi Giả sử có đầu thiết bị đo (cảm biến,) đợc nối vào chân IN0 ADC0809 Vref(-) = Gnd, Vref(+) = +5 V Xây dựng chơng trình để chuyển đổi tín hiệu Analog thành Digital, kiểm tra ADC chuyển đổi xong đọc liệu đà đợc ADC chuyển đổi vào Vi điều khiển hiển thị LCD ã Lu đồ toán SV: Ngô Quốc Toàn 66 ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội ã Chơng trình hợp ngữ $debug $tilte (** ADC0809 TEST PROGRAM for the MyBOARD **) org 0000h ljmp Main org 0013h ; Điểm nhập vector ngắt ;=======================================================; ; Trình xử lý ngắt ; ;=======================================================; Ex1IRS: setb P3.0 ; Hủy bỏ việc chọn ADC0809 SV: Ngô Quốc Toàn 67 ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội setb P3.1 ; đọc xong liệu clr EX1 ; Cấm ngắt reti ; Hết chơng trình xử lý ngắt ;=======================================================; ; Main Program ; ;=======================================================; org 0030h ; Điểm nhập chơng trình Main: mov P0,#00h ; Chọn địa đầu vµo IN0 clr ALE ; ALE =0; setb ALE ; ALE = 1, tạo xung thấp lên ; cao để chốt địa kênh ; ADC clr P3.0 ; T¹o xung cao – xuèng – thÊp clr P3.1 ; để bắt đầu chuyển đổi setb P3.0 setb P3.1 setb EA ; Cho phÐp ng¾t setb EX1 ; Cho phép ngắt setb IT1 ; Kích hoạt cạnh âm wait: jnb P3.3,wait ; Chờ chun ®ỉi ; xong setb P3.7 ; OE = , clr P3.7 ; OE = 0, t¹o xung H-to-L ; phép lấy liệu khỏi ADC mov A,#0FFh mov P0,A ; Tạo P0 làm đầu vào mov A, P0 ; Đọc liệu vào chứa A call convert ; Gọi chơng trình chuyển ; đổi call display ; Gọi chơng trình hiển thị ;=======================================================; ; Chơng trình CONVERT chuyển mà HEX thành ASCII ; ;=======================================================; convert: anl A,#0Fh ; Xóa phần bit cao orl A,#30h ; Tạo thành mà ASCII mov R3,A ; Lu lại vào R3 ret ;=======================================================; ; Chơng trình DISPLAY ; SV: Ngô Quốc Toàn 68 ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội ;=======================================================; display: mov A,#38h ; Khởi tạo LCD dòng ma trận ; 5x7 pixel call setup_LCD ; Gọi chơng trình setup mov A,R3 ; Lấy lại liệu đà lu R3 call write ; Hiển thị liệu lên LCD ret ;========================================================; ; Chơng tr×nh Setup LCD ; ;========================================================; setup_LCD: call ready ; Kiểm tra LCD đà sẵn sàng ; cha? mov P2,A clr P3.7 ; RS = clr P3.6 ; RW = setb P3.4 ;E=1 clr P3.4 ;E=0 ret ;=======================================================; ; Chơng trình WRITE ; ;=======================================================; write: call ready ; Kiểm tra LCD đà sẵn sàng ? mov P2,A setb P3.7 ; RS = clr P3.6 ; RW = setb P3.4 ;E=1 clr P3.4 ;E=0 ret ;=======================================================; ; Chơng trình kiểm tra xem LCD đà sẵn sàng cha? ; ;=======================================================; ready: setb P2.7 ; LÊy P2.7 lµm cỉng vµo kiĨm ;tra clr P3.7 ; RS = 0, chän ghi lÖnh setb P3.6 ; RW = 1, ®äc d÷ liƯu tõ LCD back: clr P3.4 setb P3.4 jb P2.7,back ; Đợi LCD rảnh ret SV: Ngô Quốc Toàn 69 ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học Bách Khoa Hà Nội END ; Hết chơng trình Kết luận Sau thời gian thực tập với nhiều cố gắng thân với hớng dẫn thầy Vũ Vân Hà, đồ án đà hoàn thành thời gian quy định theo yêu cầu đặt Để thực đợc yêu cầu em đà nghiên cứu, tìm hiểu vấn đề vi xử lý, vi mạch vấn đề khác có liên quan đến đề tài Kết thu đợc kiến thức về: - Vi điều khiển 8051 - DS12887, ADC0809, 74GC373, 74LS138 - Bµn phÝm sè Hex, hiển thị LCD - Xây dựng, thiết kế mạch nguyên lý - Xây dựng toàn điều khiển Tuy nhiên thời gian nh trình độ chuyên môn có hạn nên đề tài dừng lại phần thiết kế sơ đồ nguyên lý viết chơng trình, cha thực mạch linh kiện thực Mong đề tài đợc bạn sinh viên khóa sau tiếp tục thực khắc phục đợc thiếu sót đề tài Sau lần chúng em xin chân thành cảm ơn thầy Vũ Vân Hà quý thầy cô Khoa Điện đà tận tình hớng dẫn dẫn dắt em suốt nhũng năm học vừa qua Hà Nội, Ngày tháng 04 năm 2006 Sinh viên thực Trịnh Mạnh Hùng SV: Ngô Quốc Toàn 70 ĐKTĐ - K4 ... toán điều khiển đặt công vi? ??c sau Một kiến thức cần phải có vi? ??c nghiên cứu thiết kế mạch ứng dụng sử dơng bé vi ®iỊu khiĨn Do ®ã chóng em ®· chọn đề tài : Thiết kế mạch thí nghiệm dùng Vi điều. .. mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với thiết bị ngoại vi LCD, ADC0809, RTC DS12887 HEX-keypad Các công vi? ??c thực hiện: SV: Ngô Quốc Toàn ĐKTĐ - K4 Đồ án tốt nghiệp Trờng đại học... Nội ã Tìm hiểu Vi điều khiển 8051, thiết bị ngoại vi ã Thiết kế mạch nguyên lý ã Xây dựng toán điều khiển Phơng pháp thực ã Tìm hiểu thiết bị ã Vẽ mạch nguyên lý phần mềm Protel ã Vi? ??t phần mềm