Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 36 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
36
Dung lượng
5,86 MB
Nội dung
BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM KHOA CÔNG NGHỆ ĐIỆN TỬ TIỂU LUẬN KẾT THÚC HỌC PHẦN HỌC KỲ 2,, 2020-2021 KỸ THUẬT VI XỬ LÝ Họ tên sinh viên: Mã số sinh viên: Tên lớp học phần: Mã lớp học phần: Email liên hệ: Số điện thoại: Giảng viên giảng dạy: Tp HCM, tháng năm 2021 50 MỤC LỤC NỘI DUNG Câu 1: Nguyên lý hoạt động bước lập trình modul TIMER1 PIC16F887 a Nguyên lý hoạt động b Các bước lập trình modul TIMER1 PIC16F887 Câu 2: Lập trình PIC16F887, sử dụng ngắt PORTB điều khiển led bảy đoạn theo yêu cầu sau: a Trình bày lý thuyết tính tốn cơng thức liên quan đến làm: b Lưu đồ giải thuật c Viết code ngôn ngữ c, mô phần mềm protues: Câu 3: Lập trình PIC16F887, sử dụng modul TIMER1 để tạo delay, kết hiển thị led đơn theo yêu cầu sau: 10 a Trình bày lý thuyết tính tốn cơng thức liên quan đến làm: 10 b Lưu đồ giải thuật 10 c Viết code ngôn ngữ c, mô phần mềm proteus: 12 Câu 4: Lập trình PIC16F887, sử dụng modul CCP chế PWM, tạo xung chân RC2, kết hiển thị theo yêu cầu sau: 15 a Trình bày lý thuyết tính tốn cơng thức liên quan đến làm: 15 c Lưu đồ giải thuật 16 c Viết code ngôn ngữ c, mô phần mềm proteus: 19 Câu 5: Lập trình PIC16F887, sử dụng modul ADC 23 a Trình bày lý thuyết tính tốn cơng thức liên quan đến làm: 23 b Lưu đồ giải thuật 24 c Viết code ngôn ngữ c, mô phần mềm proteus: 25 50 NỘI DUNG Câu 1: Nguyên lý hoạt động bước lập trình modul TIMER1 PIC16F887 a Nguyên lý hoạt động Bộ dao động Timer 1: • Được kết nối thơng qua chân RC0 RC1 • Mạch điện bổ sung (xem hình) thiết kế chủ yếu cho hoạt động tần số thấp • Khơng phụ thuộc vào xung clock bên nên hoạt động chế độ "ngủ" • Sau kích hoạt người sử dụng phải chờ khoảng vài ms để dao động hoạt động ổn định • Khơng thể tắt Prescaler mà thay đổi giá trị tỉ lệ • Prescaler bị xóa cách ghi liệu vào ghi TMR1H TMR1L • Sự kiện ngắt Timer tràn "đánh thức" vi điều khiển khỏi chế độ "ngủ" trường hợp sử dụng nguồn xung clock bên khơng sử dụng tính đồng b Các bước lập trình modul TIMER1 PIC16F887 Để định thời gian (Timer): • BƯỚC 1: Ghi vào ghi TMR1 (bao gồm TMR1H:TMR1L) giá trị tương ứng cho thời gian cần định thời t - DELAY - tDELAY: Thời gian cần định thời ( s) - fOSC: Tần số dao động (MHz) - Pre: Giá trị hệ số Prescaler (Pre = 1, 2, 4, 8) - [TMR1]: Giá trị cần ghi vào ghi - TMR1H = Byte cao [TMR1] - TMR1L= Byte thấp [TMR1] *Lưu ý: 50 Cơng thức tính tDELAY áp dụng cho trường hợp sử dụng nguồn xung clock bên Trong trường hợp sử dụng nguồn xung clock bên lấy từ dao động Timer (T1OSI T1OSO) cơng thức tính tDELAY sau : DELAY t f (T ) OSC • BƯỚC 2: Xóa cờ báo tràn (cờ ngắt) TMR1IF • BƯỚC 3: Chọn chế độ hoạt động Timer - Chế độ định thời gian (Timer) - Kích hoạt vơ hiệu hóa ngắt (tùy chọn) - Chọn giá trị tỉ lệ Prescaler • BƯỚC 4: Cho phép Timer bắt đầu hoạt động • BƯỚC 5: Xác định thời điểm Timer bị tràn (đủ thời gian cần định thời Timer) cách - Kiểm tra cờ TMR1IF (nếu dùng thăm dò) - Xử lý ISR Timer (nếu dùng ngắt) Để đếm kiện (Counter): • BƯỚC 1: Xóa giá trị ghi TMR1 (hoặc đặt giá trị ban đầu đếm) • BƯỚC 2: Xóa cờ báo tràn (cờ ngắt) TMR1IF • BƯỚC 3: Chọn chế độ hoạt động Counter - Chế độ đếm kiện (Counter) - Kích hoạt vơ hiệu hóa ngắt (tùy chọn) - Chọn giá trị tỉ lệ Prescaler - Chọn tính đồng khơng đồng xung • BƯỚC 4: Cho phép Counter bắt đầu • BƯỚC 5: Đọc xử lý số xung đếm ghi TMR1 (TMR1H:TMR1L); Dựa vào cờ báo tràn TMR1IF để xử lý trường hợp số xung đếm vượt 65535 50 Câu 2: Lập trình PIC16F887, sử dụng ngắt PORTB điều khiển led bảy đoạn theo yêu cầu sau: Yêu cầu: Nhấn SW0: led đếm lên từ 00 đến 24 lần thời gian tồn trạng thái 300ms Nhấn SW1: led đếm xuống từ 60 đến 00 lặp lại hai lần thời gian tồn trạng thái 300ms - Nhấn SW2: led hiển thị số FP chớp tắt ba lần với f = Hz a Trình bày lý thuyết tính tốn cơng thức liên quan đến làm: • Ngắt PORTB (sử dụng RB0 : RB7) GIE=1 : cho phép ngắt toàn cục RBIF=0 : xoá cờ ngắt PORTB RBIE=1 : cho phép ngắt PORT B IOCBX=1 (X=0 :7) : cho phép ngắt chân RBX PORTB • Cách biến đổi tách chữ số thuộc hàng chục hàng, đơn vị : Hàng chục = Y/10 Hàng đơn vị = Y%10 b.Lưu đồ giải thuật dem24() dem() Sai For(i=0;i0;i ) Đúng Hàng chục: i-1/10 Hàng đơn vị:i-1%10 PORTC=a[CH] PORTD=a[DV] Delay 300ms (mảng giá trị tạo sẵn) end FPchoptat() Fpchoptat() While(n ) Sai Đúng Hiện thị FP 300ms Tắt FP 300ms end 50 Begin Start Cấu hình tất Analog Input → Digital I/O PORTB_ISR PORTB_ISR Đọc giá trị PORT B (trạng thái SW) Cấu hình PORT nối led PORTD; PORTC: Output Xố cờ ngắt PORT B Cấu hình PORT nút nhấn RB0;RB1;RB2 Input Chống dội Kích hoạt tính Pull-up cho RB0;RB1;RB2 SW0 chân RB0 nhả? Đúng Next_1 Xoá cờ cho phép ngắt PORT B SW1 chân RB1 nhả? Bật chức ngắt cho RB0;RB1;RB2 Đúng Sa i Led đoạn đếm lên từ 0024 lần dem24() Led đoạn đếm xuống từ 60-00 lần dem60(2) Next_2 Cho phép module ngắt hoạt động SW2 chân RB2 nhả? Đúng Next_3 Điều khiển tắt led đoạn PORTC;PORTD End Đọc giá trị PORT B (trạng thái SW) Led đoạn thị FP chóp tắt lần FPchoptat(3) 50 ... Nguyên lý hoạt động bước lập trình modul TIMER1 PIC16F887 a Nguyên lý hoạt động b Các bước lập trình modul TIMER1 PIC16F887 Câu 2: Lập trình PIC16F887, sử dụng ngắt PORTB. .. • BƯỚC 5: Đọc xử lý số xung đếm ghi TMR1 (TMR1H:TMR1L); Dựa vào cờ báo tràn TMR1IF để xử lý trường hợp số xung đếm vượt 65535 50 Câu 2: Lập trình PIC16F887, sử dụng ngắt PORTB điều khiển led bảy. .. Nhấn SW2: led hiển thị số FP chớp tắt ba lần với f = Hz 50 Câu 3: Lập trình PIC16F887, sử dụng modul TIMER1 để tạo delay, kết hiển thị led đơn theo yêu cầu sau: Yêu cầu: - Nhấn SW0: led 0,2,4,6