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

KỸ THUẬT VI xửlý– VI ĐIỀUKHIỂNTIỂU LUẬN CUỐI kỳ câu 1 dùng timer điều khiển led

20 37 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 20
Dung lượng 2,82 MB

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

Nội dung

HỌC VIỆN HÀNG KHÔNG VIỆT NAMKHOA ĐIỆN – ĐIỆN TỬ KỸ THUẬT VI XỬ LÝ – VI ĐIỀU KHIỂN TIỂU LUẬN CUỐI KỲ Giáo viên hướng dẫn: Th.s Võ Bá Việt Nghĩa Sinh viên thực hiện :1... Lấy probes voltag

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Ỳ

Giáo viên hướng dẫn: Th.s Võ Bá Việt Nghĩa

Sinh viên thực hiện :1 Phan Hồng Doanh -1953020071

2 Nguyễn Thị Phương Thảo - 1953020027

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2021

Trang 2

Mục lục

Phần 1 lí thuyết··· 1

1.1 câu 1- dùng timer điều khiển led ···1

Phần 2 mô phỏng···2

1.1 câu 1 - dùng timer 1 tạo ngắt với chu kỳ 1.2s···2

1.2 câu 2 - dùng rs232 bật tắt led đơn··· 4

1.3 câu 3 - điều khiển tốc độ động cơ··· 5

Phần 3 lập trình··· 9

1.1 lưu đồ giải thuật···9

1.1.1 câu 1- dùng timer điều khiển led··· 9

1.1.2 câu 2- dùng rs232 điều khiển led···9

1.1.3 câu 3- điều khiển động cơ··· 10

1.2 giải thích code··· 11

1.1.1 câu 1- dùng timer điều khiển led··· 11

1.1.2 câu 2- dùng rs232 điều khiển led··· 12

1.1.3 câu 3- điều khiển động cơ··· 14

Phần 4 kết luận··· 17

Trang 3

Mục lục hình ảnh

hình 1.0 - sơ đồ mô phỏng bài 1··· 2

hình 1.1 - kết quả mô phỏng··· 2

hình 1.2 - chu kỳ đầu tiên···3

hình 1.3 - chu kỳ tiếp theo···3

hình 1.4 - sơ đồ mô phỏng bài 2··· 4

hình 1.5 - nút RB0 được nhấn···4

hình 1.6 - nút RB1 được nhấn···5

hình 1.7 - nút RB2 được nhấn ···5

hình 1.8 - nút RB3 được nhấn···5

hình 1.9 - sơ đồ mô phỏng bài 3··· 6

hình 2.0 - nhấn nút quay phải··· 7

hình 2.1 - nhấn nút quay trái··· 7

hình 2.2 - nhấn nút stop···8

hình 2.3 - điều khiển tốc độ động cơ bằng biến trở··· 8

Trang 4

PHẦN 1 LÝ THUYẾT

1.1 Câu 1- dùng timer điều khiển led

Tính toán timer 1:

Yêu cầu dùng timer1 tạo Ngắt với chu kì 1.2 s

FTimer1= 1/1.2 = 5/6 hz

FTimer1= 20.000.000 /4 = 5.000.000hz ==> 100ms: 500.000 lệnh Chọn bộ chia trước :

==> chọn bộ chia trước prescaler = 8

Giá trị đặt trước cho thanh ghi TMR1: value = 65536-62500 = 3036

Số lần ngắt: count = 20.000.000

4.8.(65536−3036).56 = 12

Trang 5

PHẦN 2 MÔ PHỎNG

1.1 Câu 1 - dùng timer1 tạo ngắt với chu kỳ 1.2s

Hình 1.0 - sơ đồ mô phỏng bài 1

+ các linh kiện cần cho mô phỏng

- 1 pic16f877A tần số 20Mhz

- 1 thạch anh tần số 20Mhz ( crystal)

- 1 điện trở 1k và 8 con 220ohm ( resistor)

- 8 đèn led màu đỏ (led red)

- 2 con tụ 22pF

Sắp xếp các linh kiện như hình 1.0 Lấy probes voltage gắn vào đầu B0 để đo chu kì sáng tắt của led từ đó có thể biết kết quả tính toán đã đúng hay chưa + kết quả mô phỏng

Hình 1.1- kết quả mô phỏng

Trang 6

Hình 1.2- chu kỳ đầu tiên

Hình 1.3- chu kỳ tiếp theo

Trang 7

RB0 bắt đầu sáng sau 1.2s thì tắt , tới thời điểm 1.2*8 =9.6( vì có 8 led sáng lần lượt) thì RB0 tiếp tục sáng

1.2 Câu 2 - dùng rs232 bật tắt led đơn

Hình 1.3- sơ đồ mô phỏng bài 2

+ các linh kiện cần cho mô phỏng

- 2 con pic16f877A tần số 20Mh

- 4 nút nhấn (button)

- 4 con điện trở 10k và 4 con 220ohm( resistor)

- 4 đèn led màu đỏ( led red)

Sắp xếp linh kiện cài đặt như hình 1.3

+ kết quả mô phỏng

Hình 1.4- nút RB0 được nhấn

Trang 8

Hình 1.5 - nút RB1 được nhấn

Hình 1.6 - nút RB2 được nhấn

Hình 1.7 - nút RB3 được nhấn

1.3 Câu 3 điều khiển tốc độ động cơ

Trang 9

Hình 1.8 - sơ đồ mô phỏng bài 3

+ các linh kiện cần cho mô phỏng

- 1 con pic16f877A tần số 20MHz

- 3 nút nhấn (button)

- 1 biến trở 10k (pot-hg)

- 1 màn hình lcd LM016L

- một động cơ dc ( motor)

- 1 con L298

- 2 tụ 100nF ( capacitor)

- 4 con diode 1N4007

- 1 cục pin 12v ( battery)

Sắp xếp cài đặt linh kiện như hình 1.8

+ kết quả mô phỏng

Trang 10

Hình 1.9 - nhấn nút quay phải

Trang 11

Hình 2.1 - nhấn nút stop

Hình 2.2 - dùng biến trở điều chỉnh tốc độ động cơ

Trang 12

PHẦN 3 LẬP TRÌNH

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

1.1.1.Câu 1- dùng timer điều khiển led

1.1.2.Câu 2- dùng rs232 điều khiển led

Trang 13

Câu 3- điều khiển động cơ

Trang 14

1.2.Giải thích code

1.1.1 câu 1- dùng timer điều khiển led

#include <bai_1_de_2.h>

unsigned int16 count=12;

unsigned int16 i=0;

int8 seg[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};// các giá trị của

mảng sẽ sáng lần lượt từ port b0 đến b7

int k=0;

#INT_TIMER1// chỉ thị ngắt timer 1_interrupt

// hàm ngắt timer1

void timer1_interrupt(){

i++;

if(i>=count){ khi i> count thì xảy ra một lần ngắt

i=0;// gán i về =0

k++;// cộng k lên một đơn vị

if(k>7){//nếu nó lớn hơn phần tử của mảng thì gán về =0

k=0;

}

output_b(seg[k]); // output ra vị trí k của mảng

}

set_timer1(3036);// cài đặt giá trị đặt trước cho thanh ghi timer1

clear_interrupt(INT_TIMER1);// xóa cờ ngắt timer 1

}

void main()

{

clear_interrupt(INT_TIMER1);// xóa cờ ngắt timer 1

enable_interrupts(INT_TIMER1);// cho phép ngắt timer 1

Trang 15

enable_interrupts(GLOBAL);// cho phép ngắt toàn cục

setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);// cài đặt bộ chia trc cho

timer 1

set_timer1(3036);//cài đặt giá trị đặt trước cho thanh ghi timer1

Output_b(0x01);// ban đầu port b0 sáng.

while(TRUE)

{

}

}

1.1.2.Câu 2- dùng rs232 điều khiển led

+ code truyền

#include <TRUYEN.h>

#use rs232(uart1,baud=9600)// khai báo sử dụng rs232 trong ccs

char c;

void main()

{

while(true){

if(input(pin_B0)==0){ // nếu nút B0 được nhấn thì gán c bằng kí tự 0 while(input(pin_B0)==0);

c='0';

putc(c);// xuất kí tự đi

}

if(input(pin_B1)==0){// nếu nút B1 được nhấn thì gán c bằng kí tự 1

while(input(pin_B1)==0);

c='1';

putc(c);// xuất kí tự đi

}

if(input(pin_B2)==0){// nếu nút B2 được nhấn thì gán c bằng kí tự 2

Trang 16

c='2';

putc(c);// xuất kí tự đi

}

if(input(pin_B3)==0){// nếu nút B3 được nhấn thì gán c bằng kí tự 3 while(input(pin_B3)==0);

c='3';

putc(c);// xuất kí tự đi

}

}

}

+ code nhận

#include <nhan.h>

#use rs232(uart1,baud=9600)// khai báo sử dụng rs232 trong ccs char c;

void main()

{

while(TRUE)

{

if(kbhit()==1){// kiểm tra có nhận được kí tự chưa

c=getc();// đọc kí tự nhận được từ chân RC7 và lưu vào biến c }

if(c=='0'){// nếu kí tự nhận được là 0 thì sáng port B0

output_b(0x01);

}

if(c=='1'){// nếu kí tự nhận được là 1 thì sáng port B1

output_b(0x02);

Trang 17

if(c=='2'){// nếu kí tự nhận được là 2 thì sáng port B2 output_b(0x04);

}

if(c=='3'){// nếu kí tự nhận được là 3 thì sáng port B3 output_b(0x08);

}

}

}

1.1.3.câu 3- điều khiển động cơ

#include <main.h>

#define LCD_ENABLE_PIN PIN_D2

#define LCD_RS_PIN PIN_D0

#define LCD_RW_PIN PIN_D1

#include<lcd.c>// khai báo cho màn hình lcd

int8 k=0;

#INT_RB// chỉ thị ngắt rb

// hàm ngắt rb interrupt

void rb_interrupt(){

clear_interrupt(INT_RB);// xóa cờ ngắt port

if(input(pin_B5)==0){//stop

k=1;// nếu nút B5 được nhấn thì gán k=1

}

if(input(pin_B6)==0){//quay trai

k=2;// nếu nút B6 được nhấn thì gán k=2

Trang 18

IF(input(PIN_B7)==0){//quay thuan

k=3;// nếu nút B7 được nhấn thì gán k=3

}

}

void lcd_imp(int16 value){// hàm hiển thị lcd

int8 thousand,hundred,tens,units;

thousand=value/1000;// số hàng nghìn

hundred=(value%1000)/100;// số hàng trăm

tens=((value%1000)%100)/10;// số hàng chục

units=(value%1000)%10;// số hàng đơn vị

lcd_gotoxy(1,1);// vị trí in ra số hàng nghìn

lcd_putc(thousand+48);// in ra số hàng nghìn

lcd_gotoxy(2,1);// vị trí in ra số hàng trăm

lcd_putc(hundred+48);// in ra số hàng trăm

lcd_gotoxy(3,1);// vị trí in ra số hàng chục

lcd_putc(tens+48);// in ra số hàng chục

lcd_gotoxy(4,1);// vị trí in ra số hàng đơn vị

lcd_putc(units+48);// in ra số hàng đơn vị

}

void main()

{

int16 value=0;

lcd_init();// khởi tạo màn hình lcd

lcd_putc('\f');// xóa màn hình trắng

clear_interrupt(INT_RB);// xóa cờ ngắt port b

enable_interrupts(INT_RB);// cho phép ngắt port b

Trang 19

setup_adc_ports(ALL_ANALOG);// cấu hình các chân analog

setup_adc(ADC_CLOCK_INTERNAL);// cấu hình adc

set_adc_channel(1);//chọn kênh để đọc giá trị adc

setup_timer_2(T2_DIV_BY_16,0XFF,1);//cấu hình timer 2 để tạo period setup_ccp1(CCP_PWM);//cấu hình ccp1 hoạt động ở chế độ pwm

while(TRUE)

{

switch(k){

case 1:// nếu biến k =1 thì dừng động cơ

output_bit(PIN_B0,0);

output_bit(PIN_B1,0);

break;

case 2:// khi k = 2 thì động cơ quay trái

output_bit(PIN_B0,0);

output_bit(PIN_B1,1);

break;

case 3:// khi k =3 thì động cơ qua phải

output_bit(PIN_B0,1);

output_bit(PIN_B1,0);

break;

}

value=read_adc();// lưu giá trị adc đọc được vào biến value

set_pwm1_duty(value);// cái đặt tốc độ động cơ bằng value

lcd_imp(value);// hiển thị giá trị value lên lcd

}

}

Trang 20

PHẦN 4 KẾT LUẬN

Qua phần tiểu luận này giúp em hiểu biết hơn về cách hoạt động của timer,ngắt ngoài ,ngắt port,chức năng ADC, sử dụng pwm để điều khiển động

cơ và cách sử dụng RS232, hiểu biết một cách tổng quát cách lập trình pic16f877A để điều khiển các thiết bị

Ngày đăng: 20/04/2022, 20:30

HÌNH ẢNH LIÊN QUAN

Hình 1.0 - sơ đồ mô phỏng bài 1 - KỸ THUẬT VI xửlý– VI ĐIỀUKHIỂNTIỂU LUẬN CUỐI kỳ câu 1  dùng timer điều khiển led
Hình 1.0 sơ đồ mô phỏng bài 1 (Trang 5)
Sắp xếp các linh kiện như hình 1.0. Lấy probes voltage gắn vào đầu B0 để đo chu kì sáng tắt của led  - KỸ THUẬT VI xửlý– VI ĐIỀUKHIỂNTIỂU LUẬN CUỐI kỳ câu 1  dùng timer điều khiển led
p xếp các linh kiện như hình 1.0. Lấy probes voltage gắn vào đầu B0 để đo chu kì sáng tắt của led (Trang 5)
Hình 1.2- chu kỳ đầu tiên - KỸ THUẬT VI xửlý– VI ĐIỀUKHIỂNTIỂU LUẬN CUỐI kỳ câu 1  dùng timer điều khiển led
Hình 1.2 chu kỳ đầu tiên (Trang 6)
Sắp xếp linh kiện cài đặt như hình 1.3 + kết quả mô phỏng - KỸ THUẬT VI xửlý– VI ĐIỀUKHIỂNTIỂU LUẬN CUỐI kỳ câu 1  dùng timer điều khiển led
p xếp linh kiện cài đặt như hình 1.3 + kết quả mô phỏng (Trang 7)
Hình 1.3- sơ đồ mô phỏng bài 2 - KỸ THUẬT VI xửlý– VI ĐIỀUKHIỂNTIỂU LUẬN CUỐI kỳ câu 1  dùng timer điều khiển led
Hình 1.3 sơ đồ mô phỏng bài 2 (Trang 7)
Hình 1.5 - nút RB1 được nhấn - KỸ THUẬT VI xửlý– VI ĐIỀUKHIỂNTIỂU LUẬN CUỐI kỳ câu 1  dùng timer điều khiển led
Hình 1.5 nút RB1 được nhấn (Trang 8)
Hình 1. 6- nút RB2 được nhấn - KỸ THUẬT VI xửlý– VI ĐIỀUKHIỂNTIỂU LUẬN CUỐI kỳ câu 1  dùng timer điều khiển led
Hình 1. 6- nút RB2 được nhấn (Trang 8)
Hình 1.8 - sơ đồ mô phỏng bài 3 - KỸ THUẬT VI xửlý– VI ĐIỀUKHIỂNTIỂU LUẬN CUỐI kỳ câu 1  dùng timer điều khiển led
Hình 1.8 sơ đồ mô phỏng bài 3 (Trang 9)
Hình 1.9 - nhấn nút quay phải - KỸ THUẬT VI xửlý– VI ĐIỀUKHIỂNTIỂU LUẬN CUỐI kỳ câu 1  dùng timer điều khiển led
Hình 1.9 nhấn nút quay phải (Trang 10)
Hình 2.0 - nhấn nút quay trái - KỸ THUẬT VI xửlý– VI ĐIỀUKHIỂNTIỂU LUẬN CUỐI kỳ câu 1  dùng timer điều khiển led
Hình 2.0 nhấn nút quay trái (Trang 10)
Hình 2. 1- nhấn nút stop - KỸ THUẬT VI xửlý– VI ĐIỀUKHIỂNTIỂU LUẬN CUỐI kỳ câu 1  dùng timer điều khiển led
Hình 2. 1- nhấn nút stop (Trang 11)
Hình 2. 2- dùng biến trở điều chỉnh tốc độ động cơ - KỸ THUẬT VI xửlý– VI ĐIỀUKHIỂNTIỂU LUẬN CUỐI kỳ câu 1  dùng timer điều khiển led
Hình 2. 2- dùng biến trở điều chỉnh tốc độ động cơ (Trang 11)

TỪ KHÓA LIÊN QUAN

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

w