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

Thiết kế, chế tạo mô hình điều khiển đèn giao thông ngã tư bằng vi điều khiển AT89C52

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 (993.79 KB, 33 trang )

BỘ NÔNG NGHIỆP VÀ PTNT
HỌC VIỆN NÔNG NGHIỆP VIỆT NAM

ĐỒ ÁN VI XỬ LÝ TRONG ĐIỀU KHIỂN

Đề tài: “Thiết kế, chế tạo mô hình điều khiển đèn giao thông ngã

bằng vi điều khiển AT89C52

GVHD

Lại Văn Song

:
Sinh viên
thực hiện
:
Nhóm
:

Phạm Thị Thơm
573131
Đoàn Thị Yến
573144
Thứ 6, tiết 123


Hà nội - 2017

NHẬN XÉT ĐỒ ÁN MÔN HỌC
Đề tài: Thiết kế chế tạo mô hình đèn giao thông ngã tư bằng vi điều


khiển AT89C52
Nhận xét của giảng viên:
…………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………..
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………..
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………..
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………..
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………..
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………

…………………………………………………………………………………………
…………………………………………………………………..


…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
……………………………………
MỞ ĐẦU
1. Đặt vấn đề

Ngày nay con người đang trải qua những sự phát triển vượt về mọi
mặt. Trong đó điện tử, tự động hoá đóng một vai trò không nhỏ. Điện tử góp
phần vào quá trình tự động hoá mọi thứ giúp con người hiện đại hoá cuộc
sống.
Trong công nghệ điện tử vi xử lý, vi điều khiển là một thành phần
quan trọng không thể thiếu nó mang nhiều tính ưu việt: có thể thay thế một
mạch điện phức tạp bằng một vi mạch nhỏ gọn với chi phí thấp hơn, nhưng
ứng dụng lại đa dạng và linh hoạt hơn, tiết kiệm năng lượng hơn, tốc độ xử lý
nhanh hơn,… Để học tập tốt và hiểu sâu về môn học vi xử lý ngoài những
kiến thức trên sách vở cần có những ứng dụng vào thực tế.
Đề tài “Nghiên cứu chế tạo mô hình điều khiển đèn giao thông ngã tư
“, là một đề tài mang tính chất được thiết kế nhỏ gọn, hiển thị bằng led đơn,
led 7 đoạn.
2.
Mục đích nghiên cứu
Chế tạo được mô hình “Điều khiển đèn giao thông ngã tư”
Lắp ráp và vận hành được mô hình trên
3. Phương pháp nghiên cứu
- Tham khảo ý kiến của giáo viên hướng dẫn

- Thu thập tài liệu có liên quan đến đề tài
- Ứng dụng về các kiến thức đã được học
4. Nội dung nghiên cứu.
Tìm hiểu tổng quan tài liệu về ‘Nghiên cứu chế tạo mô hình điều
khiển đèn giao thông ngã tư ‘
Tìm hiểu đối tượng nghiên cứu.


Chương 1: TỔNG QUAN NGHIÊN CỨU
Ngày nay cùng với sự phát triển của khoa học kỹ thuật, xã hội ngày
càng văn minh và hiện đại, các đô thị ngày một đi lên. Nhu cầu đèn giao thông
càng trở lên cấp thiết, nhất là trong các khu cực thành thị. Do nhu cầu của đời
sống con người, đặc biệt là nhu cầu đi lại, các phương tiện giao thông đã tăng
một cách chóng mặt. Riêng tại Việt Nam số lượng xe máy trong những năm
qua tăng một cách đột biến, mật độ xe lưu thông trên đường ngày một nhiều,
trong khi đường xá Việt Nam còn nhiều hạn chế nên thường gây ra các hiện
tượng kẹt xe, ách tắc giao thông, đặc biệt là tai nạn giao thông ngày càng phổ
biến trở thành mối hiểm họa cho nhiều người.
Vì lý do đó các luật giao thông lần lượt ra đời và được đưa vào sử
dụng một cách lặng lẽ rồi dần trở lên phổ biến như hiện nay. Trong đó hệ
thông đèn giao thông là công cụ điều khiển giao thông công cộng thực tế và
hiệu quả có vai trò rất lớn trong việc đảm bảo an toàn và giảm thiểu tai nạn
giao thông.
Từ thực tế đó nhóm chúng em thực hiện đề tài “Thiết kế chế tạo mô
hình đèn giao thông ngã tư bằng vi điều khiển AT89C52” nhằm giúp cho mọi
người có ý thưc hơn trong việc chấp hành luật lệ giao thông.
Với yêu cầu hệ thống chạy, các đèn xanh, đèn vàng, đèn đỏ và độ
sáng trong thời gian mặc định tương ứng là 60s, 5s, 65s.



Chương 2: Giới thiệu về “mô hình đèn giao thông ngã tư bằng vi
điều khiển AT89C52”
2.1 Nguyên lý hoạt động.
Mạch đèn giao thông hoạt động dựa trên nội dung đã lập trình trên
AT89C52, khi có tác động từ các nút điều khiển trên mạch hoạt động theo
đúng thời gian yêu cầu. AT89C52 đưa dữ liệu đến các Led xanh, đỏ, vàng để
điều khiển các Led này đóng, mở. Ngoài ra nó còn xuất dữ liệu đến các BJT
để điều khiển các Led 7 đoạn. Led 7 đoạn còn nhận dữ liệu từ vi điêu khiển
trung tâm để thực hiện việc đếm lùi thời gian.
Như vậy mỗi khi bắt đầu thực hiện đếm lùi, nếu trục lộ bên này là đèn
xanh hay vàng thì bên kia truc lộ là đèn đỏ sáng và ngược lại.

2.2 Sơ đồ khối của bộ điều khiển

Hình 2.1 sơ đồ khối của bộ điều khiển
2.2.1

Khối nguồn

Khối nguồn tạo ra dòng điện và điện thế ổn định cung cấp an toàn cho cả
mạch.
2.2.2

Khối vi điều khiển

Khối này có nhiệm vụ xử lý và điều khiển theo chương trình đã lập trình.


Hình 2.2 khối vi điều khiển
2.2.3


Khối hiển thị

Hình 2.3 khối hiển thị
Nhiệm vụ hiển thị thông qua led 7 đoạn và led đơn.

2.3 Các linh kiện sử dụng trong mạch điều khiển đèn giao thông
2.3.1 Vi điều khiển AT89C52


+ Vi điều khiển 89C52 mà chúng ta sử dụng có những đặc điểm sau:
4KB ROM bên trong
256 Byte ngoài
4 Port xuất nhập dữ liệu I/O
64 KB vùng nhớ mã ngoài
64 KB vùng nhớ dữ liệu ngoài
Xử lý Boolean
+ Khảo sát sơ đồ chân.


Trên sơ đồ chân trên có các nhóm chân sau:
1. Nhóm chân nguồn nuôi.
+ nguồn nuôi 5V (chân số 40) .
+ nối đất (chân số 20).
2.
Nhóm chân điều khiển.
Nhóm này còn phân biệt các tín hiệu vào, ra.
a.
Nhóm tín hiệu vào điều khiển.
+ Xtal1 (chân số 18), Xtal2 (chân số 19): nối tinh thể thạch anh cho

mày phát xung nhịp chu trình.
+ RST(Reset): (chân số 9): nối chuyển mạch để xóa về trạng thái ban
đầu hay khởi động lại.
+ /EA/CPP: (chân số 31) chọn nhớ ngoài (nối đất) hay chọn nhớ trong
(nối nguồn nuôi 5V).
+ T2 hay P1.0: (chân số 1) tín hiệu vào đếm cho Timer2/ Counter2 của
8952
+ T2EX: (chân số 2) tín hiệu vào ngắt ngoài 2 cho 8950.
+ /INT0 hay P3.2: (chân số 12) tín hiệu vào gây ngắt ngoài 0 cho 8051.
+ /INT1 hay P3.3: (chân số 13) tín hiệu vào gây ngắt ngoài 1 cho 8051.
+ T0 hay P3.4: (chân số 14) tín hiệu vào đếm cho Timer0/ Counter0.
+ T1 hay P3.5: (chân số 15) tín hiệu vào đếm cho Timer1/ Counter1.
b. Nhóm tín hiệu ra điều khiển.
+ ALE//PROG: (chân số 30) dùng để đưa tín hiệu chốt dịa chỉ (ALE) khi
có nhớ ngoài hay điều khiển ghi chương trình /PROG.
+ /PSEN: (chân số 29) dùng để đưa tín hiệu điều khiển đọc bộ nhớ
chương trình ROM ngoài.
+ /WR hay P3.6: (chân số 16) để đưa tín hiệu ghi dữ liệu vào bộ nhớ
ngoài
+ /RD hay P3.7: (chân số 17) để đưa tín hiệu đọc dữ liệu từ bộ nhớ
ngoài.
c. Nhóm các tín hiệu địa chỉ, dữ liệu.
+ cổng vào, ra địa chỉ/ dữ liệu P0 hay P0.0-P0.7: (chân số 39-32) dùng
để trao đổi tin về dữ liệu D0-D7, hoặc đưa ra các địa chỉ thấp (A0-A7) theo chế
độ dồn kênh (kết hợp với tín hiệu chốt địa chỉ ALE).
+ cổng vào ra địa chỉ/ dữ liệu P2 hay P2.0-P2.7: (chân số 21-28) dùng
để trao đổi tin song song về dữ liệu (D0-D7) hoặc đưa ra địa chỉ cao (A8-A15).
+ cổng vào ra dữ liệu P1 hay P1.0-P1.7: (chân số 1-8) dùng để trao đổi
tin song song dữ liệu (D0-D7).
+ cổng vào, ra P3 hay P3.0-P3.7: (chân số 10-17).

P3.0: (chân số 10) đưa vào tín hiệu nhận tin nối tiếp RXD
P3.1: (chân số 11) đưa ra tín hiệu truyền tin nối tiếp TXD
/INT0 hay P3.2: (chân số 12) tín hiệu vào gây ngắt 0 của VĐK
/INT1 hay P3.3: (chân số 13) tín hiệu vào gây ngắt 1 của VĐK


T0 hay P3.4: (chân số 14) tín hiệu vào đếm cho Timer0/ Counter0
cho VĐK 8051/8052.
T1 hay P3.5: (chân số 15) tín hiệu vào đếm cho Timer1/ Counter1
cho VĐK 8051/8052.
/WR hay P3.6: (chân số 16) để đưa tín hiệu ghi dữ liệu vào bộ nhớ
ngoài.
/RD hay P3.7: (chân số 17) để đưa tín hiệu đọc dữ liệu từ bộ nhớ
ngoài.
T2 hay P1.0: (chân số 1)tín hiệu vào đếm cho Timer2/ Counter2
cho VĐK 8052.
T2EX: (chân số 2) tín hiệu vào gây ngắt 2 của VĐK 8052.
Ngoài các tín hiệu chuyên dùng trên, cổng vào/ ra P3 này còn
dùng để trao đổi tin về dữ liệu D7-D0.
2.3.2 IC74HC04N

-

Là IC số gồm 6 cổng NOT sử dụng để đảo mức tín hiệu logic
Cấu tạo

Chân 14: nguồn cấp
Chân 7: nối đất
Chân 1, 3, 5, 9, 11, 13: là các đầu vào
Chân 2, 4, 6, 8, 10, 12: là các đầu ra đảo

Đặc tính điện: nguồn cấp -0,5V -> 7V, tốc độ lan truyền 8ns
2.3.3 DS1307


sơ đồ chân của DS1307 như sau:

Chân
1
2
3
4
5
6
7
8

Tên
X1
X2
VBat
GND
SDA
SCL
SQW/OU
T
VCC

2.3.4

Chức năng

Kết nối đến thạch anh 32,768KHz làm nguồn dao động cho
chip
Kết nối đến cực dương của pin dự phòng
Kết nối chân mass
Chân dữ liệu khi kết nối đến bus I2C
Chân nhận xung clock đồng bộ khi kết nối bus I2C
Ngõ xuất xung vuông, tần số có thể lập trình để thay đổi từ
1Hz, 4KHz, 8KHz, 32KHz
Nguồn cấp chính khoảng 5VDC

Led 7 đoạn


+ Cấu tạo.
Led 7 đoạn có cấu tạo bao gồm 7 led đơn xếp theo hình phía trên và có
thêm một led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc dưới, bên phải
của led 7 thanh.
- 8 led đơn trên led 7 thanh có Anode (cực +) hoặc Cathode (cực -) được
nối chung với nhau vào một điểm và được đưa chân ra ngoài để kết nối với
mạch điện. 7 cực còn lại trên mỗi led đơn của led 7 đoạn và 1 cực trên led
đơn ở góc dưới, bên phải của led 7 đoạn được đưa thành 8 chân riêng để
điều khiển cho led sáng tắt theo ý muốn.
- Nếu led 7 đoạn có Anode (cực +) chung, đầu chung này được nối với
+Vcc, các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led
đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 0.
- Nếu led 7 đoạn có Cathode (cực -) chung, đầu chung này được nối
xuống Ground (hay Mass), các chân còn lại dùng để điều khiển trạng thái
sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở
mức 1.
+ Mã led 7 thanh.

Mã Anot chung.


Mã catot chung.


2.3.5

Điện trở.

Điện trở là một linh kiện điện tử thụ động trong mạch điện có biểu tượng


Điện trở kháng là đại lượng vật lý đặc trưng cho tính chất cản trở dòng
điện của vật liệu. Điện trở kháng được định nghĩa là tỉ số của hiệu điện
thế giữa hai đầu vật thể đó với cường độ dòng điện đi qua nó

trong đó:
U: là hiệu điện thế giữa hai đầu vật dẫn điện, đo bằng vôn (V).
I: là cường độ dòng điện đi qua vật dẫn điện, đo bằng ampe (A).
R: là điện trở của vật dẫn điện, đo bằng Ohm (Ω).
Thí dụ như có một đoạn dây dẫn có điện trở là 1Ω và có dòng điện 1A
chạy qua thì điện áp giữa hai đầu dây là 1V.
Ohm là đơn vị đo điện trở trong SI. Đại lượng nghịch đảo của điện trở
là độ dẫn điện G được đo bằng siêmen. Giá trị điện trở càng lớn thì độ dẫn điện
càng kém. Khi vật dẫn cản trở dòng điện, năng lượng dòng điện bị chuyển hóa
thành các dạng năng lượng khác, ví dụ như nhiệt năng.
Định nghĩa trên chính xác cho dòng điện một chiều. Đối với dòng điện
xoay chiều, trong mạch điện chỉ có điện trở, tại thời điểm cực đại của điện áp thì
dòng điện cũng cực đại. Khi điện áp bằng không thì dòng điện trong mạch cũng

bằng không. Điện áp và dòng điện cùng pha. Tất cả các công thức dùng cho
mạch điện một chiều đều có thể dùng cho mạch điện xoay chiều chỉ có điện trở
mà các trị số dòng điện xoay chiều lấy theo trị số hiệu dụng.[1]
Đối với nhiều chất dẫn điện, trong điều kiện môi trường (ví dụ nhiệt độ) ổn
định, điện trở không phụ thuộc vào giá trị của cường độ dòng điện hay hiệu điện
thế. Hiệu điện thế luôn tỷ lệ thuận với cường độ dòng điện và hằng số tỷ lệ chính
là điện trở. Trường hợp này được miêu tả theo định luật Ohm và các chất dẫn
điện như thế gọi là các thiết bị ohm. Các thiết bị này nhiều khi cũng được gọi là
các điện trở, như một linh kiện điện tử thụ động trongmạch điện, được ký hiệu
với chữ R (tương đương với từ resistor trong tiếng Anh).
Chọn loại điện trở thi công là loại điện trở 10kΩ.
2.3.6

Led đơn


LED (viết tắt của Light Emitting Diode, có nghĩa là điốt phát quang) là
các điốt có khả năng phát ra ánh sáng hay tia hồng ngoại, tử ngoại. Cũng giống
như điốt, LED được cấu tạo từ một khối bán dẫn loại p ghép với một khối bán
dẫn loại n.
Hoạt động của LED giống với nhiều loại điốt bán dẫn.
Khối bán dẫn loại p chứa nhiều lỗ trống tự do mang điện tích dương nên khi
ghép với khối bán dẫn n (chứa các điện tử tự do) thì các lỗ trống này có xu
hướng chuyển động khuếch tán sang khối n. Cùng lúc khối p lại nhận thêm các
điện tử (điện tích âm) từ khối n chuyển sang. Kết quả là khối p tích điện âm
(thiếu hụt lỗ trống và dư thừa điện tử) trong khi khối n tích điện dương (thiếu hụt
điện tử và dư thừa lỗ trống).
Ở biên giới hai bên mặt tiếp giáp, một số điện tử bị lỗ trống thu hút và khi
chúng tiến lại gần nhau, chúng có xu hướng kết hợp với nhau tạo thành các
nguyên tử trung hòa. Quá trình này có thể giải phóng năng lượng dưới dạng ánh

sáng (hay các bức xạ điện từ có bước sóng gần đó).
Tùy theo mức năng lượng giải phóng cao hay thấp mà bước sóng ánh sáng
phát ra khác nhau (tức màu sắc của LED sẽ khác nhau). Mức năng lượng (và
màu sắc của LED) hoàn toàn phụ thuộc vào cấu trúc năng lượng của các
nguyên tử chất bán dẫn.
LED thường có điện thế phân cực thuận cao hơn điốt thông thường, trong
khoảng 1,5 đến 3 V. Nhưng điện thế phân cực nghịch ở LED thì không cao. Do
đó, LED rất dễ bị hư hỏng do điện thế ngược gây ra.
2.3.7

Tụ điện


Tụ điện là một loại linh kiện điện tử thụ động tạo bởi hai bề mặt dẫn
điện được ngăn cách bởi điện môi. Khi có chênh lệch điện thế tại hai bề mặt, tại
các bề mặt sẽ xuất hiện điện tích cùng điện lượng nhưng trái dấu.
Sự tích tụ của điện tích trên hai bề mặt tạo ra khả năng tích trữ năng
lượng điện trường của tụ điện. Khi chênh lệch điện thế trên hai bề mặt là điện
thế xoay chiều, sự tích luỹ điện tích bị chậm pha so với điện áp, tạo nên trở
kháng của tụ điện trong mạch điện xoay chiều.
Về mặt lưu trữ năng lượng, tụ điện có phần giống với ắc qui. Mặc dù cách
hoạt động của chúng thì hoàn toàn khác nhau, nhưng chúng đều cùng lưu trữ
năng lượng điện. Ắc qui có 2 cực, bên trong xảy ra phản ứng hóa học để tạo
ra electron ở cực này và chuyển electron sang cực còn lại. Tụ điện thì đơn giản
hơn, nó không thể tạo ra electron - nó chỉ lưu trữ chúng. Tụ điện có khả năng
nạp và xả rất nhanh. Đây là một ưu thế của nó so với ắc qui.
Tụ điện được đặc trưng bới thông số điện áp làm việc cao nhất và được
ghi rõ trên tụ nếu có kích thước đủ lớn. Đó là giá trị điện áp thường trực rơi trên
tụ điện mà nó chịu đựng được. Giá trị điện áp tức thời có thể cao hơn điện áp
này một chút, nhưng nếu quá cao, ví dụ bằng 200% định mức, thì lớp điện môi

có thể bị đánh thủng, gây chập tụ.
Trước đây giá thành sản xuất tụ điện cao, nên tụ có khá nhiều mức điện
áp làm việc: 5V, 10V, 12V, 16V, 24V, 25V, 35V, 42V, 47V, 56V, 100V, 110V, 160V,
180V, 250V, 280V, 300V, 400V...
Ngày nay các dây chuyền lớn sản xuất và cho ra ít cấp điện áp hơn thế:




Tụ hoá: 16V, 25V, 35V, 63V, 100V, 150V, 250V, 400V.
Tụ khác: 63V, 250V, 630V, 1KV.
Các tụ đặc chủng có mức điện áp cao hơn, như 1,5 KV, 4 KV,... và tuỳ vào
hãng sản xuất.


Khi thiết kế hoặc sửa chữa mạch, phải chọn tụ có điện áp làm việc cao hơn
điện áp mạch cỡ 30% trở lên. Ví dụ trong mạch lọc nguồn 12V thì chọn tụ hóa
16V, chứ không dùng tụ có điện áp làm việc đúng 12V.
2.3.8

Transistor

Transistor hay tranzito là một loại linh kiện bán dẫn chủ động, thường được
sử dụng như một phần tử khuếch đại hoặc một khóa điện tử.
Transistor nằm trong khối đơn vị cơ bản xây dựng nên cấu trúc mạch ở máy
tính điện tử và tất cả các thiết bị điện tử hiện đại khác. Vì đáp ứng nhanh và
chính xác nên các transistor được sử dụng trong nhiều ứng dụng tương tự và
số, như khuếch đại, đóng cắt, điều chỉnh điện áp, điều khiển tín hiệu, và tạo dao
động. Transistor cũng được kết hợp thành mạch tích hợp (IC), có thể tích hợp
tới một tỷ transistor trên một diện tích nhỏ.

Cũng giống như điốt, transistor được tạo thành từ hai chất bán dẫn điện. Khi
ghép một bán dẫn điện âm nằm giữa hai bán dẫn điện dương ta được một PNP
Transistor. Khi ghép một bán dẫn điện dương nằm giữa hai bán dẫn điện âm ta
được một NPN Transistor.
Tên gọi Transistor là từ ghép của "Transfer" và "resistor", tức điện trở chuyển
đổi, do John R. Pierce đặt năm 1948 sau khi nó ra đời. Nó có hàm ý rằng thực
hiện khuếch đại thông qua chuyển đổi điện trở, khác với khuếch đại đèn điện
tửđiều khiển dòng qua đèn thịnh hành thời kỳ đó.
Transistor là linh kiện tích cực, tức là cần nguồn cung cấp năng lượng để
hoạt động, cụ thể, cần phải phân cực cho transistor để nó hoạt động.

Chương 3: CHẾ TẠO VÀ THỬ NGHIỆM


3.1 Các bước chế tạo mô hình
3.1.1 Sơ đồ nguyên lý

3.1.2

Mạch in


3.1.3

3.2

Chạy thử

Thuật toán điều khiển của mô hình



3.3

Chương trình điều khiển

#include <REGX52.H>
#include <INTRINS.H>

#define DS1307_SEC
#define DS1307_MIN
#define DS1307_HOUR

sbit DS

= P0^2;

sbit SHCP = P0^0;
sbit STCP = P0^1;

sbit SCL = P1^1;
sbit SDA = P1^2;
sbit SOUT = P1^0;

sbit SEG1 = P0^4;
sbit SEG2 = P0^5;
sbit SEG3 = P0^6;
sbit SEG4 = P0^7;

sbit RED1 = P2^0;
sbit YEL1 = P2^1;

sbit GRE1 = P2^2;
sbit RED2 = P2^3;
sbit YEL2 = P2^4;
sbit GRE2 = P2^5;

sbit SET = P1^3;

0x00 //Giay
0x01 //Phut
0x02 //Gio


sbit HUP = P1^4;
sbit MUP = P1^5;

unsigned
char
{0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B};
bit n;
char sec,hour,min;
void truyen(unsigned char cmd)
{
unsigned char i,Q;
Q=cmd;
for(i=0;i<8;i++)
{
DS = Q&0x01;
SHCP = 0;
SHCP = 1;
Q>>=1;

}
STCP = 0;
STCP = 1;
}

void delay_ms(unsigned int t)
{
unsigned int x,y;
for(x=0;x{
for(y=0;y<123;y++);
}

chuso[10]=


}

void hienthi(unsigned char time1, unsigned char time2)
{
unsigned char a,b,c,d;
a=time1/10;
b=time1%10;
c=time2/10;
d=time2%10;
SEG1 = 1;
truyen(chuso[a]);
delay_ms(2);
SEG1 = 0;
SEG2 = 1;

truyen(chuso[b]);
delay_ms(2);
SEG2 = 0;
SEG3 = 1;
truyen(chuso[c]);
delay_ms(2);
SEG3 = 0;
SEG4 = 1;
truyen(chuso[d]);
delay_ms(2);
SEG4 = 0;
}

/****************Ctr giao tiep IC DS1307***************************/
void I2C_time_5art()

//ham khoi dong I2C


{
SCL = 1;
SDA = 1;

SDA = 0;
SCL = 0;

}
void I2C_time_5op()
{
SCL = 1;

SDA = 0;

SDA=1;
SCL=1;

}
unsigned char I2C_write(unsigned char dat)
{
unsigned char i;
for (i=0;i<8;i++)
{
SDA = (dat & 0x80); ///? 1:0;
SCL=1;
SCL=0;
dat<<=1;
}
SCL = 1;
SCL = 0;


return dat;
}
unsigned char I2C_read(void)
{
bit rd_bit;
unsigned char i, dat;
dat = 0x00;
for(i=0;i<8;i++)

/* For loop read data 1 byte */


{
SCL = 1;
rd_bit = SDA;

/* Keep for check acknowledge */

dat = dat<<1;
dat = dat | rd_bit; /* Keep bit data in dat */
SCL = 0;

/* Clear SCL */

}
return dat;
}
// CAC CHUONG TRINH CON CHO DS1307
//******************************************************************************

void DS1307_Write(unsigned char addr,unsigned char dat)
{
unsigned int temp;
//**********************************************
temp = dat ;

/*HEX to BCD*/

dat = (((dat/10)*16)|(temp %10));

/*for Led 7seg*/


//**********************************************
I2C_time_5art();

/* time_5art i2c bus */

I2C_write(0XD0); /* Connect to DS1307 */


I2C_write(addr);

/* Requetime_5 RAM address on DS1307 */

I2C_write(dat);

/* Connect to DS1307 for Read */

I2C_time_5op();
}
unsigned char DS1307_Read(unsigned char addr)
{
unsigned int tm,ret;
I2C_time_5art();

/* time_5art i2c bus */

I2C_write(0xD0); /* Connect to DS1307 */
I2C_write(addr);

/* Requetime_5 RAM address on DS1307 */


I2C_time_5art();

/* time_5art i2c bus */

I2C_write(0XD1); /* Connect to DS1307 for Read */
ret = I2C_read(); /* Receive data */
I2C_time_5op();
//**********************************************************
tm = ret;
ret = (((ret/16)*10)+ (tm & 0x0f));

/*BCD to HEX*/
/*for Led 7seg*/

//**********************************************************
return ret;
}

void DS1307_GetTime(){
//Doc du lieu gio tu DS1307
hour=DS1307_Read(DS1307_HOUR);
min=DS1307_Read(DS1307_MIN);
sec=DS1307_Read(DS1307_SEC);
}
void mode1()
{



×