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

ĐỒ ÁN VI ĐIỆN TỬ KHÓA SỐ ĐIỆN TỬ

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

TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN
HỮU NGHỊ VIỆT - HÀN
KHOA CÔNG NGHỆ ĐIỆN TỬ - VIỄN THÔNG
============================

ĐỒ ÁN VI ĐIỀU KHIỂN
ĐỀ TÀI:

KHÓA SỐ ĐIỆN TỬ

Lớp:

CCVT07A

SVTH: LÊ MINH TOẢN
TRẦN NGỌC BẢO
GVHD: DƯƠNG TUẤN QUANG

Đà Nẵng, tháng 12 năm 2016


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

LỜI NÓI ĐẦU
Ngày nay, vi điều khiển đã trở nên phổ biến và đóng vai trò quan trọng trong
đời sống con người. Ví dụ quanh ta có rất nhiều sản phẩm từ vi điều khiển như lò vi
sóng, nồi cơm điện, điều hòa, điện thoại di động, ô tô, máy bay, tàu thủy, các đầu đo,
cơ cấu chấp hành thông minh, robot v.v... ta có thể thấy hiện nay vi điều khiển có mặt
ở mọi lúc mọi nơi trong cuộc sống của chúng ta.


Qua môn học Vi Điều Khiển, chúng em đã hiểu thêm về các ứng dụng của vi
điều khiển trong thực tế, về đặc điểm, tính ưu việt cũng như tính ứng dụng của chúng
đối với con người. Với mong muốn làm rõ các kiến thức đã học và giới thiệu các ứng
dụng cơ bản của vi điều khiển, nhóm chúng em đưa ra mô hình thiết kế đồng hồ thời
gian thực – một sản phẩm rất quen thuộc và cần thiết trong đời sống.
Do thời gian thực hiện và kiến thức còn hạn chế nên còn nhiều sai sót trong quá
trình thực hiện đề tài, rất mong được sự bổ sung đóng góp của các thầy cô và các bạn.
Đồ án gồm 3 chương chính như sau:
CHƯƠNG 1. PHÂN TÍCH BÀI TOÁN
CHƯƠNG 2. THIẾT KẾ HỆ THỐNG
CHƯƠNG 3. XÂY DỰNG HỆ THỐNG
Em xin chân thành cảm ơn các thầy cô trong khoa Điện Tử Viễn Thông- Bộ
môn Vi Điều Khiển, cảm ơn cô Dương Tuấn Quang đã tận tình hướng dẫn và giúp đỡ
em thực hoàn thành đề tài này.
Trân trọng và chân thành cám ơn!

SVTH: Châu Ngoc Bảo

Trang i


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

MỤC LỤC
ĐÁNH GIÁ VÀ NHẬN XÉT CỦA GIÁO VIÊN.....................................................24

SVTH: Châu Ngoc Bảo


Trang ii


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

DANH MỤC HÌNH
Hình 2.1. Sơ đồ khối hệ thống.....................................................................................4
Hình 2.2. Khối nguồn...................................................................................................4
Hình 2.3. Khối điều khiển trung tâm...........................................................................5
...................................................................................................................................... 6
Hình 2.4. Khối hiển thị.................................................................................................6
Hình 2.5. Khối nút bấm................................................................................................6
Hình 2.6. Hình ảnh LCD.............................................................................................8
Bảng 2.1. Chức năng của các chân LCD:...................................................................8
Hình 2.7. Hình ảnh tụ điện..........................................................................................9
Hình 2.8. Dạng của điện trở trong thiết bị điện tử......................................................9
Hình 2.9. Nút bấm........................................................................................................9
Hình 2.10. Thạch anh................................................................................................10
Hình 2.11. Trở băng...................................................................................................10
Hình 3.1. Sơ đồ nguyên lý..........................................................................................12
Hình 3.2. Mạch vẽ trên orcad....................................................................................13
Hình 3.3. Mô phỏng hệ thống....................................................................................20
Hình 3.4. Mạch thi công thực tế mặt trước...............................................................20
Hình 3.5. Mạch thi công thực tế mặt sau..................................................................21

SVTH: Châu Ngoc Bảo

Trang iii



ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

CHƯƠNG 1. PHÂN TÍCH BÀI TOÁN
1.1. Khảo sát và phân tích bài toán
Đồng hồ là một công cụ để đo đạc những mốc thời gian nhỏ hơn một ngày, hay
dùng phục vụ môn điền kinh. Những loại đồng hồ dùng trong kĩ thuật thường có độ
chính xác rất cao và cấu tạo rất phức tạp. Trong khi đó, người ta có thể tạo ra những
loại đồng hồ nhỏ để dễ dàng mang theo bên mình (gọi là đồng hồ đeo tay).
1.1.1. Cách hiển thị thời gian của các loại đồng hồ

• Đồng hồ cơ:
Đồng hồ cơ thể hiện thời gian sử dụng các góc. Mặt đồng hồ có những con số
từ 1 đến 12 và sử dụng kim để chỉ giờ và cả phút. Từ một số đến một con số kế cận
là 5 phút (đối với kim phút), 1 giờ (đối với kim giờ) hay 5 giây (đối với kim giây).
Một loại đồng hồ cơ khác được sử dụng là đồng hồ mặt trời. Nó hoạt động
nhờ theo dọi thường xuyên ánh sáng Mặt Trời, và người ta theo dõi bằng cách nhìn
bóng của chúng.

• Đồng hồ điện tử:
Đồng hồ điện tử sử dụng hệ thống số để thể hiện thời gian. Thông thường có
2 cách thể hiện:


24 giờ để đếm giờ từ 00-23




12 giờ với kí hiệu AM / PM (chủ yếu ở Mĩ)

Những đồng hồ điện tử sử dụng màn hình Led 7 thanh hay LED, ống catode
để thể hiện hình ảnh những con số. Khi những đồng hồ điện tử thay pin, chúng
thường "quên" dữ liệu về thời gian trước đó.

• Đồng hồ âm thanh:
Để tiện lợi hơn, có một số đồng hồ sử dụng âm thanh để bào hiệu giờ. Âm
thanh có thể được sử dụng như ngôn ngữ tự nhiên (Bây giờ là mười tám giờ hai
mươi phút) hay một mã (số tiếng chuông báo hiệu số giờ).

• Đồng hồ chữ:
Loại đồng hồ này hiện thời gian ở dạng chữ. Nếu như ở đồng hồ điện tử
chúng ta đọc được những con số 18:20 thì ở đồng hồ chữ, chúng ta có thể đọc được
"Mười tám giờ hai mươi phút".
1.1.2. Mục đích
Đồng hồ treo tường được dùng trong nhà và văn phòng, đồng hồ đeo tay được
mang trên tay, và những loại đồng hồ lớn được đặt ở những nơi công cộng (nhà thờ
hay bến xe). Hầu hết những máy tính và điện thoại di động đều có góc dưới màn
hình hiển thị giờ.
Tuy nhiên, đồng hồ không phải lúc nào cũng được sử dụng để hiển thị thời
gian. Nó còn có thể sử dụng để điều khiển một vật theo thời gian, hay dùng để đo
thời gian của vật muốn đo. Ví dụ như đồng hồ chuông có thể được dùng làm chuông
báo tiết học, hay đồng hồ bấm giờ trong điền kinh.
SVTH: Châu Ngoc Bảo

Trang 1



ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

Máy tính sử dụng những tín hiệu đồng hồ để đồng bộ quá trình xử lý (mặc
dầu có một số nghiên cứu về bộ xử lí không đồng bộ). Máy tính lưu trữ thời gian để
báo hiệu hay chỉ là để hiển thị thời gian. Bên trong máy tính có một đồng hồ được
nuôi bằng pin. Máy tính vẫn có thể hoạt động ngay cả khi đồng hồ trong máy bị chết
nhưng khi khởi động máy lại, đồng hồ của máy tính sẽ được khởi động lại.
Thời gian là một khái niệm cơ bản trong môn vật lý. Do đó, chế tạo dụng cụ
đo thời gian chính xác có ý nghĩa quan trọng trong các thí nghiệm.
1.2. Lựa chọn giải pháp
1.2.1. Giải pháp công nghệ
Qua phân tích ở trên, em đưa ra giải pháp xây dựng đồng hồ thể thao. Đếm giờ
từ IC ATMEGA328, chạy hiển thị thời gian liên tục, lưu thời gian và kiểm tra thời gian
của vật muốn đếm thời gian chính xác của mình.
1.2.2. Giải pháp thiết kế
Việc lựa chọn giải pháp thường được xem xét trên nhiều phương diện nhưng
quan trọng là giải pháp có khả thi không? Có phù hợp với với thực tế và thỏa mãn yêu
cầu về kinh tế?
Đồng hồ thể thao với bộ não điều khiển là ATMEGA328 và các linh kiện khác:
Bộ hiển thị trỏ LCD, trở thanh, transistor…
- ATMEGA328 có các ưu điểm: tính năng và tốc độ đáp ứng được yêu
cầu kĩ thuật trong ứng dụng không đòi hỏi cao;giá thành thấp hơn họ vi điều
khiển khác; có hỗ trợ lập trình điều khiển bằng cả hợp ngữ và C...
- Trở thanh: thường dùng khi cần nhiều điện trở giống nhau, nhưng yêu
cầu thiết kế cho gọn.
- LCD với ưu điểm hiển thị rõ ràng dễ đọc.
- Transistor: thường được sử dụng như một phần tử khuếch đại hoặc
một khóa điện tử.

Vì vậy giải pháp thiết kế đồng hồ thể thao dùng các linh kiện trên có nhiều ưu
thế hơn so với những giải pháp khác. Đồng thời đảm bảo được yêu cầu về kinh tế.
1.2.3. Các yêu cầu
Với sản phẩm đồng thể thao đòi hỏi các yêu cầu:
- Hiển thị đúng thời gian: giây, chục giây, phút, chục phút, giờ, chục giờ
- Đảm bảo đúng về thời gian khi dừng.
- Khả năng thực thi: Thời gian đáp ứng, độ chính xác…
- Đảm bảo về kích thước và trọng lượng cho phép.
- Độ an toàn, khả năng chống lại sự phá hoại hay xâm nhập…
1.2.4. Giới hạn cho hệ thống
- Sử dụng nguồn điện 5V.
- Làm việc liên tục.
- Kích thước phù hợp với người sử dụng.
SVTH: Châu Ngoc Bảo

Trang 2


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

- Hệ thống nhỏ gọn.
- Làm việc trong điều kiện môi trường bình thường.

SVTH: Châu Ngoc Bảo

Trang 3



ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

CHƯƠNG 2: THIẾT KẾ HỆ THỐNG
2.1. Sơ đồ tổng quát

Hình 2.1. Sơ đồ khối hệ thống
• Khối nguồn: cung cấp nguồn cho hệ thống.
• Khối tạo thời gian: lưu trữ thời gian thực, thời gian cài đặt.
• Khối xử lý: dùng vi điều khiển ATMEGA328 để lấy dữ liệu từ khối
thời gian thực, lưu trữ và đưa ra khối hiển thị và nhận tín hiệu từ khối giao tiếp.
• Khối hiển thị: lấy tín hiệu ra từ vi điều khiển, thực hiện giao tiếp với vi
điều khiển để hiển thị giờ và ngày.
• Khối điều khiển: là khối bàn phím, thực hiện cài đặt giờ để vi điều
khiển lưu dữ liệu vào trong khối thời gian.
2.2. Các module trong hệ thống
2.2.1. Khối nguồn
Đây là module dùng để tạo ra nguồn điện áp chuẩn +5. Đầu vào là điện áp
xoay chiều sau khi được biến đổi qua máy biến áp, đưa vào bộ Diode cầu để cho ra
dòng điện một chiều (lúc này điện áp nằm trong khoảng từ 7->10V). Sau khi đi qua
các hệ thống khác sẽ tạo ra nguồn điện áp chuẩn +5V cung cấp cho mạch.

Hình 2.2. Khối nguồn
SVTH: Châu Ngoc Bảo

Trang 4


ĐỒ ÁN VI ĐIỀU KHIỂN


GVHD: Dương Tuấn Quang

2.2.2. Khối điều khiển trung tâm
- Khối điều khiển trung tâm sử dụng vi điều khiển ATMEGA328,
qua chương trình đã lập trình được nạp cho chip, vi điều khiển sẽ điều khiển
việc đọc, ghi thời gian thực, hiển thị thời gian lên LCD.
- Bộ RESET có tác dụng đưa vi điều khiển về trạng thái ban đầu.
Khi nút Reset được ấn điện áp +5V từ nguồn được nối vào chân Reset của
vi điều khiển được chạy thẳng xuống đất lúc này điện áp tại chân vi điều
khiển thay đổi đột ngột về 0, VĐK nhận biết được sự thay đổi này và khởi
động lại trạng thái ban đầu cho hệ thống.

Hình 2.3. Khối điều khiển trung tâm
2.2.3. Khối hiển thị
Sử dụng trỏ LCD , hiển thị thời gian linh hoạt, hiển thị được nhiều ký tự,
giúp cho việc quan sát thời gian khi đồng hồ chạy bình thường cũng như lúc cài đặt
trực quan và linh hoạt hơn.

SVTH: Châu Ngoc Bảo

Trang 5


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

Hình 2.4. Khối hiển thị
2.2.4. Khối giao tiếp phím bấm

Gồm 2 nút ấn, 1 nút reset, 1 nút stop. Khi ấn nút thì các chân vi điều khiển
được nối với phím bấm đưa điện áp xuống đất lúc này điện áp tại các chân vi điều
khiển bằng 0 làm cho vi điều khiển nhận biết được sự thay đổi này và thực hiện lệnh
cần điều khiển.

Hình 2.5. Khối nút bấm

SVTH: Châu Ngoc Bảo

Trang 6


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

2.3. Lựa chọn linh kiện
2.3.1. Vi điều khiển ATMEGA328P
a) Cấu tạo và chức năng các khối của ATMEGA328P.
• Kiến trúc: AVR 8bit
• Xung nhịp lớn nhất: 20Mhz
• Bộ nhớ chương trình (FLASH): 32KB
• Bộ nhớ EEPROM: 1KB
• Bộ nhớ RAM: 2KB
• Điện áp hoạt động rộng: 1.8V - 5.5V
• Số timer: 3 timer gồm 2 timer 8-bit và 1 timer 16-bit
• Số kênh xung PWM: 6 kênh (1timer 2 kênh)
b) Chức năng các chân của ATMEGA328P



Digital: Các chân I/O digital (chân số 2 – 13 ) được sử dụng làm
chân nhập, xuất tín hiệu số thông qua các hàm chính : pinMode(),
digitalWrite(), digitalRead(). Điện áp hoạt động là 5V, dòng điện qua các
chân này ở chế độ bình thường là 20mA, cấp dòng quá 40mA sẽ phá hỏng vi
điều khiển.


Analog :Uno có 6 chân Input analog (A0 – A5), độ phân giải mỗi
chân là 10 bit (0 – 1023 ). Các chân này dùng để đọc tín hiệu điện áp 0 – 5V
(mặc định) tương ứng với 1024 giá trị, sử dụng hàm analogRead().


PWM : các chân được đánh số 3, 5, 6, 9, 10, 11; có chức năng cấp
xung PWM (8 bit) thông qua hàm analogWrite().


UART: Atmega328P cho phép truyền dữ liệu thông qua hai chân
0 (RX) và chân 1 (TX).
c) Sơ đồ ATMEGA328P

SVTH: Châu Ngoc Bảo

Trang 7


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

2.3.2. LCD.

So với led đơn thì LCD có ưu điểm là hiển thị được tất cả các kí tự số trong
bảng mã ascci trên cùng một cụm led nên chúng thường dùng để thiết kế các mạch
đồng hồ thời gian thực. ở đây ta sử dụng LCD.

Hình 2.6. Hình ảnh LCD
Bảng 2.1. Chức năng của các chân LCD:

SVTH: Châu Ngoc Bảo

Trang 8


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

2.3.3. Tụ điện
Tụ điện là linh kiện điện tử thụ động được sử dụng rất rộng rãi trong các
mạch điện tử, chúng được sử dụng trong các mạch lọc nguồn, lọc nhiễu, mạch truyền
tín hiệu xoay chiều, mạch tạo dao động.Trong mạch này ta sẽ sử dụng một tụ hóa
cho khối reset, và hai tụ gốm cho khối dao động.

Tụ gốm

Tụ hóa

Hình 2.7. Hình ảnh tụ điện
2.3.4. Điện trở
Trong thiết bị điện tử điện trở là một linh kiện quan trọng, chúng được làm từ
hợp chất cacbon và kim loại tuỳ theo tỷ lệ pha trộn mà người ta tạo ra được các loại

điện trở có trị số khác nhau.

Hình 2.8. Dạng của điện trở trong thiết bị điện tử
2.3.5. Nút bấm button
Trong mạch này ta sử dụng 2 nút bấm để điều khiển, nút bấm dừng và reset.

Hình 2.9. Nút bấm
2.3.6. Thạch anh
Trong mạch ta sẽ sử dụng loại thạch anh 12Mhz để tạo dao động cho
AT89C52. Và chức năng để ổn định tần số của mạch dao động tinh thể.

SVTH: Châu Ngoc Bảo

Trang 9


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

Hình 2.10. Thạch anh
2.3.7. Trở băng
Thường dùng khi cần nhiều điện trở giống nhau, nhưng yêu cầu thiết kế cho
gọn.

Hình 2.11. Trở băng
2.3.8. Transistor
Thường được sử dụng như một phần tử khuếch đại hoặc một khóa điện tử.

Hình 2.12. Transistor


SVTH: Châu Ngoc Bảo

Trang 10


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

2.3.9. Điôt
Điốt là một loại linh kiện bán dẫn chỉ cho phép dòng điện đi qua nó theo
một chiều mà không theo chiều ngược lại.

Hình 2.13. Điôt

SVTH: Châu Ngoc Bảo

Trang 11


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

CHƯƠNG 3. XÂY DỰNG HỆ THỐNG
3.1. Thiết kế phần cứng
Hệ thống sẽ gồm 5 khối như đã phân tích ở chương hai, ta sẽ có sơ đồ nguyên
lý như sau:
Trên cơ sở sơ đồ nguyên lý, vẽ mạch in trên Orcad và có kết quả như sau:


Hình 3.1. Sơ đồ nguyên lý

SVTH: Châu Ngoc Bảo

Trang 12


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

Hình 3.2. Mạch vẽ trên orcad
3.2. Thiết kế phần mềm
Chương trình:
#include <LiquidCrystal.h>
#include <Wire.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(7,6, A0,A1,A2,A3);
#define del 200
const byte DS1307 = 0x68;
const byte NumberOfFields = 7;
int second, minute, hour, day, wday, month, year;
String gioGiac;
String ngayThang;
char *ngayT="
";
int change=0;
const int menu = 3;
const int tang = 4;

const int giam = 5;
int buttonTangStt=0;
int buttonGiamStt=0;
int menuStt=0;
int te=0;
SVTH: Châu Ngoc Bảo

Trang 13


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang
/////

void setTime(int hr, int min, int sec, int wd, int d, int mth, int yr);
void readDS1307();
void editTime(String ex,int time,char max);
void menuSelect();
void set();
int a=0;
void setup() {
pinMode(menu, INPUT_PULLUP);
pinMode(tang,INPUT_PULLUP);
pinMode(giam,INPUT_PULLUP);
Wire.begin();
/* cài đặt thời gian cho module */
// setTime(23, 59, 45, 1, 8, 2, 15); // 12:30:45 CN 08-02-2015
Serial.begin(9600);
// set up the LCD's number of columns and rows:

lcd.begin(16, 2);
// Print a message to the LCD.
// lcd.print("hello, anhxthangdang");
readDS1307();
}
void loop() {
menuStt = digitalRead(menu);
if(menuStt == LOW){
change++;
delay(350);
lcd.setCursor(0,0);
lcd.print("
");
lcd.setCursor(0,1);
lcd.print("
");
if(change==8){
change=0;
setTime(hour,minute,second,wday,day,month,year); } // luu thoi gian
}
if(change==0){
readDS1307();
lcd.setCursor(4,0);
lcd.print(gioGiac);
lcd.setCursor(1,2);
lcd.print(ngayThang);
//lcd.setCursor(4,2);
//lcd.print(ngayT);
SVTH: Châu Ngoc Bảo


Trang 14


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

delay(400);
}
else set();
}
// print the number of seconds since reset:
// lcd.print(millis() / 1000);
void set(){
// set thu
if(change==1){
String thu="thu ";
if(wday==1)thu=thu+ "cn";
else thu = thu + wday;
thu= thu + " ";
lcd.setCursor(0,0);
lcd.print(thu);
buttonTangStt = digitalRead(tang);
buttonGiamStt = digitalRead(giam);
if(buttonTangStt == LOW){
if(wday>=7) wday=1;
else wday++;
}
if(buttonGiamStt == LOW){
if (wday<=1) wday=7;

else wday--;
}
delay(del);
}
// ngay
if(change==2){
String ngay="ngay ";
ngay = ngay +day;
ngay = ngay +" ";
lcd.setCursor(0,0);
lcd.print(ngay);
buttonTangStt = digitalRead(tang);
buttonGiamStt = digitalRead(giam);
if(buttonTangStt == LOW){
if(day>=31) day=1;
else day++;
}
if(buttonGiamStt == LOW){
if (day<=1) day=31;
else day--;
}
delay(del);
}
if(change==3){
SVTH: Châu Ngoc Bảo

Trang 15


ĐỒ ÁN VI ĐIỀU KHIỂN


GVHD: Dương Tuấn Quang

String thang="thang ";
thang = thang +month;
thang = thang + " ";
lcd.setCursor(0,0);
lcd.print(thang);
buttonTangStt = digitalRead(tang);
buttonGiamStt = digitalRead(giam);
if(buttonTangStt == LOW){
if(month>11) month=1;
else month++;
}
if(buttonGiamStt == LOW){
if (month<=1) month=12;
else month--;
}
delay(del);
}
//nam
if(change==4){
String nam="nam ";
nam = nam + year;
nam = nam + " ";
lcd.setCursor(0,0);
lcd.print(nam);
buttonTangStt = digitalRead(tang);
buttonGiamStt = digitalRead(giam);
if(buttonTangStt == LOW){

if(year>98) year=0;
else year++;
}
if(buttonGiamStt == LOW){
if (year<=0) year=99;
else year--;
}
delay(del);
}
// gio
if(change==5){
String gio="gio ";
gio = gio + hour;
gio = gio + " ";
lcd.setCursor(0,0);
lcd.print(gio);
buttonTangStt = digitalRead(tang);
buttonGiamStt = digitalRead(giam);
if(buttonTangStt == LOW){
if(hour>=23) hour=0;
else hour++;
SVTH: Châu Ngoc Bảo

Trang 16


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang


}
if(buttonGiamStt == LOW){
if (hour<=0) hour=23;
else hour--;
}
delay(del);
}
// phut
if(change==6){
String phut="phut ";
phut = phut + minute;
phut = phut + " ";
lcd.setCursor(0,0);
lcd.print(phut);
buttonTangStt = digitalRead(tang);
buttonGiamStt = digitalRead(giam);
if(buttonTangStt == LOW){
if(minute>=59) minute=0;
else minute++;
}
if(buttonGiamStt == LOW){
if (minute<1) minute=59;
else minute--;
}
delay(del);
}
// giay
if(change==7){
String giay="giay ";
giay = giay + second;

giay = giay+ " ";
lcd.setCursor(0,0);
lcd.print(giay);
buttonTangStt = digitalRead(tang);
buttonGiamStt = digitalRead(giam);
if(buttonTangStt == LOW){
if(second>=59) second=0;
else second++;
}
if(buttonGiamStt == LOW){
if (second<1) second=59;
else second--;
}
delay(del);
}
if(change ==8)setTime(hour,minute,second,wday,day,month,year);; //
12:30:45 CN 08-02-2015
}
SVTH: Châu Ngoc Bảo

Trang 17


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

void setTime(int hr, int min, int sec, int wd, int d, int mth, int yr)
{
Wire.beginTransmission(DS1307);

Wire.write(byte(0x00)); // đặt lại pointer
Wire.write(dec2bcd(sec));
Wire.write(dec2bcd(min));
Wire.write(dec2bcd(hr));
Wire.write(dec2bcd(wd)); // day of week: Sunday = 1, Saturday = 7
Wire.write(dec2bcd(d));
Wire.write(dec2bcd(mth));
Wire.write(dec2bcd(yr));
Wire.endTransmission();
}
void readDS1307()
{
Wire.beginTransmission(DS1307);
Wire.write((byte)0x00);
Wire.endTransmission();
Wire.requestFrom(DS1307, NumberOfFields);
second = bcd2dec(Wire.read() & 0x7f);
minute = bcd2dec(Wire.read() );
hour = bcd2dec(Wire.read() & 0x3f); // chế độ 24h.
wday = bcd2dec(Wire.read() );
day = bcd2dec(Wire.read() );
month = bcd2dec(Wire.read() );
year = bcd2dec(Wire.read() );
// year += del0;
gioGiac = hour/10 ;
gioGiac = gioGiac + hour%10;
gioGiac = gioGiac +":";
gioGiac = gioGiac + minute/10 + minute%10;
gioGiac = gioGiac + ":";
gioGiac = gioGiac + second/10+ second%10;

gioGiac = gioGiac + " ";
if(wday==1) ngayThang="CN";
else {
ngayThang = "t";
ngayThang = ngayThang + wday;
}
ngayThang = ngayThang +"/";
ngayThang= ngayThang +day/10;
ngayThang= ngayThang +day%10;
ngayThang = ngayThang +"/";
ngayThang=ngayThang + month/10 + month%10 ;
ngayThang = ngayThang +"/";
ngayThang=ngayThang +20;
SVTH: Châu Ngoc Bảo

Trang 18


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

ngayThang = ngayThang + year ;
}
int bcd2dec(byte num)
{
return ((num/16 * 10) + (num % 16));
}
/* Chuyển từ Decimal sang BCD */
int dec2bcd(byte num)

{
return ((num/10 * 16) + (num % 10));
}
// int second, minute, hour, day, wday, month, year;
void menuSelect(){
if(menu == LOW){
change++;
delay(200);
lcd.setCursor(0,0);
lcd.print("
");
lcd.setCursor(0,1);
lcd.print("
");
if(change==8){
change=0;
setTime(hour,minute,second,wday,day,month,year);}
}
}

SVTH: Châu Ngoc Bảo

Trang 19


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

3.3. Kết quả mô phỏng


Hình 3.3. Mô phỏng hệ thống
3.4. Mạch thi công thực tế

Hình 3.4. Mạch thi công thực tế mặt trước

SVTH: Châu Ngoc Bảo

Trang 20


ĐỒ ÁN VI ĐIỀU KHIỂN

GVHD: Dương Tuấn Quang

Hình 3.5. Mạch thi công thực tế mặt sau

SVTH: Châu Ngoc Bảo

Trang 21


×