Tải bản đầy đủ (.pdf) (44 trang)

Điều khiển hệ thống đèn dùng quang trở và IC thời gian thực

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 (2.01 MB, 44 trang )

Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c

Báo cáo đồ án môn học một.
Tên đề tài:
Điều khiển hệ thống đèn dùng quang trở và IC thời gian thực

Đề tài:
Lập trình với vi điều khiển cho ứng dụng điều khiển hệ thống đèn,tương ứng với
3 chế độ,theo thứ tự ưu tiên như sau:
-Chế đô 1:Bật tắt hệ thống đèn bằng tay.
-Chế đô 2:Bật tắt hệ thống đèn tùy theo cường độ sáng ngoài trời.
-Chế độ 3:Bật tắt hệ thống đèn theo thời gian.

1)
2)
3)
4)
5)

Mục đích thực hiện đề tài
Phương án thực hiện đề tài và sơ đồ khối phần cứng
Lý thuyết liên quan
Kết luận
Thi công mạch và lập trình

1) Mục đích thực hiện đề tài
Đề tài điều khiển hệ thống đèn dùng quang trởvà IC thời gian thực có thể được
dùng trong một số ứng dụng như:
1.1) Điều khiển hệ thống đèn đường một cách tự động tùy theo cường độ ánh
sáng môi trường.
1.2) Ở một số địa phương trồng thanh long cần có hệ thống đèn để sưởi ấm


cho thanh long vào ban đêm,nhằm tăng năng suất thu hoạch thanh long…

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 1


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c
2) Phương án thực hiện đề tài
Phương án thực hiện đề tài như sau:
2.1-Người dùng có thể bật tắt đèn bằng tay.
2.2-Hoặc bật tắt đèn tự động,bằng cách lập trình cho vi điều khiển là PIC
16F887 cho 2 quá trình sau:
2a-Đọc ADC từ quang trở về,từ đó đưa ra quyết định bật hay tắt đèn.
2b-Đọc dữ liệu thời gian từ IC thời gian thực DS1307,từ đóquyết định
bật hay tắt đèn theo thời gian.
*) Một đặc điểm nữa là đặt mức ưu tiên cho ba chế độ kể trên.
Chế độ bằng tay đươc ưu tiên cao nhất,sau đó đến chế độ tự động bằng
quang trở,và ưu tiên sau cùng dành cho chế đọ tự động bằng IC thời gian
thực.
Sơ đồ khối thực hiện phần cứng:

Giải thích sơ đồ khối:
- Việc bật hay tắt tải thông qua điều khiển TRIAC.
SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân


Page 2


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c
- Có 2 cách điều khiển TRIAC: Bằng tay (MANUAL) và tự động thông qua
lập trình cho PIC.
- Việc đọc ADC từ 2 quang trở về được thực hiện ỏ chân RA0 và RA1 của
PIC
- Việc đọc dữ liệu thời gian về từ khối REALTIME,thông qua giao tiếp I2C
(với 2 dây SCL và SDA) được thực hiện ở chân RC3 và RC4 của PIC.

3) Lý thuyết liên quan
Bố cục trình bày:
3.1) Lý thuyết về ADC và module ADC trong PIC 16F887
3.2)Lý thuyết về I2C và module I2C trong PIC 16F887

3.1) Lý thuyết về ADC và module ADC trong PIC 16F887

3.1.1)Tổng quan về quá trình chuyển đổi A/D
3.1.2) Các bước của quá trình chuyển đổi A/D
3.1.3) Module ADC trong PIC 16F887
3.1.1) Tổng quan về quá trình chuyển đổi A/D
Bộ chuyển đổi ADC là bộ chuyển đổi tín hiệu tương tự thành tín hiệu số

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 3



Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c

Nhờ các sensors mà ta định lượng được các đại lượng phi điện như nhiệt độ,độ
ẩm…từ đó kết hợp sensors với các bộ ADC để chuyển đổi sự thay đổi liên tục
của các đại lượng phi điện này thành các bước nhảy của tín hiệu digital(qua quá
trình lấy mẫu vàlượng tử hóa).Một khi đã chuyển đổi được các đại lượng phi
điện thành tín hiệu digital,ta dễ dàng lập trình với vi điều khiển sao cho phù hợp
với từng ứng dụng cụ thể.

3.1.2) Các bước của quá trình chuyển đổi A/D

a) Quá trình lấy mẫu và nhớ mẫu (sample và sample hold)
 Quá trình lấy mẫu
 Định lý lấy mẫu:
Để có thể khôi phục lại tín hiệu sau khi lấy mẫu thì tần số lấy mẫu
phải thỏa mãn: fs ≥ 2 fmax.
Trong đó: fmax là tần số lớn nhất của tín hiệu được lấy mẫu;
Fs=2fmax là tần số Nyquist
 Định lý lấy mẫu cho ta chặn dưới của tần số lấy mẫu fs,còn chặn trên ta phải
dựa vào giới hạn về phương diện dung lượng bộ nhớ và tốc độ xử lý của phần
cứng,ngoài ra còn phải tùy vào ứng dụng để xác định chặn trên của fs.
SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 4


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c

 Quá trình nhớ mẫu
Mỗi lần chuyển đổi từng mẫu đều tốn một khoảng thời gian nhất định,mà
các mẫu lại xuất hiện liên tục theo chu kì lấy mẫu,do đó cần thiết phải có
yếu tố nhớ mẫu (sample hold) để chắc chắn rằng ta không bỏ sót mẫu nào.

Mạch nhớ mẫu(hold sample) đơn giản

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 5


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c

b) Quá trình lượng tử hóa và mã hóa

 Tín hiệusau khi lấy mẫu không những rời rạc về mặt thời gian mà còn rời rạc về
mặt giá trị.Do đặc điểm này mà ta cần quá trình lượng tử hóa,đó là quá trình mà
ta bắt điện áp lấy mẫu hóa thành bội số nguyên lần giá trị đơn vị.
 Như vậy,quá trình lượng tử hóa thực chất là quá trình làm tròn đến một giá trị
thích hợp,gần nhất.
 Việc làm tròn này làm xuất hiện sai số trong quá trình lượng tử.Nếu độ phân
giải không đủ(số bít để lượng tử nhỏ) thì sai số càng lớn.
 Độ phân giải n bít nghĩa là ADC có thể biểu diễn được 2n giá trị của tín hiệu sau
lấy mẫu.
 Việc dùng mã nhị phân biểu thị giá trị tín hiệu số là mã hóa. Mã nhị phân có
được sau quá trình trên chính là tín hiệu đầu ra của chuyên đổi A/D.
SVTH: Nguy n Văn H i


GVHD: Tr n Hoàng Quân

Page 6


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c
3.1.3) Module ADC trong PIC 16F887
3.1.3.1) Tổng quan về module ADC trong PIC 16F887
3.1.3.2) Cấu hình cho module ADC trong PIC 16F887

3.1.3.1) Tổng quan về module ADC trong PIC 16F887
 Module ADC trong PIC 16F887 có độ phân giải 10 bít.
 Module ADC trong PIC 16F887 có 14 kênh chuyển đổi A/D từ AN0 đến
AN13.
 Sau khi lấy mẫu và giữ,tín hiệu ở dạng xung được đưa vào bộ chuyển
đổi.Kết quả của quá trình chuyển đổi trên ở dạng 1 chuỗi bít gồm 10
bít,được lưu trong 2 thanh ghi ADC result gồm ADRESL và ADRESH
 Có thể chọn điện áp tham khảo nội hoặc điện áp tham khảo ngoại.Việc
lựa chọn này được thực hiện bằng phần mềm.
 Module ADC trong PIC 16F887 có thể tạo ngắt khi một chuyển đổi được
thực hiện xong.
3.1.3.2) Cấu hình cho module ADC trong PIC 16F887
a)
b)
c)
d)
e)
f)


Cấu hình PORT
Chọn kênh chuyển đổi
Chọn điện áp tham khảo
Chọn nguồn clock cho việc chuyển đổi
Điều khiển ngắt trong ADC
Định dạng kết quả chuyển đổi

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 7


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c

a) Cấu hình PORT
 Module ADC trong PIC 16F887 có thể được dùng để chuyển đổi cả
tín hiệu analog và digital.Bằng cách cấu hình PORT cho 2 thanh ghi
ANSEL và ANSELH ta sẽ lựa chọn được 1 trong 2 chế độ trên.
 Cách cấu hình:




TRIS ANSEL=0xFF ; //Chọn chuyển đổi tín hiệu Analogtừ AN0 đến AN7
TRIS ANSELH= 0xFF ; // Chọn chuyển đổi tín hiệu Analog từ AN8 đến AN13
TRIS ANSEL= 0x03 ; // Chọn chuyển đổi tín hiệu Analog 2 kênh AN0 và AN1
b) Chọn kênh chuyển đổi
 4 bít CHS <3:0> trong thanh ghi ADCON0 xác định kênh nào được đọc

ADC
Ví dụ: CHS <3:0>=0011 => Kênh AN3 đang được chọn.

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 8


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c
c) Chọn điện áp tham khảo
-Điện áp tham khảo phải là nguồn áp rất ổn định
-Chọn điện áp tham khảo bằng cách cấu hình cho 2 bít VCFG<1:0> trong
thanh ghi ADCON0.
Ví dụ: VCFG1=0;VCFG0=0;

// Chọn điện áp tham khảo nội

VCFG1=1;VCFG0=1;
// Chọn điện áp tham khảo ngoại(điện
áp tham khảo ngoại phải đưa vào 2 chân RA2 và RA3)

d) Chọn nguồn clock cho việc chuyển đổi

 Chọn nguồn clock cho việc chuyển đổi được thực hiện thông qua việc
cấu hình cho 3 bít ADCS<2:0>
 Việc cấu hình trên phai quan tâm đến định lý lấy mẫu.

e) Điều khiển ngắt trong ADC


 Bít ADIF là cờ báo ngắt.
 Để cho phép ngắt,ta cần đặt: PEIE=1;GIE=1.
SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 9


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c
 Khi một quá trình chuyển đổi được thực hiện xong,cờ báo ngắt ADIF
được set lên 1,để bắt đầu một quá trình chuyển đổi mới,ta cần clear
ADIF bằng phần mềm.
f) Định dạng kết quả chuyển đổi
 Bít ADFM điều khiển việc định dạng kết quả chuyển đổi

3.2) Lý thuyết về I2C và module I2C trong PIC 16F887
3.2.1)

Đặc điểm của giao tiếp I2C

3.2.2)

Cách thức truyền dữ liệu theo giao tiếp I2C

3.2.3)

Module I2C trong PIC 16F887


3.2.1)

Đặc điểm của giao tiếp I2C

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 10


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c

Là một chuẩn giao tiếp nối tiếp rất hữu dụng cho các ứng dụng giao
tiếp của các thiết bị vi điều khiển và các thiết bị ngoại vi.Các ngoại vi có thể
là các Serial EEPROM,các thanh ghi dịch,các bộ hiển thị,A/D Converter,các
cảm biến nhiệt độ…

Nguồn dùng cho giao tiếp I2C thường là 3.3V hoặc 5V ,đây là các
nguồn thông dụng dùng cho vi điều khiển.

Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock
(SCL)

Mỗi dây SDA hay SCL đều được nối với điện áp dương của nguồn cấp
thông qua một điện trở kéo lên (pull‐up resistor)Đối với giao tiếp I2C giá trị
của các điện trở này nên có giá trị từ 1,8kΩ đến 47kΩ,trong đó có 3 giá trị điện
trở sau đã được thực nghiệm xác nhận là tốt nhất cho đường truyền I2C,đó là
1.8kΩ; 4.7kΩ và 10kΩ;
 Có thể cónhiều thiết bị ngoại vi cùng được kết nối vào một bus

I2C, nhưng sẽ không xảy ra chuyện nhầm lẫn giữa các thiết bị, bởi mỗi thiết
bị sẽ được nhận ra bởi một địa chỉ duy nhất của nó. Có 2 cách định địa chỉ:
Định địa chỉ 7 bít và 10 bít.
 Các mode hoạt động và tốc độ của đường truyền I2C

3.2.2)

Cách thức truyền dữ liệu theo giao tiếp I2C

1) Phân tích sơ đồ thời gian truyền nhận dữ liệu trên bus I2C
2) Định dạng dữ liệu truyền
3) Định dạng địa chỉ thiết bị ngoại vi
4) Ví dụ phân tích quá trình “Read 1 byte “và “Write 1 byte”
1) Phân tích sơ đồ thời gian truyền nhận dữ liệu trên bus I2C
SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 11


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c

 Trong giao tiếp I2C,chế độ rỗi ứng với SDA=SCL=1,điều này đạt được
bởi 2 điện trở pull-up kéo lên nguồn.
 Để bắt đầu quá trình truyền nhận dữ liệu,ta cần khởi tạo đường truyền
bằng một tìn hiệu Start-đó là lúc SDA bị kéo xuống 0,trong khi SCL vẫn
bằng 1(xem hình trên).
 Một thời gian ngắn sau thì bít SCL cũng bị kéo xuống 0,kể từ thời điểm
này bắt đầu truyền nhận dữ liệu(Transfer data)trên bus I2C.

 Bước vào quá trình truyền dữ liệu,cứ mỗi bit dữ liệu được truyền đi,dữ
liệu trên SCL sẽ được kích thêm 1 xung.
 Để kết thúc việc truyền dữ liệu,thì ta cần một tín hiệu Stop được gửi
đi,bằng cách cho SDA đuợc kéo lên mức cao trong lúc SCL vẫn ở mức
cao.
 Cả hai điều kiện START và STOP đều được tạo ra bởi thiết bị chủ.
Sau tín hiệu START,bus I2C coi như đang trong trang thái làm việc .
Sau tín hiệu STOP Bus I2C sẽ rỗi, sẵn sàng cho một giao tiếp mới.
2)

Định dạng dữ liệu truyền
 Dữ liệu được truyền đi theo từng bít,bít dữ liệu được truyền đi tại sườn
dương của xung clock SCL,quá trình thay đổi bít dữ liệu trên SDA xảy ra
khi SCL ở mức thấp.

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 12


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c

 Sau 8 xung clock trên dây SCL, 8 bit dữ liệu đã được truyền đi
 Thiết bị nhận, sau khi đã nhận đủ 8 bít dữ liệu sẽ kéo SDA xuống mức thấp
tạo một xung ACK
 Thiết bị truyền khi nhận được bit ACK sẽ tiếp tục thực hiện quá trình truyền
hoặc kết thúc
3)


Định dạng địa chỉ thiết bị ngoại vi

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 13


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c
 Khi thiết bị chủ muốn giao tiếp với ngoại vi nào trên bus I2C, nó sẽ gửi 7 bit
địa chỉ của thiết bị đó ra bus ngay sau xung START ,điều đó có nghĩa là ta
có thể giao tiếp với 128 thiết bị ngoại vi.

 Mỗi một thiết bị ngoại vi sẽ có một địa chỉ riêng do nhà sản xuất ra nó quy
định
 Byte đầu tiên được gửi sẽ bao gồm 7 bit địa chỉ và một bít thứ 8 điều khiển
hướng truyền (“0”- ghi, “1”- đọc)

4) Ví dụ phân tích quá trình “Read 1 byte “và “Write 1 byte”

 Khi chưa bắt đầu quá trình truyền dữ liệu thì bus I2C đang ở trạng thái rỗi.
 Để bắt đầu quá trình truyền dữ liệu,Master phải gửi đi tín hiệu Start.
 Sau đó Master gửi lên đường truyền 7 bít địa chỉ của Slave(tra trong
datasheet của nhà sản xuất thiết bị),kèm theo một bít Write(W).
SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân


Page 14


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c
 Sau khi nhận đủ byte,thì Slave tự động gửi về cho Mastre bít ACK để báo
hiệu rằng Slave đã nhận đủ byte.
 Master sau khi nhận được bít ACK,nó gửi tiếp cho Slave 8 bit địa chỉ thanh
ghi của Slave mà nó muốn truy cập.Khi nhận xong 8 bít,Slave lại gửi về
ACK.
 Để chuyển sang trạng thái đọc,Master cần gửi đi tín hiệu ReStart để khởi tạo
lại đường truyền,sau đó gửi lại 7 bít đại chỉ của Slave một lần nữa,kèm theo
bít Read (R) để báo hiệu cho Slave rằng nó cần đọc dữ liệu từ Slave về.
 Slave gửi lại ACK để xác nhận,kèm theo 8 bít data chứa trong địa chỉ thanh
ghi mà Master đã báo cho nó lúc trước.
 Master nhận được một byte dữ liệu và nó điều khiển việc kết thúc truyền
nhận dữ liệu bằng tín hiệu NACK kèm theo bít Stop.
 Cần lưu ý rằng,ta chỉ điều khiển được Master,còn những tín hiệu gửi đi từ
Slave là tự động,ta không can thiệp được.

 Việc phân tích truyền nhận dữ liệu trên bus I2C trong trường hợp ghi
hoàn toàn tương tự như đọc 1 byte.
 Điểm khác nhau căn bản nhất giữa đọc 1 byte và ghi 1 byte chỉ là lúc kết
thúc truyền nhận dữ liệu.Trong quá trình đọc,để kết thúc truyền nhận dữ
liệu,Master cần gửi đi bít NAK trước khi gửi đi tín hiệu Stop,còn ở quá
trình ghi,để kết thúc việc truyền nhận dữ liệu,Master chỉ cần gửi đi bít
Stop là đủ.

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân


Page 15


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c
Sau đây là quá trình đọc nhiều byte và ghi nhiều byte,việc phân tích truyền
nhận dữ liệu là tương tự như trên.

3.2.3)

Module I2C trong PIC 16F887

 Module I2C nằm trong module MSSP của PIC 16F887.
 Có 2 cách định địa chỉ thiết bị trên đường truyền:7 bít và 10 bít.

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 16


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c
 Dùng 2 chân RC3/SCL (truyền xung clock)và RC4/SDA(truyền dât) để
truyền dữ liệu bằng giao thức I2C.Lưu ý người dùng phải cấu hình cho 2
chân này là input hoặc output.
 Chức năng I2C được enable bằng cách set bít SSPEN trong thanh ghi
SSPCON lên 1.
4)


Kết luận
 Có nhiều phương án để điều khiển bóng đèn theo cường độ ánh sáng môi
trường và theo thời gian.Vì thế,chắc chắn sẽ có nhiều phương pháp khác
hiệu quả hơn về mặt kinh tế và kỹ thuật,đòi hỏi người thực hiện phải cải tiến
sản phẩm để sản phẩm tốt hơn.
 Qua việc thực hiện đồ án,thu nhận thêm được những kiến thức sau:
 Các chuẩn giao tiếp như UART,I2C,SPI.
 Kiến thức lập trình .
 Kĩ năng phần cứng.
 Giao tiếp giữa MCU và LCD.
 Ưu điểm của sản phẩm
 Cho phép hiển thị thời gian
 Có 2 quang trở nên tạo tính tin cậy hơn cho sản phẩm.
 Sản phẩm được hoạt động theo chế đọ ưu tiên.
 Nhược điểm:
 Chưa có nút chỉnh thời gian cho khối real time
 Nếu muốn điều khiển nhiếu tải hơn,ta phải thay biến áp khác có khả năng
chịu dòng lớn hơn,chẳng hạn như biến áp xung-vừa gọn nhẹ vừa có khả
năng tải lớn.
 Hướng phát triển:
 Tạo nút hẹn giờ cho khối Real time
 Cải tiến để sản phẩm gọn nhẹ hơn.

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 17



Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c

PHẦN PHỤ LỤC
5)

Thi công mạch và lập trình

5.1) Sơ đồ khối và sơ đồ nguyên lý thực hiện phần cứng
5.2) Thi công mạch TRIAC và REALTIME CLOCK
5.3) Thi công mạch PIC 16F887
5.4) Lập trình

5.1) Sơ đồ khối và sơ đồ nguyên lý thực hiện phần cứng
5.1.1)

Sơ đồ khối

5.1.2)

Sơ đồ nguyên lý phần cứng(Zoom lên để xem rõ hơn)

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 18


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c


5.2) Thi công mạch TRIAC và REAL TIME CLOCK

5.3) Thi công mạch PIC 16F887

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 19


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c

5.4) Lập trình
5.4.1)

File main.c

5.4.2)

File rtc.c

5.4.3)

File i2c.c

5.4.4)

File rtc.h


5.4.5)

File i2c.h

5.4.1)

File main.c

/****************************************************************
*
* Do an 1
*
****************************************************************/
SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 20


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c

/****************************************************************
*
*

Module

: main_combine.c


*
Description : Display the time on LCD16x2, using Real Time Clock
DS1307 & I2C protocol
Give ADC priority
* Tool

: HI-TECH PIC

*

Chip

: 16F887

*

History

: 7/12/2011

Author

: Nguyen Van Hai, TNDVT08

*
*

*
Hardware
protocol)


: PORTD<==>LCD16x2 ; [RC3,RC4]<==>DS1307 (I2C
RA0 va RA1 la 2 chan doc ADC

*

RB0 la chan dieu khien tai

*
****************************************************************/

/****************************************************************
*

IMPORT

****************************************************************/

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 21


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c
#include <htc.h>
#include "lcd.h"
#include "i2c.h"
#include "rtc.h"


__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON &
CP_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF &
DEBUG_OFF); //1st config. Word

__CONFIG(BOR4V_BOR21V); //2st config. Word

/*****************************************************************
*

DEFINE

******************************************************************/

/*****************************************************************
*

GLOBAL VARIABLES

******************************************************************/

/*****************************************************************

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 22



Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c
*

SUBROUTINES

******************************************************************/

void delay10Tms(unsigned char T);
void time2LCD(RTCTime time);
void BCD2LCD(unsigned char val);
void system_init();
void adc_init();
void read_adc();

/*****************************************************************
*

MAIN

******************************************************************/

void main(void)
{
RTCTime TimeNow;
system_init();
while(1)
{

SVTH: Nguy n Văn H i


GVHD: Tr n Hoàng Quân

Page 23


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c
TimeNow = RTC_read();
bien,time no chua 7 byte trong ham RTC_read

// doc thoi gian vao

time2LCD(TimeNow);

// hien thi lcd

delay10Tms(100);

/*************************************************************
************************************
************Cai dat thoi gian mo tai,de phong troi da toi ma quang
tro chua lam tai ON************
*************************************************************
************************************/

if (TimeNow.hour == 0x08 && TimeNow.minute == 0x44 &&
TimeNow.second == 0x00)
RB1=1;
else
RB1=0;


adc_init();
read_adc();
RB5=~RB4;
RB6=RB4;

SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 24


Đ án 1: Đi u khi n h th ng đèn-Dùng quang tr và IC th i gian th c

/*************************************************************
*****************************************
**********************De phong truong hop troi da toi ma quang
tro chua lam tai ON ********************
*************************************************************
*****************************************/
while(RB1 && RB5) //AND voi RB5 de:Khi RB4 =1(quang tro da
lam tai ON)thi khong dung thoi gian de lam tai ON nua
{
RB0=1;

//Turn

on loads
TimeNow = RTC_read();
vao bien,time no chua 7 byte trong ham RTC_read

time2LCD(TimeNow);

// doc thoi gian
// hien thi

lcd
delay10Tms(100);
//Cai dat thoi gian lam tai OFF khi quang tro chua lam tai OFF
if (TimeNow.hour == 0x08 && TimeNow.minute == 0x45 &&
TimeNow.second == 0x00)
{
RB0=0;

//Turn

off loads
RB6=1;
RB1=0;

//thoat

khoi while
SVTH: Nguy n Văn H i

GVHD: Tr n Hoàng Quân

Page 25



×