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

Hãy thiết kế sơ đồ ghép nối 2 led 7 đoạn với pic16f877a và một nút nhấn viết chương trình thực hiện đồng thời 2 nhiệm vụ sau

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 (916.83 KB, 19 trang )

-

Hiển thị đếm lên 0→50, mỗi 0,3 giây tăng 1 đơn vị. Khi đếm đến 50 thì đếm lùi từ 50→0
mỗi 1 gây giảm 1 đơn vị→Lặp lại quá trình này vơ tận
Khi nhấn nút nhấn thì sau 0.5s Led đơn sáng, khi nhả phím thì tắt.

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬNTẢI
KHOA ĐIỆN – ĐIỆN TỬ

- BÀI TẬP LỚN VI XỬ LÝ

ĐỀ TÀI : Hãy thiết kế sơ đồ ghép nối 2 Led 7 đoạn với
Pic16f877A và một nút nhấn. Viết chương trình thực hiện
đồng thời 2 nhiệm vụ sau:
- Hiển thị đếm lên 0→50, mỗi 0,3 giây tăng 1 đơn vị. Khi đếm
đến 50 thì đếm lùi từ 50→0 mỗi 1 gây giảm 1 đơn vị→Lặp lại
q trình này vơ tận
- Khi nhấn nút nhấn thì sau 0.5s Led đơn sáng, khi nhả phím thì

tắt.

Giảng viên hướng dẫn : TS.VÕ THIỆN LĨNH


Sinh viên thực hiện:
Đặng Văn Huỳnh MSSV: 6151030048
Lớp : Kỹ thuật điều khiển và tự động hóa
Khóa: 61
TPHCM, ngày 23 tháng 11 năm 2022


BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬNTẢI
KHOA ĐIỆN – ĐIỆN TỬ

BÀI TẬP LỚN VI XỬ LÝ
- ĐỀ TÀI : : Hãy thiết kế sơ đồ ghép nối 2 Led 7 đoạn với
Pic16f877A và một nút nhấn. Viết chương trình thực hiện
đồng thời 2 nhiệm vụ sau:
- Hiển thị đếm lên 0→50, mỗi 0,3 giây tăng 1 đơn vị. Khi đếm
đến 50 thì đếm lùi từ 50→0 mỗi 1 gây giảm 1 đơn vị→Lặp lại
q trình này vơ tận
- Khi nhấn nút nhấn thì sau 0.5s Led đơn sáng, khi nhả phím thì
tắt.


Giảng viên hướng dẫn : TS.VÕ THIỆN LĨNH.
Sinh viên thực hiện:
Đặng Văn Huỳnh MSSV: 6151030048.
Lớp : Kỹ thuật điều khiển và tự động hóa.
Khóa: 61.

Nhóm: 10.
TPHCM, ngày 23 tháng 11 năm 2022
MỤC LỤC

L Ờ I M Ở ĐẦ U ………………………………………………………………. 1
CHƯƠNG I. GIỚ I THI ỆU ĐỀ TÀI ………………………………………3
1 .1. CH ỨC NĂNG CỦ A M ẠCH ĐIỆ N .
1 .2. MÔ T Ả M ẠCH ĐIỆ N

CHƯƠNG II: CÁC LINH KIỆ N BÀI T Ậ P ……………………………... 4
2.1 Vi điều khiển
2.2.T Ổ NG QUAN PIC 16F877A
2.3.1.Đặc điểm nổi bật PIC 16F877A
2.3.2.Các cổng vào ra và chức năng các chân
2.3.4.Các loại ngắt trong PIC 16F877A
2.3.5 Bộ định thời trong PIC 16F877A
2.3.6 Tổ chức bộ nhớ
2.3.7 PORT A (RA)
2.3.8 PORT B (RB)
2.3.9 PORT C (RC)
2.3.10 PORT D (RD)
2.3.11 PORT E (RE)

2.4 Giao tếp UART PIC 16F877A
CHƯƠNG III : THI Ế T K Ế M Ạ CH TRÊN PROTEUS ………………....9
3 M Ạ CH MÔ PH Ỏ NG
PHỤ LỤC…………………………………………………………………...12
1 .CÁC PH Ầ N M Ề M TRONG BÀI T Ậ P L Ớ N


2.CODE CHƯƠNG TRÌNH CHO VI ĐIỀ U KHI Ể N
CHƯƠNG 5: KẾ T QU Ả VÀ HƯỚ NG PHÁT TRI Ể N ………………....1 4
5 .1.K Ế T QU Ả ĐẠT ĐƯỢ C
5 .2. CHƯA ĐẠT ĐƯỢ C
5 .3.THU Ậ N L Ợ I
5 .4 .KHÓ KHĂN
5 .5 .HƯỚ NG PHÁT TRI Ể N



1

LỜI MỞ ĐẦU
-

Việt nam là một nước đang trên con đường phát triển và đang hòa nhập vào sự phát
triển của “WTO” tạo ra thay đổi về mặt kinh tế xã hội của nước ta. Tạo cơ hội cho
học sinh – sinh viên chúng em tiếp cận và nắm bắt được nhiều thành tựu vĩ của thế
giới, đặc biệt là về các lĩnh vực khoa học kỹ thuật nói chung và ngành điện tử nói
riêng.

-

Ngay những ngày khai sinh cơng nghệ vi điều khiển nói riêng và ngành điện tử nói
chung đã tạo ra nhiều bước đột phá mới mẽ cho các ngành kinh tế khác và còn đảm
bảo được yêu cầu của người dùng cả về chất lượng và dịch vụ. Đồng thời kiến thức
về kĩ thuật là không thể thiếu đến với mỗi sinh viên, nhất là sinh viên ngành điện tử.

-

Thế hệ trẻ chúng em không tự mình phấn đấu học hỏi thì chúng em sẽ sớm lạc hậu
và nhanh chống bị đẩy lùi. Nhìn thấy được điều đó trường: “ĐẠI HỌC GTVT
PHÂN HIỆU TẠI TP.HCM” đã sớm chủ trương hình thức đào tạo sâu rộng, từ
thấp đến cao. Để tăng chất lượng học tập của sinh viên nhà trường nói chung và
trung tâm điện tử nói riêng đã tổ chức cho sinh viên làm đồ án môn học nhằm tạo
nền tảng vửng chắc cho sinh viên khi ra trường, đáp ứng nhu cầu tuyển dụng việc
làm. Chính vì vậy chúng em đã chọn đề tài: “đề tài: : Hãy thiết kế sơ đồ ghép

nối 2 Led 7 đoạn với Pic16f877A và một nút nhấn. Viết chương
trình thực hiện đồng thời 2 nhiệm vụ sau:

- Hiển thị đếm lên 0→50, mỗi 0,3 giây tăng 1 đơn vị. Khi đếm đến 50 thì
đếm lùi từ 50→0 mỗi 1 gây giảm 1 đơn vị→Lặp lại q trình này vơ tận
- Khi nhấn nút nhấn thì sau 0.5s Led đơn sáng, khi nhả phím thì tắt.

- Chọn một mạch ứng dụng bất kỳ của Pic16F877A để mô phỏng + thi công.
-

Dưới sự hướng dẫn của thầy VÕ THIỆN LĨNH, em đã thực hiện đề tài trên

-

Sau thời gian nổ lực nghiêng cứu, được sự chỉ dẫn của thầy VÕ THIỆN LĨNH nhóm
em đã hồn thành đề tài đã giao. Dưới đây là bài tiểu luận báo cáo kết quả nghiêng


2

cứu của nhóm em, tuy dã nổ lực hết sức nhưng trong q trình làm cịn nhiều sai sót
thực hiện đề tài, do trình độ hiểu biết cịn hạn chế nên đề tài cịn nhiều sai sót, nhóm
chúng em rất mong được sự giúp đỡ của thầy để em hoàn thành quá trình học tốt hơn.


3

CHƯƠNG I. GIỚI THIỆU ĐỀ TÀI

1.1. Chức năng của mạch điện
1.1.1. Yêu cầu 1:

- Hiển thị đếm lên 0→50, mỗi 0,3 giây tăng 1 đơn vị. Khi đếm đến 50 thì đếm

lùi từ 50→0 mỗi 1 gây giảm 1 đơn vị→Lặp lại q trình này vơ tận
- Khi nhấn nút nhấn thì sau 0.5s Led đơn sáng, khi nhả phím thì tắt.
1.1.2 Yêu cầu 2:
Chọn một mạch ứng dụng bất kỳ của Pic16F877A để mơ phỏng + thi cơng.
1.2. MƠ TẢ MẠCH ĐIỆN
-

VIRTUAL TERMINAL

-

Vi điều khiển được dùng là PIC 16F877A.

-

Dùng thạch anh 4MHz để tạo dao động cho PIC.


4

CHƯƠNG II: CÁC LINH KIỆN BÀI TẬP
2.1 Vi ĐIỀU KHIỂN

Vi điều khiển là một máy tính được tích hợp trên một chip, nó thường được sử
dụng để điều khiển các thiết bị điện tử. Vi điều khiển, thực chất, là một hệ thống bao
gồm một vi xử lý có hiệu suất đủ dùng và giá thành thấp (khác với các bộ vi xử lý
đa năng dùng trong máy tính) kết hợp với các khối ngoại vi như bộ nhớ, các module
vào/ra, các module biến đổi số sang tương tự và tương tự sang số,... Ở máy tính thì
các module thường được xây dựng bởi các chip và mạch ngoài.
2.2.Tổng quan PIC 16F877A


Hình 2.2 : Sơ đồ chân của PIC16F877a

2.2.1.Đặc điểm nổi bật PIC 16F877A
-

Tập lệnh gồm 35 lệnh có độ dài 14 bit.

-

Tốc độ hoạt động tối đa 20 MHZ với một chu kì lệnh là 200ns

-

Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM, bộ nhớ EPPROM
là 258x8 byte.


5

-

Số port I/O là 5 với 33 PIN I/O.

-

Có 15 ngắt.

-


3 bộ timer ( timer 0, timer 1, timer 2)

-

2 bộ capture/ so sánh/ điều chế độ rộng xung.

-

Chuẩn giao tiếp I2C, SSP, SPI, UART..

-

8 kênh chuyển đổi ADC 10 bit.

-

Hai bộ so sánh.

2.2.2.Các cổng vào ra và chức năng các chân
-

5 cổng vào ra
+ PORT A ( RA0-RA5) : 6 chân
+ PORT B ( RB0-RB7) : 8 chân
+ PORT C ( RC0-RC7) : 8 chân
+ PORT D (RD0-RD7) : 8 chân
+ PORT E ( RE0-RE2) : 3 chân
+ 4 chân cấp nguồn : AVDD, AVSS, VDD, VSS

-


Chức năng các chân:
o + OSC1/CLKI (13) và OSC2/CLKO (14) dùng mắc thạch anh cho mạch, tạo
xung nhịp cho vi điều khiển PIC16F877A.
o + Chân MCLR/VPP (1) là chân Reset hoặc làm chân đặt điện áp Vpp cho vi
điều khiển PIC16F877A.
o + Các chân (2,3,4,5,7,8,9,10) được sử dụng làm chân IN/OUT tín hiệu số
hoặc INPUT tín hiệu tương tự. Ngồi ra các chân (4) và (5) cịn có thể sử
dụng làm chân điện áp tham chiếu của bộ A/D. Chân (4), (6) và (7) còn được
sử dụng cho bộ so sánh.
o + Chân (12) và chân (31) được dùng để cung cấp điện áp Vss=0 cho vi mạch
PIC16F877A và điện áp Vss=0 cho các chân I/O.
o + Chân (11) và chân (32) được dùng để cung cấp điện áp Vdd=5V cho vi
mạch PIC16F877A và điện áp Vdd=5V cho các chân I/O.


6

o + Chân (15),(16) có thể làm chân I/O tín hiệu số hoặc chân T1OSO/T1CKI
ngõ vào bộ dao động, xung clock Timer1.
o +Chân (16) có thể làm chân Capture2 input/Compare2 output/PWM2 output.
o + Chân (17) dùng làm chân I/O tín hiệu số hoặc làm chân Capture1
-

input/Compare1 output/PWM1 output.
o + Chân (18) và (23), (24) dùng làm chân I/O tín hiệu số và truyền thông SPI,
I2C.
o + Chân (25),(26) dùng làm chân I/O tín hiệu số hoặc UART.
o + Chân (19),(20) dùng làm chân I/O tín hiệu số hoặc Master/Slaver
o + Chân (21,22,27,28,29,30) dùng làm chân I/O tín hiệu số hoặc

Master/Slaver.Cấp nguồn cho PIC 16F877A

-

Không cấp nguồn xung, chỉ cấp nguồn tuyến tính.

-

Cấp nguồn cho tất cả các chân Vss/Vdd của PIC. Mỗi cặp chân Vss/Vdd gắn thêm 1
tụ 104 pF sát chân Vss/Vdd đó để chống nhiễu.

2.2.4.Các loại ngắt trong PIC 16F877A
-

Ngắt chung

-

Chuyển đổi ADC

-

Nút bấm

-

Có capture hay compare trên CCP1 và CCP2

-


Ngắt ngoài

-

….

2.2.5 Bộ định thời trong PIC 16F877A
-

Timer 0 ( 8 bit) : có thể chọn chức năng định thời/ đếm bằng phần mềm, có thể đọc

hoặc ghi, nguồn clock có thể là nội hoặc ngoại, xảy ra ngắt khi tràn.
-

Timer 1 (16 bit) : gồm 2 thanh ghi 8 bit ( TMR1H, TMR1L ) có thể đọc và ghi được,

ngắt TMR1 được phát sinh khi xảy ra tràn và được chốt ở TMR1IF, có thể kích hoạt/xóa
bằng cách set/reset bit điều khiển TMR1ON.
-

Timer 2 : bộ định thời 8 bit và có hai bộ chia tần số là Prescaler và Postscaler, nó có

thể được sử dụng như là PWM cho chế độ PWM của chế độ CCP, thanh ghi TMR2 có
thể đọc, ghi và xóa khi Reset.


7

2.2.6 Tổ chức bộ nhớ
-


Gồm 3 phần:
+ Bộ nhớ chương trình
+ Bộ nhớ dữ liệu RAM
+ Bộ nhớ dữ liệu EEPROM

2.2.7 PORT A (RA)
-

Là cổng 6 bit, có thể set là input hoặc output tùy vào thanh ghi TRISA

-

Ngõ vào của đầu vào analog.

-

RA4 – ngõ vào xung clock của timer 0..

-

Đầu vào của các điện áp Vref cho các bộ chuyển đổi A/D và bộ so sánh.

2.2.8 PORT B (RB)
-

PORTB là cổng có 8 bit input hoặc output.

-


PORTB-RB là chân tín hiệu vào của ngắt ngồi RB0/INT.

2.2.9 PORT C (RC)
-

PORTC là cổng có 8 bit input hoặc output.

-

PORTC-RC là chân chức năng của các bộ so sánh, Timer1, bộ điều

chế độ rộng xung PWM các chuẩn giao tiếp truyền thông I2C, SPI, SSP, USART.
2.2.10 PORT D (RD)
-

PORTD là cổng có 8 bit input hoặc output.

-

PORTD-RD có thể được cấu hình là cổng song song 8 bit của vi điều

-

khiển bằng cách đặt chế độ PSPMODE.

2.2.11 PORT E (RE)
-

PORTE là cổng có 3 bit input hoặc output.



8

-

PORTE-RE được sử dụng để cấu hình cho cổng PORTD hoạt động trong chế độ
PSPMODE.

2.4 Giao tếp UART PIC 16F877A
UART là viết tắt của Universal Asynchronous Receiver – Transmitter. Thường là một
mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy tính và
các thiết bị ngoại vi. Rất nhiều vi điều khiển hiện nay đã được tích hợp UART, vì vấn
đề tốc độ và độ điện dụng của UART không thể so sánh với các giao tiếp mới hiện
nay nên các dòng PC & Laptop đời mới khơng cịn tích hợp cổng UART. Như các
bạn đã biết giao tiếp SPI và I2C có 1 dây truyền dữ liệu và 1 dây được sử dụng để
truyền xung clock (SCL) để đồng bộ trong giao tiếp. Với UART thì khơng có dây
SCL, vấn đề được giải quyết khi mà việc truyền UART được dùng giữa 2 vi xử lý với
nhau, đồng nghĩa với việc mỗi vi xử lý có thể tự tạo ra xung clock cho chính nó xử
dụng.
Để bắt đầu cho việc truyền dữ liệu bằng UART, một START bit được gửi đi, sau đó
là các bit dữ liệu và kết thúc quá trình truyền là STOP bit.

Như hình các bạn có thể thấy. Khi ở trạng thái chờ mức điện thế ở mức 1 (high). Khi
bắt đầu truyền START bit sẻ chuyển từ 1 xuống 0 để báo hiệu cho bộ nhận là quá
trình truyền dữ liệu sắp xảy ra. Sau START bit là đến các bit dữ liệu D0-D7 (Theo
hình vẽ các bit này có thể ở mức High or Low tùy theo dữ liệu). Sau khi truyền hết
dữ liệu thì đến Bit Parity để bộ nhận kiểm tra tính đúng đắn của dữ liệu truyền (vấn
đề này mình sẽ giải thích rõ hơn trong tài liệu CRC trong thời gian tới). Cuối cùng là
STOP bit là 1 báo cho thiết bị rằng các bit đã được gửi xong. Thiết bị nhận sẽ tiến
hành kiểm tra khung truyền nhằm đảm báo tính đúng đắn của dữ liệu.

Các thông số cơ bản trong truyền nhận UART:
- Baund rate (tốc độ baund ): Khoảng thời gian dành cho 1 bit được truyền. Phải được
cài
đặt giống
nhau

gửi

nhận.
- Frame (khung truyền ): Khung truyền quy định về số bit trong mỗi lần truyền.
- Start bit : là bit đầu tiên được truyền trong 1 Frame. Báo hiệu cho thiết bị nhận có
một gói dữ liệu sắp đc truyền đến. Bit bắt buộc.
- Data : dữ liệu cần truyền. Bit có trọng số nhỏ nhất LSB được truyền trước sau đó
đến bit MSB.


9

- Parity bit : kiểm tra dữ liệu truyền có đúng không.
- Stop bit : là 1 hoặc các bit báo cho thiết bị rằng các bit đã được gửi xong. Thiết bị
nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm bảo tính đúng đắn của dữ liệu. Bit
bắt buộc.


10

CHƯƠNG III : THIẾT KẾ MẠCH TRÊN PROTEUS

3 MẠCH MÔ PHỎNG


Hình 3 :Mạch mơ phỏng.


11

PHỤ LỤC

1.Các phần mềm trong bài tập lớn
Protues 8.0 Professional
PIC-C Compiler (CCS)
2.Code chương trình cho vi điều khiển
#include <Hai_led.h>
void main() // chuong trinh chinh
{
so_dem=0;
set_timer1(-62500); //0.2*62500*8 = 100ms
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
while(TRUE) // vong lap vo han
{
output_b(ma7doan[so_dem/10%10]&cham); // xuât ma LED 7 doan hang chuc ra port B
output_c(ma7doan[so_dem%10]); // xuât ma LED 7 doan hang don vi ra port C
if(input(pin_d1)==0)


12
{
if(bat_led==0)
{

bat_led=1;
dem_bat_led=0;
}
}
else
{
bat_led=0;
output_low(pin_d0);
}
}
}

//========================================
int8 ngat=0;
#int_timer1 // 0.2*62500*8 = 100ms
void ngat_timer1()
{
set_timer1(-62499); //(0.2us)
if(bat_led==1)
{
if(dem_bat_led<5)
{


13
dem_bat_led++;
}
else
{
output_high(pin_d0);

}
}
ngat++;
if(giam_tang==1)
{
if(ngat>2)
{
ngat=0;
so_dem++;
if(so_dem>=50) // neu so dem > 99
{
giam_tang=0;
}
}
}
else
{
if(ngat>9)
{
ngat=0;


14
so_dem--;
if(so_dem==0) // neu so dem > 99
{
giam_tang=1;
}
}
}

}

CHƯƠNG 5: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN
5.1. Kết quả đạt được
Trong suốt khoảng thời gian nghiên cứu và thực hiện bài tập lớn, nhóm đã cố gắng
làm hết khả năng của mình và vì thời gian làm có hạn nên kết quả đạt được vẫn cịn nhiều
hạn chế nhưng nhóm đã học hỏi được khá nhiều kiến thức mới mẻ cũng như là các con linh
kiện và lập trình dựa trên CCS và mô phỏng dựa trên phần mềm protues .
5.2. Chưa đạt được
Chưa thi công được mạch thực tế .
5.3. Thuận lợi
-

Chúng em đã phân tích dự án dựa trên những thơng tin thu thập được và bám sát
vào yêu cầu của bài tồn.

-

Chương trình đã đảm bảo những lưu trữ thơng tin cần thiết của
hệ thống.

-

Đọc và hiểu được các thứ có sẵn trên PIC16F877A.

-

Được học hỏi và tìm tị những thứ chưa gặp và tiếp xúc.

5.4. Khó khăn

-

Lần đầu thi công làm mạch.

-

Thiếu các thiết bị hổ trợ thi công mạch.

5.5.Hướng phát triển
-

Cần cải thiện và nâng cấp phần mềm lập trình để đạt tới năng suất tốt nhất .


15

-

Tiếp tục phát triển hoàn thiện hệ thống giúp cho người dùng có thể sử dụng tốt hơn
và đảm bảo được sự an tồn tuyệt đối.

-

Thi cơng thiết kế nhiều mạch khác nhau.
-----HẾT-----



×