Chuyên đề Đo và hiển thị nhiệt độ môi trường bằng màn hình LCD

MỤC LỤC

 

LỜI NÓI ĐẦU 2

Chương 1: TỔNG QUAN VỀ HỌ VI ĐIỀU KHIỂN AT 89S51 3

1.1. Cấu trúc bên trong của họ vi diêu khiển 3

1.2. Chức năng các chân của họ vi diều khiển 4

1.3. Tổ chức của bộ nhớ 7

1.4. Hoạt động của bộ định thời ( timer ) 10

1.5. Tập lệnh của AT 89S51 15

Chương 2: ĐO VÀ HIỂN THỊ NHIỆT ĐỘ MÔI TRƯỜNG BẰNG LCD 21

2.1. Biến đổi tương tự số 21

2.2.Tổng quát về biến đổi về tương tự số 21

Chương 3: MẠCH ĐIỀU KHIỂN VÀ CHƯƠNG TRÌNH 26

3.1. Phần cứng 26

3.2 Lưu đồ thuật toán 32

3.3 Chương trình 34

Chương 4: KẾT LUẬN 37

4.1. Nội dung đã làm được 37

4.2. Ứng dụng của đề tài 37

4.3. Hướng phát triển của đề tài 37

4.4 Tài liệu tham khảo 37

LỜI CẢM ƠN 38

 

doc43 trang | Chia sẻ: lethao | Lượt xem: 2732 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Chuyên đề Đo và hiển thị nhiệt độ môi trường bằng màn hình LCD, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
cao, AT89S51 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp (4K). Nếu ở mức thấp, chương trình được thi hành từ bộ nhớ mở rộng. SRT (Reset) : Ngõ vào RST trên chân 9 là ngõ reset của AT89S51. Khi tín hiệu này được đưa lên mức cao (trong ít nhất 2 chu kỳ máy ), các thanh ghi trong AT89S51 được tải những giá trị thích hợp để khởi động hệ thống. XTAL1, XTAL2 : Nối với thạch anh giữa hai chân 18 và 19. Các tụ giữa cũng cần thiết, và tần số thạch anh thông thường là 12MHZ. Các chân nguồn : AT89S51 vận hành với nguồn đơn +5V. Vcc được nối vào chân 40 và Vss (GND) được nối vào chân 20. H 1.3. Tóm tắt bản đồ vùng nhớ và bộ nhớ dữ liệu 1.3 Tổ chức bộ nhớ: H 1.4. Tóm tắt các vùng của bộ nhớ. Chi tiết về bộ nhớ RAM trên chip: Như ta đã thấy trên hình, RAM bên AT89S51 được phân chia giữa các bank thanh ghi (00H – 1FH), RAM địa chỉ hóa từng bit (20H – 2FH), RAM đa dụng (30H – 7FH) và các thanh ghi chức năng đặc biệt (80H – 0FFH). RAM đa dụng: Mọi địa chỉ trong vùng RAM đa dụng đều có thể được truy xuất tự do dùng cách đánh giá địa chỉ trực tiếp hoặc gián tiếp. RAM địa chỉ hóa từng bit . AT 89S51 chứa 210 bit được địa chỉ hóa, trong đó 128 bit là ở các địa chỉ byte 20H đến 2FH, và phần còn lại trong các thanh ghi chức năng đặc biệt .Các bit có thể được đặt, xóa, AND,OR …với một lệnh đơn. Các port I/0 cũng được địa chỉ từng bit làm đơn giản phần mềm xuất nhập từng bit. Các bank thanh ghi . 32 byte thấp nhất của bộ nhớ nội là dành cho các bank thanh ghi. Bộ lệnh của AT89S51 hổ trợ 8 thanh ghi (R0 đến R7) và theo mặc định (sau khi Reset hệ thống) các thanh ghi này ở các địa chỉ 00H-07H. Các lệnh dùng các thanh ghi R0 đến R7 thì sẽ ngắn hơn và nhanh hơn các lệnh tương ứng nhưng dùng địa chỉ trực tiếp. Bank thanh ghi tích cực có thể chuyển đổi bằng cách thay đổi các bit chọn bank thanh ghi trong thanh ghi từ trạng thái Program Status Word (PSW). Các thanh ghi chức năng đặc biệt. Các thanh ghi trong AT89S51 được định dạng như một phần của RAM trên chip. Vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi trực tiếp, sẽ không có lợi khi đặt chúng vào trong RAM trên chip). Cũng như R0 đến R7, có 21 thanh ghi chức năng đặc biệt (SFR: Special Funtion Rgister) ở vùng trên của RAM nội, từ địa chỉ 80H đến 0FFH. Hầu hết 128 địa chỉ từ 80H đến 0FFH không được định nghĩa. Chỉ có 21 địa chỉ SFR là được định nghĩa. Từ trạng thái chương trình. Từ trạng thái chương trình (PSW: Program Status Word): Ở địa chỉ D0H chứa các bit trạng thái như sau: Cờ nhớ (CY): Có công dụng kép, thông thường nó được dùng cho các lệnh toán học. Nó sẽ được set nếu có một ô nhớ sinh ra bởi phép cộng hoặc có một số mượn phép trừ tại địa chỉ D7H. Cờ nhớ phụ(AC): Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết qủa của 4 bit thấp trong khoảng 0AH đến 0FH ngược lại thì AC=0 có địa chỉ D6H. Cờ 0 (F0): Là một bit cờ đa dụng dành các ứng dụng của người dùng. Có địa chỉ D5H. Các bit chọn bank thanh ghi (RSO và RS1): Xác định bank thanh ghi được tích cực. Chúng được xóa sau khi reset hệ thống và được thay đổi bằng phần mềm nếu cần. Có địa chỉ lần lượt là D4H và D3H. Cờ tràn (OV): Được set khi một phép toán bị tràn. Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểm tra bit này để xác định xem kết qủa của nó có nằm trong tầm xác định không. Khi các số không dấu được cộng, bit OV có thể được bỏ qua. Các kết qủa lớn hơn +127 hoặc nhỏ hơn –128 sẽ set bit OV. Có Địa chỉ D2H. Cờ (P): biểu thị cờ chẵn lẻ. Có địa chỉ 0D0H. Thanh ghi B. Thanh ghi (B): Ở địa chỉ 0F0H được dùng cùng với thanh ghi tích lũy A cho các phép toán nhân và chia. Nó được địa chỉ hóa từng bit bằng các địa chỉ bit 0FH đến 0F7H. Con trỏ ngăn xếp. Con trỏ ngăn xếp (SP): Là một thanh ghi 8 bit ở địa chỉ 81H. Nó chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh của ngăn xếp. Ngăn xếp của AT89S51 được giữ trong RAM nội và được giới hạn các địa chỉ có thể truy xuất bằng địa chỉ gián tiếp. Chúng là 128 byte đầu của AT89S51. Ngăn xếp được truy xuất trực tiếp bằng các lệnh PUSH và POP để lưu giữ tạm thời và lấy lại dữ liệu hoặc được truy xuất ngầm bằng các lệnh gọi chương trình con (ACALL, LCALL) và các lệnh trở về (RET,RETI) để cất và lấy lại bộ đếm chương trình. Con trỏ dữ liệu. Con trỏ dữ liệu (DPTR): Được dùng để truy xuất bộ nhớ ngoài là một thanh ghi 16 bit ở địa chỉ 82H(DPL: byte thấp) và 83H (DPH:byte cao). Các thanh ghi port xuất nhập. Các port của AT89S51 bao gồm: Port 0 ở địa chỉ 80H, Port 1 ở địa chỉ 90 H, Port 2 ở địa chỉ 0A0H và Port 3 ở địa chỉ 0B0H. Tất cả các Port đều được địa chỉ hóa từng bit. Các thanh ghi Timer. AT89S51 chứa 2 bộ định thời đếm 16 bit: Timer 0 ở địa chỉ 8AH (TL0: byte thấp) và 8CH (TH0: byte cao). Timer 1 ở địa chỉ 8BH (TL1: byte thấp) và 8DH (TH1: byte cao). Việc hoạt động timer được set bởi thanh ghi Timer Mode (TMOD) và thanh ghi điều khiển timer (TCON). Chỉ có TCON được địa chỉ hóa từng bit. Các thanh ghi port nối tiếp. AT89S51 chứa một port nối tiếp trên chip dành cho việc trao đổi thông tin với các thiết bị nối tiếp như máy tính, modem hoặc cho việc giao tiếp với các IC khác có giao tiếp nối tiếp (có bộ chuyển đổi A/D, các thanh ghi dịch...). Các mode vận hành khác nhau được lập trình qua thanh ghi điều khiển port nối tiếp (SCON) (được địa chỉ hóa từng bit) ở địa chỉ 98H. Các thanh ghi ngắt. AT89S51 có cấu trúc 5 nguồn ngắt, 2 mức ưu tiên. Các ngắt bị cấm sau khi reset hệ thống và sẽ được cho phép bằng việc ghi thanh ghi cho phép ngắt (IE) ở địa chỉ 8AH. Cả hai thanh ghi được địa chỉ hóa từng bit. Bảng cho phép ng ắt thanh ghi IE như sau: Bit Ký hiệu Địa chỉ M ô t ả Bit (0: không cho phép; 1: cho phép) IE.7 EA AFH Cho phép/không cho phép toàn cục IE.6 -- AEH Không sử dụng IE.5 ET2 ADH Cho phép ngắt do bộ định thờI 2 IE.4 ES ACH Cho phép ngắt do port nốI tiếp IE.3 ET1 ABH Cho phép ngắt do bộ định thờI 1 IE.2 EX1 AAH Cho phép ngắt từ bên ngoài(ngắt ngoài 1) IE.1 ET0 A9H Cho phép ngắt do bộ định thờI 0 IE.0 EX0 A8H Cho phép ngắt từ bên ngoài(ngắt ngoài 0) Thanh ghi điều khiển công suất. Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa nhiều bit điều khiển. 1.4 Hoạt động của bộ định thời (timer): Người ta sử dụng các timer để định khoảng thời gian, đếm sự kiện hoặc tạo tốc độ baud (bit/giây)cho port nối tiếp trong AT89S51. Truy xuất timer của AT89S51 dùng 6 thanh ghi chức năng đặc biệt cho trong bảng sau: Bảng 1.5. Thanh ghi chức năng đặc biệt. Thanh ghi chế độ timer (TMOD). Thanh ghi TMOD chứa hai nhóm 4 bit dùng để đặt chế độ làm việc cho timer 0 và timer 1: Bảng 1.6. Tóm tắt thanh ghi Tmod Thanh ghi điều khiển timer (TCON). Bao gồm các bit để điều khiển bộ định thời và phục vụ ngắt. Bảng 1.7. Tóm tắt thanh ghi TCON Các chế độ timer. Chế độ 0, chế độ timer 13 bit. Ba bit cao của TLX (TL0 và/hoăc TL1) không dùng. H 1.8. Chế độ 13 bit Người ta sử dụng hai thanh ghi TH, TL để nạp giá trị đếm. Hoạt động như timer 16 bit đầy đủ. Cờ báo tràn là bit TFx trong TCON có thể đọc hoặc ghi bằng phầm mềm. MSB của giá trị trong các thanh ghi timer là bit 7 H 1.9. Chế độ 16 bit Chế độ 1, chế độ timer 16 bit. của THx và LBS là bit 0 của TLx. Các thanh ghi timer (TLx/THx) có thể được đọc hoặc ghi bất cứ lúc nào bằng phầm mềm. H 1.10. Chế độ 8 bit Chế độ 2, chế độ tự động nạp lại 8 bit: TLx hoạt động như một timer 8 bit, trong khi đó THx vẫn giữ nguyên giá trị được nạp. Khi số đếm tràn từ FFH về 00H, không những cờ timer được set mà giá trị trong THx đồng thời được nạp vào TLx. Việc đếm tiếp tục từ giá trị này lên đến FFH xuống 00H và nạp lại. Chế độ này rất thông dụng vì sự tràn timer xảy ra trong những khoảng thời gian nhất định và tuần hoàn một khi đã khởi động TMOD và THx. Chế độ 3, chế độ tách timer. Timer 0 tách thành hai timer 8 bit (TL0 và TH0), TL0 có cờ báo tràn là TF0 và TH0 có cờ báo tràn là TF1. Timer 1 ngưng ở chế độ 3, nhưng có thể được khởi động bằng cách chuyển sang chế độ khác. Giới hạn duy nhất là cờ báo tràn TF1 không còn bị tác động khi timer 1 bị tràn vì nó đã được nối tới TH0. Khi timer 0 ở chế độ 3, có thể cho timer 1 chạy và ngưng bằng cách chuyển nó ra ngoài và vào chế độ 3. H 1.11. Chế độ tách Timer Tập lệnh của AT89S51 được chia thành 5 nhóm. 1.5. Tập lệnh của AT89S51. - Số học. - Logic - Chuyển dữ liệu. - Chuyển điều khiển. Các chi tiết thiết lập lệnh: Rn :Thanh ghi R0 đến R7 của bank thanh ghi được chọn. Data : 8 bit địa chỉ vùng dữ liệu bên trong. Nó có thể là vùng RAM dữ liệu trong (0-127) hoặc các thanh ghi chức năng đặc biệt. @Ri : 8 bit vùng RAM dữ liệu trong (0-125) được đánh giá địa chỉ gián tiếp qua thanh ghi R0 hoặc R1. #data : Hằng 8 bit chứa trong câu lệnh. #data 16 : Hằng 16 bit chứa trong câu lệnh. Addr16 : 16 bit địa chỉ đích được dùng trong lệnh LCALL và LJMP. Addr11 : 11 bit địa chỉ đích được dùng trong lệnh LCALL và AJMP. Rel: Byte offset 8 bit có dấu được dùng trong lệnh SJMP và những lệnh nhảy có điều kiện. Bit: Bit được định địa chỉ trực tiếp trong RAM dữ liệu nội hoặc các thanh ghi chức năng đặc biệt. Nhóm lệnh xử lý số học. ADD A,Rn ;(1byte, 1 chu kỳ máy): cộng nội dung thanh ghi Rn vào thanh ghi A. ADD A,data ;(2,1): Cộng trực tiếp 1 byte vào thanh ghi A. ADD A,@Ri ;(1,1): Cộng gián tiếp nội dung RAM chứa tại địa chỉ được khai báo trong Ri vào thanh ghi A. ADD A,#data ;(2,1):Cộng dữ liệu tức thời vào A. ADD A,Rn ;(1,1): Cộng thanh ghi và cờ nhớ vào A. ADD A,data ;(2,1): Cộng trực tiếp byte dữ liệu và cờ nhớ vào A. ADDC A,@Ri ;(1,1): Cộng gián tiếp nội dung RAM và cờ nhớ vào A. ADDC A,#data ;(2,1): Cộng dữ liệu tức thời và cờ nhớ vào A. SUBB A,Rn ;(1,1): Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và cờ nhớ. SUBB A,data ;(2,1): Trừ trực tiếp A cho một số và cờ nhớ. SUBB A,@Ri ;(1,1): Trừ gián tiếp A cho một số và cờ nhớ. SUBB A,#data ;(2,1): Trừ nội dung A cho một số tức thời và cờ nhớ. INC A ;(1,1): Tăng nội dung thanh ghi A lên 1. INC Rn ;(1,1): Tăng nội dung thanh ghi Rn lên 1. INC data ;(2,1): Tăng dữ liệu trực tiếp lên 1. INC @Ri ;(1,1): Tăng gián tiếp nội dung vùng RAM lên 1. DEC A ; (1,1): Giảm nội dung thanh ghi A xuống 1. DEC Rn ; (1,1): Giảm nội dung thanh ghi Rn xuống 1. DEC data ; (2,1): Giảm dữ liệu trực tiếp xuống 1 DEC @Ri ; (1,1): Giảm gián tiếp nội dung vùng RAM xuống 1. INC DPTR ; (1,2): Tăng nội dng con trỏ dữ liệu lên 1. MUL AB ; (1,4): Nhân nội dung thanh ghi A với nội dung thanh ghi B. DIV AB ; (1,4): Chia nội dung thanh ghi A cho nội dung thanh ghi B. DA A ; (1,1): hiệu chỉnh thập phân thanh ghi A. Nhóm lệnh logic. ANL A,Rn ; (1,1): AND nội dung thanh ghi A với nội dung thanh ghi Rn. ANL A,data ; (2,1):AND nội dung thanh ghi A với dữ liệu trực tiếp. ANL A,@Ri ; (1,1): AND nội dung thanh ghi A với dữ liệu trong RAM. ANL A,#data ; (2,1): AND nội dung thanh ghi với dữ liệu tức thời. ANL data,A ; (2,1): AND một dữ liệu trực tiếp với A. ANL data,#data ;(3,2): AND một dữ liệu trực tiếp với A một dữ liệu tức thời. ANL C,bit ; (2,2):AND cờ nhớ với 1 bit trực tiếp. ANL C,bit ; (2,2): AND cờ nhớ với bù 1 bit trực tiếp. ORL A,Rn ; (1,1): OR thanh ghi A với thanh ghi Rn. ORL A,data ; (2,1): OR thanh ghi A với một dữ liệu trực tiếp. ORL A,@Ri ; (1,1): OR thanh ghi A với một dữ liệu gián tiếp. ORL A,#data ; (2,1):OR thanh ghi A với một dữ liệu tức thời. ORL data,A ; (2,1): OR một dữ liệu trực tiếp với thanh ghi A. ORL data,#data ; (3,1):OR một dữ liệu trực tiếp với một dữ liệu tức thời. ORL C,bit ; (2,2): OR cờ nhớ với một bit trực tiếp. ORL C,bit ; (2,2): OR cờ nhớ với bù của một bit trực tiếp. XRL A,Rn ; (1,1): XOR thanh ghi A với thanh ghi Rn. XRL A,data ; (2,1): XOR thanh ghi A với mộ dữ liệu trực tiếp. XRL A,@Ri ; (1,1): XOR thanh ghi A với một dữ liệu gián tiếp. XRL A,#data ; (2,1): XOR thanh ghi A với mộ dữ liệu tức thời. XRL data,A ; (2,1): XOR một dữ liệu trực tiếp với thanh ghi A. XRL dara,#data ; (3,1): XOR một dữ liệu trực tiếp với một dữ liệu tức thời. SETB C ; (1,1): Đặt cờ nhớ. SETB bit ; (2,1): Đặt một bit trực tiếp. CLR A ; (1,1): Xóa thanh ghi A. CLR C ; (1,1): Xóa cờ nhớ. CPL A ; (1,1): Bù nội dung thanh ghi A. CPL C ; (1,1): Bù cờ nhớ. CPL bit ; (2,1): Bù một bit trực tiếp. RL A ; (1,1): Quay trái nội dung thanh ghi A. RLC A ; (1,1): Quay trái nội dung thanh ghi A qua cờ nhớ. RR A ; (1,1): Quay phải nội dung thanh ghi A. RRC A ; (1,1): Quay phải nội dung thanh ghi A qua cờ nhớ. SWAP ; (1,1): Quay trái nội dung thanh ghi A 1 nibble (1/2byte). Nhóm lệnh chuyển dữ liệu. MOV A,Rn ; (1,1):Chuyển nội dung thanh ghi Rn vào thanh ghi A. MOV A,data ; (2,1): Chuyển dữ liệu trực tiếp vào thanh ghi A. MOV A,@Ri ; (1,1): Chuyển dữ liệu gián tiếp vào thanh ghi A. MOV A,#data ; (2,1): Chuyển dữ liệu tức thời vào thanh ghi A. MOV Rn,data ; (2,2): Chuyển dữ liệu trực tiếp vào thanh ghi Rn. MOV Rn,#data ; (2,1): Chuyển dữ liệu tức thời vào thanh ghi Rn. MOV data,A ; (2,1): Chuyển nội dung thanh ghi A vào dữ liệu trực tiếp. MOV data,Rn ; (2,2): Chuyển nội dung thanh ghi Rn vào dữ liệu trực tiếp. MOV data,data ; (3,2): Chuyển một dữ liệu trực tiếp vào dữ liệu trực tiếp. MOV data,@Ri ;(2,2): Chuyển một dữ liệu gián tiếp vào một dữ liệu gián tiếp. MOV data,#data ;(3,2): Chuyển một dữ liệu tức thời vào một dữ liệu trực tiếp. MOV @Ri,A ; (1,1): Chuyển nội dung thanh ghi A vào dữ liệu gián tiếp. MOV @Ri,data ;(2,2): Chuyển một dữ liệu trực tiếp vào một dữ liệu gián tiếp. MOV @Ri,#data ; (2,1): Chuyển dữ liệu tức thời vào dữ liệu gián tiếp. MOV DPTR,#data16 ;(3,2):Chuyển một hằng 16 bit vào thanh ghi con trỏ dữ liệu. MOV C,bit ; (2,1): Chuyển một bit trực tiếp vào cờ nhớ. MOV bit,C ; (2,2): Chuyển cờ nhớ vào một bit trực tiếp. MOV A,@A+DPTR ;(1,2): Chuyển byte bộ nhớ chương trình có địa chỉ là @A+DPRT vào thanh ghi A. MOVC A,@A+PC ;(1,2): Chuyển byte bộ nhớ chương trình có địa chỉ là @A+PC vào thanh ghi A. MOV A,@Ri ;(1,2): Chuyển dữ liệu ngoài (8 bit địa chỉ) vào thanh ghi A. MOVX A,@DPTR ;(1,2): Chuyển dữ liệu ngoài (16 bit địa chỉ) vào thanh ghi A. MOVX @Ri,A ;(1,2): Chuyển nội dung A ra dữ liệu ngoài (8 bit địa chỉ). MOVX @DPTR,A ;(1,2): Chuyển nội dung A ra dữ liệu bên ngoài (16 bit địa chỉ). PUSH data ;(2,2): Chuyển dữ liệu trực tiếp vào ngăn xếp và tăng SP. POP data ;(2,2): Chuyển dữ liệu trực tiếp vào ngăn xếp và giảm SP. XCH A,Rn ;(1,1) : Trao đổi dữ liệu giữa thanh ghi Rn v2 thanh ghi A. XCH A,data ;(2,1) : Trao đổi giữa thanh ghi A và một dữ liệu trực tiếp. XCH A,@Ri ;(1,1) : Trao đổi giữa thanh ghi A và một dữ liệu gián tiếp. XCHD A,@R ;(1,1): Trao đổi giữa nibble thấp (LSN) của thanh ghi A và LSN của dữ liệu gián tiếp. Nhóm lệnh chuyền điều khiển. ACALL addr11 ; (2,2): Gọi chương trình con dùng địa chì tuyệt đối. LCALL addr16 ; (3,2): Gọi chương trình con dùng địa chỉ dài. RET ; (1,2): Trở về từ lệnh gọi chương trình con. RET1 ; (1,2): Trở về từ lệnh gọi ngắt. AJMP addr11 ; (2,2): Nhảy tuyệt đối. LJMP addr16 ; (3,2): Nhảy dài. SJMP rel ; (2,2):Nhảy ngắn. JMP @A+DPTR ; (1,2): Nhảy gián tiếp từ con trỏ dữ liệu. JZ rel ; (2,2): Nhảy nếu A=0. JNZ rel ; (2,2): Nhảy nếu A không bằng 0. JC rel ; (2,2): Nhảy nếu cờ nhớ được đặt. JNC rel ; (2,2): Nhảy nếu cờ nhớ không được đặt. JB bit,rel ; (3,2): Nhảy tương đối nếu bit trực tiếp được đặt. JNB bit,rel ; (3,2):Nhảy tương đối nếu bit trực tiếp không được đặt. JBC bit,rel ; (3,2): Nhảy tương đối nếu bit trực tiếp được đặt , rồi xóa bit. CJNE A,data,rel ; (3,2): So sánh dữ liệu với A và nhảy nếu không bằng. CJNE A,#data,rel ; (3,2): So sánh dữ liệu với A và nhảy nếu không bằng. CJNE Rn,#data,rel; (3,2): So sánh dữ liệu với nội dung thanh ghi Rn và nhảy nếu không bằng. CJNE @Ri,#data,rel; (3,2): So sánh dữ liệu với dữ liệu gián tiếp và nhảy nếu không bằng. DJNZ Rn,rel ; (2,2): Giản thanh ghi Rn và nhảy nếu không bằng. DJNZ data,rel ; (3,2): Giảm dữ liệu trực tiếp và nhảy nếu không bằng. Chương 2: BIẾN ĐỔI TƯƠNG TỰ SỐ VÀ SỐ TƯƠNG TỰ 2.1. Biến đổi tương tự số ( ADC ). Biến đổi tương tự - số (analog - digital )là thành phần cần thiết trong việc xử lý thông tin và các cách điều khiển sử dụng phương pháp số. Tín hiệu thực của analog là một hệ thống tiếp nhận dữ liệu phải có các bộ phận giao tiếp analog digital convert ( ADC). Các bộ phận chuyển đổi tương tự số, viêt tắt là ADC thực hiện hai chức năng cơ bản là lượng tử hoá và mã hoá. Lượng tử hoá là gán cho các mã nhị phân từng giá trị rời rạc sinh ra trong quá trình lượng tử hoá. Mã hóa là: mỗi mức lượng tử được chỉ định giá trị số 8 bit→có 256 giá trị. Bit đầu tiên để đánh dấu giá trị âm hoặc dương cho mẫu. Bẩy bit còn lại biểu diễn cho độ lớn. Quá trình biến đổi này được diễn ra nhờ thiết bị biến đổi CODES (coder-decoder). 2.2Tổng quát về biến đổi về tương tự số. Quan hệ vào ra (in – out). Biến đổi ADC có tính chất tỉ lệ. Tín hiệu vào Analog được biến đổi thành một phân số X bằng cách so sánh với tín hiệu tham chiếu Vref. Đầu ra của bộ ADC là mã của phân số này. Bất kì một sai số tín hiệu Vref nào cũng sẽ dẫn đến sai số mức ra, vì vậy người ta cố gắn dữ cho Vref càng ổn định càng tốt. Trong mạch nhiệt độ này giá trị đặt trên chân Vref có giá trị: +1.28Vol. ADC Vref Vin Digital output Hình 2.1 Quan hệ vào ra các khối ADC. Nếu bộ ADC xuất mã ra gồm n bit thì số mức ra rời rạc là 2n. Đối quan hệ tuyến tính, tần số vào được lượng tử hóa theo đúng mức này. Mỗi mức như vậy là một tín hiệu Analog được phân biệt với hai mã kế tiếp nhau, nó chính là kích thước của LSB (Least Significant Bit). FS Q= LSB = 2N Trong đó : Q : Lượng tử LSB : bit có trọng số thấp nhất FS : giá trị toàn thang Tất cả các giá trị Analog của lượng tử Q được biểu diễn bởi mã số, mà mã này tương ứng với giá trị trung bình của lượng tử (có thể hiểu là giữa khoảng LSB) gọi là mức ngưỡng. Các giá trị Analog nằm trong khoảng từ mức ngưỡng sai biệt đi: ± LSB vẫn được thể hiện bằng cùng một mẫu, đó là sai số lượng tử hóa. Sai số này có thể sẽ giảm đi bằng cách tăng số bit trong mã ra bộ ADC. Độ phân giải. Là giá trị biến đổi nhỏ nhất của tín hiệu vào ra được yêu cầu để thay đổi mã lên một mức.( Độ phân giải được đưa ra với giả thiết lý tưởng.) Độ chính xác. Sự sai biệt giữa các giá trị điện áp tín hiệu vào so với giá trị FS tương đương với mã xuất ra. Thường có ghi trong đặc tính của các bộ ADC thương mại. ADC. Tùy theo công nghệ chế tạo mà bộ ADC có đầu vào đơn cực hay lưỡng cực, đa số nằm trong khoảng 0…+5V hoặc 0…+10V đối với đơn cực và -5…+5V hoặc –10V…+10V đối với ADC lưỡng cực. Tín hiệu vào cần phù hợp với tầm vào xác định cho từng bộ ADC. Nếu đầu vào không hết thang sẽ tạo mã vô dụng ở đầu ra. Vấn đề này được giải quyết bằng cách chọn tầm đầu vào bộ ADC sau đó chỉnh độ lợi thích hợp cho đầu vào của nguồn Analog. Khi sử dụng bộ ADC đơn cực mà có tín hiệu vào là lưỡng cực trong khoảng ±Vpp thì ta cần phải cộng điện áp vào Vin với một điện áp nền bằng +Vpp, khi đó ta sẽ có Vin nằm trong khoảng 0..+2.56Vpp; tín hiệu này sẽ được đưa tới đầu vào bộ ADC. Nếu sử dụng ADC lưỡng cực thì không cần cộng tín hiệu và đầu ra ta sẽ nhận được mã lưỡng cực. Đầu ra bộ ADC. Đa số các ADC có đầu ra 8 Bits, 16 Bits … dù vậy cũng có loại 3 Digit, mã BCD, 10 Bits, 14 Bits. Đầu ra các bộ ADC thường là mã nhị phân tự nhiên hoặc có dấu. ADC dùng cho máy đo chỉ thị số đa dụng thường là mã BCD. Tín hiệu tham chiếu Vr. Hình vẽ cho thấy đầu vào và đầu ra của bộ ADC. Mọi ADC đều yêu cầu có tín hiệu Vr. Bất kỳ một sai số nào trên Vr đều gây ra lỗi độ lợi ở đặc tính của AD. Vì vậy Vr là tín hiệu đảm bảo độ chính xác và ổn định của bộ AD. Dùng IC ổn áp có thể thỏa mãn điều này. Tín hiệu điều khiển. Mọi bộ ADC đều có tính xung Clock và tín hiệu điều khiển để hoạt động. Thiết bị ngoài giao tiếp với ADC sẽ khởi động quá trình biến đổi bằng cách phát một xung Start vào đầu vào Start của ADC (Chân WR(3) và chân INTR(5)), ADC sẽ nhận biết cạnh lên của xung Start và ngay sau đó nó sẽ kéo đường EOC (End of Conversion) xuống thấp (không tích cực). Lúc này ADC đang thực hiện quá trình biến đổi, tương ứng với mỗi xung Clock đưa vào ADC sẽ thực hiện được một bước biến đổi, sau một bước nhất định tùy theo bộ ADC, thì quá trình biến đổi hoàn thành. Khi biến đổi xong, ADC sẽ nâng đường EOC lên mức cao, tín hiệu này có thể dùng để kích một ngắt cứng của máy tính (nếu dùng giao tiếp với máy tính). Để đọc được dữ liệu đầu ra của bộ ADC thì phải nâng đường OE (Output Enable) của ADC lên mức cao, sau khi đọc xong thì lại trả đường này về mức thấp. Hình dưới là sơ đồ chân của thiết bị biến đổi dùng IC ADC0804 Sơ đồ chân của IC ADC 0804 : Là chân chọn chip, đầu vào tích cực mức thấp, sử dụng kích hoạt chip ADC. : Là tín hiệu vào, tích cực mức thấp, được coi là chân cho phép đầu ra. : Là chân vào tích cực mức thấp được dùng để báo cho ADC bắt đầu quá trình chuyển đổi. : Là chân vào, nối tới đồng hồ ngoài, được sử dụng để tạo thời gian. : Là chân đất tương tự và chân đất số, đây là những chân đầu vào cấp đất chung cho cả hai tín hiệu số và tương tự. : Là chân điện áp đầu vào được dùng làm điện áp tham chiếu. : Đây là hai đầu vào tương tự vi sai. : Là chân nguồn nuôi +5V. : Là các chân dữ liệu số,các chân này chỉ có điện áp khi các chân CS và RD có tín hiệu mức thấp.(Chân D7 báo cờ bận khi tín hiệu trên chân =1) Chương3: MẠCH ĐIỀU KHIỂN VÀ CHƯƠNG TRÌNH 3.1. Phần cứng: Mạch chuyển đổi ADC. Giới thiệu ADC 0804 ADC 0804là thiết bị biến đổi tương tự số dùng kỹ thuật CMOS. Tổng cộng người sử dụng có 8 kênh làm việc hoàn toàn độc lập với nhau để lựa chọn. ở đây còn chú ý là các điện áp được đo so với điện thế 0V. Còn một đặc điểm đáng quan tâm hơn là sự tiêu thụ dòng điện của vi mạch hầu như không đáng kể (chỉ cỡ 300mA). Thời gian biến đổi khoảng 100 ms. Các thông số kỹ thuật của bộ biến đổi ADC 0804 được kể ra như sau: Không cần đòi hỏi điều chỉnh điểm 0. Quét động 8 kênh bằng các logic địa chỉ. Giải tín hiệu lối vào Analog khi điện áp nguồn là +5V. Tất cả các tín hiệu tương thích TTL. Độ phân giải 8 bit. Thời gian biến đổi 110ms. Sử dụng điện áp đặt trên chân đầu vào (chân 9) có giá trị 1.28V.( điện áp chuẩn). Dòng tiêu thụ (bình thường): 0.3 mA. Tần số cung cấp cho chân clock: 10KHz - 1280KHz. Thông thường vào khoảng 640KHz. Hình 3.1: Sơ đồ nguyên lý của ADC0804 song song(paralell hay flash conversion). Nguyên lý hoạt động khi giao tiếp với vi chỉnh điện trở: ADC0804 được điều khiển bởi một ngõ vào ghi và một ngõ ra ngắt . Việc biến đổi được bắt đầu bằng cách cho xuống mức thấp. Khi việc biến đổi hoàn tất (110us sau) . ADC0804 xác lập không được xác lập (ở mức cao) khi có chuyển trạng thái từ 10 kế của , bắt đầu lần biến đổi ADC kế. và nối với 89S51trên các đường port1 và sử dụng portA của 89S51 để truyền dữ liệu. ADC0804 hoạt động nhờ vào một nguồn xung clock bên ngoài được tạo ra bằng cách nối R-C với các chân 19 và 4. Điện áp ngõ vào tương tự là tín hiệu sai biệt đặt trên các ngõ vào Vin(+) và Vin(-) trên các chân 6 và 7. Trong thí dụ này, Vin(-) nối đất (0V) và Vin(+) có được bằng cách điều chỉnh một biến trở vi chỉnh để thay đổi điện áp điểm giữa của biến trở. Vin(+) ở trong tầm từ 0 đến 5V. Có thể nhận thấy mạch chuyển đổi ADC ở trên có tốc độ chuyển đổi rất nhanh(có thể đạt tốc độ chuyển đổi vài triệu lần trong một giây.Thí dụ để có mạch đổi 3 bit người ta dùng 7 mạch so sánh ở ngã vào và một mạch mã hoá ưu tiên để tạo mã số nhị phân ở ngã ra ). Khi VV/10, các ngã ra mạch so sánh đều lên cao khiến mã số ra là 000. Khi , ngã ra mạch so sánh 1 xuống thấp khiến mã số ra là 001. Khi , ngã ra mạch so sánh 2 xuống thấp khiến mã số ra là 010. Cứ như thế ta thấy mã số ra tỷ lệ với điện thế tương tự vào. Ở thí dụ này vi chỉnh để thay đổi điện áp được dùng là IC LM 35 Sơ đồ chân của LM35 LM 35 là thiết bị cảm biến nhiệt mạch tích hợp chính sác cao, điện áp đầu ra tỷ lệ tuyến tính với nhiệt độ theo thang độ Celsius. Nó cho điện áp ra 10mV ứng với thay đổi nhiệt độ là , giải nhiệt độ từ , cấp độ chính sác Ở đây chân 2 của biến trở vi chỉnh được nối với chân Vin(+) của ADC0804, chân 3 nối với nguồn +5V,chân 1 nối mát theo hình. Sơ đồ giao tiếp của LM35 với ADC0804 Mạch tạo điện áp đặt của ADC 0804. Những phần tử sử dụng trong mạch: IC74LS245 Tụ c4 : 150pF Điên trở: 10K Thời gian chuyển đổi 110μs Đầu ra nối với chân đặt Vref( 9 ) của ADC 0804 Màn hình hiển thị LCD Chức năng các chân được mô tả bằng bảng sau đây: Chân Ký hiệu I/O Mô tả 1 Vss - Đất 2 Vcc - Dương nguồn +5V 3 Vee - Nguồn điều khiển tương phản 4 RS I RS=0 chọn thanh ghi lệnh RS=1 chọn thanh ghi dữ liệu 5 R/W I R/W=1 đọc dữ liệu. R/W=0 ghi dữ liệu. 6 E I/O Cho phép 7 DB0 I/O Bus dữ liệu 8 bit 8 DB1 I/O Bus dữ liệu 8 bit 9 DB2 I/O Bus dữ liệu 8 bit 10 DB3 I/O Bus dữ liệu 8 bit 11 DB4 I/O Bus dữ liệu 8 bit 12 DB5 I/O Bus dữ liệu 8 bit 13 DB6 I/O Bus dữ liệu 8 bit 14 DB7 I/O Bus dữ li

Các file đính kèm theo tài liệu này:

  • docThiết kế kit vi điều khiển đa năng dùng ic AT89051.doc