Tải bản đầy đủ (.docx) (24 trang)

BÁO cao thuc hanh vi dieu khien

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (490.09 KB, 24 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP VIỆT HUNG
KHOA ĐIỆN-ĐIỆN TỬ
--------------------------------------

BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN

Giáo viên hướng dẫn : Phùng Toàn Thắng
Sinh viên thực hiện : Vũ Văn Được
MSV :1700347
Lớp : k41 tđh

Hà Nội 2019


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

Nội dung các bài thực hành:
-

Bài thực hành số 1: Thực hành điều khiển led đơn

-

Bài thực hành số 2: Thực hành hiển thị led 7 đoạn.

-

Bài thực hành số 3: Thực hành hiển thị LCD 16x2.

-


Bài thực hành số 4: Thực hành nhận biết phím đơn.

-

Bài thực hành số 5: Thực hành nhận biết phím matrix 4x3.

-

Bài thực hành số 6: Thực hành xử lý ngắt ngoài INT.

-

Bài thực hành số 7: Thực hành giao tiếp ADC.

-

Bài thực hành số 8: Thực hành giao tiếp với ROM.

-

Bài thực hành số 9: Thực hành giao tiếp thời gian thực
DS1307.

-

Bài thực hành số 10: Thực hành điều khiển động cơ DC.

-

Bài thực hành số 11: Thực hành điều động cơ khiển bước.


VŨ VĂN ĐƯỢC

2


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

01: Điều khiển hiển thị led đơn
Bài tập ứng dụng: Thực hành điều khiển 8 led đơn sáng dần từ
phải sang trái. Dữ liệu điều khiển led được xuất ra cổng Port D.
1

Sơ đồ nguyên lý

Hình 1.1. Sơ đồ nguyên lý khối led đơn
-Giải thuật
#use delay(clock=12000000)
#use

rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#use Fast_IO(D) // thu vien cau hinh chan

VŨ VĂN ĐƯỢC

3


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC


void main(void)
{
set_tris_D(0xF0);
//while(true)
for(;;)
{
output_D(0x0F);
delay_ms(10);
output_D(0xF0);
delay_ms(20); //200us(chu ky may 1Mhz-->200/1=?)
}
}


Kết quả


-

Nhận xét
Chương trình thực hiện chạy đúng theo nguyên lý đã đưa ra.
Thời gian sáng tắt các đèn led phải đủ lớn để mắt có thể nhận
thấy sự thay đổi trạng thái của các led, vì do thời gian lưu ảnh
của võng mạc.

VŨ VĂN ĐƯỢC

4



BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

Bài thực hành số 02: Điều khiển hiển thị led 7 thanh
Bài tập ứng dụng: Hiển thị từ 0-9 bằng 4 led 7 thanh. Dữ liệu
được điều khiển qua cổng PORTD. Tín hiệu điều khiển led điều
khiển qua cổng PORTA.
2.1.

Sơ đồ nguyên lý

Hình 2.1. Sơ đồ nguyên lý khối led 7 thanh
Giải thuật
#include <18F4520.h>
#device adc=8


#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES LP //Low power osc < 200 khz
#FUSES NOPROTECT //Code not protected from reading
#FUSES BROWNOUT //Reset when brownout detected
//FUSES BORV25 //Brownout reset at 2.5V
#FUSES NOPUT //No Power Up Timer
#FUSES NOCPD //No EE protection
#FUSES STVREN //Stack full/underflow will cause reset
#FUSES NODEBUG //No Debug mode for ICD
VŨ VĂN ĐƯỢC

5



BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOWRT //Program memory not write protected
#FUSES NOWRTD //Data EEPROM not write protected
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES PBADEN //PORTB pins are configured as analog input
channels on RESET
#FUSES NOWRTC //configuration not registers write protected
#FUSES NOWRTB //Boot block not write protected
#FUSES NOEBTR //Memory not protected from table reads
#FUSES NOEBTRB //Boot block not protected from table reads
#FUSES NOCPB //No Boot Block code protection
#FUSES LPT1OSC //Timer1 configured for low-power operation
#FUSES MCLR //Master Clear pin enabled
//#FUSES XINST //Extended set extension and Indexed Addressing
mode enabled
#use delay(clock=12000000)
#use
rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#use Fast_IO(D) // thu vien cau hinh chan
void main(void)
{
set_tris_D(0x00);
set_tris_A(0x00);
set_tris_B(0x00);
set_tris_c(0x00);
//while(true)

while(true)
{
//donvi
output_D(0x99);
output_low(PIN_A0);
output_high(PIN_A1);
output_high(PIN_A2);

VŨ VĂN ĐƯỢC

6


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

output_high(PIN_A3);
delay_ms(200);
//nghin
output_D(0xa4);
output_high(PIN_A0);
output_low(PIN_A1);
output_high(PIN_A2);
output_high(PIN_A3);
delay_ms(200);
//tram
output_D(0xb0);
output_high(PIN_A0);
output_high(PIN_A1);
output_low(PIN_A2);
output_high(PIN_A3);

delay_ms(200);
//chuc
output_D(0x90);
output_high(PIN_A0);
output_high(PIN_A1);
output_high(PIN_A2);
output_low(PIN_A3);
delay_ms(200);
//output_bit(PIN_A0,0);
}
}



Kết quả

VŨ VĂN ĐƯỢC

7


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC



Nhận xét
- Chương trình thực hiện chạy đúng theo nguyên lý đã đưa ra.

VŨ VĂN ĐƯỢC


8


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

Bài thực hành số 03: Điều khiển hiển thị LCD 16x02
Bài tập ứng dụng: Thực hành hiển thị trên LCD16x2 chữ:
“KIT PIC18F4520” ; “CHUC THANH CONG”.
Tín hiệu điều khiển và dữ liệu LCD được xuất ra cổng PORTD.
3.1.

Sơ đồ nguyên lý

VŨ VĂN ĐƯỢC

9


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

VŨ VĂN ĐƯỢC

10


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

Hình 3.1. Sơ đồ nguyên lý khối LCD16x02
Giải thuật
#include <18F4520.h>

#include"my_lcd.h"
#fuses NOWDT,NOLVP,XT
#use delay(clock=4Mhz)
#use Fast_IO(C)
//===========
char dong1 []="Hello,World";
char dong2 []="Chuc thanh cong";
//ham chinh
//
void main()
{
set_tris_C(0);// cac pin port C la cong ra
LCD_Init ();
LCD_Gotoxy(0,0);
LCD_Puts(dong1);
LCD_Gotoxy(0,1);
LCD_Puts(dong2);
while(true);
}




Kết quả

VŨ VĂN ĐƯỢC

11



BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC


-

Nhận xét
Chương trình thực hiện chạy đúng theo nguyên lý đã đưa ra.
Điều chỉnh độ tương phản của màn hình để nhìn rõ nhất ký

-

tự hiển thị.
Gửi dữ liệu hiển thị lên LCD phải biết chú ý địa chỉ hiển thị
của dữ liệu tránh bị ghi đè.

Bài thực hành số 04: Nhận biết phím đơn
Bài tập ứng dụng: Điều khiển hiển thị thông báo trạng thái
nút nhất lên LCD khi nút nhấn trong mô đun được tác động. Port
D được kết nối với LCD để hiển thị. PortB kết nối với nút nhấn.
4.1.

Sơ đồ nguyên lý

VŨ VĂN ĐƯỢC

12


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC


Hình 4.1. Sơ đồ nguyên lý khối nút nhấn


Giải thuật
#include <18F4520.h>
#device adc=8
#include "my_lcd.h"
// khoi tao phan cung
#use fast_IO(D)
#use fast_IO(B)
#define button1
pin_B0
#define button2
pin_B1
#define button3

VŨ VĂN ĐƯỢC

13


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

pin_B2
#define button4 pin_B3
char dong1[]="\fTEST 4 BUTTON";
char dong2[]="\fphim vua bam: 1";
char dong3[]="\fphim vua bam: 2";
char dong4[]="\fphim vua bam: 3";
char dong5[]="\fphim vua bam: 4";

void main()
{
set_tris_D(0);
set_tris_B(0);
LCD_Init();
while(true)
{
if(!input(button1))
{
LCD_Gotoxy(0,0);
LCD_Puts(dong1);
LCD_Gotoxy(0,1);
LCD_Puts(dong2);
VŨ VĂN ĐƯỢC

14


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

delay_ms(5);
}
if(!input(button2))
{
LCD_Gotoxy(0,0);
LCD_Puts(dong1);
LCD_Gotoxy(0,1);
LCD_Puts(dong3);
delay_ms(5);
}

if(!input(button3))
{
LCD_Gotoxy(0,0);
LCD_Puts(dong1);
LCD_Gotoxy(0,1);
LCD_Puts(dong4);
delay_ms(5);
}
if(!input(button4))
{
VŨ VĂN ĐƯỢC

15


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

LCD_Gotoxy(0,0);
LCD_Puts(dong1);
LCD_Gotoxy(0,1);
LCD_Puts(dong5);
delay_ms(5);
}
}
}


Kết quả

VŨ VĂN ĐƯỢC


16


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

-

Nhận xét
Chương trình thực hiện chạy đúng theo nguyên lý đã đưa ra.

VŨ VĂN ĐƯỢC

17


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

Bài thực hành số 05: Nhận biết ma trận phím 3x4
Bài tập ứng dụng: Thực hành nhận biết ma trận phím nhấn
hiện thị lên LCD. Cổng PORTD điều khiển hiển thị LCD, cổng
PORTB quét phím nhấn.
5.1.

Sơ đồ nguyên lý

Hình 5.1. Sơ đồ nguyên lý khối bàn phím 3x4


Giải thuật

/*=================
thiet ke: phung thang
thang7, 2015
file: vd2_io_4550.c
==========
#use Fast_IO()
set_tris_x( valu)
cac ham vao ra trong ccs
Chuong trinh bat tat 8 led tai port B
=======================*/
#include <18F4520.h>
#device adc=8

VŨ VĂN ĐƯỢC

18


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

#include"my_lcd.h"
#FUSES NOWDT
#FUSES WDT128
Postscale
#FUSES LP
#FUSES NOPROTECT
reading
#FUSES BROWNOUT
detected
//#FUSES BORV25

#FUSES NOPUT
#FUSES NOCPD
#FUSES STVREN
reset
#FUSES NODEBUG
#FUSES LVP
B3(PIC16) or B5(PIC18)
#FUSES NOWRT
protected
#FUSES NOWRTD
protected
#FUSES IESO
mode enabled
#FUSES FCMEN
#FUSES PBADEN

//No Watch Dog Timer
//Watch Dog Timer uses 1:128
//Low power osc < 200 khz
//Code not protected from
//Reset when brownout
//Brownout reset at 2.5V
//No Power Up Timer
//No EE protection
//Stack full/underflow will cause
//No Debug mode for ICD
//Low Voltage Programming on
//Program memory not write
//Data EEPROM not write
//Internal External Switch Over

//Fail-safe clock monitor enabled
//PORTB pins are configured as

analog input channels on RESET
#FUSES NOWRTC
//configuration not registers
write protected
#FUSES NOWRTB
#FUSES NOEBTR

//Boot block not write protected
//Memory not protected from

table reads
#FUSES NOEBTRB

//Boot block not protected from

table reads
#FUSES NOCPB
#FUSES LPT1OSC
VŨ VĂN ĐƯỢC

//No Boot Block code protection
//Timer1 configured for low19


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

power operation

#FUSES MCLR
//#FUSES XINST

//Master Clear pin enabled
//Extended set extension and

Indexed Addressing mode enabled
#Define Button1 PIN_B0
#Define Button2 PIN_B1
#Define Button3 PIN_B2
#Define Button4 PIN_B3
#use delay(clock=4Mhz)
#use
rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
//#use Fast_IO(D)//thu vien cau hinh chan
#fuses NOWDT,NOLVP,XT
#use Fast_IO(C)
//==============
//ham chinh
//
void main()
{
set_tris_B(0xff);
set_tris_D(0);
LCD_Init ();
while(true)
{
LCD_Gotoxy (0,0);
printf(LCD_Putchar("TEST
KEY 4x3"));

output_low(PIN_B6);
{
if(!input(button1))
{
LCD_Gotoxy (0,1);
printf(LCD_Putchar("TEST
BAT DAU :1"));
Delay_ms(10);
}
if(!input(button2))
{
VŨ VĂN ĐƯỢC

20


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

LCD_Gotoxy (0,1);
printf(LCD_Putchar("CHAO VAN DUOC :1"));
Delay_ms(10);
}
if(!input(button3))
{
LCD_Gotoxy (0,1);
printf(LCD_Putchar("RAT VUI DUOC GAP BAN :1"));
}
if(!input(button4))
{
LCD_Gotoxy (0,1);

printf(LCD_Putchar("TEST DA HET :1"));
}
output_high(PIN_B6);
output_low(PIN_B5);
if(!input(button1))
{
LCD_Gotoxy (0,1);
printf(LCD_Putchar("TEST BAT DAU :2"));
}
if(!input(button2))
{
LCD_Gotoxy (0,1);
printf(LCD_Putchar("CHAO VAN DUOC :2"));
if(!input(button3))
{
LCD_Gotoxy (0,1);
printf(LCD_Putchar("BAN KHOE KHONG :2"));
}
if(!input(button4))
{
LCD_Gotoxy (0,1);
printf(LCD_Putchar("TEST DA HET :2"));
VŨ VĂN ĐƯỢC

21


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

}

output_high(PIN_B5);
output_low(PIN_B4);
if(!input(button1))
{
LCD_Gotoxy (0,1);
printf(LCD_Putchar("TEST BAT DAU:3"));
}
if(!input(button2))
{
LCD_Gotoxy (0,1);
printf(LCD_Putchar("CHAO VAN DUOC :3"));
}
if(!input(button3))
{
LCD_Gotoxy (0,1);
printf(LCD_Putchar("BAN KHOE KHONG :3"));
}
if(!input(button4))
{
LCD_Gotoxy (0,1);
printf(LCD_Putchar("TEST DA HET :3"));
output_high(PIN_B4);
}
}
}
}
}


Kết quả


VŨ VĂN ĐƯỢC

22


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC


-

Nhận xét
Chương trình thực hiện chạy đúng theo nguyên lý đã đưa ra.
Cần thêm thuật toán chống dội phím do tác động nhiễu cơ khí
từ phím nhấn.

VŨ VĂN ĐƯỢC

23


BÁO CÁO THỰC HÀNH VI ĐIỀU KHIỂN PIC

VŨ VĂN ĐƯỢC

24




×