Tài liệu Đề tài Điều khiển đèn phòng và theo dõi nhiệt độ phòng qua máy tính: Đồ Án Tốt Nghiệp
Đề Tài:
ĐIỀU KHIỂN ĐÈN PHÒNG VÀ
THEO DÕI NHIỆT ĐỘ PHÒNG QUA MÁY TÍNH
MỤC LỤC
GVHD: Thầy Phạm Quang Trí
GVHD: Thầy Phạm Quang Trí
CHƯƠNG I
TỔNG QUAN ĐỒ ÁN “ĐIỀU KHIỂN ĐÈN PHÒNG VÀ
THEO DÕI NHIỆTĐỘ PHÒNG QUA MÁY TÍNH ”
GIỚI THIỆU CHUNG
Mục đích chương
Khái quát được mục đích và yêu cầu cần thực hiện của đề tài
Mô tả đề tài
Giới hạn phạm vi nghiên cứu của đề tài
1.1.2. Các chủ đề được trình bày trong chương
Mục đích – yêu cầu
Giới thiệu về đề tài
Phạm vi nghiên cứu
MỤC ĐÍCH VÀ YÊU CẦU:
Thiết kế, lắp ráp phần cứng, viết phần mềm cho hệ thống điều khiển đèn
phòng và theo dõi nhiệt độ phòng qua máy tính. Hệ thống có khả năng điều khiển
đèn sáng tắt và đo nhiệt độ của môi trường qua giao tiếp cổng COM máy tính được
điều khiển bằng giao diện chương trình Visual Basic 6.
Nguyên lý hoạt động của mạch là điều khiển sáng tắt đèn và dùng cảm biến
nhiệt độ để đo nhiệt độ môi trường và đưa giá trị lên máy tính. Từ đó điều khiển đèn
ph...
41 trang |
Chia sẻ: tranhong10 | Lượt xem: 1251 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Điều khiển đèn phòng và theo dõi nhiệt độ phòng qua máy tính, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Đồ Án Tốt Nghiệp
Đề Tài:
ĐIỀU KHIỂN ĐÈN PHÒNG VÀ
THEO DÕI NHIỆT ĐỘ PHÒNG QUA MÁY TÍNH
MỤC LỤC
GVHD: Thầy Phạm Quang Trí
GVHD: Thầy Phạm Quang Trí
CHƯƠNG I
TỔNG QUAN ĐỒ ÁN “ĐIỀU KHIỂN ĐÈN PHÒNG VÀ
THEO DÕI NHIỆTĐỘ PHÒNG QUA MÁY TÍNH ”
GIỚI THIỆU CHUNG
Mục đích chương
Khái quát được mục đích và yêu cầu cần thực hiện của đề tài
Mô tả đề tài
Giới hạn phạm vi nghiên cứu của đề tài
1.1.2. Các chủ đề được trình bày trong chương
Mục đích – yêu cầu
Giới thiệu về đề tài
Phạm vi nghiên cứu
MỤC ĐÍCH VÀ YÊU CẦU:
Thiết kế, lắp ráp phần cứng, viết phần mềm cho hệ thống điều khiển đèn
phòng và theo dõi nhiệt độ phòng qua máy tính. Hệ thống có khả năng điều khiển
đèn sáng tắt và đo nhiệt độ của môi trường qua giao tiếp cổng COM máy tính được
điều khiển bằng giao diện chương trình Visual Basic 6.
Nguyên lý hoạt động của mạch là điều khiển sáng tắt đèn và dùng cảm biến
nhiệt độ để đo nhiệt độ môi trường và đưa giá trị lên máy tính. Từ đó điều khiển đèn
phòng sáng tắt theo ý muốn của người dùng và xem được giá trị nhiệt độ trực tiếp
của phòng qua máy tính.
Thực hiện đề tài này vừa là một cơ hội để tìm hiểu nhiều hơn, rõ ràng hơn,
cũng như ứng dụng của PIC 16F877A và cảm biến nhiệt độ DS18B20 cùng các linh
kiện khác trong thực tế. Bên cạnh đó, cũng cho thấy việc ứng dụng quan trọng của
GVHD: Thầy Phạm Quang Trí
máy tính vào trong công nghệ và cuộc sống. Đồng thời học hỏi thêm kinh nghiệm
trong việc thiết kế và lắp ráp mạch điện tử.
GIỚI THIỆU VỀ ĐỀ TÀI:
Tên đề tài:“ĐIỀU KHIỂN ĐÈN PHÒNG VÀ THEO DÕI NHIỆT ĐỘ
PHÒNG QUA MÁY TÍNH”.
Từ mục đích và yêu cầu của đề tài, chúng em xây dựng hướng đi cho đề tài
như sau:
• Sử dụng vi điều khiển PIC 16F877A làm chip điều khiển trung tâm.
• Dùng cảm biến nhiệt DS18B20 để đo nhiệt độ của môi trường.
• Sử dụng giao tiếp USART với máy tính để hiển thị nhiệt độ phòng đo
được và điều khiển đèn phòng.
• Khi nhiệt độ của một phòng vượt ngưỡng đã định thì lập tức ngắt điện
toàn bộ phòng đó.
Về chi tiết, những phần sau của đề tài sẽ được trình bày rõ ràng hơn
GIỚI HẠN CỦA ĐỀ TÀI:
Trong phạm vi của đề tài là thiết kế và thi công mạch với chức năng đo nhiệt
độ phòng và bật tắt đènphòng với sự hỗ trợ của PIC 16F877A và cảm biến nhiệt độ
DS18B20. Chức năng chính của đề tài này là điều khiển đèn từng phòngvà dùng
DS18B20 đonhiệt độ của môi trườngthông qua chức năng xử lý của PIC16F877A,
việc điều khiển và giá trị nhiệt độ được hiển thị trực tiếp trên máy tính.
GVHD: Thầy Phạm Quang Trí
CHƯƠNG II
CÁC LINH KIỆN ĐƯỢC SỬ DỤNG
2.1. GIỚI THIỆU CHUNG
Mục đích chương
• Đưa ra các linh kiện được sử dụng trong đồ án
• Chi tiết về sơ đồ cấu tạo, nguyên lý hoạt động, chức năng của các linh
kiện.
• Ứng dụng của linh kiện trong mạch để làm gì ?
2.1.2 Các chủ đề được trình bày
• Cảm biến nhiệt độ DS18B20
• PIC 16F877A
• Giao diện điều khiển, theo dõi qua máy tính
2.2 Cảm biến nhiệt độDS18B20
2.2.1 Khái quát về cảm biến nhiệt độ DS18B20
DS18B20 là một sản phẩm của công ty Dallas (Mĩ), đây cũng là công ty
đóng góp nhiều vào việc cho ra đời bus một dây và cảm biến một dây.
Hình dạng bên ngoài của cảm biến DS18B20 được mô tả trên hình vẽ sau:
GVHD: Thầy Phạm Quang Trí
DS18B20 có 3 chân chính: 2 chân cấp nguồn và 1 chân out tín hiệu digital.
Hình dạng bên ngoài của cảm biến một dây DS18B20 được mô tả trên hình vẽ,
trong đó dạng vỏ TO-92 với 3 chân là dạng thường gặp và được dùng trong nhiều
ứng dụng, còn dạng vỏ SOIC với 8 chân được dùng để đo nhiệt độ bề mặt, kể cả da
người.
Những thông số chính của DS18B20:
• DS18B20 là nhiệt kế số có độ phân giải 9-12 bit giao tiếp với vi điều
khiển trung tâm thông qua 1 dây duy nhất (1 wire communication: 1
dây thông tin liên lạc).
• DS18B20 hoạt động với điện áp từ 3V-5.5V.
• Nó có thể đo nhiệt độ trong tầm -550C - 1250C(-670F – 2570F) với độ
chính xác +-0.50C.
• Mỗi DS18B20 có một Serial code 64bits duy nhất, điều này cho phép
kết nối nhiều IC trên cùng đường bus.
Chuẩn 1 wire có những đặc điểm sau:
- Chỉ có một master trong hệ thống.
- Giá thành thấp.
- Tốc độ đạt dược tối đa 16kbps.
- Khoảng cách truyền xa nhất là 300m.
- Lượng thông tin trao đổi nhỏ.
2.2.2 Sơ đồ khối của cảm biến DS18B20:
GVHD: Thầy Phạm Quang Trí
2.2.3 Thanh ghi dữ liệu
Mỗi IC DS18B20 có một mã 64bit riêng biệt bao gồm: 8 bit Family code, 48
bit serial code và 8 bit CRC code được lưu trong Rom. Các giá trị này giúp phân
biệt giữa các IC với nhau trên cùng 1 bus. Giá trị Family code của DS18B20 là 28h
và giá trị CRC là kết quả của quá trình kiểm tra 56 bits trước đó.
Tổ chức bộ nhớ Scratchpad: Bộ nhớ DS18B20 bao gồm 9 thanh ghi 8bits
Byte 0 và 1 lưu giá trị nhiệt độ chuyển đổi.
Byte 2 và 3 lưu giá trị ngưỡng nhiệt độ (giá trị này được lưu khi mất điện).
Byte 4 là thanh ghi cấu hình cho hoạt động của DS18B20.
Byte 5,6 và 7 không sử dụng.
Byte 8 là thanh ghi chỉ đọc lưu giá trị CRC từ byte 0 đến byte 7.
Dữ liệu trong byte 2,3,4 được ghi thông qua lệnh Write Scratchpad [4Eh] và
dữ liệu được truyền đến DS18B20 với bit LSB của byte 2, sau khi ghi dữ liệu có
GVHD: Thầy Phạm Quang Trí
thểđược đọc lại thông qua lệnh Read Scratchpad [BEh] và khi đọc Scratchpad thì bit
LSB của byte 0 sẽ được gửi đi trước tất cả các byte đều được đọc, nhưng chỉ ghi
được byte 2,3 và 4. Để chuyển giá trị TH và TL từ bộ nhờ vào EEPROM thì cần gửi
lệnh Copy Scratchpad [48h] đến DS1820. Và dữ liệu từ EPROM cũng có thể được
chuyển vào thanh ghi TH,TL thông qua lệnh Recall E2 [B8h].
2.2.4 Trao đổi dữ liệu giữa vi điều khiển và DS18B20 thông qua ba bước sau:
Bước 1: Khởi tạo.
Quá trình khởi tạo bao gồm 1 xung reset do vi điều khiển master gửi đến
slave DS1820, sau đó là xung presence từ DS18B20 gửi đến vi điều khiển, để chỉ ra
sự hiện diện của vi điều khiển vàDS18B20 và quá trình hoạt động trao đổi dữ liệu
có thể bắt đầu.
Bước2: Lệnh điều khiển ROM.
Các lệnh này làm việc với 64bits serial code ROM, lệnh này được phát ra sau
quá trình khởi tạo. Lệnh cho phép vi điều khiển biết có bao nhiêu thiết bị và thiết bị
loại gì trên bus.
Bước3: Lệnh điều khiển DS1820
Sau khi vi điều khiển định địa chỉ thiết bị cần giao tiếp thông qua các lệnh
ROM, vi điều khiển sẽ gửi các lệnh điều khiển hoạt động của DS1820. Những lệnh
này cho phép vi điều khiển ghi và đọc dữ liệu từ bộ nhờ Scratchpad của DS1820,
bắt đầu quá trình chuyển đổi nhiệt độvà xác định chế độ cấp nguồn.
Có 5 lệnh điều khiển ROM:
SEARCH ROM [F0h]: Khi hệ thống bắt đầu hoạt động, thì vi điều khiển sử
dụng lệnh này để kiểm tra code ROM của tất cả các thiết bị có trên bus cho
phép vi điều khiển biết được số thiết bị và loại của thiết bị trên bus. Nếu trên
bus chỉ có 1 thiết bị thì có thể sử dụng lệnh Read_ROM thay cho lệnh
Search_ROM. Sau mỗi quá trình Search_ROM thì cần phải quay lại quá
trình khởi tạo để reset hệ thống.
READ ROM [33h]: Lệnh này được sử dụng khi chỉ có 1 thiết bị trên bus.
Lệnh này cho phép vi điều khiển đọc 64bit ROM code của thiết bị. Nếu trên
GVHD: Thầy Phạm Quang Trí
bus có nhiều thiết bị thì lệnh này sẽ gây ra sự xung đột bus dữ liệu giữa các
thiết bị.
MATCH ROM [55h]: Lệnh này theo sau bởi 64 bit ROM code cho phép vi
điều khiển định địa chỉ thiết bị cần giao tiếp. Chỉ thiết bị có ROM code phù
hợp sẽ trả lời, các thiết bị còn lại sẽ đợi xung reset tiếp theo.
SKIP ROM [CCh]: Lệnh này cho phép vi điều khiển gửi đồng thời đến tất cả
các thiết bị trên bus mà không cần bất cứ thông tin nào về ROM Code. Ví dụ,
muốn gửi lệnh Convert_T đến tất cả các thiết bị trên bus, thì đầu tiên ta gửi
lệnh Skip_ROM sau đó tiếp theo là gửi lệnh Convert_T. Tương tự như vậy,
nếu theo sau lệnh Skip_ROM là lệnh Read_Scratchpad thì dữ liệu trên
DS1820 được đọc về, và lưu ý rằng lệnh này chỉ thực hiện được khi trên bus
có 1 thiết bị, nếu trên bus có nhiều thiết bị thì sẽ gây ra xung đột bus.
ALARM SEARCH [ECh]: Lệnh này gần giống với lệnh Search_ROM,
nhưng lệnh này chỉ tác động đến thiết bị mà cờ alarm được bật lên sẽ trả lời.
Lệnh này cho phép xác định các thiết bị mà ở đó nhiệt độ đo được vượt qua
ngưỡng nhiệt độ, và sau khi lệnh này được thực thi thì vi điều khiển phải lập
lại quá trình khởi tạo.
2.2.5 Cách Đọc Giá Trị Nhiệt Độ
- Bên trong DS18B20 sẽ có bộ chuyển đổi giá trị nhiệt độ sang giá trị số và
được lưu trong các thanh thi ở bộ nhớ scratchpad. Độ phân giải nhiệt độ đo có thể
được cấu hình ở chế độ 9 bits, 10bits, 11bits, 12bits. Ở chế độ mặc định thì
DS18B20 hoạt động ở độ phân giải 12bits.
- Để bắt đầu quá trình đọc nhiệt độ, và chuyển đổi từ giá trị tương tự sang giá
trị số thì vi điều khiển gửi lênh Convert T [44h], sau khi chuyển đổi xong thì giá trị
nhiệt độ sẽ được lưu trong 2 thanh ghi nhiệt độ ở bộ nhớ scratchpad và IC trở về
trạng thái nghỉ.
GVHD: Thầy Phạm Quang Trí
- Nhiệt độ được lưu bên trong DS18B20 được tính ở nhiệt độ Celcius nếu
tính ở nhiệt độ Fahrenheit cần phải xây dựng thêm bảng chuyển đổi nhiệt độ. Giá trị
nhiệt độ lưu trong bộ nhớ gồm 2bytes-16bits: số âm sẽ được lưu dưới dạng bù 2.
- Bit cao nhất là bit dấu (S) nếu S=0 thì giá trị nhiệt độ dương và S=1 thì giá
trị nhiệt độ âm.
- Nếu cấu hình độ phân giải là 12bits thì tất cả các bit đều được sử dụng. Nếu
độ phân giải 11bits thì bit 0 không được sử dụng. Tương tự nếu cấu hình là 10bits
thì bit 1,0 không được sử dụng, nếu cấu hình là 9 bits thì bit 2,1,0 không được sử
dụng.
- Nhiệt độ sau khi được lưu vào trong 2 thanh ghi bộ nhớ sẽ được so sánh với
2 thanh ghi ngưỡng nhiệt độ TH và TL. Các giá trị ngưỡng nhiệt độ do người dùng
quy định, và nó sẽ không thay đổi khi mất điện.
- Như vậy chỉ có phần nguyên, các bit 11-4 của giá trị nhiệt độ được so sánh
với thanh ghi ngưỡng. Nếu giá trị nhiệt độ đọc về nhỏ hơn mức TL hoặc lớn hơn
mức TH thì cờ báo quá nhiệt sẽ được bật lên, và nó sẽ thay đổi ở mỗi quá trình đọc
nhiệt độ. Vi điều khiển có thể kiểm tra trạng thái quá nhiệt bằng lệnh Alarm Search
[ECh]..
GVHD: Thầy Phạm Quang Trí
2.3. PIC 16F877A:
Sơ lược về các chân của PIC16F877A :
PIC16F877A là dòng PIC phổ biến nhất hiện nay (đủ mạnh về các tính năng,
có 40 chân bộ nhớ đủ cho hầu hết các ứng dụng thông thường). Cấu trúc tổng quát
của PIC 16F877A được mô tả như sau :
− 8 K Flash ROM.
− 360 Bytes RAM.
− 256 Bytes EEPROM.
− 5 ports (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập.
− 2 bộ định thời 8 bits (Timer0 và Timer 2).
− Một bộ định thời 16 bits (Timer 1) có thể hoạt động trong chế độ tiết kiệm
năng lượng (SLEEP MODE) với nguồn xung Clock ngoài.
− 2 bộ CCP (Capture / Compartor / PWM).
GVHD: Thầy Phạm Quang Trí
− 1 bộ biến đổi AD 10 bits, 8 ngõ vào.
− 2 bộ so sánh tương tự (Compartor).
− 1 bộ định thời giám sát (WatchDog Timer).
− Một cổng song song 8 bits với các tín hiệu điều khiển.
− Một cổng nối tiếp.
− 15 nguồn ngắt.
− Có chế độ tiết kiệm năng lượng.
− Nạp chương trình bằng cổng nối tiếp ICSP (In-Circuit Serial Programming).
− Được chế tạo bằng công nghệ CMOS.
− 35 tập lệnh có độ dài 14 bits.
− Tần số hoạt động tối đa 20 MHz.
GVHD: Thầy Phạm Quang Trí
Nhận xét :
Từ sơ đồ chân và sơ đồ nguyên lý ở trên, ta rút ra nhận xét như sau:
PIC 16F877A có tất cả 40 chân.
40 chân được chia thành 5 port, 2 chân cấp nguồn, 2 chân mass, 2 chân thạch
anh và 1 chân RESET.
5 PORT của PIC 16F877A bao gồm:
• PORT A : 6 chân
• PORT B : 8 chân
• PORT C : 8 chân
• PORT D : 8 chân
GVHD: Thầy Phạm Quang Trí
• PORT E : 3 chân
Sơ đồ khối của PIC 16F877A:
Sơ đồ khối bao gồm các khối chức năng cơ bản sau :
Khối ALU : Arithmetic Logic Unit.
Khối bộ nhớ chương trình : Flash Program Menmory
Bộ nhớ file thanh ghi RAM: RAM File Register.
Khối giải mã lệnh và điều khiển: Instruction Decode Control.
Khối thanh ghi đặc biệt.
Khối ngoại vi timer.
Khối giao tiếp nối tiếp.
Khối chuyển đổi tín hiệu tương tự sang số ADC.
Khối các PORT xuất nhập.
GVHD: Thầy Phạm Quang Trí
GVHD: Thầy Phạm Quang Trí
Ưu điểm của PIC 16F877A so với các loại vi xử lý khác :
Chỉ cần xét qua các PORT và chức năng của các PORT ta có thể nhận thấy
ưu điểm vượt trội của nó so với các dòng vi sử lý khác
Tập lệnh ít: chỉ gồm 35 lệnh đơn.
Tốc độ xử lý cao.
Dung lượng bộ nhớ lớn.
Có thể lập trình bảo mật.
Có thể hoạt động ở chế độ Sleep để tiết kiệm năng lượng.
Có thể lựa chọn bộ giao động.
Bộ nhớ EEPROM có thể lưu trữ dữ liệu hơn 40 năm.
Trên đây là một vài chức năng cơ bản cũng như ưu điểm của PIC16F877A,
để biết chi tiết về cấu tạo cũng như nguyên lý hoạt động, cùng nguyên lý xử lý dữ
liệu của PIC ta có thể đọc datasheet để hiểu rõ hơn( ở thư mục “tài liệu tham khảo”
có trình bày).
2.4. GIAO TIẾP VỚI MÁY TÍNH USART:
USART (Universal Synchronous Asynchronous Receiver Transmitter) là một
trong hai chuẩn giao tiếp nối tiếp. USART còn được gọi là giao diện giao tiếp nối
tiếp SCI (Serial Communication Interface). Có thể sử dụng giao diện này cho các
giao tiếp với các thiết bị ngoại vi, với các vi điều khiển khác hay với máy tính. Các
dạng của giao diện USART ngọai vi bao gồm:
Bất động bộ (Asynchronous).
Đồng bộ_ Master mode.
Đồng bộ_ Slave mode.
Hai chân dùng cho giao diện này là RC6/TX/CK và RC7/RX/DT, trong đó
RC6/TX/CK dùng để truyền xung clock (baud rate) và RC7/RX/DT dùng để truyền
data. Trong trường hợp này ta phải set bit TRISC và SPEN (RCSTA) để
cho phép giao diện USART.
PIC16F877A được tích hợp sẵn bộ tạo tốc độ baud BRG (Baud Rate
Genetator) 8bit dùng cho giao diện USART. BRG thực chất là một bộ đếm có thể
GVHD: Thầy Phạm Quang Trí
được sử dụng cho cả hai dạng đồng bộ và bất đồng bộ và được điều khiển bởi thanh
ghi PSBRG. Ở dạng bất đồng bộ, BRG còn được điều khiển bởi bit BRGH
(TXSTA). Ở dạng đồng bộ tác động của bit BRGH được bỏ qua. Tốc độ baud
do BRG tạo ra được tính theo công thức sau:
Trong đó X là giá trị của thanh ghi RSBRG ( X là số nguyên và 0<X<255).
Các thanh ghi liên quan đến BRG bao gồm:
TXSTA (địa chỉ 98h): chọn chế độ đòng bộ hay bất đồng bộ ( bit SYNC) và chọn
mức tốc độ baud (bit BRGH).
RCSTA (địa chỉ 18h): cho phép hoạt động cổng nối tiếp (bit SPEN).
RSBRG (địa chỉ 99h): quyết định tốc độ baud.
2.4.1 USART BẤT ĐỒNG BỘ
Ở chế độ truyền này USART hoạt động theo chuẩn NRZ (None-Return-to-
Zero), nghĩa là các bit truyền đi sẽ bao gồm 1 bit Start, 8 hay 9 bit dữ liệu (thông
thường là 8 bit) và 1 bit Stop. Bit LSB sẽ được truyền đi trước. Các khối truyền và
nhận data độc lập với nhau sẽ dùng chung tần số tương ứng với tốc độ baud cho quá
trình dịch dữ liệu (tốc độ baud gấp 16 hay 64 lần tốc độ dịch dữ liệu tùy theo giá trị
của bit BRGH), và để đảm bảo tính hiệu quả của dữ liệu thì hai khối truyền và nhận
phải dùng chung một định dạng dữ liệu.
2.4.1.1 TRUYỀN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART BẤT ĐỒNG
BỘ
Thành phần quan trọng nhất của khối truyền dữ liệu là thanh ghi dịch dữ liệu
TSR (Transmit Shift Register). Thanh ghi TSR sẽ lấy dữ liệu từ thanh ghi đệm dùng
cho quá trình truyền dữ liệu TXREG. Dữ liệu cần truyền phải đựơc đưa trước vào
thanh ghi TXREG. Ngay sau khi bit Stop của dữ liệu cần truyền trước đó được
truyền xong, dữ liệu từ thanh ghi TXREG sẽ được đưa vào thanh ghi TSR, thanh
ghi TXREG bị rỗng, ngắt xảy ra và cờ hiệu TXIF (PIR1) được set. Ngắt này
được điều khiển bởi bit TXIE (PIE1). Cờ hiệu TXIF vẫn được set bất chấp trạng
GVHD: Thầy Phạm Quang Trí
thái của bit TXIE hay tác động của chương trình (không thể xóa TXIF bằng chương
trình) mà chỉ reset về 0 khi có dữ liệu mới được đưa vào thanhh ghi TXREG.
Hình 2.4aSơ đồ khối của khối truyền dữ liệu USART
Trong khi cờ hiệu TXIF đóng vai trò chỉ thị trạng thái thanh ghi TXREG thì cờ hiệu
TRMT (TXSTA) có nhiệm vụ thể hiện trạng thái thanh ghi TSR. Khi thanh ghi
TSR rỗng, bit TRMT sẽ được set. Bit này chỉ đọc và không có ngắt nào được gắn
với trạng thái của nó. Một điểm cần chú ý nữa là thanh ghi TSR không có trong bộ
nhớ dữ liệu và chỉ được điều khiển bởi CPU.
Khối truyền dữ liệu được cho phép hoạt động khi bit TXEN (TXSTA)
được set. Quá trình truyền dữ liệu chỉ thực sự bắt đầu khi đã có dữ liệu trong thanh
ghi TXREG và xung truyền baud được tạo ra. Khi khối truyền dữ liệu được khởi
động lần đầu tiên, thanh ghi TSR rỗng. Tại thời điểm đó, dữ liệu đưa vào thanh ghi
TXREG ngay lập tức được load vào thanh ghi TSR và thanh ghi TXREG bị rỗng.
Lúc này ta có thể hình thành một chuỗi dữ liệu liên tục cho quá trình truyền dữ liệu.
Trong quá trình truyền dữ liệu nếu bit TXEN bị reset về 0, quá trình truyền kết thúc,
khối truyền dữ liệu được reset và pin RC6/TX/CK chuyển đến trạng thái high-
impedance.
Trong trường hợp dữ liệu cần truyền là 9 bit, bit TX9 (TXSTA) được set
và bit dữ liệu thứ 9 sẽ được lưu trong bit TX9D (TXSTA). Nên ghi bit dữ liệu
thứ 9 vào trước, vì khi ghi 8 bit dữ liệu vào thanh ghi TXREG trước có thể xảy ra
GVHD: Thầy Phạm Quang Trí
trường hợp nội dung thanh ghi TXREG sẽ được load vào thanh ghi TSG trước, như
vậy dữ liệu truyền đi sẽ bị sai khác so với yêu cầu.
Tóm lại, để truyền dữ liệu theo giao diện USART bất đồng bộ, ta cần thực
hiện tuần tự các bước sau:
1. Tạo xung truyền baud bằng cách đưa các giá trị cần thiết vào thanh
ghi RSBRG và bit điều khiển mức tốc độ baud BRGH.
2. Cho phép cổng giao diện nối tiếp nối tiếp bất đồng bộ bằng cách clear
bit SYNC và set bit PSEN.
3. Set bit TXIE nếu cần sử dụng ngắt truyền.
4. Set bit TX9 nếu định dạng dữ liệu cần truyền là 9 bit.
5. Set bit TXEN để cho phép truyền dữ liệu (lúc này bit TXIF cũng sẽ
được set).
6. Nếu định dạng dữ liệu là 9 bit, đưa bit dữ liệu thứ 9 vào bit TX9D.
7. Đưa 8 bit dữ liệu cần truyền vảo thanh ghi TXREG.
8. Nếu sử dụng ngắt truyền, cần kiểm tra lại các bit GIE và PEIE (thanh
ghi INTCON).
Các thanh ghi liên quan đến quá trình truyền dữ liệu bằng giao diện USART
bất đồng bộ:
Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép tất cả các
ngắt.
Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu TXIF.
Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt truyền TXIE.
Thanh ghi RCSTA (địa chỉ 18h): chứa bit cho phép cổng truyền dữ liệu (hai
pin RC6/TX/CK và RC7/RX/DT).
Thanh ghi TXREG (địa chỉ 19h): thanh ghi chứa dữ liệu cần truyền.
Thanh ghi TXSTA (địa chỉ 98h): xác lập các thông số cho giao diện.
Thanh ghi SPBRG (địa chỉ 99h): quyết định tốc độ baud.
2.4.1.2 NHẬN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART BẤT ĐỒNG BỘ
Dữ liệu được đưa vào từ chân RC7/RX/DT sẽ kích hoạt khối phục hồi dữ
GVHD: Thầy Phạm Quang Trí
liệu. Khối phục hồi dữ liệu thực chất là một bộ dịch dữ liệu có tốc độ cao và có tần
số hoạt động gấp 16 lần hoặc 64 lần tần số baud. Trong khi đó tốc độ dịch của thanh
ghi nhận dữ liệu sẽ bằng với tần số baud hoặc tần số của oscillator.
Hình 2.4b Sơ đồ khối của khối nhận dữ liệu USART
Bit điều khiển cho phép khối nhận dữ liệu là bit RCEN (RCSTA). Thành
phần quan trọng nhất của khối nhận dữ liệu là thanh ghi nhận dữ liệu RSR (Receive
Shift Register). Sau khi nhận diện bit Stop của dữ liệu truyền tới, dữ liệu nhận được
trong thanh ghi RSR sẽ được đưa vào thanh ghi RCGER, sau đó cờ hiệu RCIF
(PIR1) sẽ được set và ngắt nhận được kích hoạt. Ngắt này được điều khiển bởi
bit RCIE (PIE1). Bit cờ hiệu RCIF là bit chỉ đọc và không thể được tác động
bởi chương trình. RCIF chỉ reset về 0 khi dữ liệu nhận vào ở thanh ghi RCREG đã
được đọc và khi đó thanh ghi RCREG rỗng. Thanh ghi RCREG là thanh ghi có bộ
đệm kép (double-buffered register) và hoạt động theo cơ chế FIFO (First In First
Out) cho phép nhận 2 byte và byte thứ 3 tiếp tục được đưa vào thanh ghi RSR.
Nếu sau khi nhận được bit Stop của byte dữ liệu thứ 3 mà thanh ghi RCREG
vẫn còn đầy, cờ hiệu báo tràn dữ liệu (Overrun Error bit) OERR(RCSTA) sẽ
được set, dữ liệu trong thanh ghi RSR sẽ bị mất đi và quá trình đưa dữ liệu từ thanh
ghi RSR vào thanh ghi RCREG sẽ bị gián đoạn. Trong trường hợp này cần lấy hết
dữ liệu ở thanh ghi RSREG vào trước khi tiếp tục nhận byte dữ liệu tiếp theo. Bit
GVHD: Thầy Phạm Quang Trí
OERR phải được xóa bằng phần mềm và thực hiện bằng cách clear bit RCEN rồi
set lại.
Tóm lại, khi sử dụng giao diện nhận dữ liệu USART bất đồng bộ cần tiến
hành tuần tự các bước sau:
1. Thiết lập tốc độ baud (đưa giá trị thích hợp vào thanh ghi SPBRG và
bit BRGH.
2. Cho phép cổng giao tiếp USART bất đồng bộ (clear bit SYNC và set
bit SPEN).
3. Nếu cần sử dụng ngắt nhận dữ liệu, set bit RCIE.
4. Nếu dữ liệu truyền nhận có định dạng là 9 bit, set bit RX9.
5. Cho phép nhận dữ liệu bằng cách set bit CREN.
6. Sau khi dữ liệu được nhận, bit RCIF sẽ được set và ngắt được kích
hoạt (nếu bit RCIE được set).
7. Đọc giá trị thanh ghi RCSTA để đọc bit dữ liệu thứ 9 và kiểm tra xem
quá trình nhận dữ liệu có bị lỗi không.
8. Đọc 8 bit dữ liệu từ thanh ghi RCREG.
9. Nếu quá trình truyền nhận có lỗi xảy ra, xóa lỗi bằng cách xóa bit
CREN.
10. Nếu sử dụng ngắt nhận cần set bit GIE và PEIE (thanh ghi INTCON).
Các thanh ghi liên quan đến quá trình nhận dữ liệu bằng giao diện USART
bất đồng bộ:
Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): chứa các bit cho phép
toàn bộ các ngắt (bit GIER và PEIE).
Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu RCIE.
Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt RCIE.
Thanh ghi RCSTA (địa chỉ 18h): xác định các trang thái trong quá trình nhận
dữ liệu.
Thanh ghi RCREG (địa chỉ 1Ah): chứa dữ liệu nhận được.
Thanh ghi TXSTA (địa chỉ 98h): chứa các bit điều khiển SYNC và BRGH.
Thanh ghi SPBRG (địa chỉ 99h): điều khiển tốc độ baud.
GVHD: Thầy Phạm Quang Trí
2.4.2 USART ĐỒNG BỘ
Giao diện USART đồng bộ được kích hoạt bằng cách set bit SYNC. Cổng
giao tiếp nối tiếp vẫn là hai chân RC7/RX/DT, RC6/TX/CK và được cho phép bằng
cách set bit SPEN. USART cho phép hai chế độ truyền nhận dữ liệu là Master mode
và Slave mode. Master mode được kích hoạt bằng cách set bit CSRC (TXSTA),
Slave mode được kích hoạt bằng cách clear bit CSRC. Điểm khác biệt duy nhất
giữa hai chế độ này là Master mode sẽ lấy xung clock đồng bộ từ bộ tao xung baud
BRG còn Slave mode lấy xung clock đồng bộ từ bên ngoài qua chân RC6/TX/CK.
Điều này cho phép Slave mode hoạt động ngay cả khi vi điều khiển đang ở chế độ
sleep.
2.4.2.1 TRUYỀN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ
MASTER MODE
Tương tự như giao diện USART bất đồng bộ, thành phần quan trọng nhất của
hối truyền dữ liệu là thanh ghi dịch TSR (Transmit Shift Register). Thanh ghi này
chỉ được điều khiển bởi CPU. Dữ liệu đưa vào thanh ghi TSR được chứa trong
thanh ghi TXREG. Cờ hiệu của khối truyền dữ liệu là bit TXIF (chỉ thị trang thái
thanh ghi TXREG), cờ hiệu này được gắn với một ngắt và bit điều khiển ngắt này là
TXIE. Cờ hiệu chỉ thị trạng thái thanh ghi TSR là bit TRMT. Bit TXEN cho phép
hay không cho phép truyền dữ liệu.
Các bước cần tiến hành khi truyền dữ liệu qua giao diện USART đồng bộ
Master mode:
1. Tạo xung truyền baud bằng cách đưa các giá trị cần thiết vào thanh ghi
RSBRG vàbit điều khiển mức tốc độ baud BRGH.
2. Cho phép cổng giao diện nối tiếp nối tiếp đồng bộ bằng cách set bit
SYNC, PSENvà CSRC.
3. Set bit TXIE nếu cần sử dụng ngắt truyền.
4. Set bit TX9 nếu định dạng dữ liệu cần truyền là 9 bit.
5. Set bit TXEN để cho phép truyền dữ liệu.
6. Nếu định dạng dữ liệu là 9 bit, đưa bit dữ liệu thứ 9 vào bit TX9D.
7. Đưa 8 bit dữ liệu cần truyền vào thanh ghi TXREG.
8. Nếu sử dụng ngắt truyền, cần kiểm tra lại các bit GIE và PEIE (thanh
GVHD: Thầy Phạm Quang Trí
ghi INTCON).
Các thanh ghi liên quan đến quá trình truyền dữ liệu bằng giao diện USART
đồng bộ Master mode:
Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép tất cả các
ngắt.
Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu TXI
Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt truyền TXIE.
Thanh ghi RCSTA (địa chỉ 18h): chứa bit cho phép cổng truyền dữ liệu (hai
pinRC6/TX/CK và RC7/RX/DT).
Thanh ghi TXREG (địa chỉ 19h): thanh ghi chứa dữ liệu cần truyền.
Thanh ghi TXSTA (địa chỉ 98h): xác lập các thông số cho giao diện.
Thanh ghi SPBRG (địa chỉ 99h): quyết định tốc độ baud
2.4.2.2 NHẬN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ
MASTER MODE
Cấu trúc khối truyền dữ liệu là không đổi so với giao diện bất đồng bộ, kể cả
các cờ hiệu,ngắt nhận và các thao tác trên các thành phần đó. Điểm khác biệt duy
nhất là giao diện nàycho phép hai chế độ nhận sữ liệu, đó là chỉ nhận 1 word dữ liệu
(set bit SCEN) hay nhận một chuỗi dữ liệu (set bit CREN) cho tới khi ta clear bit
CREN. Nếu cả hai bit đều được set, bitđiều khiển CREN sẽ được ưu tiên.
Các bước cần tiến hành khi nhận dữ liệu bằng giao diện USART đồng bộ
Master mode:
1. Thiết lập tốc độ baud (đưa giá trị thích hợp vào thanh ghi SPBRG và
bit BRGH).
2. Cho phép cổng giao tiếp USART bất đồng bộ (set bit SYNC, SPEN
và CSRC).
3. Clear bit CREN và SREN.
4. Nếu cần sử dụng ngắt nhận dữ liệu, set bit RCIE.
5. Nếu dữ liệu truyền nhận có định dạng là 9 bit, set bit RX9.
6. Nếu chỉ nhận 1 word dữ liệu, set bit SREN, nếu nhận 1 chuỗi word dữ
liệu, set bitCREN.
7. Sau khi dữ liệu được nhận, bit RCIF sẽ được set và ngắt được kích
GVHD: Thầy Phạm Quang Trí
hoạt (nếu bitRCIE được set).
8. Đọc giá trị thanh ghi RCSTA để đọc bit dữ liệu thứ 9 và kiểm tra xem
quá trìnhnhận dữ liệu có bị lỗi không.
9. Đọc 8 bit dữ liệu từ thanh ghi RCREG.
10. Nếu quá trình truyền nhận có lỗi xảy ra, xóa lỗi bằng cách xóa bit
CREN.
11. Nếu sử dụng ngắt nhận cần set bit GIE và PEIE (thanh ghi INTCON).
Các thanh ghi liên quan đến quá trình nhận dữ liệu bằng giao diện USART
đồng bộ Master mode:
Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): chứa các bit cho phép
toàn bộ các ngắt (bit GIER và PEIE). Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu
RCIE.
Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt RCIE.
Thanh ghi RCSTA (địa chỉ 18 h): xác định các trang thái trong quá trình nhận
dữ liệu.
Thanh ghi RCREG (địa chỉ 1Ah): chứa dữ liệu nhận được.
Thanh ghi TXSTA (địa chỉ 98h): chứa các bit điều khiển SYNC và BRGH.
Thanh ghi SPBRG (địa chỉ 99h): điều khiển tốc độ baud.
2.4.2.3 TRUYỀN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ
SLAVE MODE
Quá trình này không có sự khác biệt so với Master mode khi vi điều khiển
hoạt động ở chế độ bình thường. Tuy nhiên khi vi điều khiển đang ở trạng thái
sleep, sự khác biệt được thể hiện rõ ràng. Nếu có hai word dữ liệu được đưa vào
thanh ghi TXREG trước khi lệnh sleep được thực thi thì quá trình sau sẽ xảy ra:
1. Word dữ liệu đầu tiên sẽ ngay lập tức được đưa vào thanh ghi TSR để
truyền đi.
2. Word dữ liệu thứ hai vẫn nằm trong thanh ghi TXREG.
3. Cờ hiệu TXIF sẽ không được set.
4. Sau khi word dữ liệu đầu tiên đã dịch ra khỏi thanh ghi TSR, thanh
GVHD: Thầy Phạm Quang Trí
ghi TXREG tiếp tục truyền word thứ hai vào thanh ghi TSR và cờ hiệu TXIF được
set.
5. Nếu ngắt truyền được cho phép hoạt động, ngắt này sẽ đánh thức vi
điều khiển và nếu toàn bộ các ngắt được cho phép hoạt động, bộ đếm chương trình
sẽ chỉ tới địa chỉ chứa chương trình ngắt (0004h).
Các bước cần tiến hành khi truyền dữ liệu bằng giao diện USART đồng bộ
Slave mode:
1. Set bit SYNC, SPEN và clear bit CSRC.
2. Clear bit CREN và SREN.
3. Nếu cần sử dụng ngắt, set bit TXIE.
4. Nếu định dạng dữ liệu là 9 bit, set bit TX9.
5. Set bit TXEN.
6. Đưa bit dữ liệu thứ 9 vào bit TX9D trước (nếu định dạng dữ liệu là 9
bit).
7. Đưa 8 bit dữ liệu vào thanh ghi TXREG.
8. Nếu ngắt truyền được sử dụng, set bit GIE và PEIE (thanh ghi
INTCON).
Các thanh ghi liên quan đến quá trình truyền dữ liệu bằng giao diện USART
đồng bộ Slave mode:
Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép tất cả các
ngắt.
Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu TXIF.
Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt truyền TXIE.
Thanh ghi RCSTA (địa chỉ 18h): chứa bit cho phép cổng truyền dữ liệu (hai
pinRC6/TX/CK và RC7/RX/DT).
Thanh ghi TXREG (địa chỉ 19h): thanh ghi chứa dữ liệu cần truyền.
Thanh ghi TXSTA (địa chỉ 98h): xác lập các thông số cho giao diện.
Thanh ghi SPBRG (địa chỉ 99h): quyết định tốc độ baud.
2.4.2.4 NHẬN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ
SLAVEMODE
Sự khác biệt của Slave mode so với Master mode chỉ thể hiện rõ ràng khi vi
GVHD: Thầy Phạm Quang Trí
điều khiển hoạt động ở chế độ sleep. Ngoài ra chế độ Slave mode không quan tâm
tới bit SREN.
Khi bit CREN (cho phép nhận chuỗi dữ liệu) được set trước khi lệnh sleep
được thực thi, 1 word dữ liệu vẫn được tiếp tục nhận, sau khi nhận xong bit thanh
ghi RSR sẽ chuyển dữ liệu vào thanh ghi RCREG và bit RCIF được set. Nếu bit
RCIE (cho phép ngắt nhận) đã được set trước đó, ngắt sẽ được thực thi và vi điều
khiển được “đánh thức, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h và chương
trình ngắt sẽ được thực thi.
Các bước cần tiến hành khi nhận dữ liệu bằng giao diện USART đồng bộ
Slave mode:
1. Cho phép cổng giao tiếp USART bất đồng bộ (set bit SYNC, SPEN
clear bit CSRC).
2. Nếu cần sử dụng ngắt nhận dữ liệu, set bit RCIE.
3. Nếu dữ liệu truyền nhận có định dạng là 9 bit, set bit RX9.
4. Set bit CREN để cho phép quá trình nhận dữ liệu bắt đầu.
5. Sau khi dữ liệu được nhận, bit RCIF sẽ được set và ngắt được kích
hoạt (nếu bit RCIE được set).
6. Đọc giá trị thanh ghi RCSTA để đọc bit dữ liệu thứ 9 và kiểm tra xem
quá trình nhận dữ liệu có bị lỗi không.
7. Đọc 8 bit dữ liệu từ thanh ghi RCREG.
8. Nếu quá trình truyền nhận có lỗi xảy ra, xóa lỗi bằng cách xóa bit
CREN.
9. Nếu sử dụng ngắt nhận cần set bit GIE và PEIE (thanh ghi INTCON).
Các thanh ghi liên quan đến quá trình nhận dữ liệu bằng giao diện USART
đồng bộ Slave mode:
Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): chứa các bit cho phép
toàn bộ các ngắt (bit GIER và PEIE).
Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu RCIE.
Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt RCIE.
Thanh ghi RCSTA (địa chỉ 18h): xác định các trang thái trong quá trình nhận
dữ liệu.
GVHD: Thầy Phạm Quang Trí
Thanh ghi RCREG (địa chỉ 1Ah): chứa dữ liệu nhận được.
Thanh ghi TXSTA (địa chỉ 98h): chứa các bit điều khiển SYNC và BRGH.
Thanh ghi SPBRG (địa chỉ 99h): điều khiển tốc độ baud.
CHƯƠNG III
SƠ ĐỒ KHỐI – NGUYÊN LÝ HOẠT ĐỘNG CỦA MẠCH
3.1 GIỚI THIỆU CHUNG
3.1.1 Mục đích chương
• Xây dựng sơ đồ khối với các chức năng cụ thể
• Thiết kế sơ phần cứng thực hiện các chức năng của mạch
3.1.2. Các chủ đề được trình bày trong chương
• Sơ đồ khối tổng quát
• Sơ đồ nguyên lý hoạt động
• Giải thích nguyên lý hoạt động
SƠ ĐỒ KHỐI TỔNG QUÁT :
GVHD: Thầy Phạm Quang Trí
GVHD: Thầy Phạm Quang Trí
3.2 SƠ ĐỒ NGUYÊN LÝ HOẠT ĐỘNG :
3.3GIẢI THÍCH NGUYÊN LÝ HOẠT ĐỘNG :
3.3.1 Khối điều khiển bóng đèn :
Sơ đồ nguyên lý :
GVHD: Thầy Phạm Quang Trí
Nguyên lý hoạt động :
Lúc đầu TB1 và TB2 ở mức 1 thì transistor Q1 và Q2 ngưng dẫn, không có
dòng qua cuộn cảm rờ-le RL1 và RL2 nên rờ -le không hoạt động.
Khi TB1 và TB2 mức 0 thì transistor Q1 và Q2 sẽ dẫn. Lúc này sẽ có dòng
điện vào cuộn cảm của rờ-le RL1 hoặc RL2 nên rờ-le sẽ hoạt động.
3.3.2. Khối vi xử lý PIC16F877A:
Sơ đồ nguyên lý:
GVHD: Thầy Phạm Quang Trí
Giải thích kết nối:
Chân 2 của PIC được nối với ngõ ra của DS18B20 để nhận dữ liệu khi nhiệt
độ thay đổi.
Chân 25, 26 được kết nối với khối giao tiếp máy tính để xuất tín hiệu lên
màn hình máy vi tính.
Chân 33, 34 nối với khối điều khiển bóng đèn.
Giải thuật sử lý dữ liệu của PIC 16F877A :
Xử lý dữ liệu sau khi nhận được từ DS18B20.
Dữ liệu sẽ được xử lý trong vi điều khiển PIC.
Sau đó dữ liệu sẽ được đưa vào khối giao tiếp trên máy tính.
Kết quả cuối cùng sẽ được hiển thị trên máy tính từ đó điều khiển việc sáng
tắt bóng đèn ở các phòng và theo dõi được giá trị nhiệt độ của phòng.
3.3.3. Khối cảm biến DS18B20:
Sơ đồ nguyên lý:
Giải thích kết nối :
GVHD: Thầy Phạm Quang Trí
Cắm bus 3 vào DS18B20 có 3 đường dây: 1 dây tín hiệu , 1 dây nguồn và 1
dây mass.
3.3.4. Khối giao tiếp với máy tính:
Sơ đồ nguyên lý :
Nguyên lý hoạt động:
Max 232 nhận dữ liệu từ PIC thông qua các chân 11, 12.
Sau đó dữ liệu được truyền qua cổng COM bằng các chân 13, 14.
CHƯƠNG IV
CÁC BƯỚC TIẾN HÀNH LẮP RÁP PHẦN MẠCH
4.1 PHẦN CỨNG :
4.1.1: Dụng cụ sử dụng:
Phần mềm ocard.
Đồng hồ VOM.
Mỏ hàn, chì , kiềm.
Mạch in, linh kiện.
GVHD: Thầy Phạm Quang Trí
4.1.2 Thi công lắp ráp mạch:
4.1.2.1 Phân tích sơ đồ nguyên lý:
Mạch nguyên lý và mạch in được vẽ bằng phần mềm Proteus, mạch in được
thiết kế 1 lớp để đi dây đơn giản, kích thước mạch nhỏ gọn.
4.1.2.2 Gia công mạch:
Sau khi phân tích sơ đồ nguyên lý và vẽ mạch in, ta đem ngâm mạch và tiến
hành khoan lỗ đặt chân linh kiện. Sau đó ráp linh kiện vào đúng vị trí theo như sơ
đồ nguyên lý . Tiến hành hàn chân linh kiện vào mạch in. Quá trình này cần chính
xác, cẩn thận để tránh làm hỏng linh kiện và làm mạch in được đẹp hơn.
4.1.2.3 Chạy thử và cân chỉnh mạch:
Cấp nguồn cho mạch,dùng một nguồn nhiệt để gần cảm biến xem thử có sự
thay đổi nhiệt độ của con DS18B20 từ đó kết luận cảm biến có hoạt động không.
Nếu giá trị nhiệt độ được hiển thị trên máy tính và đèn phòng sáng thì mạch đã hoạt
động.
Cảm biến nhiệt được bố trí bên ngoài bảng mạch để có thể đặt tại những nơi
nhạy cảm với nhiệt nhất. Trong trường hợp cần nối dài cảm biến, dây tín hiệu dùng
loại bọc kim tránh nhiễu.
4.2 PHẦN MỀM:
Dùng chương trình CCS để viết code cho PIC 16F877A.
4.3 CODE PHẦN MỀM CHO MẠCH
//DO NHIET DO PHONG VA GIAO TIEP QUA MAY TINH
/*
==============================================
- Sinh vien: TRAN NHAT QUANG - DO MANH TIEN
- VI DIEU KHIEN PIC 16F877A
*/
#include //truy xuat vao file dinh nghia PIC 16F877A
#FUSES NOWDT,HS,PUT,NOPROTECT,NODEBUG, BROWNOUT, NOLVP,
NOCPD, NOWRT //cau hinh cho pic
#use delay(clock=4M) //tan so thach anh xu dung 4M
GVHD: Thầy Phạm Quang Trí
#include //fila dinh kem
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, stream=MYPC) // khai bao
giao tiep noi tiep rs232
#define TB1 PIN_B0 // THIET BI 1
#define TB2 PIN_B1 // THIET BI 2
#define CB1 254 // ma truyen gia tri nhiet do cua cam bien 1
#define CB2 253 // ma truyen gia tri nhiet do cua cam bien 2
#define MTB 252 // ma truyen trang thai cua cac thiet bi
byte ROM1[8]={0x28,0xC0,0x2F,0xC9,0x03,0x00,0x00,0x58}; // rom cam bien 1
byte ROM2[8]={0x28,0x7A,0x3D,0xC9,0x03,0x00,0x00,0x6F}; // rom cam bien 2
byte tam1,tam2;
int8 tmp, TB=0;
int16 nguyen,T1,T2;
//========================================
#INT_RDA // ngat noi tiep
void Receive_isr() //ctc phuc vu ngat noi tiep
{
TB=getc(); // TB co gia tri du lieu nhan duoc
}
//========================================
void truyen() // chuong trinh truyen du lieu len may tinh
{
putc (MTB);
putc (TB); // truyen trang thai thiet bi
putc (CB1);
putc (T1); // truyen nhiet do 1
putc (CB2);
putc (T2); // truyen nhiet do 2
}
GVHD: Thầy Phạm Quang Trí
//========================================
void main()
{
enable_interrupts (INT_RDA); // cho phep ngat noi tiep
enable_interrupts (GLOBAL); // cho phep ngat
while(TRUE)
{
onewire_reset(); // lenh reset one write
onewire_write(0xCC); // lenh Skip Rom
onewire_write(0x44); // lenh chuyen doi nhiet do
delay_ms(750); // tao thoi gian tre cho chuyen doi xong
onewire_reset(); // lenh reset one write
onewire_write(0x55); // lenh Match ROM
write_matchROM(ROM1); // ghi 64 bit rom
onewire_write(0xBE); // lenh doc bo nho nhap
tam1= onewire_read(); // doc 2 byte dau tien chua gia tri nhiet do
tam2= onewire_read();
T1 = make16(tam2, tam1); // ghep 2 byte thap cao thanh 16 bit
//---------------------------------------------
if (bit_test(T1, 15)) // kiem tra duong am
T1 = ~T1 + 1; // neu la so am thi dao nguoc gia tri va cong them 1
tmp = T1&0xF;
nguyen = T1 >> 4 ;
if (tmp == 0xFF)
nguyen = nguyen + 1;
T1=nguyen;
//---------------------------------------------
onewire_reset(); // lenh reset one write
onewire_write(0x55);
write_matchROM(ROM2);
GVHD: Thầy Phạm Quang Trí
onewire_write(0xBE); // lenh doc bo nho nhap
tam1= onewire_read(); // doc 2 byte dau tien chua gia tri nhiet do
tam2= onewire_read();
T2 = make16(tam2, tam1); // ghep 2 byte thap cao thanh 16 bit
//---------------------------------------------
if (bit_test(T2, 15))
T2 = ~T2 + 1;
tmp = T2&0xF;
nguyen = T2 >> 4 ;
if (tmp == 0xFF)
nguyen = nguyen + 1; // hieu chinh lai phan nguyen khi nhiet do am
T2 = nguyen;
//---------------------------------------------
if (T1 > 60) //
{
TB=3;
output_high (TB1); // dua chan len muc cao
}
if (T2 > 60)
{
TB=4;
output_high (TB2); // dua chan len muc cao
}
if (T1 > 60 && T2 > 60)
{
TB=0;
}
if ( TB==0 )
{
output_high (TB1); // dua chan len muc cao
output_high (TB2); // dua chan len muc cao
GVHD: Thầy Phạm Quang Trí
}
else
if ( TB==1 )
output_low (TB1); // dua chan xuong muc thap
else
if ( TB==2 )
output_low (TB2); // dua chan xuong muc thap
else
if ( TB==3 )
output_high (TB1); // dua chan len muc cao
else
if ( TB==4 )
output_high (TB2); // dua chan len muc cao
truyen();
}// while (TRUE)
}//main
Chương trình con: OneWire 1.c
#define DQ PIN_A0
//========================================
//========================================
void onewire_reset()
{
output_low(DQ);
delay_us( 500 ); // keo 1-wire xuong thap de reset
output_float(DQ); // tha 1-wire len muc cao
delay_us( 250 ); // cho 1-wire san sang
}
GVHD: Thầy Phạm Quang Trí
//========================================
int8 onewire_read(void)
{
int i, value; // khai bao bien dem va bien du lieu
for (i=0; i<8; ++i) // Lap lai 8 lan
{
output_low(DQ); // dua chan 1 wire xuong thap
output_float(DQ); // tha chan 1 wire len cao
shift_right(&value,1,input(DQ)); // nhan du lieu tu 1 wire.
delay_us( 60 ); // cho 1 wire san sang
}
return( value ); //tra ve ket qua cho chuong trinh chinh
}
//========================================
void onewire_write(int8 value)
{
int i; // khai bao bien dem
for (i=0; i<8; ++i) // Lap lai 8 lan
{
output_low(DQ); // dua chan 1 wire xuong thap
output_bit(DQ, shift_right(&value,1,0)); // xuat tung bit du lieu tu 0 - 8
delay_us(60); // tao tre 60us
output_float(DQ); // dua 1-wire len muc cao,
}
}
//========================================
//========================================
void write_matchROM(byte R[8])
{
byte i;
for(i=0; i<=7; i++){
GVHD: Thầy Phạm Quang Trí
onewire_write(R[i]);
}
}
PHẦN KẾT LUẬN
5.1 Nhận xét chung về đề tài :
Ngày nay hệ thống theo dõi nhiệt độ và điều khiển thiết bị qua máy tính được
ứng dụng trong các mô hình dây chuyền giám sát, theo dõi quá trình nào đó... Trong
đồ án này trình bày được một trong số các dạng đó với các chức năng mang tính
nguyên lý căn bản.
Đồ án được dựa trên cơ sở lý thuyết của các môn điện tử số, linh kiện điện
tử, vi xử lý
Ưu điểm của mạch:
Mạch đơn giản, dễ thi công.
Độ chính xác và ổn định tốt, có thể ứng dụng trong cuộc sống.
Nhược điểm của mạch:
Mạch còn hạn chế một số chức năng.
5.2 Hướng phát triển của đề tài:
Hiện nay, vi xử lí đang ngày càng được sử dụng rộng rãi trong việc thiết kế
và chế tạo mạch điện tử. Việc sử dụng vi xử lí có nhiều ưu điểm như độ chính xác
cao, sử dụng ít linh kiện, nhiều chức năng
Việc hoàn thành đồ án này là bước nền tảng cho sinh viên có được những
kinh nghiệm về thiết kế một đồ án với các khâu căn bản từ ý tưởng, vẽ mạch, làm
mạch in, viết chương trình phần mền thực hiện chức năng phần cứng. Từ đó hiểu
sâu hơn về vi xử lí với các chức năng thông minh của nó. Qua đó sẽ thêm các ý
tưởng để đưa vi điều khiển vào thực tế tốt hơn.
GVHD: Thầy Phạm Quang Trí
TÀI LIỆU THAM KHẢO:
1. Tài liệu vi điều khiển PIC 16F877A. Trường sĩ quan CHKT Thông
Tin
2. Datashet PIC 16F877A.
3. Datasheet DS18B20
4. Bộ giao tiếp máy tính USART
GVHD: Thầy Phạm Quang Trí
Các file đính kèm theo tài liệu này:
- file_goc_779535.pdf