Khác với LM35 cho tín hiệu điện áp và cần một bộ ADC ngoài để hỗ trợ chuyển đổi sang tín hiệu số, DS18B20 có tích hợp sẵn một bộ ADC bên trong nên nó sẽ cho ra tín hiệu số ngay. Điều quan trọng là cách thức giao tiếp để chúng ta có thể lấy được giá trị nhiệt độ ra.
• Loại giao tiếp của DS18b20 là giao tiếp “One wire”, hay còn gọi là một dây. Loại giao tiếp này chỉ cần một dây truyền dữ liệu duy nhất để giao tiếp giữa Master và Slave.
40 trang |
Chia sẻ: huyhoang44 | Lượt xem: 622 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đo và khống chế nhiệt độ hiển thị LCD, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
BÁO CÁO ĐỀ TÀI ĐỒ ÁN MẠCH
ĐO VÀ KHỐNG CHẾ NHIỆT ĐỘ HIỂN THỊ LCD
GVHD thầy: Lê Đức Toàn
Nhóm SV :
-B14DCDT029 : Vũ Văn Khải
-B14DCDT030 : Hoàng Xuân Trung
Hà Nội, ngày 19 tháng 3 năm 2017
LỜI NÓI ĐẦU
Với sự phát triển không ngừng của khoa học công nghệ, cuộc sống con người ngày càng trở nên tiện nghi và hiện đại hơn. Điều đó đem lại cho chúng ta nhiều giải pháp tốt hơn, đa dạng hơn trong việc xử lý những vấn đề tưởng chừng như rất phức tạp gặp phải trong cuộc sống. Việc ứng dụng các thành tựu khoa học kĩ thuật hiện đại trong tất cả các lĩnh vực đã và đang rất phổ biến trên toàn thế giới, thay thế dần những phương thức thủ công, lạc hậu và ngày càng được cải thiện hơn, hoàn mỹ hơn.
Cùng với sự phát triển chung đó, nước ta cũng đang mạnh mẽ tiến hành công cuộc công nghiệp hóa và hiện đại hóa đất nước để theo kịp sự phát triển của các nước trong khu vực và trên thế giới. Trong đó, lĩnh vực điện tử đang ngày càng đóng vai trò quan trọng trong việc phát triển kinh tế và đời sống con người. Sự phổ biến của nó góp phần không nhỏ tới sự phát triển của tất cả các ngành sản xuất, giải trí,... Trong những năm gần đây, đặc biệt trong lĩnh vực tự động nhất là nhiệt độ, nó đã có sự phát triển mạnh mẽ với nhiều hình thức, phương pháp tiếp cận, chia sẻ thông tin hiện đại và toàn diện hơn.
Với lòng đam mê, yêu thích của nhóm trong lĩnh vực này, nhóm đã quyết định chọn đề tài “ Đo và khống chế nhiệt độ hiển thị LCD” làm đề tài môn học.
Trong thời gian thực hiện đề tài cộng với kiến thức còn hạn chế, nên trong cuốn đồ án này không tránh khỏi những thiếu sót, nhóm thực hiện rất mong được sự đóng góp của thầy cô và các bạn sinh viên.
Nhóm sinh viên thực hiện đề tài
Vũ Văn Khải
Hoàng Xuân Trung
NHẬN XÉT CỦA GIÁO VIÊN
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
MỤC LỤC
LỜI NÓI ĐẦU
NHẬN XÉT CỦA GIẢNG VIÊN
Phần 1: Cơ sở lý thuyết.
Cơ sở thực tiễn của đề tài
Mục đích nghiên cứu của đề tài
Các phương pháp lựa chọn phương án thiết kế
Tổng quan về AT89S52
Tổng quan về LCD 16x2
Tổng quan về cảm biến nhiệt độ DS18B20
Các linh kiện hỗ trợ khác
Phần 2: Nội dung và trình tự thiết kế.
Sơ đồ khối tổng quát vá nguyên lý
Mô phỏng với proteus
Mạch in
Code
Phần 3: Kết luận và tài liệu tham khảo.
LỜI CẢM ƠN
ĐỀ TÀI:
Thiết kế bộ đo và khống chế nhiệt độ hiển thị bằng LCD 16x2
Phần 1: Cơ sở lý thuyết
Cơ sở thực tiễn của đề tài:
Ngày nay cùng với sự phát triển của các ngành khoa học kỹ thuật, kỹ thuật điện tử mà trong đó là kỹ thuật số đóng vai trò quan trọng trong lĩnh vực khoa học kỹ thuật, quản lí, công nghiệp tự động hóa, cung cấp thông tin... Do đó, chúng ta phải nắm bắt và vận dụng nó một cách có hiệu quả nhằm góp một phần vào sự phát triển nền khoa học kỹ thuật thế giới nói chung và sự phát triển kỹ thuật điện tử nói riêng.
Trong đời sống ngày càng phát triển, xuất phát từ những nhu cầu thực tế, nhóm thực hiện đã tìm hiểu và hoàn thành xong mạch đo nhiệt độ. Nó có ứng dụng rất lớn trong các doanh nghiệp sản xuất với độ chính xác cao.
Mục đích nghiên cứu của đề tài:
Đo nhiệt độ bằng bộ cảm biến nhiệt DS18B20 hiển thị trên LCD và thông báo ra đèn LED.
Các phương pháp lựa chọn phương án thiết kế:
Để đo lường nhiệt độ, người ta có thể chọn nhiều loại cảm biến nhiệt độ khác nhau, mỗi loại đều có một ưu điểm riêng biệt và phù hợp với từng nhu cầu của người sử dụng. Ở đây, nhu cầu của nhóm là đo nhiệt độ môi trường nên nhóm đã sử dụng DS18B20 là tối ưu nhất.
Bộ vi điều khiển AT89S51 là tối ưu nhất và giá thành hợp lý.
LED 16X2 có thể hiển thị đầy đủ những thông báo cần thiết.
Tổng quan về AT89S52.
AT89S52 là họ IC vi điều khiển do hãng Atmel sản xuất. Các sản phẩmAT89S52 thích hợp cho những ứng dụng điều khiển. Việc xử lý trên byte và cáctoán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế độ truy xuấtdữ liệu nhanh trên RAM nội. Tập lệnh cung cấp một bảng tiện dụng của những lệnh số học 8 bit gồm cả lệnh nhân và lệnh chia. Nó cung cấp những hổ trợ mởrộng trên chip dùng cho những biến một bit như là kiểu dữ liệu riêng biệt chophép quản lý và kiểm tra bit trực tiếp trong hệ thống điều khiển.
AT89S52 cung cấp những đặc tính chuẩn như: 8 KByte bộ nhớ chỉ đọc cóthể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 3TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếpbán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP.
Các đặc điểm của chip AT89S52 được tóm tắt như sau:
8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xoá
Tần số hoạt động từ: 0Hz đến 24 MHz
3 mức khóa bộ nhớ lập trình
3 bộ Timer/counter 16 Bit 128 Byte RAM nội.
4 Port xuất /nhập I/O 8 bit.
Giao tiếp nối tiếp.
64 KB vùng nhớ mã ngoài
64 KB vùng nhớ dữ liệu ngoại.
Sơ đồ khối của bộ vi điều khiển.
Sơ đồ chân của bộ vi điều khiển AT89S52 được thể hiện ở hình bên dưới.
Sơ đồ chân vi điều khiển AT89S52
- Chân VCC:Chân số 40 là VCC cấp điện áp nguồn cho vi điều khiển. Nguồn điện cấp là +5V±0.5.
- Chân GND: Chân số 20 nối GND (hay nối Mass).
- Port 0 (P0): Port 0 gồm 8 chân (từ chân 32 đến 39) có hai chức năng:
+ Chức năng xuất/nhập: các chân này được dùng để nhận tín hiệu từ bên ngoài vào để xử lí, hoặc dùng để xuất tín hiệu ra bên ngoài, chẳng hạn xuất tín hiệu để điều khiển led đơn sáng tắt.
+ Chức năng là bus dữ liệu và bus địa chỉ (AD7-AD0) : 8 chân này (hoặc Port 0) còn làm nhiệm vụ lấy dữ liệu từ ROM hoặc RAM ngoại (nếu có kết nối với bộ nhớ ngoài), đồng thời Port 0 còn được dùng để định địa chỉ của bộ nhớ ngoài.
- Port 1 (P1): Port P1 gồm 8 chân (từ chân 1 đến chân 8), chỉ có chức năng làm các đường xuất/nhập, không có chức năng khác.
- Port 2(P2): Port 2 gồm 8 chân (từ chân 21 đến chân 28) có hai chức năng:
- Chức năng xuất/nhập.
+ Chức năng là bus địa chỉ cao (A8-A15): khi kết nối với bộ nhớ ngoài có dung lượng lớn, cần 2 byte để định địa chỉ của bộ nhớ, byte thấp do P0 đảm nhận, byte cao do P2 này đảm nhận.
- Port 3 (P3): Port 3 gồm 8 chân (từ chân 10 đến 17)
+ Chức năng xuất/nhập.
+ Với mỗi chân có một chức năng riêng thứ hai như trong bảng sau:
Bảng chức năng các chân của port 3
Các ngõ tín hiệu điều khiển:
Ngõ tín hiệu (PSEN)’ (Program store enable) : Chân số 29
Cho phép đọc bộ nhớ chương trình mở rộng
Nối với chân ((OE)’ hoặc (RD)’) của EPROM để điều khiển đọc mã lệnh
Khi giao tiếp với bộ nhớ chương trình mở rộng thì dùng (PSEN)’, nếu không có giao tiếp thì chân (PSEN)’ bỏ trống
Các mã lệnh của chương trình đọc từ EPROM qua bus dữ liệu và được chốt vào thanh ghi lệnh bên trong 8051 để giải mã lệnh
Ngõ tín hiệu điều khiển ALE (Address Latch Enable): Chân số 30
Khi dùng bộ nhớ mở rộng, ALE sẽ điều khiển mạch giải đa hợp để tách các đường địa chỉ (A7-A0) và dữ liệu (D7 – D0)
Là một xung khi port 0 tải địa chỉ
Xung ALE có tần số = 1/6 tần số thạch anh
Có thể dùng làm xung clock cung cấp cho các IC khác.
Có thể nhận cung lập trình từ bên ngoài khi ghi dữ liệu vào bộ nhớ Flash Rom
Ngõ tín hiệu (EA)’ (External Access): Chân số 31
Nếu (EA)’ = 1(+5V) thì VĐK thực hiện chương trình ở bộ nhớ nội
Nếu (EA)’ = 0(0V) thì VĐK thực hiện chương trình ở bộ nhớ ngoại
Nhận điện áp lập trình VPP(Program) khi ghi dữ liệu vào bộ nhớ Flash Rom
Ngõ tín hiệu RST (Reset) : Chân số 9
Khi cấp điện hoặc nhấn RESET sẽ reset VĐK
Tín hiệu Reset phải ở mức cao, ít nhất 2 chu kỳ máy
Các thanh ghi bên trong được nạp những giá trị mặc nhiên.
Các ngõ vào bộ dao động XTALT1, XTAL2: Chân số 18, 19
8051 có một bộ dao động trên chíp nhưng nó yêu cầu có một xung đồng hồ ngoài để chạy nó. Một bộ dao động thạch anh sẽ được nối tới các chân đầu vào XTAL1 (chân 19) và XTAL2 (chân 18). Bộ dao động thạch anh được nối tới XTAL1 và XTAL2 cũng cần hai tụ gốm giá trị khoảng 30pF. Một phía của tụ điện được nối xuống đất.
Cần phải lưu ý rằng có nhiều tốc độ khác nhau của họ 8051. Tốc độ được coi như là tần số cực đại của bộ dao động được nối tới chân XTAL. Một bộ vi điều khiển 8051 yêu cầu một tinh thể thạch anh có tần số không lớn hơn 20MHz. Khi 8051 được nối tới một bộ dao động tinh thể thạch anh và cấp nguồn thì ta có thể quan sát tần số trên chânXTAL2 bằng máy hiện sóng. Nếu ta quyết định sử dụng một nguồn tần số khác bộ dao động thạch anh, chẳng hạn như là bộ dao động TTL thì nó sẽ được nối tới chân XTAL1, còn chân XTAL2 thì để hở không nối.
Chân 40 (VCC) được nối lên nguồn 5V.
Chân 20 GND nối MASS.
Tổng quan về LCD 16x2
Hình dáng và kích thước
Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, trên hình là 1 loại LCD thông dụng.
Hình 1. Hình dáng của loại LCD thông dụng.
Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780) bên trong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết. Các chân này được đánh số thứ tự và đặt tên như hình 2 :
Hình 2. Sơ đồ chân của LCD.
Chức năng các chân:
Chân
Ký hiệu
Mô tả
1
Vss
Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND của mạch điều khiển.
2
VDD
Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với VCC=5V của mạch điều khiển.
3
VEE
Điều chỉnh độ tương phản của LCD.
4
RS
Chân chọn thanh ghi (Register select). Nối chân RS với logic “0” (GND) hoặc logic “1” (VCC) để chọn thanh ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD.
5
R/W
Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc.
6
E
Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) thanh ghi bên trong nó khi phát hiện một xung (high-to-low transition) của tín hiệu chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp.
7-14
DB0-DB7
Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU. Có 2 chế độ sử dụng 8 đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7
15
-
Nguồn dương cho đèn nền.
16
-
GND cho đèn nền.
Bảng 1. Chức năng các chân của LCD.
* Ghi chú : Ở chế độ “đọc”, nghĩa là MPU sẽ đọc thông tin từ LCD thông qua các chân DBx.
Còn khi ở chế độ “ghi”, nghĩa là MPU xuất thông tin điều khiển cho LCD thông qua các chân DBx.
Sơ đồ khối :
Để hiểu rõ hơn chức năng các chân và hoạt động của chúng, ta tìm hiểu sơ qua chíp HD44780 thông qua các khối cơ bản của nó.
Hình 3. Sơ đồ khổi của LCD.
Các thanh ghi:
Chíp HD44780 có 2 thanh ghi 8 bit quan trọng : Thanh ghi lệnh IR (Instructor Register) và thanh ghi dữ liệu DR (Data Register)
+ Thanh ghi IR : Để điều khiển LCD, người dùng phải “ra lệnh” thông qua tám đường bus DB0-DB7. Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng. Người dùng chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR. Nghĩa là, khi ta nạp vào thanh ghi IR một chuỗi 8 bit, chíp HD44780 sẽ tra bảng mã lệnh tại địa chỉ mà IR cung cấp và thực hiện lệnh đó.
VD : - Lệnh “hiển thị màn hình” có địa chỉ lệnh là 00001100 (DB7DB0)
- Lệnh “hiển thị màn hình và con trỏ” có mã lệnh là 00001110
- Thanh ghi DR : Thanh ghi DR dùng để chứa dữ liệu 8 bit để ghi vào vùng RAM DDRAM hoặc CGRAM(ở chế độ ghi) hoặc dùng để chứa dữ liệu từ 2 vùng RAM này gởi ra cho MPU (ở chế độ đọc). Nghĩa là, khi MPU ghi thông tin vào DR, mạch nội bên trong chíp sẽ tự động ghi thông tin này vào DDRAM hoặc CGRAM. Hoặc khi thông tin về địa chỉ được ghi vào IR, dữ liệu ở địa chỉ này trong vùng RAM nội của HD44780 sẽ được chuyển ra DR để truyền cho MPU.
=> Bằng cách điều khiển chân RS và R/W chúng ta có thể chuyển qua lại giữ 2 thanh ghi này khi giao tiếp với MPU. Bảng sau đây tóm tắt lại các thiết lập đối với hai chân RS và R/W theo mục đích giao tiếp.
RS
R/W
Chức năng
0
0
Ghi vào thanh ghi IR để ra lệnh cho LCD
0
1
Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở DB0-DB6
1
0
Ghi vào thanh ghi DR
1
1
Đọc dữ liệu từ DR
Bảng 2 : Chức năng chân RS và R/W theo mục đích sử dụng
Cờ báo bận BF (Busy Flag)
Khi thực hiện các hoạt động bên trong chíp, mạch nội bên trong cần một khoảng thời gian để hoàn tất.
Khi đang thực thi các hoạt động bên trong chip như thế, LCD bỏ qua mọi giao tiếp với bên ngoài và bật cờ BF (thông qua chân DB7 khi có thiết lập RS=0, R/W=1) lên để báo cho MPU biết nó đang “bận”. Dĩ nhiên, khi xong việc, nó sẽ đặt cờ BF lại mức 0.
Bộ đếm địa chỉ AC ( Address Counter)
Như trong sơ đồ khối, thanh ghi IR không trực tiếp kết nối với vùng RAM (DDRAM và CGRAM) mà thông qua bộ đếm địa chỉ AC. Bộ đếm này lại nối với 2 vùng RAM theo kiểu rẽ nhánh. Khi một địa chỉ lệnh được nạp vào thanh ghi IR, thông tin được nối trực tiếp cho 2 vùng RAM nhưng việc chọn lựa vùng RAM tương tác đã được bao hàm trong mã lệnh.
Sau khi ghi vào (đọc từ) RAM, bộ đếm AC tự động tăng lên (giảm đi) 1 đơn vị và nội dung của AC được xuất ra cho MPU thông qua DB0-DB6 khi có thiết lập RS=0 và R/W=1 (xem bảng tóm tắt RS - R/W).
Lưu ý: Thời gian cập nhật AC không được tính vào thời gian thực thi lệnh mà được cập nhật sau khi cờ BF lên mức cao (not busy), cho nên khi lập trình hiển thị, bạn phải delay một khoảng tADD khoảng 4uS-5uS (ngay sau khi BF=1) trước khi nạp dữ liệu mới. Xem thêm hình bên dưới.
Tập lệnh của LCD:
- Trước khi tìm hiểu tập lệnh của LCD, sau đây là một vài chú ý khi giao tiếp với LCD :
* Tuy trong sơ đồ khối của LCD có nhiều khối khác nhau, nhưng khi lập trình điều khiển LCD ta chỉ có thể tác động trực tiếp được vào 2 thanh ghi DR và IR thông qua các chân DBx, và ta phải thiết lập chân RS, R/W phù hợp để chuyển qua lại giữ 2 thanh ghi này. (xem bảng 2)
* Với mỗi lệnh, LCD cần một khoảng thời gian để hoàn tất, thời gian này có thể khá lâu đối với tốc độ của MPU, nên ta cần kiểm tra cờ BF hoặc đợi (delay) cho LCD thực thi xong lệnh hiện hành mới có thể ra lệnh tiếp theo.
* Địa chỉ của RAM (AC) sẽ tự động tăng (giảm) 1 đơn vị, mỗi khi có lệnh ghi vào RAM. (Điều này giúp chương trình gọn hơn)
* Các lệnh của LCD có thể chia thành 4 nhóm như sau :
• Các lệnh về kiểu hiển thị. VD : Kiểu hiển thị (1 hàng / 2 hàng), chiều dài dữ liệu (8 bit / 4 bit),
• Chỉ định địa chỉ RAM nội.
• Nhóm lệnh truyền dữ liệu trong RAM nội.
• Các lệnh còn lại .
Tên lệnh
Hoạt động
Clear
Display
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = 0 0 0 0 0 0 0 1
Lệnh Clear Display (xóa hiển thị) sẽ ghi một khoảng trống-blank (mã hiện kí tự 20H) vào tất cả ô nhớ trong DDRAM, sau đó trả bộ đếm địa AC=0, trả lại kiểu hiển thị gốc nếu nó bị thay đổi. Nghĩa là : Tắt hiển thị, con trỏ dời về góc trái (hàng đầu tiên), chế độ tăng AC.
Return
Home
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = 0 0 0 0 0 0 1 *
Lệnh Return home trả bộ đếm địa chỉ AC về 0, trả lại kiểu hiển thị gốc nếu nó bị thay đổi. Nội dung của DDRAM không thay đổi.
Entry
mode set
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = 0 0 0 0 0 1 [I/D] [S]
I/D : Tăng (I/D=1) hoặc giảm (I/D=0) bộ đếm địa chỉ hiển thị AC 1 đơn vị mỗi khi có hành động ghi hoặc đọc vùng DDRAM. Vị trí con trỏ cũng di chuyển theo sự tăng giảm này.
S : Khi S=1 toàn bộ nội dung hiển thị bị dịch sang phải (I/D=0) hoặc sang trái (I/D=1) mỗi khi có hành động ghi vùng DDRAM. Khi S=0: không dịch nội dung hiển thị. Nội dung hiển thị không dịch khi đọc DDRAM hoặc đọc/ghi vùng CGRAM.
Display
on/off
control
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = 0 0 0 0 1 [D] [C] [B]
D: Hiển thị màn hình khi D=1 và ngược lại. Khi tắt hiển thị, nội dung DDRAM không thay đổi.
C: Hiển thị con trỏ khi C=1 và ngược lại.
B: Nhấp nháy kí tự tại vị trí con trỏ khi B=1 và ngược lại.
Chu kì nhấp nháy khoảng 409,6ms khi mạch dao động nội LCD là 250kHz.
Cursor
or
display
shift
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = 0 0 0 1 [S/C] [R/L] * *
Lệnh Cursor or display shift dịch chuyển con trỏ hay dữ liệu hiển thị sang trái mà không cần hành động ghi/đọc dữ liệu. Khi hiển thị kiểu 2 dòng, con trỏ sẽ nhảy xuống dòng dưới khi dịch qua vị trí thứ 40 của hàng đầu tiên. Dữ liệu hàng đầu và hàng 2 dịch cùng một lúc. Chi tiết sử dụng xem bảng bên dưới:
S/C
R/L
Hoạt động
0
0
Dịch vị trí con trỏ sang trái (Nghĩa là giảm AC một đơn vị).
0
1
Dịch vị trí con trỏ sang phải (Tăng AC lên 1 đơn vị).
1
0
Dịch toàn bộ nội dung hiển thị sang trái, con trỏ cũng dịch theo.
1
1
Dịch toàn bộ nội dung hiển thị sang phải, con trỏ cũng dịch theo.
Function
set
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = 0 0 1 [DL] [N] [F] * *
DL: Khi DL=1, LCD giao tiếp với MPU bằng giao thức 8 bit (từ bit DB7 đến DB0). Ngược lại, giao thức giao tiếp là 4 bit (từ bit DB7 đến bit DB0). Khi chọn giao thức 4 bit, dữ liệu được truyền/nhận 2 lần liên tiếp. với 4 bit cao gởi/nhận trước, 4 bit thấp gởi/nhận sau.
N : Thiết lập số hàng hiển thị. Khi N=0 : hiển thị 1 hàng, N=1: hiển thị 2 hàng.
F : Thiết lập kiểu kí tự. Khi F=0: kiểu kí tự 5x8 điểm ảnh, F=1: kiểu kí tự 5x10 điểm ảnh.
Set
CGRAM
address
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = 0 1 [ACG][ACG][ACG][ACG][ACG][ACG]
Lệnh này ghi vào AC địa chỉ của CGRAM. Kí hiệu [ACG] chỉ 1 bit của chuỗi dữ liệu 6 bit. Ngay sau lệnh này là lệnh đọc/ghi dữ liệu từ CGRAM tại địa chỉ đã được chỉ định.
Set
DDRAM
address
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = 1 [AD] [AD] [AD] [AD] [AD] [AD] [AD]
Lệnh này ghi vào AC địa chỉ của DDRAM, dùng khi cần thiết lập tọa độ hiển thị
mong muốn. Ngay sau lệnh này là lệnh đọc/ghi dữ liệu từ DDRAM tại địa chỉ đã được chỉ định.
Khi ở chế độ hiển thị 1 hàng: địa chỉ có thể từ 00H đến 4FH. Khi ở chế độ hiển thị 2 hàng, địa chỉ từ 00h đến 27H cho hàng thứ nhất, và từ 40h đến 67h cho hàng thứ 2.
Read BF
and
address
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx =[BF] [AC] [AC] [AC] [AC] [AC] [AC] [AC] (RS=0,R/W=1)
Như đã đề cập trước đây, khi cờ BF bật, LCD đang làm việc và lệnh tiếp theo (nếu có) sẽ bị bỏ qua nếu cờ BF chưa về mức thấp. Cho nên, khi lập trình điều khiển, phải kiểm tra cờ BF trước khi ghi dữ liệu vào LCD.
Khi đọc cờ BF, giá trị của AC cũng được xuất ra các bit [AC]. Nó là địa chỉ của
CG hay DDRAM là tùy thuộc vào lệnh trước đó.
Write
data to
CG or
DDRAM
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = [Write data] (RS=1, R/W=0)
Khi thiết lập RS=1, R/W=0, dữ liệu cần ghi được đưa vào các chân DBx từ mạch
ngoài sẽ được LCD chuyển vào trong LCD tại địa chỉ được xác định từ lệnh ghi địa chỉ trước đó (lệnh ghi địa chỉ cũng xác định luôn vùng RAM cần ghi)
Sau khi ghi, bộ đếm địa chỉ AC tự động tăng/giảm 1 tùy theo thiết lập Entry mode.
Read
data
from CG or
DDRAM
Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DBx = [Read data] (RS=1, R/W=1)
Khi thiết lập RS=1, R/W=1,dữ liệu từ CG/DDRAM được chuyển ra MPU thông qua các chân DBx (địa chỉ và vùng RAM đã được xác định bằng lệnh ghi địa chỉ trước đó).
Sau khi đọc, AC tự động tăng/giảm 1 tùy theo thiết lập Entry mode, tuy nhiên nội dung hiển thị không bị dịch bất chấp chế độ Entry mode.
Chân cấp nguồn (Vcc-GND)
Min:-0.3V , Max+7V
Các chân ngõ vào (DBx,E,)
Min:-0.3V , Max:(Vcc+0.3V)
Nhiệt độ hoạt động
Min:-30C , Max:+75C
Nhiệt độ bảo quản
Min:-55C , Max:+125C
Bảng 4. Tập lệnh của LCD
Giao tiếp giữa LCD và MPU:
LCD sẽ bị hỏng nghiêm trọng, hoặc hoạt động sai lệch nếu bạn vi phạm khoảng đặc tính điện sau đây:
Đặc tính điện làm việc điển hình: (Đo trong điều kiện hoạt động Vcc = 4.5V đến 5.5V, T = -30 đến +75C)
Chân cấp nguồn Vcc-GND
2.7V đến 5.5V
Điện áp vào mức cao VIH
2.2V đến Vcc
Điện áp vào mức thấp VIL
-0.3V đến 0.6V
Điện áp ra mức cao (DB0-DB7)
Min 2.4V (khi IOH = -0.205mA)
Điện áp ra mức thấp (DB0-DB7)
Max 0.4V (khi IOL = 1.2mA)
Dòng điện ngõ vào (input leakage current) ILI
-1uA đến 1uA (khi VIN = 0 đến Vcc)
Dòng điện cấp nguồn ICC
350uA(typ.) đến 600uA
Tần số dao động nội fOSC
190kHz đến 350kHz (điển hình là 270kHz)
Bảng 7. Miền làm việc bình thường
Khởi tạo LCD:
Khởi tạo là việc thiết lập các thông số làm việc ban đầu. Đối với LCD, khởi tạo giúp ta thiết lập các giao thức làm việc giữa LCD và MPU. Việc khởi tạo chỉ được thực hiện 1 lần duy nhất ở đầu chương trình điều khiển LCD và bao gồm các thiết lập sau :
• Display clear : Xóa/không xóa toàn bộ nội dung hiển thị trước đó.
• Function set : Kiểu giao tiếp 8bit/4bit, số hàng hiển thị 1hàng/2hàng, kiểu kí tự 5x8/5x10.
• Display on/off control: Hiển thị/tắt màn hình, hiển thị/tắt con trỏ, nhấp nháy/không nhấp nháy.
• Entry mode set : các thiết lập kiểu nhập kí tự như: Dịch/không dịch, tự tăng/giảm (Increment).
Như đã đề cập ở trên, chế độ giao tiếp mặc định của LCD là 8bit (tự khởi tạo lúc mới bật điện lên). Và khi kết nối mạch theo giao thức 4bit, 4 bit thấp từ DB0-DB3 không được kết nối đến LCD, nên lệnh khởi tạo ban đầu (lệnh chọn giao thức giao tiếp – function set 0010****) phải giao tiếp theo chế độ 8 bit (chỉ gởi 4 bit cao một lần, bỏ qua 4 bit thấp). Từ lệnh sau trở đi, phải gởi/nhận lệnh theo 2 nibble.
Lưu ý là sau khi thiết lập function set, bạn không thể thay đổi function set ngoại trừ thay đổi giao thức giao tiếp (4bit/8bit).
Tổng quan về cảm biến nhiệt DS18B20
Hình ảnh thực tế của DS18B20
Cảm biến có ba chân: một chân dương ( VCC/VDD ), một chân âm (GND) và một chân dữ liệu (DATA / DQ).
DS18B20 sử dụng điện áp nguồn từ 3 – 5.5 V. Nên dễ dàng sử dụng chung với các loại vi điều khiển vì chúng sử dụng nguồn cấp hầu hết là 5 V.
Đặc điểm của DS18B20
Khác với LM35 cho tín hiệu điện áp và cần một bộ ADC ngoài để hỗ trợ chuyển đổi sang tín hiệu số, DS18B20 có tích hợp sẵn một bộ ADC bên trong nên nó sẽ cho ra tín hiệu số ngay. Điều quan trọng là cách thức giao tiếp để chúng ta có thể lấy được giá trị nhiệt độ ra.
Loại giao tiếp của DS18b20 là giao tiếp “One wire”, hay còn gọi là một dây. Loại giao tiếp này chỉ cần một dây truyền dữ liệu duy nhất để giao tiếp giữa Master và Slave.
DS18b20 có 4 lựa chọn độ phân giải, gồm 9, 10, 11, 12 bit. Độ phân giải càng nhỏ thì thời gian thực hiện lệnh đo và chuyển đổi nhiệt độ càng nhanh, nhưng đồng thời độ chính xác giảm đi. Nếu không được điều chỉnh thì DS18b20 sẽ mặc định ở độ phân giải 12 bit. Ở độ phân giải này, DS18b20 cần tối đa 750ms để thực hiện đo và chuyển đổi.
Dải đo nhiệt độ của cảm biến này là từ -55 °C tới 125 °C. Với khoảng nhiệt độ là -10°C tới 85°C thì độ chính xác ±0.5°C, ±0.25°C, ±0.125°C, ±0.0625°C. theo số bit điều chỉnh độ phân giải.
Với mã nhận diện lên đến 64 bit, bạn hoàn toàn có thể giao tiếp với nhiều cảm biến DS18B20 trên cùng một dây “one wire”. Ta sẽ nói rõ hơn về mã nhận diện khi đến phần giao tiếp với DS18B20.
Có chức năng cảnh báo nhiệt khi nhiệt độ vượt ngưỡng cho phép. Người dùng có thể lập trình chức năng này cho DS18B20. Bộ nhớ nhiệt độ cảnh báo không bị mất khi mất nguồn vì nó có một mã định danh duy nhất 64 bit chứa trong bộ nhớ ROM trên chip (on chip), giá trị nhị phân được khắc bằng tia laze.
Ngoài ra dòng tiêu thụ tại chế độ nghỉ rất nhỏ.
Ưu điểm : Nhỏ gọn, có dải đo rộng và độ chính xác khá cao, có tích hợp bộ chuyển đổi nên không cần thêm ADC hỗ trợ.
Nhược điểm : Chính vì có ngõ ra là tín hiệu số nên phải hiểu kĩ về tập lệnh của DS18B20 và cách thức giao tiếp thì mới có thể lập trình.
Các linh kiện hỗ trợ khác
Tụ điện
Tụ điện là một linh kiện thụ động cấu tạo của tụ điện là hai bản cực bằng kim loại ghép cách nhau một khoảng d ở giữa hai bản tụ là dung dịch hay chất điện môi cách điện có điện dung C. Đặc điểm của tụ là cho dòng điện xoay chiều đi qua, ngăn cản dòng điện một chiều.
Công thức tính điện dung của tụ: C = εSd
Trong đó : ε là hằng số điện môi
S là điện tích bề mặt tụ m2
d là bề giày chất điện môi
Tụ điện phẳng gồm hai bàn phẳng kim loại diện tích đặt song song và cách nhau một khoảng d.
Cường độ điện trường bên trong tụ có trị số : E =
= 8.86.10-12 C2/ N.m2 là hằng số điện môi của chân không.
là hằng số điện môi tương đối của môi trường; đối với chân không = 1, giấy tẩm dầu = 3,6, gốm = 5,5; mica = 4 5
Trong mạch nhóm sử dụng 2 loại tụ đó là : Tụ hóa và tụ gốm. Tụ gốm được sử dụng cho VĐK 8051 là 30 pF, còn tụ hóa được sử dụng cho chức năng reset là 10μF.
Thạch anh 12 Mhz : Tạo tần số hoạt động cho VĐK 8051
Đặc tính vật lý : độ bền cơ học vao, ít chịu ảnh hưởng của nhiệt độ và các tác dụng hóa học.
Thạch anh có tính chất áp điện, nghĩa là dưới tác dụng của điện trường thì sinh ra dao động. Do đó có thể dùng thạch anh như một khung cộng hưởng. Tính chất dao động của thạch anh được biểu diễn bởi sơ đồ tương đương hình a., trong đó Lq,Cq và rq phụ thuộc vào kích thước khối thạch anh và cách cắt khối thạch anh. Thạch anh có kích thước càng nhỏ thì Lq, Cq và rq càng nhỏ, nghĩa là tần số cộng hương riêng của nó càng cao. Lq, Cq và rq có tính ổn định cao. Cq là điện dung giá đỡ, tính ổn định của Cq kém hơn.
Ta có :
Ký hiệu thạch anh Đặc tính điện kháng của thạch anh
Sơ đồ tương đương của thạch anh
Điện trở, biến trở
Điện trở :
Điện trở là linh kiện thụ động có tác dụng cản trở cả dòng và áp.Điện trở đựơc sử dụng rất nhiều trong các mạch điện tử.
R =ρ lS
Trong đó ρ là điện trở suất của vật liệu
S là thiết diện của dây; ℓ là chiều dài của dây.
Điện trở là đại lượng vật lí đặc trưng cho tính chất cản trở dòng điện của một vật thể dẫn điện. Nó được định nghĩa là tỉ số của hiệu điện thế giữa hai đầu vật thể đó với cường độ dòng điện đi qua nó:
R = UI
Trong đó:
U : là hiệu điện thế giữa hai đầu vật dẫn điện, đo bằng vôn (V).
I : là cường độ dòng điện đi qua vật dẫn điện, đo bằng ămpe (A).
R : là điện trở của vật dẫn điện, đo bằng Ohm (Ω).
Ký hiệu:
Ứng dụng: Điện trở được dùng để chế tạo ra dịch mức điện áp giữa hai điểm khác nhau của mạch.
Biến trở :
Biến trở là các thiết bị có điện trở thuần có thể biến đổi được theo ý muốn. Chúng có thể được sử dụng trong các mạch điện để điều chỉnh hoạt động của mạch điện.
Ký hiệu :
Biến trở có 3 chân, một trong các chân đó sẽ là “chân chạy
Phần 2: Nội dung và trình tự thiết
Sơ đồ khối tổng quát và nguyên lý hoạt động
Sơ đồ khồi.
Khối hiển thị
LCD
Khối xử lý trung tâm
Khối cảm biến
Khối điều khiển nhiệt độ khống chế
Đầu ra ứng dụng
(mô phỏng bằng sáng tắt led)
Hoạt đông.
Cảm biến DS18B20 có nhiệm vụ đo nhiệt độ môi trường sau đó biến đổi thành tín hiệu số. Tín hiệu từ cảm biến được gửi đến khối xử lý trung tâm là AT89S52 qua chân DQ đi vào cổng P0_0. AT89S52 phân tích, tính toán sau đó chuyền dữ liệu ra khối hiển thị LCD. Nút bấm giúp ta có thể tăng hoặc giảm nhiệt độ khống chế theo ý mốn.
Khi nhiệt độ môi trường lớn hơn nhiệt độ khống chế thì khối xử lý xuất tín hiệu mức 0 ra chân P2_7 để bật đèn.
Khi nhiệt độ môi trường nhỏ hơn nhiệt độ khống chế thì khối xử lý xuất tín hiệu mức 0 ra chân P2_5 để bật đèn.
Khi nhiệt độ môi trường bằng nhiệt độ khống chế thì khối xử lý xuất tín hiệu mức 0 ra chân P2_6 để bật đèn.
Mô phỏng với proteus
Mạch in
Code
#include
#define LCD_RS P3_7
#define LCD_RW P3_6
#define LCD_EN P3_5
#define LCD_D4 P3_3
#define LCD_D5 P3_2
#define LCD_D6 P3_1
#define LCD_D7 P3_0
#define nhan_t P2_1
#define nhan_g P2_0
#define LED_1 P2_5
#define LED_2 P2_6
#define LED_3 P2_7
#define DQ P0_0
void khong_che(void);
void kiemtra(void);
unsigned char temp;
unsigned int nhiet_dat;
void delay_us(unsigned int t)
{
unsigned int i;
for(i=0;i<t;i++);
}
void delay_ms(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<125;j++);
}
void delay_18B20(unsigned int ti)
{
while(ti--);
}
void Init_18B20(void){
DQ = 1;
delay_18B20(8);
DQ = 0;
Delay_18B20(65);
DQ = 1;
delay_18B20(20);
}
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--){
DQ = 0;
dat>>=1;
DQ = 1;
if(DQ)
dat |= 0x80;
delay_18B20(4);
}
return(dat);
}
void WriteOneChar(unsigned char dat){
unsigned char i=0;
for (i=8; i>0; i--){
DQ = 0;
DQ = dat&0x01;
delay_18B20(5);
DQ = 1;
dat>>=1;
}
}
void ReadTemperature(void)
{
unsigned char a=0;
unsigned char b=0;
Init_18B20();
WriteOneChar(0xCC);
WriteOneChar(0x44);
delay_18B20(10);
Init_18B20();
WriteOneChar(0xCC);
WriteOneChar(0xBE);
delay_18B20(10);
a=ReadOneChar();
b=ReadOneChar();
temp=((b*256+a)>>4);
}
void LCD_Enable(void){
LCD_EN =1;
delay_us(3);
LCD_EN=0;
delay_us(50);
}
void LCD_Send4Bit(unsigned char Data)
{
LCD_D4=Data & 0x01;
LCD_D5=(Data>>1)&1;
LCD_D6=(Data>>2)&1;
LCD_D7=(Data>>3)&1;
}
void LCD_SendCommand(unsigned char command)
{
LCD_Send4Bit(command >>4);
LCD_Enable();
LCD_Send4Bit(command);
LCD_Enable();
}
void LCD_Clear()
{
LCD_SendCommand(0x01);
delay_us(10);
}
void LCD_Init()
{
LCD_Send4Bit(0x00);
delay_ms(20);
LCD_RS=0;
LCD_RW=0;
LCD_Send4Bit(0x03);
LCD_Enable();
delay_ms(5);
LCD_Enable();
delay_us(100);
LCD_Enable();
LCD_Send4Bit(0x02);
LCD_Enable();
LCD_SendCommand( 0x28 );
LCD_SendCommand( 0x0c);
LCD_SendCommand( 0x06 );
LCD_SendCommand(0x01);
}
void LCD_Gotoxy(unsigned char x, unsigned char y)
{
unsigned char address;
if(!y)address=(0x80+x);
else address=(0xc0+x);
delay_us(1000);
LCD_SendCommand(address);
delay_us(50);
}
void LCD_PutChar(unsigned char Data)
{ LCD_RS=1;
LCD_SendCommand(Data);
LCD_RS=0 ;
}
void LCD_Puts(char *s)
{
while (*s)
{
LCD_PutChar(*s);
s++;
}
}
void TempShow(unsigned char z)
{
LCD_Puts("T do: ");
LCD_PutChar((z/100)+48);
LCD_PutChar((z%100/10)+48);
LCD_PutChar((z%10)+48);
LCD_Puts("'C");
}
void nhietkhongche(){
LCD_Puts("T dat: ");
LCD_PutChar((nhiet_dat/100)+48);
LCD_PutChar((nhiet_dat%100/10)+48);
LCD_PutChar((nhiet_dat%10)+48);
LCD_Puts("'C");
}
unsigned char temp;
void main()
{
nhiet_dat=25;
LCD_Init();
LCD_Gotoxy(0,0);
LCD_Puts("Vu Van Khai & ");
delay_ms(500);
LCD_Gotoxy(0,1);
LCD_Puts("Hoang Xuan Trung");
delay_ms(1000);
LCD_Clear();
while(1)
{
LCD_Gotoxy(0,0);
kiemtra();
ReadTemperature();
TempShow(temp);
LCD_Gotoxy(0,1);
nhietkhongche() ;
khong_che();
delay_ms(100);
}
}
void kiemtra(void)
{ nhan_t=0;
if(nhan_t==1)
{
nhiet_dat++;
delay_ms(100);
if(nhiet_dat>85)
nhiet_dat=0;
}
nhan_g=0;
if(nhan_g==1)
{
nhiet_dat--;
delay_ms(100);
if(nhiet_dat<1)
nhiet_dat=85;
}
}
void khong_che(void)
{
if(temp==nhiet_dat)
{ LED_2=0;
LED_1=LED_3=1; }
if(temp>nhiet_dat)
{ LED_1=0;
LED_2=LED_3=1;
}
if(temp<nhiet_dat)
{ LED_3=0;
LED_1=LED_2=1;
}
}
Phần 3: Kết luận và tài liệu tham khảo.
Kết luận.
Mạch đã chạy và có thể đo được nhiệt độ môi trường tương đối chính xác. Tuy nhiên Mạch chưa được phát triển đầy đủ và chức năng chưa hoàn thiện để sử dụng vào các mục đích cần thiết.
Bọn em muốn phát triển mạch có thể đo và khống chế cả nhiệt độ và độ ẩm để có thể áp dụng vào việc ấp trứng, giấm hạt, lò xấy.... Vậy chúng em rất mong sự đóng góp ý kiến của thầy để sản phẩm của chúng em được hoàn hảo nhất.
Tài liệu tham khảo
Thiết kế điện tử tiên tiến- Nguyễn Trung Hiếu, Đặng Hoài Bắc, nxb thông tin truyền thông.
Giáo trình 8051 và ứng dụng, Tống Văn On.
LỜI CẢM ƠN
Trong suốt thời gian học tại Học viện Công nghệ bưu chính viễn thông, với sự giúp đỡ của quý thầy cô và giáo viên hướng dẫn về mọi mặt từ nhiều phía và nhất là trong thời gian thực hiện đề tài, nên đề tài đã được hoàn thành đúng thời gian quy định. Nhóm thực hiện xin chân thành cảm ơn đến:
Quý thầy cô trong khoa Điện-Điện tử đã giảng dạy những kiến thức chuyên môn làm cơ sở để thực hiện tốt đồ án môn học và tạo điều kiện thuận lợi cho chúng em để làm tốt đồ án môn học này.
Đặc biệt, Thầy Lê Đức Toàn, giáo viên hướng dẫn đề tài đã nhiệt tình giúp đỡ và cho nhóm thực hiện những lời chỉ dạy quý báu, giúp nhóm thực hiện định hướng tốt trong khi thực hiện đề tài.
Tất cả bạn bè đã giúp đỡ và hướng dẫn trong suốt quá trình làm đề tài.
Hà Nội, ngày 20 tháng 03 năm 2017
Nhóm sinh viên thực hiện
Vũ Văn Khải
Hoàng Xuân Trung
Các file đính kèm theo tài liệu này:
- loi_noi_dau_5033.docx