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

MẠCH ĐỒNG hồ điện tử dùng PIC 16f877a (có code)

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 (682 KB, 28 trang )

MẠCH ĐỒNG HỒ ĐIỆN TƯ


MỤC LỤC
CHƯƠNG 1. TỔNG QUAN VỀ MẠCH ĐỒNG HỒ ĐIỆN TƯ-----------------------1
1.1. GIỚI THIỆU------------------------------------------------------------------------1
1.1.1 Cách thức hoạt động của mạch đồng hồ-------------------------------1
1.1.2 PIC 16F877A---------------------------------------------------------------1
1.1.3 LCD 16x2-------------------------------------------------------------------2
1.2 HƯỚNG NGHIÊN CỨU----------------------------------------------------------2
1.2.1 Đặt vấn đề------------------------------------------------------------------2
1.2.2 Giới hạn đề tài--------------------------------------------------------------2
1.2.3 Mục đích nghiên cứu------------------------------------------------------2
CHƯƠNG 2. MẠCH ĐỒNG HỒ HIỂN THỊ GIỜ, PHÚT, GIÂY CÓ SƯ DỤNG
NÚT NHẤN---------------------------------------------------------------------------------------3
2.1 CÁC LINH KIỆN SƯ DỤNG TRONG MẠCH------------------------------3
2.1.1 PIC 16F877A---------------------------------------------------------------3
2.1.1.1 Thông số PIC 16F877A----------------------------------------3
2.1.1.2 Sơ đồ chân của PIC 16F877A --------------------------------4
2.1.2 LCD 16x2------------------------------------------------------------------5
2.1.2.1 Thông số LCD 16x2-------------------------------------------5
2.1.2.2 Sơ đồ chân của LCD 16x2------------------------------------6
2.1.3 Điện trở--------------------------------------------------------------------7
2.1.4 Biến trở volume----------------------------------------------------------7
2.1.5 Tụ điện gốm---------------------------------------------------------------8
2.1.6 Diode phát quang ( LED)------------------------------------------------8
2.1.7 Nút nhấn--------------------------------------------------------------------9
2.1.8 Thạch anh-------------------------------------------------------------------9


CHƯƠNG 3. THIẾT KẾ MẠCH TỔNG QUÁT-----------------------------------------10


3.1 SƠ ĐỒ KHỐI CỦA MẠCH-----------------------------------------------------10
3.2 SƠ ĐỒ NGUYÊN LÝ TỪNG KHỐI------------------------------------------10
3.2.1 Khối điều khiển-----------------------------------------------------------10
3.2.1 Khối xử lý-----------------------------------------------------------------11
3.2.1 Khối hiển thị--------------------------------------------------------------12
3.3 SƠ ĐỒ NGUYÊN LÝ CỦA MẠCH--------------------------------------------13
3.4 SƠ ĐỒ IN MẠCH-----------------------------------------------------------------14
CHƯƠNG 4. KẾT QUẢ THỰC TẾ--------------------------------------------------------14
CHƯƠNG 5. KẾT LUẬN---------------------------------------------------------------------15
5.1 KẾT QUẢ---------------------------------------------------------------------------15
5.2 ỨNG DỤNG------------------------------------------------------------------------15
5.3 HƯỚNG PHÁT TRIỂN----------------------------------------------------------15
TÀI LIỆU THAM KHẢO--------------------------------------------------------------------16


DANH MỤC HÌNH VE
Hình 1-1 : PIC 16F877A
Hình 1-2 : LCD 16x2
Hình 2-1 : Sơ đồ chân PIC 16F877A
Hình 2-2 Sơ đồ chân LCD 16x2
Hình 2-3 Điện trơ
Hình 2-4 Biến trơ volume
Hình 2-5 Tụ gốm
Hình 2-6 LED
Hình 2-7 Nút nhấn
Hình 2-8 Thạch anh
Hình 3-1 Sơ đồ nguyên lý khối điều khiển
Hình 3-2 Sơ đồ nguyên lý khối xử lý
Hình 3-3 Sơ đồ nguyên lý khối hiển thi
Hình 3-4 Sơ đồ nguyên lý của mạch

Hình 3-5 Sơ đồ mạch in
Hình 4-1 Kết quả thực tế.
DANH MỤC VIẾT TẮT
AC

AlternatingCurrent

DC

DicrectCurrent

PIC

Programable Intelligent Computer

LCD

Liquid Crystal Display

VCC

VoltageColector to Colector

VEE

VoltageEmitorEmitor

VDD

VoltageDrainDrain



ĐỒ ÁN 1
TRANG 1/16

CHƯƠNG 1. TỔNG QUAN VỀ MẠCH ĐỒNG HỒ ĐIỆN TƯ
1.1. GIỚI THIỆU
Mạch đồng hồ là mạch điện sử dụng LCD 16x2 để hiển thị giờ, phút, giây thông
qua việc xử lý từ PIC ( code được nạp vào PIC). Có thể điều chỉnh thời gian bằng cách
sử dụng nút nhấn.
1.1.1 Cách thức hoạt động của mạch đồng hồ
Khi được cấp nguồn 5V vào, mạch sẽ hoạt động, LCD sáng đồng thời hiển thị
thời gian khởi điểm là 00:00:00 tương ứng Giờ:Phút:Giây. Sau khi được chỉnh đúng
thời gian hiện tại đồng hồ sẽ chạy liên tục với điện áp duy trì trong suốt quá trình.
1.1.2 PIC 16F877A

Hình 1-1 : PIC 16F877A [1]

PIC là viết tắt của "Programable Intelligent Computer", có thể tạm dịch là
máy tính thông minh. PIC 16F877A thuộc họ vi điều khiển PIC, hiện nay Việt Nam và
trên thế giới họ vi điều khiển này được sử dụng khá rộng rãi. Việc này tạo nhiều thuận
lợi cho việc tìm hiểu và phát triển cũng như trao đổi học tập.

MẠCH ĐỒNG HỒ ĐIỆN TƯ

SVTH : NGUYÊN NHÂT KHÁNH


1.1.3 LCD 16x2


Hình 1-2 : LCD 16x2

[1]

Ngày nay, thiết bị hiển thị LCD( Liquid Crystal Display) được sử dụng rất
nhiều trong các ứng dụng của vi điều khiển. LCD có rất nhiều ưu điểm so với các dạng
hiển thị khác : Nó có khả năng hiển thị kí tự đa dạng, trực quan (chữ, số và kí tự đồ
họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn rất
ít tài nguyên hệ thống và giá thành rẽ.
1.2 HƯỚNG NGHIÊN CỨU
1.2.1 Đặt vấn đề
Qua phần giới thiệu bên trên chúng ta cũng hiều được một phần thông dụng của
mạch đồng hồ khi sử dụng PIC 16F877A và LCD 16x2. Đồng hồ là vật thiết yếu trong
cuộc sống vì vậy việc chế tạo và phát triển một chiếc đồng hồ thông dụng, dễ sử dụng
và tốn ít chi phí là khá quan trọng, bằng việc sử dụng PIC 16F877A và LCD chúng ta
có thể giúp ta dễ dàng làm việc đó.
1.2.2 Giới hạn đề tài
Mạch đồng hồ số hiển thị Giờ, Phút, Giây
Sử dụng nút nhấn để chỉnh thời gian
1.2.3 Mục đích nghiên cứu
Mạch đồng hồ số hiển thị Giờ, Phút, Giây như đã biết là vật dụng thiết yếu của
con người hiện nay. Qua việc nghiên cứu và chế tạo, sinh viên đã có điều kiện tổng hợp
lại kiến thức đã được truyền đạt tại trường Đại Học Tôn Đức Thắng, từ đó có thể áp
dụng thực tế và nâng cao kỹ năng kiến thức chuyên môn cho mình.


CHƯƠNG 2. MẠCH ĐỒNG HỒ HIỂN THỊ GIỜ, PHÚT, GIÂY CÓ SƯ DỤNG
NÚT NHẤN
2.1 CÁC LINH KIỆN SƯ DỤNG TRONG MẠCH
2.1.1 PIC 16F877A

2.1.1.1 Thông số PIC 16F877A

[4]

-Nguồn cấp 2-5V.
-Thạch anh tối đa 20MHz.
-Tụ C1 và C2 15-30pF.
-PIC 16F877A độ dài lệnh gồm 35 lệnh có độ dài 14 bit.
-Tốc độ tối đa cho phép là 20MHz với một chu kỳ lệnh là 200ns.
-Bộ nhớ chương trình 8Kx14bit
-Bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng
256x8 byte.
-Số Port I/O là 5 với 33 PIN I/O.
-Các đặc tính ngoại vi bao gồm các khối chức năng sau:
+Timer 0 : bộ đếm 8 bit.
+Timer 1 : bộ đếm 16 bit.
+Timer 2 : bộ đếm 8 bit.
-Đặc tính Analog :
+8 kênh chuyển đổi ADC 10 bit.
+Hai bộ so sánh.
-Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
+Bộ nhớ flash với khả năng ghi và xóa 100.000 lần.
+Bộ nhớ EEPROM với khả năng ghi và xóa 1.000.000 lần.
+Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm.
+WatchDog Time.


2.1.1.2 Sơ đồ chân của PIC 16F877A

Hình 2-1 : Sơ đồ chân PIC 16F877A


[1]

PIC 16F877A CÓ TỔNG CỘNG 40 CHÂN GỒM 5 CỔNG XUẤT NHẬP LÀ :
PORTA,PORTB,PORC,PORTD,PORTE.
[2]
-PORT A : gồm 6 I/O pin (2,3,4,5,6,7) . Đây là các chân 2 chiều nghĩa là có thể xuất
nhập. Chức năng I/O này được điều khiển bởi thanh ghi TRISA(địa chỉ 85H).
-PORT B : gồm 8 I/O pin ( 33,34,35,36,37,38,39,40) . Thanh ghi điều khiển xuất nhập
tương ứng là TRISB( địa chỉ 86H)). PORTB còn liên quan đến ngắt ngoại vi và bộ
Timer0.
-PORT C : gồm 8 I/O pin ( 15,16,17,18,23,24,25,26) . Thanh ghi điều khiển xuất nhập
tương ứng là TRISC( địa chỉ 87H). Bên cạnh đó PORT C còn chứa chức năng của bộ
so sánh, bộ Timer1, bộ PWM vad các chuẩn giao tiếp nối tiếp I2C,SPI,SSP,USART.
-PORT D : gồm 8 I/O pin ( 19,20,21,22,27,28,29,30) . Thanh ghi điều khiển xuất nhập
tương ứng là TRISD. PORTD còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP(parallel
Slave Port).
-PORT E : gồm 3 I/O pin ( 8,9,10). Thanh ghi điều khiển xuất nhập tương ứng là
TRISE. Các chân của TRISE có ngõ vào analog. Bên cạnh đó PORTE còn là các chân
điều khiển của chuẩn giao tiếp PSP.


PIC 16F877A CÓ CÁC CHÂN CHỨC NĂNG CÒN LẠI NHƯ:
-Các chân nguồn : gồm VDD ( 11,32) là chân cấp nguồn dương và VSS( 12,31 ) là đất.
-Chân reset là chân số 1(MLCR) chân này có nhiệm vụ khởi động lại chip khi được
tích cực.
-Chân mạch dao động : gồm chân số 13(OSC1) và 14(OSC2). Tốc độ dao động được
xác định thông qua tần số dao động của bộ tạo dao động.
2.1.2 LCD 16x2
2.1.2.1 Thông số LCD 16x2


[4]

-Nguồn cấp 2,2V-5V.
-Dòng điện ngõ vào -1uA đến 1uA.
-Tần số dao động nội 190KHz- 350KHz ( điển hình 270KHz).
-Có 2 thanh ghi 8 bit quan trọng : Thanh ghi lệnh IR(Instructor Register) và
thanh ghi dữ liệu DR(Data Register)
+Thanh ghi lệnh IR dùng điều khiển LCD người dùng phải ra lệnh thông qua
tám đường BUS DB0-DB7. Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng.
Người dùng chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR.
+Thanh ghi DR dùng để chứa dữ liệu 8 bit ghi vào cùng RAM DDRAM hoặc
CGRAM(ở chế độ ghi ) hoặc dùng để chứa dữ liệu từ 2 vùng RAM này gởi ra cho
MPU ( ở chế độ đọc ). Nghĩa là MPU sẽ ghi thông tin vào DR, mạch nội trong chip sẽ
tự động ghi thông tin này vào DDRAM hoặc CGRAM.


2.1.2.2 Sơ đồ chân của LCD 16x2

Hình 2-2 Sơ đồ chân LCD 16x2

[1]

-Chân GND : chân này nối đất.
-Chân VDD : chân này nối với nguồn 5V.
-Chân VSS : chân này điều chỉnh độ tương phản của LCD.
-Chân RS : Chân chọn thanh ghi (Register Select). Nối chân RS với logic 0 hoặc
logic 1 để chọn thanh ghi.
+Logic 0 : BUS DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD.
+Logic 1 : BUS DB0-DB7 sẽ nối với thanh ghi dữ liệu DR của LCD.

-Chân R/W : chân chọn chế độ đọc ghi ( mức 0 là ghi và 1 là đọc ).
-Chân E : là chân cho phép (Enable). Sau khi các tín hiệu được đặt lên BUS
DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép chân E.
-DB0-DB7 : 8 đường dữ liệu, có 2 cách chọn sử dụng, nếu ở chế độ 8 bit ta
chọn từ chân DB0 đến DB7 còn ở chế độ 4 bit thì ta chỉ sử dụng từ DB4 đến DB7.
-Ngoài ra còn có chân A-K : là chân đèn nền ( A là nguồn dương, K là nguồn
âm).


2.1.3 Điện trơ

Hình 2-3 Điện trơ

[1]

-Là linh kiện điện tử được sử dụng khá phổ biến trong mạch điện dùng để giảm
dòng điện.
2.1.4 Biến trơ volume

Hình 2-4 Biến trơ volume

[1]

-Có nhiều loại biến trở nhưng nhiệm vụ của chúng đều là dùng để thay đổi giá trị điện
trở tùy theo yêu cầu.


2.1.5 Tụ điện gốm

Hình 2-5 Tụ

gốm

[1]

-Là một trong những linh kiện điện tử quan trọng, tụ điện dùng để lọc nhiễu tín hiệu,
làm phẳng điện áp hay được dùng như một kho chứa điện và nhiều tính năng khác.
2.1.6 Diode phát quang ( LED)

Hình 2-6
LED

[1]

-Như một loại đèn phát sáng nhiều màu, nếu được phân cực thuận. Diode phát quang
thường được dùng làm đèn báo nguồn, để báo trạng thái có điện.


2.1.7 Nút nhấn

Hình 2-7 Nút nhấn
[1]
-Nút nhấn dùng để chuyển đổi trạng thái trong mạch điện .
2.1.8 Thạch anh

Hình 2-8 Thạch anh

[1]

-Thạch anh tạo ra xung kích cho con PIC 16F877A.



CHƯƠNG 3. THIẾT KẾ MẠCH TỔNG QUÁT
3.1 SƠ ĐỒ KHỐI CỦA MẠCH

KHỐI ĐIỀU
KHIỂN

KHỐI XỬ LY

KHỐI HIỂN THI

3.2 SƠ ĐỒ NGUYÊN LÝ TỪNG KHỐI
3.2.1 Khối điều khiển

Hình 3-1 Sơ đồ nguyên lý khối điều khiển
-Khi được cấp nguồn 5V qua điện trở , một đầu của nút nhấn được nối chung
nút với điện trở và PIN của PIC, đầu còn lại nối đất.


-Trong sơ đồ ta có thể thấy được nút nhấn đảm nhiệm vai trò chính và các điện trở giúp
giảm dòng điện. Khi cấp nguồn 5V, ta nhấn nút nhấn thì sẽ kích một giá trị 0 vào PIN
của con PIC từ đó ta có thể điều khiển PIC như mong muốn.
3.2.2 Khối xử lý

Hình 3-2 Sơ đồ nguyên lý khối xử lý
-Trong khối điều khiển này có thạch anh và reset .
+Thạch anh ở đây sử dụng 8M và tụ điện là tụ gốm 33p.
+Reset : Khi cấp nguồn 5V, ta nhấn nút nhấn thì sẽ kích một giá trị 0 vào PIN
của con PIClàm cho PIC trở về trạng thái ban đầu.



3.2.2 Khối hiển thi

Hình 3-3 Sơ đồ nguyên lý khối hiển thi
-Khối hiển thị trong đó LCD đóng vai trò chính, khi nhận dữ liệu từ PIC, LCD hiển
thị ra màn hình.
-LCD 16x2 gồm 16 cột và 2 hàng hoạt động khi được cấp nguồn 5V vào chân VDD
và 0V vào chân VSS, chân VEE sẽ điều chỉnh độ tương phản của LCD thông qua một
con biến trở. Trong thực tế LCD có đến 16 chân đó là thêm 2 chân đèn nền : A và K, 2
chân này cũng được cấp nguồn 5V với A và 0V với K .


3.3 SƠ ĐỒ NGUYÊN LÝ CỦA MẠCH

Hình 3-4 Sơ đồ nguyên lý của mạch
-Sau khi cấp nguồn, sử dụng nút nhấn để điều chỉnh thời gian. Duy trì nguồn để thời
gian được hiển thị liên tục.


3.4 SƠ ĐỒ IN MẠCH

Hình 3-5 Sơ đồ mạch in
-Mạch in được được thiết kế bằng phần mềm Orcad
CHƯƠNG 4. KẾT QUẢ THỰC TẾ

Hình 4-1 Kết quả thực tế


CHƯƠNG 5. KẾT LUẬN
5.1 KẾT QUẢ

-Mạch hoạt động bình thường và không tốn nhiều chi phí.
-Sau khi đã hoàn chỉnh ta có thể sử dụng một cách dễ dàng.
5.2 ỨNG DỤNG
-Sử dụng xem thời gian.
5.3 HƯỚNG PHÁT TRIỂN
-Dựa trên nguyên lý hoạt động của mạch, có thể nâng cấp lên đồng hồ đếm thời
gian, ngày tháng năm, báo thức.


TÀI LIỆU THAM KHẢO
TIẾNG VIỆT:
[1]



[2]



[3]



TIẾNG ANH:
[4]




PHỤ LỤC A

#include "..\DOAN1\mp.h"
#include "lcd.h"
#use delay(clock=8000000)
unsigned int16 t=0;
#define Menu

PIN_B0

#define Set

PIN_B1

#define Down

PIN_B2

#define Up

PIN_B3

char QuetNutNhan(void);
char QuetNutNhan(void)
{
if(INPUT(Menu)==0)
{
return 1;
}
else if(INPUT(SET)==0)
{
return 2;

}
else if(INPUT(UP)==0)
{
return 3;
}
else if(INPUT(Down)==0)
{
return 4;

MẠCH ĐỒNG HỒ ĐIỆN TƯ

SVTH : NGUYÊN NHÂT KHÁNH


}
else
{
return 0;
}
}
void main()
{
signed int8 Giay=0,Phut=0,Gio=0;
char CoMenu=0,CoSet=0;
setup_timer_0(T0_INTERNAL|T0_DIV_256);
set_timer0(0);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
output_bit(PIN_B4,0);
lcd_init();

lcd_gotoxy(1,1);
printf(lcd_putc," Thoi Gian

");

while(TRUE)
{
for(Gio=0;Gio<=23;Gio=Gio+1)
{
for(Phut=0;Phut<=59;Phut=Phut+1)
{
for(Giay=0;Giay<=59;Giay=Giay+1)
{

MẠCH ĐỒNG HỒ ĐIỆN TƯ

SVTH : NGUYÊN NHÂT KHÁNH


lcd_gotoxy(1,2);
printf(lcd_putc," %02d:%02d:%02d",Gio,Phut,Giay);
delay_ms(1000);
if (QuetNutNhan()==1)
{
while (QuetNutNhan()==1);
if (CoMenu==0)
{
lcd_gotoxy(1,1);
printf(lcd_putc," Cai Dat


");

CoMenu=1;
}
else
{
lcd_gotoxy(1,1);
printf(lcd_putc," Thoi Gian

");

CoMenu=0;
}
}
while (CoMenu==1)
{
lcd_gotoxy(1,2);
printf(lcd_putc," %02d:%02d:%02d",Gio,Phut,Giay);
if (QuetNutNhan()==1)
{
while (QuetNutNhan()==1);
if (CoMenu==0)

MẠCH ĐỒNG HỒ ĐIỆN TƯ

SVTH : NGUYÊN NHÂT KHÁNH


{
lcd_gotoxy(1,1);

printf(lcd_putc," Cai Dat

");

CoMenu=1;
}
else
{
lcd_gotoxy(1,1);
printf(lcd_putc," Thoi Gian

");

CoMenu=0;
CoSet=0;
}
}
if(QuetNutNhan()==2)
{
while (QuetNutNhan()==2);
CoSet=CoSet+1;
if(CoSet>3)
{
CoSet=1;
}
switch(CoSet)
{
case 1:
{
lcd_gotoxy(1,1);


MẠCH ĐỒNG HỒ ĐIỆN TƯ

SVTH : NGUYÊN NHÂT KHÁNH


printf(lcd_putc," Cai Dat Gio ");
break;
}
case 2:
{
lcd_gotoxy(1,1);
printf(lcd_putc," Cai Dat Phut ");
break;
}
case 3:
{
lcd_gotoxy(1,1);
printf(lcd_putc," Cai Dat Giay ");
break;
}
}
}
if (CoSet>0)
{
if (QuetNutNhan()==3)
{
while (QuetNutNhan()==3);
switch(CoSet)
{

case 1:
{

MẠCH ĐỒNG HỒ ĐIỆN TƯ

SVTH : NGUYÊN NHÂT KHÁNH


×