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

Báo cáo thực hành kỹ thuật vi xử lý

27 0 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 đề Báo Cáo Thực Hành Kỹ Thuật Vi Xử Lý
Tác giả Nguyễn Đỗ Phước Rin, Lê Minh Châu, Đậu Trung Kiên, Nguyễn Trần Anh Lâm, Phạm Thanh Nhiên
Người hướng dẫn Thầy Nguyễn Duy Khanh
Trường học Trường Đại Học Công Nghiệp Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Điện Tử
Thể loại báo cáo thực hành
Năm xuất bản 2023
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 27
Dung lượng 2,19 MB

Nội dung

LỜI CẢM ƠN Lời đầu tiên nhóm 13 xin được chân thành gửi lời cảm ơn đến thầy Nguyễn Duy Khanh vì những trang bị kiến thức bổ ích và liên quan thiết thực để tạo nền tảng cho chúng em có t

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH KHOA: CÔNG NGHỆ ĐIỆN TỬ

oOo BÁO CÁO THỰC HÀNH

KỸ THUẬT VI XỬ LÝ

NHÓM 13 THÀNH VIÊN

Lớp học phần: 420300086903 GVHD: Thầy Nguyễn Duy Khanh

Thành phố Hồ Chí MinhNgày 11 tháng 8 năm 2023

Trang 2

LỜI CẢM ƠN

Lời đầu tiên nhóm 13 xin được chân thành gửi lời cảm ơn đến thầy Nguyễn Duy Khanh vì những trang bị kiến thức bổ ích và liên quan thiết thực để tạo nền tảng cho chúng em có thể hoàn thành được đồ án của môn học này

Cảm ơn thầy vì luôn tận tình hướng dẫn và đưa ra những góp ý cho đồ án môn họccủa chúng em trong suốt quá trình thực hiện vừa qua Nhờ những kiến thức, kinh nghiệm

và trải nghiệm từ thầy truyền lại, đã giúp cho chúng em có vững nền tảng, từ đó có cơ hội học hỏi và phát triển cả về kiến thức cơ bản đến những kỹ năng mở rộng đủ để hoàn thành đồ án này

Để thực hiện thành công đồ án môn học này, chúng em đã dành ra nhiều thời gian,

nỗ lực và cả tinh thần cố gắng, với mong muốn tạo ra được một sản phẩm mang lại lợi ích cho cuộc sống Nhưng không vì vậy mà trong quá trình thực hiện không thể tránh khỏi những thiếu sót, chúng em mong thầy có thể thông cảm và đưa ra những ý kiến nhận xét, đóng góp từ thầy để đồ án môn học của nhóm trở nên hoàn thiện hơn, từ đó mỗi thành viên cũng sẽ có thể tự mình rút ra những bài học kinh nghiệm quý báu cho saunày

Sau cùng, chúng em kính chúc thầy sức khỏe, thành công và luôn may mắn trong công việc và cuộc sống

Chúng em xin chân thành cảm ơn!

Tp Hồ Chí Minh, tháng 11, năm 2023Nhóm sinh viên thực hiện

Nhóm 13

Trang 3

AN529 ĐIỀU KHIỂN LED 7 ĐOẠN BẰNG PHƯƠNG PHÉP

QUÉT MA TRẬN BÀN PHÍM

Giới thiệu đề tài

Rất nhiều ứng dụng ngày nay yêu cầu

đèn led điều khiển với giao diện từ

bàn phím Việc triển khai các thiết kế

như vậy thường sử dụng một lượng

đáng kể các dòng I/O của bộ xử lý

Ghi chú ứng dụng này mô tả một

phương pháp chỉ sử dụng 16 chân I/O

của bộ vi điều khiển PIC16F887 để

lấy mẫu ma trận bàn phím 4x4 và điều

khiển trực tiếp bốn đèn LED 7 thanh

(Hình 1) Việc điều khiển trực tiếp các

đèn LED là có khả năng, do khả năng

“sink and source” cao của bộ vi điềukhiển PIC16C5X, do đó có thể loại bỏbóng bán dẫn điều khiển bên ngoài,dẫn đến giảm cả chi phí và độ phức tạpcủa mạch tổng thể

Thông thường, các ứng dụng có đènLED và bàn phím cũng theo dõi thờigian thực để đồng bộ hóa một số sựviệc liên quan Một ví dụ về đồnghồ/bộ hẹn giờ, đó là tính năng ghi chúcủa các ứng dụng, như 1 cách minhhọa các chức năng này Và “chi phíphần mềm” để theo dõi thời gian thực

là rất nhỏ và người dùng có thể sửađổi mã để mở rộng đáng kể chức năngcủa mạch này

.

Hình 1: Giao diện pic16f887 với màn hình đoạn và bàn phím 4x4

Tác giả: Stan D’Souza

Microchip Technology Inc.

Trang 4

Phần A: QUÉT MA TRẬN 4x4

Thực hiện

Ma trận khóa 4x4 được kết nối với

PORTB của PIC16F887 (Hình 2) Bốn

cột được kết nối với RB0-RB3 và bốn

hàng được kết nối với RB4-RB7 Mỗi

chữ số được làm mới sau mỗi 20 ms

với xung 5 ms Bàn phím được lấy mẫu

cứ sau 20 ms với bốn xung 3 μs (Hình

4)

Việc quét bàn phím như sau:

a) Các cột được kết nối với các chân

đầu ra và các hàng được kết nối với

các chân đầu vào

b) Mỗi cột được điều khiển liên tục

bởi điện áp thấp, trong khi đó bốn

hàng được lấy mẫu Vì tất cả các

hàng đều được giữ ở mức cao vớicác điện trở kéo lên, nên cả bốnđầu vào thường sẽ ở mức cao Nếumột phím được nhấn trong một cột

ở mức thấp, thì mức thấp đó sẽđược dẫn đến chân đầu vào thôngqua khóa đóng và hàng tương ứng

sẽ được cảm nhận là mức thấp.c) Trước khi một cột mới được hạthấp, cần chú ý xả các chốt đầu vào(xem phần mã để biết chi tiết).d) Kỹ thuật gỡ lỗi phím (50 ms)

đã được triển khai trong phầnmềm, để loại bỏ nhiều lần nhấnphím không mong muốn ( kẹtphím )

Trang 6

Phần B: ĐỒNG HỒ CÔNG NGHIỆP K/TIMER

Lựa chọn đồng hồ

Bộ tạo dao động “crystal oscillator”

4,096 MHz là cơ sở thời

gian.PIC16F887 chia xung nhịp ra

thành 4 để tạo ra xung nhịp bên trong

là 1,024 MHz.Đồng hồ này được chia

thêm cho 32 (bởi bộ chia trước trong

thanh ghi tùy chọn) để có xung nhịp

32 kHz được sử dụng để tăng TMR0

trong PIC16F887.Nếu TMR0 được

khởi tạo thành 96, nó sẽ tràn về 0 sau

lỡ phần tràn trong TMR0

Trang 7

Hình 4: Thời gian chọn chữ số led và quét phím

ĐẶC TÍNH

Biểu đồ cột (Hình 5) hiển thị sự liên tiếp của sự kiện trong phần mềm clock/timer.Đồng hồ có các tính năng sau:

 12 giờ đồng hồ với a.m./p.m

 12 giờ báo thức với a.m./p.m

 Đầy đủ chức năng của bàn phím (Hình 5)

 Báo thức bằng tiếng bip trong 1 phút

 Báo thức vào 10 phút sau

CÀI ĐẶT CHỨC NĂNG ĐỒNG HỒ/HẸN GIỜ

Chức năng Chuỗi phím để kích hoạt chức năng

Đặt thời gian thực Set Hours (tens) Hours Minutes (tens) Minutes ➔ ➔ ➔ ➔ ➔

AM/PM Set➔Xem thời gian báo

Đặt thời gian báo

 5 ms Digit 2  20

ms Digit 3

Digit 4

Trang 8

Tắt tiếng bip, tắt

báo thức Clear Alarm (tắt tiếng bip và tắt chế độ báo thức)

Xóa đầu vào Clear Entry (xóa đầu vào khi đang cài đặt thời gian)

Chú ý 1: Các lần nhấn phím hợp lệ sẽ được xác nhận bằng một tiếng bíp Chú ý 2: Giờ và phút sử dụng ở trên tương ứng với các chữ số 0 - 9 trên bàn phím.

Hình 5: Biểu đồ thời gian/đồng hồ

Trang 10

#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)

#pragma config MCLRE = ON // RE3/MCLR pin function select bit (RE3/MCLR pin function is MCLR)

#pragma config CP = OFF // Code Protection bit (Program memory code protection

is disabled)

#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)

#pragma config BOREN = OFF // Brown Out Reset Selection bits (BOR disabled)

#pragma config IESO = OFF // Internal External Switchover bit (Internal/External Switchover mode is disabled)

#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)

#pragma config LVP = OFF // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming)

#pragma config BOR4V = BOR40V // Brown-out Reset Selection bit (Brown-out Resetset to 4.0V)

#pragma config WRT = OFF // Flash Program Memory Self Write Enable bits (Write protection off)

#include <xc.h>

#define _XTAL_FREQ 4000000

unsigned char display_data[4] = {10, 0, 11, 11};

unsigned char alarm_time[4] = {0, 11, 11, 10};

volatile unsigned char button_state = 0;

unsigned char test=0;

unsigned char col=-1,row=-1;

unsigned char set_am_pm=0,alarm_am_pm=0;

volatile unsigned char set_ap=-1,alarm_ap=-1;

unsigned char led_7doan[12] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92,0x82, 0xF8, 0x80, 0x90, 0xBF,0x8E};

Trang 11

while(row != 0xF0); do

{

do

{

delay_ms(5); row=PORTB & 0xF0; }

while(row== 0xF0); delay_ms(10); row=PORTB & 0xF0; }

while(row==0xF0); PORTB=0xFE;

Trang 12

if (row!=0xF0) {

col=2;

break;

}

PORTB=0xF7; row=PORTB & 0xF0;

if (row!=0xF0) {

return keypad[0][col]; }

if(row==0xD0) {

return keypad[1][col]; }

if(row==0xB0) {

return keypad[2][col]; }

if(row==0x70) {

return keypad[3][col]; }

}

}

char read_interrupt(){

row=-1,col=-1;

row=PORTB & 0xF0; PORTB=0xFE;

Trang 16

if(button_state!=1)

break;

count+=1;

if(count==200)

{

countx+=1; count=0; }

if(x>58) x=58; if(countx==(58-x)) {

x=0; count=0; countx=0; display_data[3]+=1; if(display_data[3]>9) {

display_data[3]=0; display_data[2]+=1; if(display_data[2]>5) {

display_data[2]=0; display_data[1]+=1; if((display_data[1]==2)&&(display_data[0]==1)) {

display_data[1]=0; display_data[0]=0; set_am_pm+=1; if(set_am_pm%2==0) set_ap=0; else set_ap=1; }

else if(display_data[1]>9) {

display_data[1]=0; display_data[0]+=1; }

}

}

}

if(RE2==1)

Trang 18

if(x==60)

{

x=0; display_data[3]+=1; if(display_data[3]>9) {

display_data[3]=0; display_data[2]+=1; if(display_data[2]>5) {

display_data[2]=0; display_data[1]+=1; if((display_data[1]==2)&&(display_data[0]==1)) {

display_data[1]=0; display_data[0]=0; set_am_pm+=1; if(set_am_pm%2==0) set_ap=0; else set_ap=1; }

else if(display_data[1]>9) {

display_data[1]=0; display_data[0]+=1; }

}

}

RE2=0; break; }

}

}

}

}

}

}

}

}

}

// ALARM TIME //

if(button_state==2) goto alarm_abc;

Trang 21

}

Trang 22

if(h==11)

{

j=-1;

PORTD=0xff; }

{

RA4=1;

delay_ms(50); RA4=0;

PORTD=0xff;

set_am_pm+=1; if(set_am_pm>0) {

if((set_am_pm%2)==0) {

Trang 24

RE0=0;

RE1=1;

alarm_ap=0;

test=0;

Trang 26

(display_data[1]==alarm_time[1])&&

(display_data[2]==alarm_time[2])&&

(display_data[3]==alarm_time[3])&&(set_ap==alarm_ap)) {

unsigned char plus_10=alarm_time[2]*10+alarm_time[3]; plus_10=plus_10+10;

test=0;

Ngày đăng: 02/01/2025, 21:53

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

TÀI LIỆU LIÊN QUAN