Giáo trình Vi điều khiển - Nghề: Điện dân dụng - Trình độ: Trung cấp nghề (Tổng cục Dạy nghề)

87 59 0
Giáo trình Vi điều khiển - Nghề: Điện dân dụng - Trình độ: Trung cấp nghề (Tổng cục Dạy nghề)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

(NB) Giáo trình Vi điều khiển được xây dựng nhằm phục vụ cho các yêu cầu nói trên. Nội dung bao gồm 5 bài như sau: Các hệ đếm và việc mã hóa thông tin trong máy tính; Cấu trúc họ vi điều khiển 8051; Tập lệnh của 8051; Lập trình I/O; Timer/Counter.

BỘ LAO ĐỘNG - THƯƠNG BINH VÀ XÃ HỘI TỔNG CỤC DẠY NGHỀ GIÁO TRÌNH Tên mơ đun: Vi điều khiển NGHỀ: ĐIỆN DÂN DỤNG TRÌNH ĐỘ TRUNG CẤP NGHỀ Ban hành kèm theo Quyết định số: 120 /QĐ- TCDN Ngày 25 tháng năm 2013 Tổng cục trưởng Tổng cục dạy nghề Hà Nội, năm 2012 TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng nguyên trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm LỜI GIỚI THIỆU Ngày với phát triển khoa học công nghệ, nhà khoa học phát minh nhiều linh kiện vi điều khiển Chúng khác không cấu tạo; nguyên lý làm việc hay đặc tính; thơng số kỹ thuật mà với đặc điểm tính chất chức khác chúng sản xuất để sử dụng cho nhiều lĩnh vực môi trường khác Việc sử dụng linh kiện vi điều khiển thiết bị điện tử khác cách hợp lý hiệu quả, nhằm nâng cao hiệu hoạt động, tính cho thiết bị điện tử gia dụng hay cơng nghiệp đòi hỏi nguời thiết kế, lắp ráp thiết bị phải đuợc trang bị kiến thức vi điện tử Mô đun Vi điều khiển xây dựng nhằm phục vụ cho yêu cầu nói Nội dung mô đun bao gồm sau: Bài 1: Các hệ đếm việc mã hóa thơng tin máy tính Bài Cấu trúc họ vi điều khiển 8051 Bài Tập lệnh 8051 Bài Lập trình I/O Bài Timer/Counter Nội dung chủ yếu quan tâm đến việc giúp nguời lắp ráp thiết bị điện tử gia dụng hay công nghiệp sử dụng hệ vi xử lý hay vi điều khiển nắm bắt giải thích tốt nguyên lý hoạt động chúng Mặc dù tác giả cố gắng việc cung cấp đầy đủ thông tin liên quan đến họ vi điều khiển 8051 Tuy nhiên, thời gian hạn hẹp, kiến thức nguồn tài liệu tham khảo hạn chế, nên khơng thể tránh khỏi sai sót Mong nhận ý kiến đóng góp để tác giả hoàn thiện nội dung tài liệu Mọi ý kiến đóng góp xin gửi địa chỉ: Trường Cao đẳng nghề Bách Nghệ Hải Phòng Khoa Điện – Điện tử Số 196/143 Đường Trường Chinh - Quận Kiến An - TP Hải Phòng Email: khoadienbn@gmail.com Hà Nội, ngày 20 tháng 11 năm 2012 Nhóm biên soạn: Chủ biên: Ngô Duy Khánh Khúc Anh Phúc Phạm Văn Việt Mục lục Nội dung Bài 1: Các hệ đếm việc mã hóa thơng tin máy tính Trang Hệ đếm mười hệ đếm hai 1.1 Hệ đếm mười hệ đếm hai 1.2 Chuyển đổi hai hệ đếm Các hệ đếm khác 2.1 Số BCD 2.2 Hệ 16 Mã hóa thơng tin máy tính Giới thiệu mã ASCII-mã tiêu chuẩn cho trao đổi thông tin Bài Cấu trúc họ vi điều khiển 8051 10 Cấu trúc họ 8051 10 1.1 Cấu trúc tổng quát họ 8051 10 1.2 Khối ALU 11 1.3 Bộ nhớ Ram 12 1.4 Bộ nhớ Rom 14 Trao đổi thông tin 8051 14 Sơ đồ ý nghĩa chân 89C51 16 3.1 Port0 16 3.2 Port1 16 3.3 Port 17 3.4 Port 17 3.5 Chân chốt địa ALE 17 3.6 Chân truy suất Rom 17 3.7 Chân Reset 17 3.8 Các chân XTAL1 XTAL2 18 Các ghi đặc biệt 18 4.1 Thanh ghi PC 18 4.2 Thanh ghi SP 20 4.3 Thanh ghi tích lũy A 21 4.4 Thanh ghi từ trạng thái PSW 21 4.5 Thanh ghi DPTR 22 4.6 Các ghi PORT 23 Nguyên lý hoạt động mạch Reset 23 Bài Tập lệnh 8051 24 Tổng quan ngôn ngữ assembly 24 Cấu trúc câu lệnh chương trình viết assembly 24 2.1 Cấu trúc câu lệnh assemby 24 2.2 Cấu trúc chương trình viết assembly 25 2.3 Chương trình soạn thảo biên dịch ngơn ngữ assembly 26 Các kiểu đánh địa 8051 26 3.1 Chế độ địa tức thời 27 3.2 Chế độ địa ghi 28 3.3 Chế độ địa trực tiếp 28 3.4 Chế độ địa gián tiếp thành ghi 32 3.5 Chế độ định địa chỉ số truy cập nhớ Rom chip 34 Tập lệnh 8051 37 Thực hành 48 Bài Lập trình I/O 52 Các Port 8051 52 1.1 Port0 52 1.2 Port1 52 1.3 Port2 53 1.4 Port3 53 Lập trình điểu khiển nháy Led 54 2.1 Sơ đồ nguyên lý 54 2.2 Lập trình điều khiển 54 Lập trình điểu khiển LCD 57 3.1 Sơ đồ nguyên lý 57 3.2 Lập trình điều khiển 69 Bài Timer/Counter 73 Tổng quan 73 Các ghi liên quan đến timer 73 2.1 Thanh ghi liệu TH0 , TL0, TH1, TL1 73 2.2 Thanh ghi TMOD 74 2.3 Thanh ghi TCON 76 Lập trình cho chế độ 76 3.1 Đặc điểm 76 3.2 Các bước lập trình chế độ 77 3.3 Tìm giá trị cần nạp vào định thời 79 3.4 Thực hành 79 Lập trình cho chế độ 83 4.1 Đặc điểm 83 Các bước lập trình cho chế độ 84 Bài CÁC HỆ ĐẾM VÀ VIỆC MÃ HĨA THƠNG TIN TRONG MÁY TÍNH Mã bài: MĐ25.01 Giới thiệu : Trong học này, trình bày hệ đếm thơng dụng ngành khoa học máy tính Mục tiêu: - Sử dụng, chuyển đổi thành thạo hệ đếm thơng dụng - Thực thành thạo phép tốn hệ đếm nhị phân Nội dung: Hệ đếm mười hệ đếm hai Mục tiêu - Phân biệt, chuyển đổi thành thạo hệ đếm mười hệ đếm hai 1.1 Hệ đếm mười hệ đếm hai - Trong sống hàng ngày hệ đếm số mười hay hệ mười đuợc sử dụngrộng rãi, hệ đếm số mười sử dụng số từ để biểu diễn giá trị số kèm theo tập hợp dùng thêm chữ D, sống hàng ngày số hệ mười đuợc biểu diễn độc lập khơng kèm theo kí tự, ngơn ngữ máy tính sử dụng nhiều hệ đếm khác phải có kí tự biểu diễn hệ đếm để phân biệt với hệ đếm khác Ví dụ: 13; 14D - Trong giới máy tính khác, để biểu diễn giá trị số dùng hệ số hai nói ngắn gọn hệ hai, sử dụng giá trị để biểu diễn giá trị số (ứng với hai trạng thái có điện khơng có điện mạch điện tử cấu tạo lên máy) Khi dùng nhiều hệ đếm khác hệ hai thường kèm theo chữ B để phân biệt với hệ đếm khác Ví dụ cách biểu diễn hệ hai: 0011; 1101B - Cách biểu diễn số hệ mười theo trọng số 10: Một số hệ mười 12345,67 đuợc biểu diễn theo trọng số 10 12345,67=1.104 +2.103 +3.102 +4.101 +5.100 +6.10-1 +7.10-2 - Tương tự số hệ hai đuợc biểu diễn theo trọng số 2: 1100B= 1.23+1.22+0.21+0.20=12D 1.2 Chuyển đổi hai hệ đếm - Cách chuyển đổi số nguyên từ hệ mười sang hệ hai Quy tắc: Lấy số cần đổi chia cho ghi nhớ phần dư, lấy thương phép chia trước chia cho ghi nhớ phần dư, làm đuợc thương Đảo ngược thứ tự dãy số dư đuợc số hệ hai cần tìm Ví dụ : Đổi số 34 sang hệ hai( 100010B.) 34 17 2 1 - Chuyển số thập phân sang hệ hai: Ví dụ: Đổi số 0.125 samg hệ hai: Ta thực theo quy tắc sau: 0,125 * = ,250 0,250 * = ,500 0,500 * = ,000 Kết cuối thu đuợc 0,125 = 0,001B Kết hợp với kết phép chuyển đổi số nguyên 34 ta có kết chuyển dổi số thập phân 34,125 sang hệ đếm hai sau 34,125 = 100010,001 B - Cách chuyển đổi từ hệ hai sang hệ mười 1100B= 1.23+1.22+0.21+0.20=12D Các hệ đếm khác Mục tiêu - Sử dụng thành thạo hệ đếm BCD thập lục phân 2.1 Số BCD Số BCD số thập phân mã hóa theo nhị phân Đây số quen thuộc thực tế thường sử dụng số từ đến số nhị phân hay số Hexa Biểu diễn nhị phân số từ đến gọi BCD Cóhai dạng số BCD dạng nén không nén Số BCD 0000 0001 0010 0011 0011 0101 0110 0111 1000 1001 Số BCD không nén có bit thấp biểu diễn số BCD bốn bit cao Ví dụ “00001001” “00000101” số BCD không nén số số Để biểu diễn số BCD không nén cần dùng byte nhớ hay ghi bit Số BCD nén byte chứa hai số BCD, số bit thấp số thứ bit cao Ví dụ “0101 1001” số BCD nén số 59H Như cần byte nhớ lưu hai tốn hạng BCD Đây lý sử dụng số BCD nén hiệu lưu liệu tăng gấp đôi 2.2 Hệ 16 - Hệ đếm 16 dùng số từ đến chữ A, B,C, D,E, F tương ứng với giá trị 10 đến 15 để biểu diễn chữ số - Hệ đếm 16 thường đuợc dùng thay cho số dài biểu diễn dạng hệ đếm hai Ví dụ: 255D= 11111111B= FFH Mã hóa thơng tin máy tính Mục tiêu Nắm bắt đuợc cách tổ chức thơng tin, đơn vị đo lường thông tinh máy tính - Đơn vị thơng tin: Các hệ thống máy tính làm việc với hệ đếm hai, thơng tin đuợc máy tính xử lý phải đuợc mã hóa lưu trữ nhớ bán dẫn duới dạng nhị phân, giá trị hay đuợc cất trữ ô nhớ nhớ (0 ứng với mức điện áp 0V, ứng với mức điện áp 5V) gọi 1bit, Một cụm bit tạo thành nibble, cụm bit tạo thành byte, cụm 16 bit thông thường trạo thành từ(word), cụm 32 bit tạo thành từ kép Chữ số bên trái dãy số hệ hai gọi bít có ý nghĩa lớn nhất, bit cuối bên phải dãy gọi bit có ý nghĩa bé Ứng với việc đếm thứ tự 1,2,3…ở hệ 10 hệ ta có 1,10,11… Nibble byte word Double Word - Các đơn vị khác: 1kbyte=1024byte= 210 Byte 1Mbyte= 1024Kbyte Giới thiệu mã ASCII-mã tiêu chuẩn cho trao đổi thông tin Mục tiêu Nắm bắt đuợc cách mã hóa kí tự thơng thường theo tiêu chuẩn Ascii máy tính ASCII (American Standard Code for Information Interchange - Chuẩn mã trao đổi thông tin Hoa Kì), thường phát âm át-xơ-ki, kí tự mã kí tự dựa bảng chữ La Tinh dùng tiếng Anh đại ngơn ngữ Tây Âu khác Nó thường dùng để hiển thị văn máy tính thiết bị thơng tin khác Nó dùng thiết bị điều khiển làm việc với văn Cũng mã máy tính biểu diễn kí tự khác, ASCII quy định mối tương quan kiểu bit số với kí hiệu/biểu tượng ngơn ngữ viết, cho phép thiết bị số liên lạc với xử lí, lưu trữ, trao đổi thơng tin hướng kí tự Bảng mã kí tự ASCII, mở rộng tương thích, dùng hầu hết máy tính thơng thường, đặc biệt máy tính cá nhân máy trạm làm việc Tên MIME thường dùng cho bảng mã "US-ASCII" ASCII xác mã 7-bit, tức dùng kiểu bit biểu diễn với số nhị phân (thập phân từ đến 127) để biểu diễn thơng tin kí tự Vào lúc ASCII giới thiệu, nhiều máy tính dùng nhóm 8-bit (byte hoặc, chuyên biệt hơn, tám) làm đơn vị thông tin nhỏ nhất; bit thứ tám thường dùng bit chẵn-lẻ (parity) để kiểm tra lỗi đường thông tin kiểm tra chức đặc hiệu theo thiết bị Các máy không dùng chẵn-lẻ thường thiết lập bit thứ tám zero, số thiết bị máy PRIME chạy PRIMOS thiết lập bit thứ tám ASCII công bố làm tiêu chuẩn lần đầu vào năm 1963 Hiệp hội tiêu chuẩn Hoa Kì (American Standards Association, ASA), sau đổi thành ANSI Có nhiều biến thể ASCII, phổ biến ANSI X3.4-1986, tiêu chuẩn hố Hiệp hội nhà sản xuất máy tính châu Âu (European Computer Manufacturers Association) ECMA-6, ISO/IEC 646:1991 Phiên tham khảo quốc tế, ITU-T Khuyến cáo T.50 (09/92), RFC 20 (Request for Comments) Nó dùng Unicode, thay xảy nó, 128 kí tự 'thấp nhất' ASCII xem tiêu chuẩn phần mềm thành công công bố từ trước tới Hệ (Nhị phân) Hệ 16 Hệ 10 (Thập (Thập lục Viết phân) phân) tắt Biểu diễn in Truy nhập Tên/Ý bàn phím tiếng Anh Tên/Ý nghĩa nghĩa tiếng Việt 000 0000 00 NUL ␀ ^@ Null character 000 0001 01 SOH ␁ ^A Start of Header 000 0010 02 STX ␂ ^B Start of Text 000 0011 03 ETX ␃ ^C End of Text 000 0100 04 EOT ␄ ^D End of Transmission 000 0101 05 ENQ ␅ ^E Enquiry Kí tự rỗng Bắt đầu Header Bắt đầu văn Kết thúc văn Kết thúc truyền Truy vấn 71 acall delay60 mov a, #'H' acall guikitu acall delay60 here: Sjmp here ;================================ guilenh: mov P1,a ; chuyen a sang P1 cho qua trinh gui data clr rs ; xoa rs chon ghi lenh cua LCD clr rw ; xoa RW de chon che ghi du lieu len LCD setb e ; dua bit e len cao setb e setb e clr e ; dua bit e xuong thap de chot du lieu tren P1 clr e clr e ret ;======================= guikitu: mov P1,a setb rs ; dua rs len chon ghi du lieu LCD clr rw ; xoa RW de chon che ghi du lieu len LCD setb e setb e setb e clr e clr e clr e ret ;============================ delay60: mov R0,#255 lap2: mov R1, #255 lap1: djnz R1,lap1 djnz R0,lap2 ret ;=============================== delay1500: mov R0, #10 lap5: mov R1,# 255 lap4: 72 mov R2,#255 lap3: djnz R2,lap3 djnz R1,lap4 djnz R0, lap5 ret ;==================================== khoitao: mov a, #0x38 ; ma lenh chon LCD dong ma tran 5x7 acall guilenh acall delay60 mov a, #0x0f ; ma lenh nhap nhay tro ki tu acall guilenh acall delay60 mov a, #0x01 ; ma lenh xoa man hinh LCD acall guilenh acall delay1500 mov a, #0x06 ; ma lenh dich tro sang phai cho ki tu tiep theo acall guilenh acall delay60 mov a, #0x81 ; dua tro ve dong cot acall guilenh acall delay60 ret ;========================= end 73 BÀI 5: TIMER/COUNTER Mã bài: MĐ25.05 Giới thiệu : Trong học này, trình bày vấn đề trạo trễ đếm Timer/Counter họ 8051 Mục tiêu: - Nắm bắt đặc điểm Timer/Counter, nguyên lý hoạt động - Lập trình điều khiển thục Timer/Counter Nội dung: Tổng quan Bộ đếm/Bộ định thời: Đây ngoại vi thiết kế để thực nhiệm vụ đơn giản: đếm xung nhịp Mỗi có thêm xung nhịp đầu vào đếm giá trị đếm tăng lên 01 đơn vị (trong chế độ đếm tiến/đếm lên) hay giảm 01 đơn vị (trong chế độ đếm lùi/đếm xuống) Xung nhịp đưa vào đếm hai loại:  Xung nhịp bên IC: Đó xung nhịp tạo nhờ kết hợp mạch dao động bên IC linh kiện phụ bên nối với IC Trong trường hợp sử dụng xung nhịp loại này, người ta gọi định thời (timers) Do xung nhịp bên loại thường đặn nên ta dùng để đếm thời gian cách xác  Xung nhịp bên ngồi IC: Đó tín hiệu logic thay đổi liên tục 02 mức 0-1 không thiết phải đặn Trong trường hợp người ta gọi đếm (counters) Ứng dụng phổ biến đếm đếm kiện bên đếm sản phầm chạy băng chuyền, đếm xe ra/vào kho bãi… Một khái niệm quan trọng cần phải nói đến kiện “tràn” (overflow) Nó hiểu kiện đếm đếm vượt giá trị tối đa mà biểu diễn quay trở giá trị Với đếm bit, giá trị tối đa 255 (tương đương với FF hệ Hexa) 65535 (FFFFH) với đếm 16 bit 8051 có hai định thời Timer Timer Chúng dùng định thời để tạo trễ thời gian đếm để đếm kiện xảy bên VĐK Trong tìm hiểu cách lập trình cho chúng sử dụng chúng Các ghi liên quan đến timer 2.1 Thanh ghi liệu TH0 , TL0, TH1, TL1 Thanh ghi 16 bit Timer truy cập byte thấp byte cao:  Thanh ghi byte thấp gọi TL0 (Timer0 Low byte)  Thanh ghi byte cao gọi TH0 (Timer0 High byte) Các ghi truy cập, đọc ghi khác chẳng hạn A, B, R0, R1, R2 v.v 74 Các ghi Timer Giống timer 0, định thời gian Timer dài 16 bit ghi 16 bit chia thành hai byte TL1 TH1 Các ghi truy cập đọc giống ghi Timer Các ghi Timer 2.2 Thanh ghi TMOD Cả hai định thời Timer Timer dùng chung ghi gọi TMOD: để thiết lập chế độ làm việc khác định thời Thanh ghi TMOD ghi bit gồm có:  bit thấp để thiết lập cho Timer  bit cao để thiết lập cho Timer Trong đó: bit thấp chúng dùng để thiết lập chế độ định thời bit cao dùng để xác định phép toán Thanh ghi TMOD 2.2.1 Các bit M1, M0 Là bit chế độ Timer Timer Chúng chọn chế độ định thời: 0, 1, bảng Chúng ta tập chung vào chế độ thường sử dụng rộng rãi chế độ chế độ Chúng ta sớm khám phá đặc tính chế độ sau khám phần lại ghi TMOD Các chế độ thiết lập theo trạng thái M1 M0 sau: Chế độ M1 M0 0 0 1 1 Chế độ hoạt động Bộ định thời 13 bit:8 bit định thời/bộ đếm, bit đặt trước Bộ định thời 16 bit: khơng có đặt trước Bộ định thời bit: tự nạp lại Chế độ định thời chia tách Các chế độ hoạt động đếm/bộ định thời 2.2.2 Bit C/T (Counter/Timer) 75 Bit ghi TMOD dùng để định xem định thời dùng máy tạo độ trễ hay đếm kiện Nếu bit C/T = dùng định thời tạo độ trễ thời gian Ví dụ 1: TMOD = 0000 0001 (01H) : chế độ định thời Timer chọn TMOD = 0010 0000 (20H) : chế độ định thời Timer chọn TMOD = 0001 0010 (12H) : chế độ định thời Timer chế độ Timer chọn Nguồn đồng hồ cho chế độ trễ thời gian tần số thạch anh 8051 Điều có nghĩa độ lớn tần số thạch anh kèm với 8051 định tốc độ nhịp định thời 8051 Tần số định thời 1/12 tần số thạch anh gắn với 8051 Tần số đếm/bộ định thời Ví dụ 2: Tần số thạch anh 20MHz 12MHz 11,0592MHz Tần số định thời Chu kỳ định thời 20MHz/12=1,6666MHz 1/1,6666MHz=0,6us 12MHz/12=1MHz 1/1MHz=1us 11,0592MHz/12=0,9216MHz 1/0,9216MHz=1,085us Một số tần số thông dụng Mặc dù hệ thống 8051 sử dụng tần số thạch anh từ 10 đến 40MHz, song ta tập trung vào tần số thạch anh 11,0592MHz Lý đằng sau số lẻ tốc độ baud truyền thông nối tiếp 8051 Tần số XTAL = 11,0592MHz cho phép hệ thống 8051 truyền thông với PC mà khơng có lỗi 2.2.3 Bit cổng GATE Một bit khác ghi TMOD bit cổng GATE Để ý hình ta thấy hai định thời Timer0 Timer1 có bit GATE Vậy bit GATE dùng để làm gì? Mỗi định thời thực điểm khởi động dừng Một số định thời thực điều phần mềm, số khác phần cứng số khác vừa phần cứng vừa phần mềm Các định thời 8051 có hai: Việc khởi động dừng định thời khởi động phần mềm bit khởi động định thời TR TR0 TR1 Điều có nhờ lệnh Set bit TR0 lên (khởi động định thời) Clear bit TR0 (dừng định thời) Timer 0, tương tự TR1 Timer Các lệnh có tác dụng bit GATE = ghi TMOD Việc khởi động ngừng định thời phần cứng từ nguồn cách đặt bit GATE = ghi TMOD 76 Tuy nhiên, để tránh lẫn lộn từ ta đặt GATE = có nghĩa khơng cần khởi động dừng định thời phần cứng từ bên ngồi Ví dụ 3: TMOD = 0000 0010: Bộ định thời Timer0, chế độ 2, C/T = dùng nguồn XTAL, GATE = dùng phần mềm để khởi động dừng định thời Như vậy, có hiểu biết vai trò ghi TMOD, xét chế độ định thời cách chúng lập trình để tạo độ trễ thời gian 2.3 Thanh ghi TCON Trong ví dụ ta thấy công dụng cờ TR0 TR1 để bật/tắt đếm/bộ định thời Các bit phận ghi TCON Đây ghi bit, hình 2: bit dùng để lưu cất bit TF TR cho Timer/counter Timer/counter bit thấp thiết lập dành cho điều khiển ngắt mà ta bàn sau Lập trình cho chế độ 3.1 Đặc điểm Dưới đặc điểm timer chế độ 1:  Đây định thời 16 bit, cho phép giá trị 0000 đến FFFFH nạp vào ghi TL TH định thời  Sau TL TH nạp giá trị khởi tạo 16 bit định thời phải khởi động Điều thực việc SET bit TR0 Timer SET bit TR1 Timer  Sau định thời khởi động, bắt đầu đếm lên Nó đếm lên đạt giới hạn FFFFH Sau đó, quay từ FFFFH 0000 bật lên bit cờ TF gọi cờ định thời Cờ định thời hiển thị Khi cờ định thời thiết lập, để dừng định thời: ta thực xóa bit TR0 Timer TR1 Timer Ở cần phải nhắc lại định thời có cờ TF riêng mình: TF0 Timer TF1 Timer  Sau định thời đạt giới hạn giá trị FFFFH, muốn lặp lại trình ghi TH TL phải nạp lại với giá trị ban đầu cờ TF phải xóa 77 Timer/counter chế độ 3.2 Các bước lập trình chế độ Để tạo độ trễ thời gian dùng chế độ định thời cần phải thực bước đây:  Nạp giá trị TMOD cho ghi báo độ định thời (Timer0 hay Timer1) sử dụng chế độ chọn  Nạp ghi TL TH với giá trị đếm ban đầu  Khởi động định thời  Duy trì kiểm tra cờ định thời TF vòng lặp để xem bật lên khơng Thốt vòng lặp TF lên cao  Dừng định thời  Xoá cờ TF cho vòng  Quay trở lại bước để nạp lại TL TH Cơng thức tính toán độ trễ sử dụng chế độ (16 bit) định thời tần số thạch anh XTAL = f (MHz): a) Tính theo số Hex b) Tính theo số thập phân (FFFF - YYXX + 1)*12/f (ms) Chuyển đổi giá trị YYXX TH, YYXX giá trị khởi tạo TL số thập phân để nhận số TH, TL tương ứng Lưu ý giá thập phân NNNNN sau lấy (65536 trị YYXX theo số Hex – NNNNN)*12/f (ms) Cơng thức tính độ trễ thời gian theo tần số XTAL (f) Ví dụ 4: Trong chương trình ta tạo sóng vng với độ đầy xung 50% (cùng tỷ lệ phần cao phần thấp) chân P1.5 Bộ định thời Timer0 dùng để tạo độ trễ thời gian: #include ;khai báo thư viện cho VĐK 89x51 Org 0x00 Main: setb P1_5=1 ;khởi tạo chân P1_5 mức cao back: Acall delay ; Goi chuơng trình Delay Cpl P1_5 ; Dao gia tri P1.5 Sjmp back ; Tao vong lap vo han Delay: Mov TMOD, #0x01 ; chọn timer0, chế độ 1, 16Bit 78 Mov TL0=0xF2 ;Nạp giá trị cho TL0 Mov TH0=0xFF ;Nạp giá trị cho TH0 Seb TR0=1 ;Khởi động timer0 Here: Jnb TF0, here ; kiểm tra cờ TF0 Clr TR0; ngừng timer0 ; Xoa co TR0 Clr TF0; xóa cờ TF0 ; Xoa co TF0 Ret end Trong chương trình (hàm main) thực gọi hàm delay() tạo trễ, đảo liên tục tín hiệu đầu chân P1_5 Trong chương trình delay() ý bước sau:  TMOD nạp  Giá trị FFF2H nạp TH0 - TL0  Bộ định thời Timer0 khởi động lệnh Set bit TR0  Bộ Timer0 đếm lên 01 sau chu kỳ timer Khi định thời đếm tăng qua trạng thái FFF3, FFF4 đạt giá trị FFFFH quay 0000H bật cờ định thời TF0 = Tại thời điểm vòng lặp kiểm tra cờ TF0 thoát  Bộ Timer0 dừng lệnh clear bit TR0  Cờ TF0 xóa, sẵn sàng cho chu trình Lưu ý để lặp lại trình ta phải nạp lại ghi TH TL khởi động lại định thời (đơn giản ta gọi lại hàm delay()) Một chu trình đếm timer0 Tính tốn độ trễ tạo định thời chương trình với tần số XTAL=11,0592MHz: Bộ định thời làm việc với tần số đồng hồ 1/12 tần số XTAL, ta có 11,0592MHz/12=0,9216MHz tần số định thời Kết nhịp xung đồng hồ có chu kỳ T=1/0,9216MHz=1,085us Hay nói cách khác, Timer0 tăng 01 đơn vị sau 1,085ms để tạo trễ số_đếm´1,085ms Số đếm FFFFH - FFF2H = ODH (13 theo số thập phân) Tuy nhiên, ta phải cộng vào 13 cần thêm nhịp đồng hồ để quay từ FFFFH 0000H bật cờ TF Do vậy, ta có 14 ´ 1,085ms = 15,19ms cho nửa chu kỳ chu kỳ T = ´ 15,19ms = 30, 38ms thời gian trễ tạo định thời Tuy nhiên, tính tốn độ trễ ta khơng tính đến tổng phí lệnh cài đặt timer0, lệnh kiểm tra vòng lặp, gọi hàm con… Chính câu lệnh làm cho độ trễ dài hơn, dẫn đến tần số xung vuông đầu P1_5 khơng tính tốn Đây nhược điểm C lập trình 79 VĐK Tùy vào chương trình biên dịch, lệnh C biên dịch số lệnh ASM khác nhau, để tính tốn xác ta phải tính tổng phí dòng lệnh ASM 3.3 Tìm giá trị cần nạp vào định thời Giả sử biết lượng thời gian trễ mà ta cần câu hỏi đặt làm để tìm giá trị cần thiết cho thi TH TL Để tính toán giá trị cần nạp vào ghi TH TL nhìn vào ví dụ sau với việc sử dụng tần số dao động XTAL = 11 0592MHz hệ thống 8051 Các bước để tìm giá trị ghi TH TL:  Chia thời gian trễ cần thiết cho 1.085ms  Thực 65536 - n với n giá trị thập phân nhận từ bước  Chuyển đổi kết bước sang số Hex: ta có YYXX giá trị Hexa ban đầu cần phải nạp vào ghi định thời  Đặt TL = XX TH = YY Ví dụ 5: Giả sử tần số XTAL = 11.0592MHz Hãy tìm giá trị cần nạp vào ghi vào ghi TH TL ta muốn độ thời gian trễ 5ms Lời giải: Vì tần số XTAL = 11.0592MHz nên đếm tăng sau chu kỳ 1.085ms Điều có nghĩa phải nhiều khoảng thời gian 1,085ms để có xung 5ms Để có ta chia 5ms cho 1.085ms nhận số n = 4608 nhịp Để nhận giá trị cần nạp vào TL TH ta tiến hành lấy 65536 trừ 4608 60928 Ta đổi số số hex thành EE00H Do vậy, giá trị nạp vào TH EE Và TL 00 Delay: ; định nghĩa hàm delay Mov TMOD, #0x01 ; Chọn timer0 chế độ 16Bit Mov TL0, #0x00 ;Nạp giá trị cho TL0 Mov TH0, #0xEE ; Nạp giá trị cho TH0 Setb TR0=1 ;khởi động timer0 Here: Jnb TF0, here ; kiểm tra cờ TF0 Clr TR0; ngừng timer0 ; Xoa co TR0 Clr TF0; xóa cờ TF0 ; Xoa co TF0 ret 3.4 Thực hành Cho sơ đồ mạch hình vẽ, dùng Timer 8051 điều chế độ rộng xung (PWM) điều khiển tốc độ động trên: 80 LM78L05C/TO92 D9 VIN GND U4 VOUT 5V L10 R16 330 C6 LEDNGUON 470uF/16V C5 470uF/16V 1N4007 40 5V C1 33uF ZTA Y1 C2 XTAL 33uF 30 29 18 19 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 ALE/PROG PSEN XTAL2 XTAL1 RST L220V~ VCC P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 5V C1815 180-1/2W 1k R5 R17 1k EA/VPP R6 Q10 C4 224J/250V MOC3020 31 AT89C51 680-1/2W 10 11 12 13 14 15 16 17 39 38 37 36 35 34 33 32 Q1 BT137 12VDC U1 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 GN D P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 20 21 22 23 24 25 26 27 28 J1 U3 10k R3 5V R1 10uF 10K N220V~ 5V C3 SW1 Reset 3.4.1 Nguyên lý a Tổng quan PWM Trước tìm hiểu sâu tìm hiểu định nghĩa PWM gì? Như Phương pháp điều chế PWM có tên tiếng anh Pulse Width Modulation phương pháp điều chỉnh điện áp tải hay nói cách khác phương pháp điều chế dựa thay đổi độ rộng chuỗi xung vuông dẫm đếm thay đổi điện áp Các PWM biến đổi có tần số khác độ rộng sườn dương hay sườn âm b - Sơ đồ nguyên tắc điều khiển tải dùng PWM 81 Trên đồ thị dạng xung điều khiển PWM Với độ rộng xung đầu tương ứng tính % Tùy thích điều khiển b Nguyên lý PWM Đây phương pháp thực theo nguyên tắc đóng ngắt nguồn cới tải cách có chu kì theo luật điều chỉnh thời gian đóng cắt Phần tử thực nhiện vụ mạch van bán dẫn Xét hoạt động đóng cắt van bán dẫn DÙng van đóng cắt Mosfet c Giản đồ xung 82 Trên mạch nguyên lý điều khiển tải PWM giản đồ xung chân điều khiển dạng điện áp đầu dùng PWM * Nguyên lý : Trong khoảng thời gian - to ta cho van G mỏ toàn điện áp nguồn Ud đưa tải Còn khoảng thời gian to - T cho van G khóa, cắt nguồn cung cấp cho tải Vì với to thay đổi từ T ta cung cấp toàn , phần hay khóa hồn tồn điện áp cung cấp cho tải Cơng thức tính giá trị trung bình điện áp tải : Gọi t1 thời gian xung sườn dương (khóa mở ) T thời gian sườn âm dương, Umax điện áp nguồn cung cấp cho tải Ud = Umax.(t1/T) (V) hay Ud = Umax.D (V) với D = t1/T hệ số điều chỉnh tính % tức PWM Như ta nhìn hình đồ thị dạng điều chế xung ta có : Điện áp trùng bình tải : + Ud = 12.20% = 2.4V ( với D = 20%) + Ud = 12.40% = 4.8V ( Vói D = 40%) + Ud = 12.90% = 10.8V (Với D = 90%) d Nguyên lý hoạt động mạch - Khi chân P1.7 lên mức logic cao tranzito Q10 thông mạch dẫn đến MOC 3020 thông mạch, MOC 3020 thông làm Triac BT137 mở cho dòng xoay chiều qua động cơ, động làm việc - Quá trình diễn ngược lại chân P1.7 mức logic thấp e Phần mềm #include ORG 0x00 83 main: Nop ; Vi dieu khien khong lam gi mov R0,#0x00 ; Khoi gao bien dem setb P1.7 ; Set chan P1.7 len muc logic cao Mov TMOD, #00000001B ; Chon bo dinh thoi hoat dong o che back1: Mov TL0,#0x18 ; Nap vao ghi bo dinh gia tri 64536 Mov TH0,#0xFC ;Timer0 dem tu 64536-65536 tuon ung voi 1ms setb TR0 ;kich hoat bo Timer0 hoat dong here1: Jnb TF0, here1 ; Tham xem bo timer bi tran chua Clr TF0 Clr TR0 Inc R0 cjne R0,#4,back1 ; So sanh xem Timer hoat dong du lan chua tuong ung voi 4ms Mov R0,#0x00 ; Xoa bo dem R0 Clr P1.7 ; Set P1.7=0 back2: Mov TL0,#0x18 ; Nap vao ghi bo dinh gia tri 64536 Mov TH0,#0xFC ; Timer0 dem tu 64536-65536 tuon ung voi 1ms setb TR0 ;kich hoat bo Timer0 hoat dong here2: Jnb TF0, here2 ; Tham xem bo timer bi tran chua Clr TF0 Clr TR0 inc R0 cjne R0,#16,back2 ; So sanh xem Timer hoat dong du 16 lan chua tuong ung voi 16ms sjmp main ; P1.7=0 khoang 16ms end Giải thích: - Chọn Timer0 hoạt động chế 1, định thời 16 bit - Chọn khoảng đếm từ 64536-65536, tương ứng với 1ms - Chọn chu kì xung vng T=20ms - Chọn độ lấp đầy xung 20% (thời gian xung mức cao=4ms, thời gian xung mức thấp = 16ms) Lập trình cho chế độ 4.1 Đặc điểm Dưới đặc điểm timer chế độ 2:  Nó định thời bit, cho phép giá trị từ 00 đến FFH nạp vào ghi TH định thời  Sau ghi TH TL nạp giá trị ban đầu định thời phải khởi động  Sau định thời khởi động, bắt đầu đếm tăng lên cách tăng ghi TL Nó đếm đại giá trị giới hạn FFH 84 Khi quay trở 00 từ FFH, thiết lập cờ định thời TF Nếu ta sử dụng định thời Timer0 cờ TF0, Timer1 cờ TF1  Khi ghi TL quay trở 00 từ FFH, cờ TF bật lên ghi TL tự động nạp lại với giá trị chép từ ghi TH Để lặp lại trình đơn giản việc xoá cờ TF chạy mà khơng cần can thiệp lập trình viên để nạp lại giá trị ban đầu Điều làm cho chế độ gọi chế độ tự nạp lại so với chế độ (phải nạp lại ghi TH TL) Timer/counter chế độ Cần phải nhấn mạnh rằng: chế độ định thời bit Tuy nhiên, lại có khả tự nạp, tự nạp lại giá trị ban đầu TH giữ nguyên, TL nạp lại giá trị chép từ TH Chế độ có nhiều ứng dụng, bao gồm việc thiết lập tần số baud truyền thông nối tiếp Các bước lập trình cho chế độ Để tạo thời gian trễ sử dụng chế độ định thời cần thực bước sau:  Nạp ghi giá trị TMOD để báo định thời gian (Timer0 hay Timer1) sử dụng chế độ làm việc chúng chon  Nạp lại ghi TH TL với giá trị đếm ban đầu  Khởi động định thời  Duy trì kiểm tra cờ định thời TF cách sử dụng vòng lặp để xem bật chưa Thốt vòng lặp TF lên cao  Dừng định thời  Xoá cờ TF  Quay trở lại bước Vì chế độ chế độ tự nạp lại Ví dụ 6: #include Org 0x00 Main: Mov TMOD,#0x20 ; chọn timer1, chế độ 2, 8Bit, tự nạp lại Mov TH1,#0x00 ; nạp giá trị cho TH1 Mov TL1,#0xFE ; nạp giá trị cho TL1 Setb P1_5 ; khởi tạo chân P1_5 mức cao back: Acall delay ; Goi chuơng trình Delay Cpl P1_5 ; Dao gia tri P1.5 85 Sjmp back ; Tao vong lap vo han Delay: Setb TR1 ; khởi động timer1 Here: Jnb TF1, here ; Tham TF1 len chua Clr TR1 ; ngừng timer1 Clr TF1 ; xóa cờ TF1 Ret end Hàm delay() tạo độ trễ 256 lần (FF - 00 + 1) chu kỳ timer (không tính tổng phí lệnh) kể từ chu trình thứ Vì chu trình timer1 bắt đầu đếm vị trí 0xFE, kể từ chu trình sau ghi TL1 chép giá trị TH1 ... HỌ VI ĐIỀU KHIỂN 8051 Mã bài: MĐ25.02 Giới thiệu : Trong học trình bày cấu trúc tổng quát vi điều khiển họ 8051 Mục tiêu: - Giải thích, phân biệt đuợc chức tác dụng thành phần cấu tạo họ vi điểu... Driver, Port Driver - Khối Timing And Control: Khối điều khiển hoạt động Bus - Khối Timer: Điều khiển hoạt động Timer - Bộ nhỡ liệu RAM - Bộ nhớ chương trình Rom (Flash) - Hệ thống ghi đặc biệt,... sử dụng thuộc tính phần cứng Các chương trình dùng để thực công vi c đơn lẻ tổng thể chương trình lớn gồm nhiều công vi c khác nhau .Vi c phân chia bố cục chương trình theo chương trình chương trình

Ngày đăng: 05/06/2020, 00:11

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan