1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài báo cáo thí nghiệm vi Điều khiển

48 8 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề LẬP TRÌNH ĐIỀU KHIỂN XUẤT NHẬP CƠ BẢN LED ĐƠN
Tác giả Diệp Quốc Kiệt
Người hướng dẫn Nguyễn Văn Trung
Trường học Trường Đại học Tôn Đức Thắng
Chuyên ngành Thí nghiệm Vi Điều Khiển
Thể loại Bài báo cáo
Năm xuất bản 2023
Thành phố TP Hồ Chí Minh
Định dạng
Số trang 48
Dung lượng 1,85 MB

Nội dung

Lap 1: LẬP TRÌNH ĐIỀU KHIỂN XUẤT NHẬP CƠ BẢN LED ĐƠN.Bài tập 1: Viết chương trình và mô phỏng sử dụng PIC16F877A các yêu cầu sau: - Điều khiển 8 LED đơn được nối với Port D thực hiện lần

Trang 1

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM

TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG

BÀI BÁO CÁO

MÔN HỌC: Thí nghiệm Vi Điều Khiển

Trang 2

Muc luc

Lời cảm ơn 3

Lap 1: LẬP TRÌNH ĐIỀU KHIỂN XUẤT NHẬP CƠ BẢN LED ĐƠN……… 4

Bai 1……… 4

Bai 2……… 8

Lap 2: LẬP TRÌNH ĐIỀU KHIỂN XUẤT NHẬP CƠ BẢN LED 7 ĐOẠN……… 12

Bai 1……… 12

Bai 2……… 14

Bai 3……… 16

Bai 4……… 17

Bai 5……… 20

Bai 6……… 22

Lap 3: LẬP TRÌNH ĐIỀU KHIỂN XUẤT NHẬP CƠ BẢN MATRIX LED………24

Bai 1……… 24

Bai 2……… 26

Bai 3……… 28

Lap 4: LẬP TRÌNH ĐIỀU KHIỂN XUẤT NHẬP CƠ BẢN LCD……….30

Bai 1……… 30

Bai 2……… 32

Bai 3……… 33

Lap 5: LẬP TRÌNH ĐIỀU KHIỂN XUẤT NHẬP CƠ BẢN ADC……….35

Bai 1……… 35

Bai 2……… 37

Lap 6: LẬP TRÌNH ĐIỀU KHIỂN XUẤT NHẬP CƠ BẢN NÚT NHẤN VÀ BÀN………39

PHÍM 4X4………39

Bai 1……… 41

Bai 2……… 43

Bai 3……… 46

Lap 7: LẬP TRÌNH ĐIỀU KHIỂN XUẤT NHẬP CƠ BẢN ĐIỀU KHIỂN ĐỘNG CƠ……… ………46

Bai 1……….……….46

Trang 3

Lời cảm ơn

Trước tiên với tình cảm sâu sắc và chân thành nhất, cho phép em được bày tỏ lòng biết ơn đến thầy Nguyễn Văn Trung đã giúp đỡ chúng em trong suốt quá trình học tập Trong suốt thời gian từ khi bắt đầu học tập tại trường đến nay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý thầy cô và bạn bè

Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý thầy cô ở Khoa Điện – điện tử

đã truyền đạt vốn kiến thức quý báu cho chúng em trong suốt thời gian học tập tại trường Nhờ có những lời hướng dẫn, dạy bảo của các thầy cô nên bài báo cáo của

em mới có thể hoàn thiện tốt đẹp

Một lần nữa, em xin chân thành cảm ơn thầy Nguyễn Văn Trung - người đã trực tiếp giúp đỡ, quan tâm, hướng dẫn em hoàn thành tốt bài báo cáo này trong thời gian qua

Bài báo cáo thực tập thực hiện trong khoảng thời gian gần 3 tuần Bước đầu đi vào thực tế của em còn hạn chế và còn nhiều bỡ ngỡ nên không tránh khỏi những thiếu sót, em rất mong nhận được những ý kiến đóng góp quý báu của quý thầy cô để kiến thức của em trong lĩnh vực này được hoàn thiện hơn đồng thời có điều kiện bổsung, nâng cao ý thức của mình

Trang 4

Lap 1: LẬP TRÌNH ĐIỀU KHIỂN XUẤT NHẬP CƠ BẢN LED ĐƠN.

Bài tập 1: Viết chương trình và mô phỏng sử dụng PIC16F877A các yêu cầu sau:

- Điều khiển 8 LED đơn được nối với Port D thực hiện lần lượt các hoạt động:+ Sáng tắt lên tục (5 lần)

+ Sáng đuổi phải trái (3 lần)

+ Sáng đuổi trái phải (3 lần)

Trang 5

#use delay(clock=20000000)void main()

output_d(0xFF); delay_ms(100); output_d(0x00); delay_ms(100); }

// sang duoi phai trai 3 lan for (j = 0; j < 3; j++) {

int pattern = 0x01; for (i = 0; i < 8; i++) {

output_d(pattern); delay_ms(100); pattern <<= 1; }

}

//sang duoi phai trai 3 lan for (j = 0; j < 3; j++) {

int pattern = 0x80; for (i = 0; i < 8; i++) {

output_d(pattern); delay_ms(100); pattern >>= 1; }

Trang 6

}

// sang xen ke 4 lan for (j = 0; j < 4; j++) {

for (i = 0; i < 8; i += 2) {

output_d(0xAA >> i); delay_ms(100);

}

}

// sang tu trong ra ngoai 3 lan for (j = 0; j < 3; j++) {

int pattern = 0x0C; for (i = 0; i < 4; i++) {

output_d(pattern); delay_ms(100);

int pattern = 0xC0; for (i = 0; i < 4; i++) {

output_d(pattern); delay_ms(100);

pattern >>= 1;

pattern |= 0xC0; }

}

// sang don trai phai 3 lan for (j = 0; j < 3; j++) {

int pattern = 0x01;

Trang 7

Bài tập 2: Viết chương trình và mô phỏng sử dụng PIC16F877A các yêu cầu sau:

- Điều khiển 16 LED đơn được nối với Port C và Port D thực hiện liên tục lần lượt các hoạt động:

+ Sáng tắt lên tục (5 lần)

+ Sáng đuổi phải trái (3 lần)

+ Sáng đuổi trái phải (3 lần)

Trang 9

delay_ms(100);

output_c(0x00); output_d(0x00); delay_ms(100);

}

for (j = 0; j < 3; j++) {

int pattern = 0x01; for (i = 0; i < 8; i++) {

output_c(pattern); output_d(pattern); delay_ms(300); pattern <<= 1; }

}

// sang duoi trai phai (3 lan) for (j = 0; j < 3; j++) {

int pattern = 0x80; for (i = 0; i < 8; i++) {

output_c(pattern); output_d(pattern); delay_ms(300); pattern >>= 1; }

}

// Sang xen ke (4 lan) for (j = 0; j < 4; j++) {

int pattern_c = 0xAA; int pattern_d = 0x55; for (i = 0; i < 8; i += 2) {

output_c(pattern_c); output_d(pattern_d); delay_ms(300);

Trang 10

pattern_c = (pattern_c << 2) | (pattern_c >> 6); pattern_d = (pattern_d >> 2) | (pattern_d << 6); }

Trang 11

Bài tập 1: Viết chương trình và mô phỏng sử dụng PIC16F877A các yêu cầu sau:

- Điều khiển LED 7 đoạn đếm lên từ 0 đến 9 được nối với Port D

- Điều khiển LED 7 đoạn đếm xuống từ 9 đến 0 được nối với Port D

 Mô phỏng trên Proteus

Trang 12

 Code:

#include <16f877a.h>

#use delay(clock=20000000)

#fuses HS, PUT, NOWDT, NOPROTECT

const unsigned char MA7D[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};

Trang 13

Bài tập 2: Viết chương trình và mô phỏng sử dụng PIC16F877A các yêu cầu sau:

- Điều khiển LED 7 đoạn đếm lên từ 00 đến 99 được nối với Port D

- Điều khiển LED 7 đoạn đếm xuống từ 99 đến 00 được nối với Port D

- Điều khiển LED 7 đoạn đếm chẳn được nối với Port D

- Điều khiển LED 7 đoạn đếm lẻ được nối với Port D

 Mô phỏng trên Proteus:

Trang 15

- Điều khiển LED 7 đoạn đếm lên từ 0 đến 9 được nối với Port D và IC HC595.

- Điều khiển LED 7 đoạn đếm xuống từ 9 đến 0 được nối với Port D và IC HC595

 Mô phỏng trên Proteus:

Trang 16

#define ST_CP PIN_D2

const char

MA7D[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void HC595_out_8bit(int8 data)

Trang 17

- Hiển thị số 2023 đứng yên.

- Hiển thị số 2023 lần lượt từng số từ trái sang phải

 Mô phỏng trên Proteus:

Trang 18

output_high(PIN_d1);output_c(MA7D[2]);output_low(PIN_d2);delay_ms(1);

output_high(PIN_d2);output_c(MA7D[3]);output_low(PIN_d3);delay_ms(1);

output_high(PIN_d3);

// nhay tu trai sang phai output_c(MA7D[2]);output_low(PIN_d0);delay_ms(100);output_high(PIN_D0);output_c(MA7D[0]);output_low(PIN_d1);delay_ms(100);output_high(PIN_d1);output_c(MA7D[2]);output_low(PIN_d2);delay_ms(100);output_high(PIN_d2);output_c(MA7D[3]);output_low(PIN_d3);delay_ms(100);output_high(PIN_d3);}

}

}

Trang 19

Bài tập 5: Viết chương trình và mô phỏng sử dụng PIC16F877A dùng phương

pháp quét

led sau:

- Hiển thị đếm giờ, phút, giây

 Mô phỏng trên Proetus:

unsigned int8 DATALED

Trang 20

for(i=0; i<8; i++)

Trang 21

led các yêu cầu sau:

- Điều khiển LED 7 đoạn đếm lên từ 00 đến 99 được nối với Port D và IC HC595

- Điều khiển LED 7 đoạn đếm xuống từ 99 đến 00 được nối với Port D và IC HC595

 Mô phỏng trên Proteus:

 Code:

#include <16F877A.h>

#fuses HS,NOWDT,NOPROTECT,NOLVP

#use delay(clock=20000000)

#define HC595_DATA PIN_B0

#define HC595_CLOCK PIN_B1

#define HC595_LATCH PIN_B2

#define LED_A PIN_D0

#define LED_B PIN_D1

#define LED_C PIN_D2

#define LED_D PIN_D3

#define LED_E PIN_D4

#define LED_F PIN_D5

Trang 22

#define LED_G PIN_D6

#define LED_DP PIN_D7

const unsigned char digitValues[10] = { 0b00111111, // 0

Trang 23

Bài tập 1: Viết chương trình và mô phỏng sử dụng PIC16F877A các yêu cầu sau:

- Điều khiển led ma trận 8x8, 1 màu (Cấu trúc: Anode Led là phần Hàng, Cathode Led là phần Cột

- Led ma trận được kết nối phần Hàng với Port B và phần Cột với Port D

- Hiển thị ký tự “A” đứng yên không dịch chuyển trên màn hình LED ma trận

 Mô phỏng trên Proteus:

Trang 25

Bài tập 2: Viết chương trình và mô phỏng sử dụng PIC16F877A các yêu cầu sau:

- Điều khiển led ma trận 8x16, 1 màu (Cấu trúc: Anode Led là phần Hàng, CathodeLed là phần Cột

- Led ma trận được kết nối phần Hàng với Port B và phần Cột với Port C nối IC HC595

- Hiển thị ký tự “ĐH TON DUC THANG” dịch chuyển trên màn hình LED ma trận

từ phải sang trái.’

 Mô phỏng trên Proteus:

Trang 27

Bài tập 3: Viết chương trình và mô phỏng sử dụng PIC16F877A các yêu cầu sau:

- Điều khiển led ma trận 8x16, 1 màu (Cấu trúc: Anode Led là phần Hàng, CathodeLed là phần Cột

- Led ma trận được kết nối phần Hàng với Port B và phần Cột với Port C nối IC HC595

- Hiển thị ký tự “KHOA ĐIỆN-ĐIỆN TỬ” dịch chuyển trên màn hình LED ma trận

từ trái sang phải

 Mô phỏng trên Proteus:

Trang 29

- Kết nối với vi điều khiển theo kiểu 4 bit dữ liệu (D4 – D7) và 3 bit điều khiển.

- Hiện thị thông tin trên 2 dòng đứng yên không dịch chuyển như sau:

+ dòng 1 hiện thông tin: “ họ tên sinh viên”

+ dòng 2 hiện thông tin: “ mã số sinh viên”

Trang 30

 Mô phỏng trên Proteus:

 Code:

#include <16F877A.h>

#use delay(clock=4000000)

#include <lcd.c>

#define LCD_ENABLE_PIN PIN_D0

#define LCD_RS_PIN PIN_D1

#define LCD_RW_PIN PIN_D2

#define LCD_DATA4 PIN_D4

#define LCD_DATA5 PIN_D5

#define LCD_DATA6 PIN_D6

#define LCD_DATA7 PIN_D7 void main() {

lcd_init();

while(1) {

Trang 31

- Kết nối với vi điều khiển theo kiểu 4 bit dữ liệu (D4 – D7) và 3 bit điều khiển.

- Dòng chữ thứ nhất sáng dần lần lượt các ký tự từ trái sang phải một cách liên tục (

ví dụ: D – DH- DH T- DH TO- DH TON……….), dòng chữ thứ 2 đứng yên.+ dòng 1 hiện thông tin: “ DH TON DUC THANG ”

+ dòng 2 hiện thông tin: “ K DIEN-DIEN TU”

 Mô phỏng trên Proteus:

Trang 32

 Code:

#include <16F877A.h>

#use delay(clock=4000000)

#include <lcd.c>

#define LCD_ENABLE_PIN PIN_D0

#define LCD_RS_PIN PIN_D1

#define LCD_RW_PIN PIN_D2

#define LCD_DATA4 PIN_D4

#define LCD_DATA5 PIN_D5

#define LCD_DATA6 PIN_D6

#define LCD_DATA7 PIN_D7

void main() {

lcd_init();

while (1) {

lcd_gotoxy(1, 1);

char message[] = "DH TON DUC THANG ";

int messageLength = (message);

for (int i = 0; i < messageLength; i++) {

- Kết nối với vi điều khiển theo kiểu 8 bit dữ liệu (D0 – D7) và 3 bit điều khiển

- Hiện thị thông tin 2 hàng giồng như trong bảng dưới đây

Trang 33

 Mô phỏng trên Proteus:

#define LCD_ENABLE_PIN PIN_D0

#define LCD_RS_PIN PIN_D1

#define LCD_RW_PIN PIN_D2

#define LCD_DATA0 PIN_D0

#define LCD_DATA1 PIN_D1

#define LCD_DATA2 PIN_D2

#define LCD_DATA3 PIN_D3

Trang 34

#define LCD_DATA4 PIN_D4

#define LCD_DATA5 PIN_D5

#define LCD_DATA6 PIN_D6

#define LCD_DATA7 PIN_D7

- Hiển thị nhiệt độ LM35 lên LCD

 Mô phỏng trên Proteus:

Trang 35

#define LCD_ENABLE_PIN PIN_D0

#define LCD_RS_PIN PIN_D1

#define LCD_RW_PIN PIN_D2

#define LCD_DATA4 PIN_D4

#define LCD_DATA5 PIN_D5

#define LCD_DATA6 PIN_D6

#define LCD_DATA7 PIN_D7

Trang 36

- Nếu nhiệt độ thấp hơn nằm trong giới hạn cài đặt thì đèn Led tắt.

- Nếu nhiệt độ cao hơn nằm trong giới hạn cài đặt thì đèn Led sáng

- Thay đổi nhiệt độ bằng nút nhấn

 Mô phỏng trên Proteus:

 Code:

#include <16F877A.h>

Trang 37

#device ADC=10

#FUSES NOWDT, PUT, NOLVP, NOPROTECT, HS, NOBROWNOUT

#use delay(clock=20M)

#define LCD_ENABLE_PIN PIN_D0

#define LCD_RS_PIN PIN_D1

#define LCD_RW_PIN PIN_D2

#define LCD_DATA4 PIN_D4

#define LCD_DATA5 PIN_D5

#define LCD_DATA6 PIN_D6

#define LCD_DATA7 PIN_D7

Trang 38

Bài tập 1: Viết chương trình và mô phỏng sử dụng PIC16F877A các yêu cầu sau:

- Điều khiển LED 7 đoạn bằng nút nhấn đếm lên từ 0 đến 9

- Điều khiển LED 7 đoạn bằng nút nhấn đếm xuống từ 9 đến 0

Trang 40

Bài tập 2: Viết chương trình và mô phỏng sử dụng PIC16F877A các yêu cầu sau:

- Điều khiển LED 7 đoạn bằng nút nhấn bằng 2 chế độ:

+ Chế độ đếm chẳn

+ Chế độ đếm lẻ

 Mô phỏng trên Proteus:

Trang 42

Bài tập 3: Viết chương trình và mô phỏng sử dụng PIC16F877A các yêu cầu sau:

- Điều khiển nút nhấn bàn phím keyboard 4x4 hiển thị lên LCD:

+ Hiển thị ký tự tương ứng khi nhấn bàn phím (ví dụ: nhấn số 7 thì hiển thị lên LCD

là số 7)

Trang 45

thay đổi tốc độ động cơ DC các yêu cầu sau:

- Điều khiển động cơ hiển thị lên CLD quay thuận

- Điều khiển động cơ hiển thị lên CLD quay nghịch

 Mô phỏng trên Proteus:

Trang 46

#define LCD_DATA4 PIN_D3

#define LCD_DATA5 PIN_D4

Trang 47

#define LCD_DATA6 PIN_D5

#define LCD_DATA7 PIN_D6

void main() {

int duty_cycle = 0;

int direction = 1;

setup_timer_2(T2_DIV_BY_16, 255, 1); setup_ccp1(CCP_PWM);

lcd_init(); // Kh?i t?o LCD

delay_ms(100);

Trang 48

duty_cycle += direction;

if (duty_cycle >= 255) { direction = -1;

duty_cycle = 255; } else if (duty_cycle <= 0) { direction = 1;

duty_cycle = 0;

}

}

}

Ngày đăng: 03/10/2024, 20:37

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

TÀI LIỆU LIÊN QUAN

w