Professional Documents
Culture Documents
ĐỒ ÁN TỐT NGHIỆP
Đồ án môn ho ̣c tốt nghiệp nhằm củng cố và bổ sung lại những kiến thức về chuyên
ngành điện – điện tử và các môn học khác có liên quan mà em đã được học trong khoảng
thời gian ngồi trên giảng đường đại học. Đồ án tốt nghiệp này đã giúp cho em biết vận
du ̣ng, khai thác sâu hơn vào lý thuyết. Qua đó giúp cho em biết được khả năng xử lý tình
huống trong thiết kế, đã củng cố vững hơn về kiến thức chuyên ngành và kỹ năng làm
việc nhóm sao cho đạt hiệu quả cao, là một kỹ năng rất cần thiết cho một kỹ sư sau khi ra
trường.
Để hoàn thành đồ án này, em đã nhận được rất nhiều sự giúp đỡ, hỗ trợ từ thầy cô,
gia đình và bạn bè.
Mặc dù em cũng đã cố gắng hết sức mình, nhưng trong một khoảng thời gian cho
phép, cũng như hạn chế về mặt kiến thức của bản thân, nên đồ án không thể tránh khỏi
nhiều thiếu sót. Chính vì vậy, em rất mong nhận được sự góp ý của quý thầy, cô cũng
như của bạn bè để có thể củng cố kiến thức của mình trước khi ra trường.
Trước tiên chúng em xin chân thành gửi đến toàn thể quý thầy cô trong khoa lời cảm
ơn chân thành nhất. Những năm tháng trên giảng đường Đại học Thầy, Cô đã truyền đạt
những kiến thức và kinh nghiệm quý báu, đó là hành trang vô giá mà chúng em luôn
mang bên mình trên con đường lập nghiệp.
Em xin bày tỏ lòng biết ơn chân thành đến thầy Nguyễn Thanh Tuấn, người đã hướng
dẫn, chỉ bảo tận tình và tạo mọi điều kiện thuận lợi để em hoàn thành tốt đồ án.
Em xin cảm ơn gia đình, bạn bè những người luôn ủng hộ, động viên, tạo điều kiện
thuận lợi, giúp đỡ cho em trong học tập cũng như trong cuộc sống.
Trường ĐH Nha Trang, tháng 05/2017
- Tên đề tài: Ứng Dụng Vi Điều Khiển PIC16F877 Thiết Kế Máy Ấp 300 Trứng
Cho Hộ Gia Đình
- GVHD: Th.SNguyễn Thanh Tuấn
- Ho ̣ tên sinh viên: TRÀ NGÔ XUÂN TIẾN
- Mã số sinh viên: 55131961
- Lớp: 55DDT1
- Địa chỉ sinh viên: Số 7 Tổ 24 – Nguyễn Đình Chiểu – Nha Trang –
Khánh
Hòa
- Số điện thoại liên lạc: 01662689125
- Email: xuantien.ntu1994@gmail.com
- Ngày nộp khoá luận tốt nghiệp:
- Lời cam kết: “Tôi xin cam đoan khoá luận tốt nghiệp này là công trình do chính
tôi nghiên cứu và thực hiện. Tôi không sao chép từ bất kỳ một bài viết nào đã
được công bố mà không trích dẫn nguồn gốc. Nếu có bất kỳ một sự vi phạm nào,
tôi xin chịu hoàn toàn trách nhiệm”.
- Từ yêu cầu cung ứng giống gia cầm ngày càng tăng, để nâng cao hiệu quả quá
trình nuôi tạo giống, cung cấp số lượng lớn giống gia cầm, việc nghiên cứu và cải tiến
quy trình ấp trứng cần được quan tâm, khuyến khích, đầu tư phát triển. Trong đó, việc
nghiên cứu và chế tạo máy ấp trứng mang lại sản lượng cao, cung cấp số lượng lớn gà
con đồng đều về ngày tuổi và chất lượng, đảm bảo cho phương thức nuôi công nghiệp
quy mô lớn. Con non nở ra được cách ly khỏi nguồn lây bệnh từ cha mẹ, đông thời giá
thành giảm đáng kể do khi ấp nhân tạo với máy tốt, thông số kỹ thuật thích hợp,tỷ lệ ấp
nở cao. Đây là cơ sở tiền đề cho việc phát triển chăn nuôi gia cầm ở nước ta theo hướng
hiện đại, áp dụng khoa học kỹ thuật, tăng chất lượng nguồn giống trong chăn nuôi.
- Đề tài máy ấp trứng công nghiệp không những mang tính ứng dụng thực tế trong
chăn nuôi, sản xuất mà còn là mô hình ứng dụng hệ thống điều khiển tự động trong các
thiết bị phục vụ sản xuất, là tiền đề cho sự phát triển chế tạo máy ấp trứng theo nhiều
hướng khác nhau. Đây cũng là một phần nhỏ góp phần vào công cuộc công nghiệp hóa -
hiện đại hóa đất nước dựa trên việc áp dụng khoa học kỹ thuật để cải tiến, mang lại hiệu
quả cao hơn cho nền nông nghiệp nước ta.
- Áp dụng khoa học kỹ thuật, vận dụng để thiết kế, chế tạo máy ấp.
- Sản phẩm được sử dụng thực tế trong đời sống chăn nuôi gia cầm, đáp ứng nhu
cầu phát triển của ngành chăn nuôi.
Nội dụng chương 2 là trình bày tổng quan về công nghệ chế tạo máy ấp trứng được
khảo sát ngoài thực tế.
2.2 Tổng quan tình hình chế tạo máy ấp trứng trong và ngoài nước
- Ngoài nước: ấp trứng nhân tạo đã được thực hiện từ nhiều thế kỷ qua. Các nhà
chuyên môn đã bỏ nhiều công sức nghiên cứu quy trình ấp, sự phát triển của phôi nên
ngày nay đã có nhiều thành tựu về kiến thức cũng như kinh nghiệm ấp trứng nhân tạo,
máy ấp trứng không ngừng được cải tiến để đạt tỉ lệ ấp nở cao, chất lượng gà con tốt với
giá thành hạ. Dụng cụ ấp trứng nhân tạo đầu tiên đơn giản là những hố đào trong đất hoặc
cát của người Ả Rập và người Trung Quốc. Người ta xếp trứng vào và thổi hơi nóng qua
trứng, sau đó phương pháp này lan truyền sang châu Âu và là tiền đề cho ngành mô phôi
học phát triển. Máy ấp trứng nhân tạo đầu tiên do nhà vật lí người Ý là Porto và người
Pháp la Reomior nghiên cứu và chế tạo vào thế kỉ 17. Sau khi nhiệt kế ra đời vào cuối thế
kỷ 18. Cho đến nay, tuy nguyên lý không thay đổi nhưng nhiều thế hệ máy ấp trứng đã
không ngừng hoàn thiện, chế độ ấp tự động đảm bảo tỉ lệ ấp nở cao và chất lượng gà con
tốt.
Hình 2. 1: Lò ấp trứng truyền thống
- Phương án 1: thiết kế tủ ấp có đầy đủ các thiết bị tạo nhiệt, ẩm, thông khí, đảo
trứng, đồng thời được trang bị các thiết bị đo nhiệt độ,độ ẩm. Người sử dụng sẽ dựa vào
các chỉ số trên các thiết bị đo độ ẩm, nhiệt độ để điều chỉnh hay đóng ngắt các thiết bị tạo
nhiệt, ẩm tương ứng. Phương pháp này làm đơn giản quá trình thiết kế,chế tạo máy, tiết
kiệm chi phí. Tuy nhiên, các yếu tố nhiệt độ, độ ẩm sẽ không được điều chỉnh kịp thời,
tốn nhiều công sức, thời gian của người sử dụng, mức độ ứng dụng khoa học kỹ thuật và
tự động hóa không cao.
Hình 2. 4: Máy ấp trứng thủ công người sử dụng trực tiếp điều khiển
- Phương án 2: thiết kế tủ ấp có đầy đủ các thiết bị tạo nhiệt, ẩm, thông khí, đảo
trứng, đồng thời thiết kế phần điều khiển cho máy theo hướng tự động hóa sử dụng PLC
để điều khiển. Phương án này đảm bảo điều khiển máy nhanh chóng, chính xác, dễ dàng
thay đổi, cải tiến chương trình điều khiển, kết nối dễ dàng, dễ thay đổi kết nối giữa PLC
và các thiết bị cần điều khiển. Tuy nhiên giá thành đầu tư cho bộ điềukhiển PLC cao,
không thích hợp sử dụng cho máy ấp nhỏ, đơn chiếc.
Sau khi đưa ra các phương án, phân tích kết hợp với tham khảo từ thực tế, phương
án sử dung vi điều khiển được đánh giá là phương án tối ưu nhất, đây cũng là phương án
được dùng phổ biến tại các cơ sở sản xuất máy ấp trứng ngoài thực tế. Sử dụng vi điều
khiển để lập trình điều khiển cho hoạt động của máy mang lại nhiều ưu điểm nhưng cũng
là thách thức đối với người thiết kế, chế tạo máy. Vi điều khiển vừa đáp ứng cao yêu cầu
điều khiển cho máy, tiết kiệm chi phí, chương trình điều khiển có thể thay đổi linh hoạt.
CHƯƠNG 3: TỔNG QUAN VỀ KỸ THUẬT NUÔI ẤPTRỨNG GIA CẦM
- Sản xuất và thịt gia cầm đạt hiệu quả cao vẫn là ở các nước phát triển thuộc châu
Âu và Bắc Mỹ. Ở những nước này, sự phát triển đồng bộ với trình độ kỹ thuật cao (tập
trung sản xuất giống, thức ăn gia súc và Premix rẻ, sản xuất thuốc thú y và các phương
tiện dụng cụ cần thiết cho ngành chăn nuôi gia cầm) khiến cho giá sản phẩm ngày càng
rẻ. Với các nước đang phát triển thì chăn nuôi gia cầm cũng đang có sự phát triển đáng
kể, dần dần phát triển theo hướng tập trung, số lượng lớn ở các trang trại.
Dưới đây là một số hình ảnh các loại máy ấp trứng với các loại công nghệ khác nhau
(sử dụng vi điều khiển, dùng công nghệ fuzzy logic, điều khiển bằng PLC…)
3.2.2 Nhiệt độ
Nhiệt độ môi trường để ấp trứng là yếu tố quan trọng nhất, có ý nghĩa quyết định đến
khả năng nở - phát triển, sức sống của phôi.
Nhiệt độ trong máy tối ưu phụ thuộc vào từng giai đoạn phát triển phôi, loại gia cầm
và môi trường trong phòng ấp. Nhưng bình thường phải đạt khoảng 37,8oC (chế độ này là
do hệ thống báo tự động, ít khi phải điều chỉnh, trừ khi nhiệt độ ngoài máy ấp quá nóng
hoặc quá lạnh), mức nhiệt độ thích hợp đưa vào quy trình ấp là 37,5 – 38oC.
3.2.3 Độ ẩm
Độ ẩm không khí cần thiết để điều chỉnh sự thải nhiệt của trứng trong thời gian ấp,
nó tạo ra môi trường cân bằng cho quá trình sinh lí, sinh hóa xảy ra của phôi thai. Nếu độ
ẩm không đạt (cao hoặc thấp hơn tiêu chuẩn) làm tích trữ hoặc mất nước nhiều, làm cho
phôi phát triển yếu, gà nở muộn, gà nhỏ hoặc nặng bụng. Tỷ lệ nở kém do trứng sát (gà
không ra khỏi vỏ) và chết phôi nhiều.
Vì vậy hệ thống khí trong máy ấp cũng như hệ thông tự báo động nhiệt độ, ẩm độ
phải hoạt động tốt là yêu cầu hết sức nghiêm ngặt.
3.2.5 Độ đảo
Mục đích của việc đảo trứng là tránh cho phôi khỏi dính vào vỏ, làm cho quá trình
trao đổi chất được cải thiện đồng thời có tác dụng làm cho phôi phát triển tốt nhất, đặc
biệt quan tâm ở giai đoạn đầu và giai đoạn giữa. Trứng được đảo một góc 90 0 nếu xếp
nghiêng, đảo 1800 nếu xếp nằm ngang 2 giờ/1 lần. Một ngày đảo 10 - 12 lần. Nếu 6 ngày
đầu không đảo phôi dính vào vỏ không phát triển và chết. Sau 13 ngày không đảo túi niệu
không khép kín, lượng abumin không vào được bên trong túi niệu dẫn đến tỷ lệ chết phôi
cao, khi gia cầm mổ vỏ sẽ không đúng vị trí, phôi bị dị hình ở phần mắt, mỏ, đầu.
Hình 4. 2: Máy ấp theo chế độ ấp đa kỳ vì lượng trứng thu nhập khoàng 10 trứng 1 ngày
Trứng thu nhặt được từ gà mới đẻ sẽ được đưa vào khay vàtùy vào số lượng trứng gà
đẻ nhiều hay ít mà ta đưa vào ấp. Thông thường thì khoảng 3 đến 5 ngày ta đưa trứng vào
ấp một lần.
Hình 4. 3: Khay nước và miếng ngăn nhiệt trực tiếp
Hai khay nước được đặt trong lò ấp để tạo độ ẩm cho toàn máy ấp và có miếng ngăn
nhiệt để nhiệt độ không thổi trực tiếp vào trứng.
Hình 4. 6: Động cơ đảo 150 trứng và với chế độ nở kết hợp trong máy
Động cơ đảo tuy với công xuất 4W nhưng có thể đảo và chịu trọng lượng 150 trứng.
Hệ thống nở ở dưới đáy thùng có thể cho gà con nở để tiết kiệm chi phí khi phải chi thêm
bóng đèn để làm lò nở cho trứng sau 18 ngày.
4.2Thiết kế phần cứng
+ Đủ cứng vững để đảm bảo chịu lực cho thiết bị gắn bên trong, ngoại lực từ bên ngoài.
+ Có vị trí để gắn các thiết bị của máy.
+ Có khả năng giữ nhiệt, ẩm, tạo môi trường cách ly cho tủ ấp với môi trường bên ngoài.
+ Có khả năng hạn chế sự thâm nhập của côn trùng, sinh vật có hại, bụi bẩn… vào trong máy.
- Chọn vật liệu: vật liệu chọn làm tủ ấp thường là gỗ để đảm bảo yêu cầu cho máy.
Bên cạnh tủ ấp còn có 4 nút đặt 4 góc để cách ly gỗ với mặt đất.
- Thi công:
+ Với độ dày của thùng là 10mm là đạt để đảm bảo độ thoáng và trao đổi nhiệt
trong và ngoài máy ấp và để giảm chi phí lắp đặt và thi công.
+ Cắt và thi công hai tấm vách của thùng theo kích thước như hình vẽ:
- Dùng đinh ghép các tấm lại với nhau, các nút ở tấm đế thì ta được thùng chứa tủ ấp công suất
300 trứng.
4.2.2 Thiết kế giá đỡ khay trứng, chọn khay trứng
- Chức năng: giá đỡ khay trứng có nhiệm vụ mang khay trứng, là cơ cấu truyền
động để đảo trứng. Khay chứa trứng trong máy ấp trứng không chỉ đơn thuần là chứa
trứng mà nó còn là tác nhân chính ảnh hưởng đến tỷ lệ nở thấp hay cao của trứng.
- Không chỉ chất liệu chế tạo khay trứng gây ảnh hưởng lượng hấp thụ nhiệt độ của
trứng mà ngay cả cách thiết kế khay trứng diện tích tiếp xúc với trứng cũng chiếm 70%
tình trạng làm cho trứng hấp thụ nhiệt độ sai lệch so với thông số hiện thị trên máy ấp
trứng. Do đó lựa chọn khay trứng như hình vẽ để đạt yêu cầu:
+ Trứng được tiếp xúc với 4 góc của khung chứa trứng.
+ Tạo cho trứng có góc nghiêng ly tâm khi đảo trứng.
+ Độ thoáng khí tốt.
+ Khi xếp nhiều tầng vẫn đảm bảo lưu thông khí.
+ Đảm bảo đủ cứng vững để chịu tải trọng của khay trứng và momen từ động cơ đảo.
+ Kết cấu đảm bảo sức bền trong quá trình sử dụng, gọn nhẹ.
+ Cơ cấu đảo trứng ổn định,chắc chắn.
- Vật liệu chế tạo: sử dụng vật liệu là nhôm hợp kim vì tải trọng chịu lực nhỏ, nhôm hợp kim dễ
gia công tạo điều kiện cho sản xuất tiết kiệm công sức, thời gian, giảm khối lượng tủ.
- Yêu cầu:
- Hệ thống cấp và ổn định nhiệt bao gồm các thiết bị: cảm biến nhiệt và bóng đèn
sợi đốt
- Cảm biến nhiệt hoạt động sẽ truyền tín hiệu về làm đóng, ngắt bóng đèn làm bóng
đèn đốt nóng ở nhiệt độ nhất định.
- Yêu cầu kỹ thuật: đảm bảo cung cấp đủ và ổn định nhiệt cho quá trình ấp trứng.
- Thiết bị sử dụng:
Hình 4. 15: Bóng đèn sợi đốt
- Bố trí hệ thống: bóng đèn cấp nhiệt sẽ được bố trí ở hai bên đặt trước luồng không
khí từ quạt tản nhiệt, nhiệt sinh ra sẽ được quạt tản nhiệt và lưu thông trong tủ.
Thông thoáng không khí là một vấn đề rất quan trọng trong máy ấp. Độ thông thoáng
ảnh hưởng trực tiếp đến cân bằng nhiệt, độ ẩm và nồng độ O2, CO2 trong máy. Hệ thống
thông khí được chia thành 3 phần: quạt gió, lỗ hút khí và lỗ thoát khí.
Lỗ hút khí đặt ở mặt trên và mặt bên tủ để quá trình lưu thông không khí tự nhiên,
khí nóng bốc lên trên và ra ngoài dễ dàng, tránh ứ đọng gây nhiệt độ cao. Không khí qua
lổ hút khí đi qua quạt gió, khi quạt quay tạo lực hút và đẩy không khí sạch vào mọi vị trí
của máy.Quạt trong máy ấp có nhiệm vụ đảo đều không khí trong máy, đảm bảo nhiệt độ
và độ ẩm ở các vị trí trong máy. Sau khi tìm hiểu và khảo sát thực tế chọn quạt 12V/DC
để tiết kiệm điện nhưng vẫn đáp ứng được độ thông khí.
Hình 4. 16: Quạt tản nhiệt
4.2.6 Hệ thống đảo trứng
Động cơ đảo là động cơ giúp máy ấp trứng có thể đảo mà người sử dụng không cần dùng
tay đảo. Động cơ nằm ở phía dưới và cố định ở đáy thùng. Động cơ bao gồm 1 cụm cả
động cơ, bộ giảm tốc, trục ren, tụ kích.
Khi động cơ quay với nửa vòng thì quay được 90o đồng thời với trục truyền động đảo
trứng gà nghiêng 90o và khi quay nữa vòng tiếp theo thì trứng gà đảo nghiêng lại 90 onhờ
trục truyền.
Trung bình trứng gà nặng khoảng 50g => 300 trứng nặng 15 kg từ đó ta chọn mô tơ. Với
động cơ công suất nhỏ 4w 220v ta có thể đảo 150 trứng và qua khảo sát các máy ấp thực
tế thì máy ấp 300 trứng chọn động cơ 15w.
- Ngõ vào (INPUT) sẽ nhận tín hiệu từ các thiết bị : cảm biến nhiệt độ, IC thời gian thực và 3 nút
nhấn để người dùng thao tác điều khiển. Tín hiệu và thông tin từ ngõ vào sẽ được đưa vào các chân
được set làm ngõ vào của vi điều khiển.
- Vi điều khiển thực hiện chức năng tiếp nhận thông tin, tín hiêu từ các cảm biến,
nút nhấn, lưu thông tin và xử lý theo chương trình đã nạp vào vi điều khiển để đưa tín
hiệu điều khiển ra ngõ ra (OUTPUT).
- Ngõ ra (OUTPUT) sẽ tiếp nhận tín hiệu và thông tin điều khiển từ vi điều khiển để
thực hiện các chức năng: điều khiển hiển thị thông tin từ cảm biến và thông tin thao tác
của người sử dụng trên nút nhấn lên bộ led 7 đoạn ghép 3. Đồng thời sẽ điều khiển hoạt
động của động cơ đảo, bóng đèn.
- Hiện nay trên thị trường có rất nhiều họ vi điều khiển 8051, Motorola 68HC,
AVR, ARM,… Em đã lựa chọn họ vi điều khiển PIC để mở rộng kiến thức và phát triển
các ứng dụng trên công cụ này vì các nguyên nhân sau:
+ Họ vi điều khiển này có thể tìm mua dễ dàng ở thị trường Việt Nam và giá thành
không quá đắt.
+ Có đầy đủ tính năng của một vi điều khiển khi hoạt động độc lập.
Là một sự bổ sung rất tốt về kiến thức cũng như về ứng dụng cho họ vi điều khiển mang
tính truyền thống 8051.
+ Số lượng người sử dụng họ vi điều khiển PIC hiện nay tại Việt Nam cũng như
trên thế giới ngày càng tăng. Điều này tạo nhiều thuận lợi trong quá trình tìm hiểu và phát
triển các ứng dụng như: số lượng tài liệu, số lượng ứng dụng mở đã được phát triển thành
công, dễ dàng trao đổi, học tập, dễ dàng tìm được sự chỉ dẫn khi gặp khó khăn…
+ Sự hỗ trợ của nhà sản xuất về trình biên dịch, các công cụ lập trình, nạp chưng
trình từ đơn giản đến phức tạp.
+ Các tính năng đa dạng của vi điều khiển PIC, và các tính năng này không ngừng
được phát triển.
- Thông tin về vi điều khiển 16F877A:
+ Đây và vi điều khiển thuộc họ PIC16xxxx với tập lệnh gồm 35 lệnh có độ dài 14
bit. Mỗi lệnh đều được thực thi trong một chu kỳ xung clock. Tốc độ hoạt động tối đa cho
phép là 20Mhz với 1 chu kỳ lệnh là 200ms. Bộ nhớ flash chương trình là 8192 words và
bộ nhớ dữ liệu là 368 bytes SRAM, 256 bytes EEPROM. Số PORT I/O là 5 với 33 pin.
+ Timer1: Bộ đếm 16 bit với bộ chia tần số có thể thực hiện chức năng đếm dựa
vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep.
+ Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.
+ Cổng giao tiếp song song PSP với các chân điều khiển RD, RW, CS ở bên
ngoài.
+ 2 bộ so sánh.
+ Bộ nhớ flash có khả năng ghi xóa được 100 000 lần.
+ Bộ nhớ EEPROM có khả năng ghi xóa được 1 000 000 000 lần.
+ Khả năng tự nạp chương trình với sự điều khiển của chương trình.
+ Nạp được chương trình ngay trên mạch điện ICSP (IN circuil Serial
+ Chế độ sleep.
+ Có thể hoạt động với nhiều dạng Oscillator khác nhau.
+ Port A: Có 6 bit(tương ứng với 6 chân RA0-RA5). Các chân của công A có tích
hợp một số chức năng ngoại vi, nếu 1 thiết bị ngoại vi được enable thì cổng này sẽ không
hoạt động như 1 cổng vào ra. Bình thường thì Port A sẽ là một cổng vào ra 2 chiều.
Thanh ghi xác định chiều tương ứng của các chân Port A là thanh ghi Tris A. Các bit ở
thanh ghi Tris A bằng 1 sẽ xác định các chân ở Port A là đầu vào và ngược lại sẽ là đầu
ra.
+ Port B : có 8 bit(tương ứng với chân RB0-RB7) là một cổng vào ra 2 chiều.
Thanh ghi quy định chiều của Port B là thanh ghi TrisB. Thiết lập các thanh ghi Tris B
bằng 1 sẽ làm cho cổng B là cổng vào và ngược lại sẽ là cổng ra.
+ Port C : Rộng 8 bit(tương ứng với các chân RC0-RC7), bình thường nó là 1
cổng vào ra 2 chiều. Thanh ghi quy định chiều của cổng này là thanh ghi TrisC. Các chân
RC3, RC4 dùng để kết nối, truyền nhận thông tin từ các thiết bị ngoại vi.
+ Port E : Rộng 3 bit(RE0-RE2), được cấu hình là đầu ra hoặc đầu vào, Port E có
thể là đầu vào điều khiển I/O khi PSPSTATUS(TriE.4) được xác lập.
Đối với dạng Led anode chung, chân COM phải có mức logic 1 và muốn sáng Led thì
tương ứng các chân a – f, dp sẽ ở mức logic 0.
+ Nguyên lý:
Tại một thời điểm chỉ có 1 led được tích cực mức cao(sáng).
+ Sơ đồ quét:
Led thứ nhất sáng -> xuất dữ liệu -> tạo trễ ->led tắt -> xóa dữ liệu.
Led thứ hai sáng -> xuất dữ liệu -> tạo trễ ->led tắt -> xóa dữ liệu.
Led thứ ba sáng -> xuất dữ liệu -> tạo trễ ->led tắt -> xóa dữ liệu.
Quét và hiển thị xong số mong muốn thì cho quay về lại vòng lập.
+ Dùng timer1 quét LED:
Ta dựa trên hiện tượng lưu ảnh trên võng mạc nếu có 24 hình ảnh của vật giống nhau
xuất hiện trong 1 giây thì dường như vật đó luôn luôn xuất hiện.
Nhưng do trong thiết kế khi dùng 24 ảnh/s đèn led hơi nháy.Do vậy sẽ tăng tần số lần
quét lên 50 ảnh /s. Do sử dụng thạch anh 20Mhz nên ta có:
Tần số F=1/4Z =20/4=5Mhz
Ta sử dụng bộ chia 8 nên F=5/8=0.625
ứng với 625000 xung suy ra T =1.6us = 1600ns
vì 1.6us x 625000 = 1s
625000/50 = 12500 <65536 = 2^16
Timer đếm 12500xung x 10 chu kỳ
Nên cờ tràn = 65536 -12500 = 54036
khi đó giá trị bắt đầu là 54036
+ Nút nhấn OK: nút nhấn gồm các chế độ chỉnh C1, C2, C3.
Chế độ C2: cài đặt thời gian đảo cho máy ấp trứng(mấy giờ đảo 1 lần).
Chế độ C3: cài đặt khoảng thời gian đảo cho máy ấp trứng cho một lần đảo(đảo
trong bảo nhiêu lâu).
Khi các chế độ C1,C2,C3 được chỉnh tới thì khi nhấn nút lên các giá trị giảm 1.
- Đồng thời có thêm 1 nút nhấn nối trực tiếp nguồn tới nguồn ra của động cơ đảo để
kích nguồn trực tiếp cho động cơ khi cần đưa khay trứng về vị trí cân bằng.
4.4Thiết kế mạch
Hình 4.32: Mạch nguyên lý Giao tiếp IC thời gian thực DS1302
Dựa vào sơ đồ chân ta có thể thấy, DS1302 sử dụng chuẩn giáo tiếp nối tiếp ba dây, với
một dây truyền/nhận dữ liệu (I/O), một dây nhận tín hiệu clock đồng bộ (SCLK) và một
dây reset (RST).
Để giao tiếp với DS1302, vi điều khiển cần gửi các lệnh để yêu cầu đọc hoặc ghi vào
DS1302. với mỗi yêu cầu đọc hoặc ghi, vi điều khiển cũng cần báo cho DS1302 biết địa
chỉ vùng nhớ mà vi điều khiển muốn đọc hoặc ghi dữ liệu. Tất cả những thông tin này
được đưa vào trong một byte gọi là byte lệnh (command byte). Command byte là byte
được gửi đầu tiên trong một quá trình đọc/ghi dữ liệu với DS1302. Cấu trúc của
command byte được mô tả như sau.
Bit
7 trong command byte phải luôn có giá trị 1. Nếu bit 7 bằng 0, quá trình ghi command
byte vào DS1302 sẽ bị ngắt. Bit 6 trong command byte xác định vùng nhớ mà vi điều
khiển muốn đọc/ghi. Nếu bit 6 bằng 1, vi điều khiển sẽ đọc/ghi vùng dữ liệu RAM, nếu
bit 6 bằng 0, vi điều khiển sẽ đọc/ghi vùng dữ liệu đồng hồ, lịch. Các bit từ 5 đến 1 xác
định địa chỉ mà vi điều khiển muốn đọc/ghi.Bit 0 xác định việc đọc hoặc ghi. Nếu bit 0
bằng 1, DS1302 sẽ gửi dữ liệu lên chân I/O để vi điều khiển đọc, nếu bit 0 bằng 0, vi điều
khiển sẽ ghi dữ liệu vào DS1302.
Clock Halt Flag: Đây là bit 7 trong thanh ghi giây. Khi bit này được set lên 1. clock
oscilator được dừng lại (đồng hồ sẽ không hoạt động). Khi bit này được xóa về 0 thì
clock oscilator sẽ hoạt động trở lại. Do vậy, chúng ta phải xóa bit 7 thanh ghi giây về 0
trong ứng dụng làm đồng hồ thời gian thực.
Mode 12/24H: bit 7 trong thanh ghi giờ dùng để xác định mode thời gian 12h hoặc 24h.
Mode 12h được chọn khi bit này bằng 1 và mode 24h được chọn khi mode này bằng 0.
Trong mode 12h, bit 5 của thanh ghi giờ được xác định khoảng thời gian AM/PM.
Write Protect Bit: Đây là bit 7 trong thanh ghi control, Khi bit này bằng 1, tất cả các hoạt
động ghi vào DS1302 sẽ bị cấm. Do vậy, bit này phải xóa về 0 khi muốn ghi vào
DS1302. 7 bit còn lại (bit 0 – bit 6) bắt buộc phải có giá trị 0. Ghi 1 byte vào DS1302.
Để ghi 1 byte vào DS1302, chúng ta cần gửi command byte với bit 0 có giá trị 0, để báo
cho DS1302 biết vi điều khiển muốn ghi dữ liệu vào DS1302, tiếp theo là địa chỉ mà
DS1302 muốn ghi dữ liệu vào (các bit A0-A4), tiếp theo bit R/C sẽ có giá trị 0 nếu muốn
ghi vào các thanh ghi thời gian, bit 7 của command byte phải luôn có giá trị 1. Sau ghi
gửi command byte, chúng ta tiếp tục gửi byte dữ liệu cần ghi. Trong quá trình ghi dữ liệu,
dữ liệu các bit được lấy mẫu trong xung sườn lênh của SCLK. Chân RST phải được set
lên 1 trong quá trình ghi dữ liệu. Read 1 byte từ DS1302.
Quá trình đọc dữ liệu tương tự quá trình ghi dữ liệu. Command byte cũng được gửi đầu
tiên, nhưng trong quá trình đọc, bit 0 của command byte phải có giá trị 1. Một điểm khác
nữa là trong quá trình đọc dữ liệu, dữ liệu đọc được lấy mẫu trên xung sườn xuống của
SCLK.
4.4.1.4 Giao tiếp với nút nhấn
Hình 4. 33: Mạch nguyên lý Giao tiếp giao tiếp với nút nhấn.
Nguyên lý: Các nút nhấn được kết nối với vi điều khiển và một chân đất để khi nút nhấn
được nhấn thì chân vi điều khiển xuống mức thấp để vi điều khiển xử lý tín hiệu
Hình 4.35 Mạch nguyên lý dùng triac giảm tốc động cơ đảo
Nguyên lý làm việc: khi biến trở được vặn tụ nạp đầy, điện áp định mức của tụ cũng là
điện áp ngưỡng mở thông triac khi triac dẫn sẽ cấp điện cho động cơ hoạt động. Để điều
khiển tốc độ của động cơ thì thay đổi điện áp nạp tụ bằng biến trở VR, khi đó sẽ thay đổi
thời gian nạp điện cho tụ dẫn đến thay đổi thời gian dẫn cho triac. Giảm biến trở VR tụ
nạp nhanh hơn, điện áp đưa vào động cơ lớn hơn và ngược lại. Triac làm việc lâu ngày sẽ
thiếu chính xác khắc phục bằng việc gắn thêm diac. Diac có tác dụng mở thông khi có
điện áp đủ lớn để thông diac làm triac dẫn.
+ Các dấu ngăn cách không nhìn thấy như dấu cách, dấu nhảy cách tab, dấu xuống
dòng.
- Từ khoá: là những từ có một ý nghĩa hoàn toàn xác định trong chương trình:
+ Không được dùng từ khoá để đặt tên cho các hằng, biến, mảng, hàm.
- Tên: Là một dãy ký tự được dùng để chỉ tên hằng, tên biến, tên mảng, tên hàm.
Tên được tạo thành từ các chữ cái a..z, A..Z, chữ số 0..9, dấu gạch dưới. Tên không được
bắt đầu bằng chữ số, chứa các kí tự đặc biệt như dấu cách, dấu phép toán... Tên không
được đặt trùng với từ khoá.
- Chú ý:
+ Trong ngôn ngữ lập trình C tên được phân biệt chữ hoa và chữ thường.
+ Thông thường chữ hoa thường được dùng để đặt tên cho các hằng, còn các đại
lượng khác thì dùng chữ thường.
+ Nhưng với phần mềm PIC COMPILER thì không phân biệt chữ hoa với chữ
thường
+ Kiểu số nguyên: một giá trị kiểu số nguyên là một phần tử của một tập các mà
máy tính có thể biểu diễn.
+ Kiểu số thực: một giá số thực là một phần tử của một tập các số thực mà máy tính
có thể biểu diễn. Trong ngôn ngữ lập trình C có nhiều kiểu dữ liệu số thực với dải giá trị
khác nhau.
- Biến mảng động: các biến, mảng dược khai báo bên trong thân của một hàm gọi
là biến, mảng tự động. Chúng chỉ có hiệu lực trong phạm vi hàm mà chúng được khai
báo. Khi hàm kết thúc phiên làm việc thì chúng bị xoá khỏi bộ nhớ và trả lại ô nhớ cho
máy.
- Biến mảng ngoài: là các biến, mảng được khai báo bên ngoài các hàm, chúng tồn
tại trong suốt thời gian làm việc của chương trình. Phạm vi sử dụng từ vị trí được khai
báo đến cuối chương trình.
BEGIN
Nhietdo = 1111
NOYES
a= (int)nhietdo;
Output_D = code74ls47_nhietdo[phim-1] Chuc = a/10
Donvi = a%10
b=(int)((nhietdo-(float)a)*10);
le = b%10
Output_D(0xA0)
Output_D(code74ls47_nhietdo[donvi])
END Output_D(code74ls47_nhietdo[le])
PhimOK=0
NO YES
NO
Phim =5
PhimXUONG=0 YES
(2) YES
Phim =0
NO
NO
END While(OK=0)
Đợi phím nhả
END
(1)
NO
NO END
YES
YES
While(phimLEN=0) caidatgiodao = 0
Đợi phím nhả
Phim=4 Caidatgiaydao + 1
YES
caidatgiaydao = 35
NO NO
END
YES
While(phimLEN=0)
Đợi phím nhả
caidatgiaydao = 1
(2)
NO
NO END
YES
NO
NO END
YES
While(phimXUONG=0) caidatgiodao = 10
Đợi phím nhả
caidatgiaydao =
Phim=4 Caidatgiaydao + 1 0
YES
NO NO
END
YES
While(phimXUONG=0)
Đợi phím nhả
caidatgiaydao = 30
BEGIN
Phut=59 Co=0
YES
NO
giodao = giodao+1
Co=0
co=1
Caidatgiodao !=0
1
YES
NO
Caidatgiodao =0 YES
2
NO
Phim=1 YES 3
NO
Phim=2 4
YES
NO
Phim=3
YES
5
NO
Phim=4 YES 6
NO
NO
2 Giay=caidatgiay
YES
Giodao=caidatgiodao YES
cogiay=0
YES NO
NO
giay=0 or
giay =20 or Cogiay=1
giay=40
YES
Tắt động cơ
Cogiay=0
Bật động cơ
Cogiay=1
4
Dem<=3 YES
Gọi hàm xuất led 1111
Dem=dem+1
NO
NO
Dem<=3 YES
Gọi hàm xuất led 1111
Dem=dem+1
NO
Hiển thị số cài đặt giây đảo
Den=den+1
CHƯƠNG 5: CHẾ TẠO THỰC NGHIỆM - ĐÁNH GIÁ
Nhiệt và ẩm sẽ lưu thông trong máy nhờ dòng khí di chuyển cưỡng bức từ quạt
thông khí, giúp nhiệt và ẩm tản đều trong máy, tránh nóng hoặc ẩm cục bộ.
sau thời gian nhất định mà người sử dụng đã cài đặt trước thì máy sẽ tự động kích
hoạt chế độ đảo 1 lần.
Nguyên lí hoạt động của máy ấp: cấp nhiệt cho máy ấp là bóng đèn sợi đốt. Khi
điện đi qua, bóng đèn nóng lên và tỏa nhiệt ra môi trường bên trong tủ ấp. Cảm biến nhiệt
đọc nhiệt độ của môi trường, điều khiển đóng ngắt bóng đèn, khi nhiệt độ trong máy ấp
vượt quá mức yêu cầu cài đặt thì bóng đèn tắt. Thiết bị đảo trứng được đảo 45o theo trục
chính của trứng, khay trứng được đảo tự động với trục xoay đảo trứng theo chu kì 2 giờ 1
lần.
+ Người vận hành cài đặt các thông số ban đầu là các điều kiện nhiệt độ, thời
gian đảo và giây đảo để khởi động chu trình ấp trứng tự động của máy và quan sát
tiến trình hoạt động.
+ Theo dõi các giá trị nhiệt độ, độ ẩm, thời gian đảo hiển thị trên Led để kiểm
soát và điều chỉnh khi cần thiết.
+ Nhấn công tắc chế độ điều khiển bằng tay đưa khay trứng ở vị trí cân bằng.
Hình 5. 6Số liệu kiểm tra đáp ứng nhiệt độ trung bình các ngày của máy
Sau khi chạy thử và thu thập số liệu ta nhận thấy rằng :
- Khi nhiệt độ thấp hơn nhiệt độ cài đặt thì vi điều khiển cấp điện cho bóng đèn tăng
tương đối ổn định, không có hiện tượng tăng giá trị bất thường.
- Sau khi cấp điện cho bóng đèn thì nhiệt độ trong máy vẫn tiếp tục tăng trong 1
khoảng thời gian rồi mới ổn định.
- Giá trị độ ẩm khi nhiệt độ ổn định là 70% và đáp ứng được độ nở của trứng.
- vậy với nhiệt độ cài đặt là 37.5oC thì giá trị nhiệt độ tương đối ổn định.
Với thiết kế có miếng chắn nhiệt độ giúp các quả trứng gần nhiệt độ không bị nóng quá
mức và làm nhiệt độ lan tỏa đều.
Với ưu điểm nhiệt độ dưới sàn của thùng luôn thấp hơn nhiệt độ cài đặt khoảng 0.2 oC nên
có thể lợi dụng điều kiện đó để làm chế độ nở cho máy ấp trứng và giảm chi phí điện
năng rất nhiều khi phải dùng thêm bóng để nở khi trứng đến giai đoạn nở.
Và đặc biệt nhiệt độ của máy ấp gần bóng đèn có nhiệt độ cao hơn nhiệt độ cài đặt là
0.1oC và các vị trí hơi xa bóng đèn có nhiệt độ thấp hơn khoảng 0.1oC nên rất tốt cho việc
ấp trứng cho hộ gia đình. Vì trứng mới cần nhiệt độ cao hơn tí và giảm dần dần theo từng
ngày hình thành gà con và gà không đẻ một lúc nhiều trứng nên việc máy ấp đa kỳ là điều
kiện tốt cho việc ấp cho hộ gia đình.
Việc sử dụng quạt 12V để tản nhiệt giúp máy ít hao tổn điện năng hơn so với các loại
máy thông thường dùng quạt 220V mà việc phân tán đều nhiệt trong máy vẩn đáp ứng
đạt yêu cầu của máy ấp.
Với chế độ cấp điện trực tiếp cho động cơ đảo bằng nút nhấn nên ta có thể điều khiển
khay về vị trí cân bằng để lấy trứng, điều chỉnh khay cho về vị trí nghiêng 45 o khi có sai
lệch sau một thời gian vận hành.
Máy có chế độ tắt động cơ đảo khi trứng qua giai đoạn hình thành phôi tức 16 ngày ấp
lúc này trứng đã hình thành con nên không cần chế độ đảo trứng. Nếu máy ấp chế độ đa
kỳ thì ta có thể bỏ trứng xuống sàn máy để trứng nở.
CHƯƠNG 6: KẾT LUẬN VÀ KIẾN NGHỊ
Trong quá trình thực hiện đồ án, em đã luôn làm việc với mức cố gắng cao nhất để
hoàn thành mục tiêu nhiệm vụ đề ra. Thiết kế máy ấp tương đối tốt so với thị trường hiện
nay và chi phí tổng cho máy ấp khoảng 1.200.000đ cho tất cả các chi phí. Đặc biệt là có
nhiều ưu điểm hơn so với máy ấp thị trường là kết hợp cả chế độ nở trong máy ấp và
nhiệt độ ổn định ở mức cài đặt.
Sau một thời gian luận văn em đã học và đạt được một số kết quả như sau:
- Sử dụng phần mềm proteus để thiết kế mạch và mô phỏng mạch. Sử dụng phần
mềm autocard để vẽ mô hình theo thực tế.
- Gia công và chế tạo thành công các chi tiết cho mô hình.
- Thi công lắp ráp và hoàn thiện phần cơ khí cho mô hình.
- Tiếp tục nghiên cứu các loại vật liệu mới giảm chi phí và có nhiều đặc điểm tốt.
- Đặt ra các phương án điều khiển cao hơn cho máy như lập trình để máy có khả
năng thực hiện những chu trình ấp tự động tùy theo loại trứng được ấp.
PHỤ LỤC
kiemtraphim() ;
}
//============XỬ LÝ DS1302===============================
void DS1302_WriteByte(unsigned char Data) // hàm ghi 1 mảng vào DS1302
{
unsigned char i;
output_drive(DSIO);
delay_ms(10);
for(i=0; i<8;i++)
{
output_bit(DSIO,Data&0x01);
Data>>=1;
output_high(DSCLK);
delay_ms(1);
output_low(DSCLK);
}
}
void DS1302_Write(unsigned char Addr, unsigned char Data) //hàm chọn thanh ghi để
thao tác
{
Data=(Data/10)*16|(Data%10);
output_high(DSRST);
DS1302_WriteByte(Addr);
DS1302_WriteByte(Data);
output_low(DSRST);
}
unsigned char DS1302_Read(unsigned char cmd) // hàm đọc 1 mảng từ
DS1302
{
unsigned char i,Data=0,temp;
output_float(DSIO);
delay_ms(10);
output_high(DSRST);
DS1302_WriteByte(cmd);
delay_us(10);
temp=input(DSIO);
delay_us(1);
for(i=0;i<=7;++i)
{
temp=input(DSIO);
Data|=(temp<<i);
output_high(DSCLK);
delay_us(4);
output_low(DSCLK);
delay_us(4);
}
output_low(DSRST);
Data=(Data/16)*10+(Data&0x0f);
return(Data);
}
void DS1302_Init() // hàm khởi tạo cho DS
{
unsigned char x;
output_drive(DSRST);
output_drive(DSCLK);
delay_ms(10);
output_low(DSRST);
delay_us(2);
output_low(DSCLK);
DS1302_Write(0x8e,0);
DS1302_Write(0x90,0xa4);
x=DS1302_Read(0x81);
if((x & 0x80)!=0)
DS1302_Write(0x80,0);
}
void DS1302_SetTime(unsigned char hour,unsigned char minute,unsigned char second)
// hàm cài đặt giờ phút giây
{
DS1302_Write(0x80,second); // thanh ghi giây
DS1302_Write(0x82,minute); // thanh ghi phút
DS1302_Write(0x84,hour); // thanh ghi giờ
}
void DS1302_GetTime(unsigned char *hour,unsigned char *minute,unsigned char
*second)
{
*second=DS1302_Read(0x81);
*minute=DS1302_Read(0x83);
*hour=DS1302_Read(0x85);
}
//===================1 WIRE===============================
void OneWire_Reset() //hàm reset nhiệt độ đã đọc
{
output_low(ONE_WIRE_PIN); //
delay_us(500);
output_float(ONE_WIRE_PIN); //
delay_us(500); //
output_float(ONE_WIRE_PIN);
}
void onewire_write(int8 data)
{
int8 count;
for(count = 0; count < 8; ++count)
{
output_low(ONE_WIRE_PIN); // chân cảm biến xuống low
delay_us(2);
output_bit(ONE_WIRE_PIN, shift_right(&data, 1, 0));
delay_us(60);
output_float(ONE_WIRE_PIN);
delay_us(2);
}
}
int OneWire_Read()
{
int count, data;
for (count=0; count<8; ++count)
{
output_low(ONE_WIRE_PIN);
delay_us( 2 );
output_float(ONE_WIRE_PIN);
delay_us( 8 );
shift_right(&data,1,input(ONE_WIRE_PIN));
delay_us( 120 );
}
return( data );
}
float ds18b20_read() // hàm đọc và xử lý nhiệt độ
{
int8 busy=0, temp1, temp2;
signed int16 temp3;
float result;
onewire_reset();
onewire_write(0xCC); // cho phép VĐK truy cập thẳng đến bộ nhớ của DS
onewire_write(0x44); // khởi động quá trình đó và chuyển đội nhiệt độ sang nhị phân
while(busy == 0)
busy = onewire_read();
onewire_reset();
onewire_write(0xCC);
onewire_write(0xBE); // cho phép đọc dữ liệu bộ nhớ DS ra ngoài
temp1 = onewire_read();
temp2 = onewire_read();
temp3 = make16(temp2, temp1);
result = (float) temp3 / 16.0; // DS xử lý nhiệt độ đọc được
delay_us(200); //trễ 200us
return(result); // trả về giá trị nhiệt độ
}
//========================================================
void main()
{
Port_B_pullups ( 1 );
SETUP_TIMER_1(T1_INTERNAL | T1_DIV_BY_8); // sử dụng timer 1 với bộ chia 8
SET_TIMER1(53036); // timer bắt đầu đếm từ
ENABLE_INTERRUPTS(GLOBAL); //khai báo ngắt
ENABLE_INTERRUPTS(INT_TIMER1); // ngắt timer1
delay_us(10);
Set_tris_D (0 ); //cho D xuống mức thấp
DS1302_Init(); // khởi tạo DS1302
DS1302_SetTime(gio,phut,giay); //cài đặt thời gian
While (true )
{
///====doc thoi gian======
DS1302_GetTime(&gio,&phut,&giay); // đọc time thực
//====nhiet do======
nhietdodoc = ds18b20_read(); // đọc nhiệt độ
//================DAO TRUNG============================
if(phut==59) // đếm bao nhiêu lần được 59 phút
{
if(co==0)
{
solangiodao = solangiodao+1;
co=1;
}
}
else
co=0;
if(cdsolangiodao!=0) // khi cài đặt giờ đảo khác 0
{
if(solangiodao==cdsolangiodao)
{
output_high(outdaotrung);
if(giay-cdgiaydao==0)
{
output_low(outdaotrung);
solangiodao=0;
}
}
}
if(cdsolangiodao==0) // // khi cài đặt giờ đảo = 0
{
if(cogiay==0)
{
g=cdgiaydao;
if(giay==0)
{
g=g+giay;
output_high(outdaotrung);
cogiay=1;
}
}
if(cogiay==1)
{
if(giay-g==0)
{
output_low(outdaotrung);
cogiay=0;
g=0;
}
}
}
//==============HIEN THI===========
if(phim==1) // hiển thị nhiệt độ
{
xuatled(nhietdodoc);
}
if(phim==2) // hiển thị chế độ C1
{
if(dem<=3)
{
xuatled(1111);
dem=dem+1;
}
if(dem>3)
{
xuatled(cdnhietdo);
den=den+1;
}
}
if(phim==3) // hiển thị chế độ C2
{
if(dem<=3)
{
xuatled(1111);
dem=dem+1;
}
if(dem>3)
{
xuatled(cdsolangiodao);
den=den+1;
}
}
if(phim==4) // hiển thị chế độ C3
{
if(dem<=3)
{
xuatled(1111);
dem=dem+1;
}
if(dem>3)
{
xuatled(cdgiaydao);
den=den+1;
}
}
if(den>70)//khi để các chế độ C1,2,3 quá lâu thì quay về hiển thị nhệt độ
{
phim=1;
}
//==================xuat port=========
}
}
//============KIEM TRA PHIM==============================
void kiemtraphim()
{
if(LEN==0) // khi nút nhấn lên được nhấn
{
if(phim==2) // chế độ C1 cài đặt nhiệt độ
{
cdnhietdo=cdnhietdo+0.1;
if(cdnhietdo==40.1)
{
cdnhietdo=30.0;
}
}
else if(phim==3) // chế độ C2 cài đặt số giờ đảo
{
cdsolangiodao=cdsolangiodao+1;
if(cdsolangiodao==11)
{
cdsolangiodao=0;
}
}
else if(phim==4) // chế độ C3 cài đặt số giây đảo
{
cdgiaydao=cdgiaydao+1;
if(cdgiaydao==31)
{
cdgiaydao=1;
}
}
den=0;
dem=4;
while(LEN==0); // đợi phím được nhả
}
if(XUONG==0) // khi nút nhấn xuống được nhấn
{
if(phim==2) // chế độ C1 cài đặt nhiệt độ
{
cdnhietdo=cdnhietdo-0.1;
if(cdnhietdo==30.0)
{
cdnhietdo=40.0;
}
}
else if(phim==3) // chế độ C2 cài đặt số giờ đảo
{
cdsolangiodao=cdsolangiodao-1;
if( cdsolangiodao==-1)
{
cdsolangiodao=10;
}
}
else if(phim==4) // chế độ C3 cài đặt số giây đảo
{
cdgiaydao=cdgiaydao-1;
if(cdgiaydao==0)
{
cdgiaydao=30;
}
}
den=0;
dem=4;
while(XUONG==0); // đợi phím được nhả
}
if(OK==0) // khi nút nhấn OK được nhấn
{
phim=phim+1; // chuyển các chế độ
if(phim==5)
{
phim=1;
}
den=0;
dem=0;
while(OK==0); // đợi phím được nhả
}
}