1. Trang chủ
  2. » Giáo Dục - Đào Tạo

KỸ THUẬT VI xử lý – VI điều KHIỂN TIỂU LUẬN CUỐI kỳ yêu cầu tạo ngắt ở TIMER1 với chu kỳ 1 2 giây công thức tính toán

26 14 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 850,4 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 Dùng ngắt thay đổi ở PORTB để lập trình cho các nút nhấn. Tốc độ động cơ sẽ thay đổi khi điều chỉnh biến trở ở chân RA0.. Lấy que đo probe voltage gắn vào chân RB0 để đo chu kỳ sáng/t

Trang 1

HỌC VIỆN HÀNG KHÔNG VIỆT NAM

KHOA ĐIỆN – ĐIỆN TỬ

KỸ THUẬT VI XỬ LÝ – VI ĐIỀU KHIỂN

TIỂU LUẬN CUỐI KỲ

Họ tên: Nguyễn Lê Bảo Duy

Mã số sinh viên: 1953020068

Trang 2

MỤC LỤC (Đề 2)

Trang 3

Dựa vào công thức (1) ta tính được: F = 56 Hz

Dựa vào công thức (2) để tính value:

Có được:

Prescaler = 1

Trang 4

 Dùng ngắt thay đổi ở PORTB để lập trình cho các nút nhấn.

 Tốc độ động cơ sẽ thay đổi khi điều chỉnh biến trở ở chân RA0 

 LCD hiển thị giá trị analog đọc được từ chân biến trở

Trang 5

PHẦN 2 MÔ PHỎNG

2.1 Câu 1

Hình 2.1 Sơ đồ mô phỏng câu 1

Mô tả: Lấy linh kiện bao gồm PIC16F877A, RES 220, LED-GREEN và lắp

ráp như sơ đồ ở Error: Reference source not found.

Lấy que đo probe voltage gắn vào chân RB0 để đo chu kỳ sáng/tắt của đènLED Từ đó có thể biết được kết quả tính toán đã đúng hay chưa

Kết quả mô phỏng:

Trang 6

Hình 2 2 Kết quả mô phỏng câu 1

Trang 7

Tín hiệu xung bắt đầu từ 0 đến 2.1 cho chu kỳ đầu tiên (Error: Referencesource not found) và từ 16.8 đến 18.9 cho chu kỳ thứ hai (Error: Reference

source not found)

Hình 2 3 Chu kì đầu tiên

Trang 8

Hình 2 4 Chu kì thứ hai

Trang 9

2.2 Câu 2:

Hình 2 5 Sơ đồ mô phỏng câu 2

Mô tả: Lấy linh kiện bao gồm PIC16F877A, RES 220, RES 10k,

LED-GREEN, BUTTON và lắp ráp như sơ đồ ở Hình 2.2.

Nối chân truyền RC6 của PIC truyền U2 với chân nhận RC7 của PIC nhận U1Kết quả mô phỏng:

Khi nhấn nút BT1 thì đèn D1 sáng:

Trang 10

Tương tự như vậy khi nhấn nút BT2, BT3, BT4 thì lần lượt các đèn D2, D3, D4 sẽ sáng.

Trang 11

Hình 2 6 Sơ đồ mô phỏng câu 3

2.3 Câu 3

Mô tả: Lấy linh kiện bao gồm PIC16F877A, L298, LCD, CAP 100nF, RES

220, RES 10k, POT-HG, DIODE,LED-GREEN, BUTTON, BATTERY 12V,

MOTOR-ENCODER và lắp ráp như sơ đồ ở Hình 2.3.

Kết quả mô phỏng:

Trang 12

Hình 2 7 Khi nhấn nút LEFT

Trang 13

Hình 2 8 Khi nhấn nút RIGHT

Hình 2 9 Khi nhấn nút STOP

Trang 14

PHẦN 3 LẬP TRÌNH

3.1 Ý tưởng

3.1.1 Câu 1:

Về phần cứng, đầu tiên sẽ tính các giá trị cần thiết để thiết lập timer1 theo chu

kì mà đề bài yêu cầu Sau đó, sẽ lắp mạch và cài đặt các thông số như Hình 2.1 Về code thì em sử dụng

3.1.2 Câu 2:

Về phần cứng, đầu tiên chúng ta sẽ sử dụng 2 PIC, lắp mạch và cài đặt các

thông số như Hình 2.2 Về code thì em sẽ sử dụng 2 code riêng để truyền và

nhận dữ liệu như đề yêu cầu, sử dụng vòng lập while để điểu khiển đèn led bằng các nút nhấn

3.1.3 Câu 3:

Về phần cứng, đầu tiên em sử dụng 1 PIC để điều khiển các nút nhấn để điều

khiển động cơ, LCD cũng như là L298 và điều chỉnh các thông số như Hình 2.3 Về code thì em sử dụng hàm switch case để hiển thị LCD và động cơ còn

các nút nhấn thì em sẽ sử dụng hàm if và while để kiểm tra trạng thái của nút nhấn

3.2 Lưu đồ thuật toán

3.2.1 Câu 1:

Trang 15

3.2.2 Câu 2:

Trang 16

3.3 Giải thích code

3.3.1 Câu 1:

#include <main.h>

unsigned int16 count = 120; // khai bao bien count

unsigned int16 i,j = 0; // khai bao bien i va j

int led=0x01; // khai bao bien led

Trang 17

clear_interrupt(INT_TIMER1); // xoa co tran timer1

output_b(led);

}

void main()

{

clear_interrupt(INT_TIMER1); // xoa co tran timer1

enable_interrupts(INT_TIMER1); //cho phep ngat timer1

enable_interrupts(GLOBAL); // cho phep ngat toan cuc

setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); // cai dat timer1

set_timer1(15536); // dat gia tri cho timer1

Trang 18

set_tris_b(0xFF); //tat ca chan port B la input

Trang 19

putc('D'); // gui ki tu toi chan TX

}

}

b) PIC nhận:

#include <main.h>

#USE rs232(baud = 9600, xmit = PIN_C6, rcv = PIN_C7)

unsigned int8 kitu; //khai bao bien kitu

void main()

{

set_tris_b(0x00); // tat ca chan port B la output

output_b(0); // cac chan port B o muc thap

Trang 20

output_b(0x04); //xuat ra gia tri port B la 00000100

//khai bao chan cua LCD

#define LCD_ENABLE_PIN PIN_D2

#define LCD_RS_PIN PIN_D0

#define LCD_RW_PIN PIN_D1

#define LCD_DATA4 PIN_D4

#define LCD_DATA5 PIN_D5

#define LCD_DATA6 PIN_D6

#define LCD_DATA7 PIN_D7

//khai bao chan cua dong co

#define PIN_IN1 PIN_B0

#define PIN_IN2 PIN_B1

#define PIN_PWM1 PIN_C2

Trang 21

//khai bao chan dieu khien dong co

#define PIN_STOP PIN_B5

#define PIN_LEFT PIN_B6

#define PIN_RIGHT PIN_B7

#include <lcd.c>

unsigned int8 mode = 0; //khai bao bien mode

//khai bao ngat va adc

void port_init()

{

output_b(0x00);

clear_interrupt(INT_RB); // xoa co bao ngat ngoai

enable_interrupts(INT_RB); // cho phep ngat ngoai

enable_interrupts(GLOBAL); // cho phep ngat toan cuc

setup_adc(ADC_CLOCK_INTERNAL); // chon xung lay mau ADC bang xung noi

setup_adc_ports(AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF); //

su dung cac chan cua ADC

setup_timer_2(T2_DIV_BY_16,255,1); //cau hinh timer2

setup_ccp1(CCP_PWM); // cau hinh ccp1 hoat dong o che do PWM

}

Trang 22

void lcd_display(int8 col, int8 row, int16 value)

Trang 23

if(input(PIN_STOP)==0) // kiem tra trang thai nut nhan

//doc gia tri cua bien tro

unsigned int16 read_speed()

{

set_adc_channel(1); // chi dinh kenh 1 doc gia tri ADC

Trang 24

return read_adc(); // ket thuc ham

}

// dieu khien dong co

void motor_control(int8 mode, int16 pwm)

case 1: //quay trai

set_pwm1_duty(pwm); // doc gia tri bien tro

output_bit(PIN_IN1,1);

output_bit(PIN_IN2,0);

break;

case 2: //quay phai

set_pwm1_duty(pwm); // doc gia tri bien tro

output_bit(PIN_IN1,0);

output_bit(PIN_IN2,1);

break;

Trang 25

}

}

void main()

{

int16 value; // khai bao bien value

lcd_init(); // khoi tao LCD

Trang 26

Qua câu 2, em học được cách điều khiển led bằng nút nhấn thông qua

PIC18F877A cũng như cách sử dụng RS232 để giao tiếp

4.3 Câu 3:

Qua câu 3, em học được cách điều khiển động cơ DC bằng L298 , điều chỉnh tốc độ động cơ, dùng ngắt thay đổi ở PORTB để lập trình cho các nút nhấn vàLCD hiển thị giá trị biến trở thông qua PIC16F877A

Ngày đăng: 05/06/2022, 12:03

HÌNH ẢNH LIÊN QUAN

Hình 2.1 Sơ đồ mô phỏng câu 1 - KỸ THUẬT VI xử lý – VI điều KHIỂN TIỂU LUẬN CUỐI kỳ yêu cầu tạo ngắt ở TIMER1 với chu kỳ 1 2 giây  công thức tính toán
Hình 2.1 Sơ đồ mô phỏng câu 1 (Trang 5)
Hình 2.2 Kết quả mô phỏng câu 1 - KỸ THUẬT VI xử lý – VI điều KHIỂN TIỂU LUẬN CUỐI kỳ yêu cầu tạo ngắt ở TIMER1 với chu kỳ 1 2 giây  công thức tính toán
Hình 2.2 Kết quả mô phỏng câu 1 (Trang 6)
Hình 2. 5 Sơ đồ mô phỏng câu 2 - KỸ THUẬT VI xử lý – VI điều KHIỂN TIỂU LUẬN CUỐI kỳ yêu cầu tạo ngắt ở TIMER1 với chu kỳ 1 2 giây  công thức tính toán
Hình 2. 5 Sơ đồ mô phỏng câu 2 (Trang 9)
Hình 2. 6 Sơ đồ mô phỏng câu 3 - KỸ THUẬT VI xử lý – VI điều KHIỂN TIỂU LUẬN CUỐI kỳ yêu cầu tạo ngắt ở TIMER1 với chu kỳ 1 2 giây  công thức tính toán
Hình 2. 6 Sơ đồ mô phỏng câu 3 (Trang 11)
Hình 2. 7 Khi nhấn nút LEFT - KỸ THUẬT VI xử lý – VI điều KHIỂN TIỂU LUẬN CUỐI kỳ yêu cầu tạo ngắt ở TIMER1 với chu kỳ 1 2 giây  công thức tính toán
Hình 2. 7 Khi nhấn nút LEFT (Trang 12)
Hình 2 .8 Khi nhấn nút RIGHT - KỸ THUẬT VI xử lý – VI điều KHIỂN TIỂU LUẬN CUỐI kỳ yêu cầu tạo ngắt ở TIMER1 với chu kỳ 1 2 giây  công thức tính toán
Hình 2 8 Khi nhấn nút RIGHT (Trang 13)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w