Thiết kế mạch thu thập số liệu 8 kênh sử dụng họ vi điều khiển MCS – 51

Phụ lục LỜI NÓI ĐẦU 3 PHẦN I : NHIỆM VỤ THƯ 4 PHẦN II : CƠ SỞ KIẾN THỨC 6 CHƯƠNG I : CÁC PHƯƠNG PHÁP ĐO NHIỆT ĐỘ 6 I. KHÁI QUÁT. 6 II. CÁC PHƯƠNG PHÁP ĐO NHIỆT ĐỘ: 7 a. Cặp nhiệt điện: 7 b.Nhiệt điện trở: 8 c.Các IC đo nhiệt độ 10 CHƯƠNG II : HỌ VI ĐIỀU KHIỂN MCS-51 12 II.1 Giới thiệu họ họ vi điều khiển MCS-51 12 II.2 Cấu trúc phần cứng họ vi điều khiển MCS-51 14 II.3 Mô tả các chân 15 II.4. Cách tổ chức và truy cập bộ nhớ của 8051. 17 II.5 hoạt động reset 20 II.2.6 Các thanh ghi chức năng đặc biệt (SFRS) 21 II.7 Các chế độ địa chỉ trong 8051 23 II.8 Timer/counter 25 II.9 các nguồn ngắt 28 II.10 Giao diện truyền tin nối tiếp 30 II.11.Các loại lệnh của 8051 34 CHƯƠNG III : GIỚI THIỆU MỘT SỐ LINH KIỆN TRONG MẠCH 37 III.1 Mạch chuyển đổi tương tự số ICL 7109 37 III.2 Vi mạch giải mã địa chỉ 74LS138. 42 III.3 Vi mạch dồn kênh 4051 43 III.4 IC giải mã led 7 thanh 74ls47 43 PHẦN III : TÍNH TOÁN THIẾT KẾ 45 45

doc61 trang | Chia sẻ: banmai | Lượt xem: 2449 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Thiết kế mạch thu thập số liệu 8 kênh sử dụng họ vi điều khiển MCS – 51, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
0C¸ 660 0C. RT=R0(1 + At + Bt2 +C(t – 100)3) ở nhiệt độ -180 0C ¸ 0 0C R0: Điện trở ở 0 0C A, B, C là các hằng số. Đặc tính của nó có dạng phi tuyến. Với nhiệt độ lớn hơn 660 0C và nhỏ hơn -1800C quan hệ RT = f(t) được cho dưới dạng bảng. - nhiệt điện trở Niken. Niken có thể sử dụng để đo đến nhiệt độ: 3000C. ở nhiệt độ cao hơn thì quan hệ RT = f(t) không đơn trị. Khi t = 0 0C ¸ 1000C thì hệ số a=5.10-3 1/0C ưu điểm cơ bản của nó là có điện trở suất cao, hệ số nhiệt lớn cho phép chế tạo được các chuyển đổi có kích thước nhỏ. b.2 nhiệt điện trở bán dẫn. Nhiệt điện trở bán dẫn được chế tạo từ một số ôxit kim loại khác nhau nh­ CuO, MnO …. Quan hệ giữa nhiệt độ và điện trở được biểu diễn dưới dạng biểu thức: RT = A.eb/T. Trong đó: A: Hằng số phụ thuộc vào tính chất vật lý của chất bán dẫn, kích thước và hình dáng của nhiệt điện trở. b: Hằng số phụ thuộc vào tính chất vật lý của chất bán dẫn. T: Nhiệt độ tuyệt đối e: Cơ số logarit tự nhiên. Hệ số nhiệt độ a của chất bán dẫn mang dấu âm và có giá trị 0,02 ¸ 0,08 1/OC. điện trở suất lớn do đó kích thước nhỏ. a = - b/T2 Cấu tạo của nhiệt điện trở bán dẫn có thể ở dạng thanh, dạng đĩa và dạng hình cầu. Sai số của nhiệt kế nhiệt điện trở chủ yéu là do sù thay đổi điện trở đường dây khi nhiệt độ môi trường thay đổi. điện trở đường dây có thể đạt tới 5W trong khi đó điện trở của nhiệt điện trở thường vào khoảng 40W ¸ 100W do đó khi điện trở đường dây thay đổi sẽ gây ra mét sai số đáng kể. Ngoài ra dòng điện chạy qua nhiệt điện trở gây nóng cũng làm cho điện trở tăng gây sai sè. ứng của chuyển đổi nhiệt điện trở dùng để đo nhiệt độ, đo các đại lượng không điện nh­ đo di chuyển, đo áp suất và dùng để phân tích thành phần, nồng độ của một số hợp chất và chất khí. c.Các IC đo nhiệt độ IC đo nhiệt độ là một mạch tích hợp nhận tín hiệu nhiệt độ chuyển thành tiná hiệu điện dưới dạng điện áp. dựa vào đặc tính rất nhạy cảm của bán dẫn với nhiệt độ để tạo ra điện áp hoặc dòng điện tỷ lệ với nhiệt độ tuyệt đối. Đo tín hiệu điện ta biết được giá tri của nhiệt độ cần đo. Sau đây là thông số của một số loại IC dùng để đo nhiệt độ + LM135/ LM335 Các thông số kỹ thuật: Dòng cho phép 400uA ¸ 5 mA. Điện trở động 1 W. Nhiệt độ cho phép : 1000C. Mức điện áp thay đổi: 10mV/0K + AD590 Đầu ra là dòng điện độ nhạy 1A/OK. Độ chính xác +4OC. Nguồn cung cấp VCC = 4 ¸ 30 V Khoảng nhiệt độ đo được -55 OC ¸ 150 OC. + Lx5700 Đầu ra là điện áp độ nhạy 10mV/OK. Khoảng nhiệt độ đo được -55 OC ¸ 150 OC. Chương II Họ vi điều khiển MCS-51 II.1 Giới thiệu họ họ vi điều khiển MCS-51 Họ vi điều khiển MCS-51 là họ vi điều khiển 8 bit được sử dụng phổ biến nhất của hãng Intel trên thị trường thế giới.Sau đây là bảng tổng kết về kiến trúc phần cứng của một số bộ vi điều khiển họ MCS-51 Tên gọi Công nghệ ROM trong ROM ngoài RAM trong RAM ngoài Timer Counter 8031 NMOS Không có 64 KByte 128 Byte 64 KByte 2 8051 NMOS 4 Kbyte 64 KByte 128 Byte 64 KByte 2 8751 NMOS 4 Kbyte 64 KByte 128 Byte 64 KByte 2 8032 NMOS Không có 64 KByte 256 Byte 64 KByte 3 8052 NMOS 8 Kbyte 64 KByte 256 Byte 64 KByte 3 80C31 CMOS Không có 64 KByte 128 Byte 64 KByte 2 80C51 CMOS 4 Kbyte 64 KByte 128 Byte 64 KByte 2 Phần lớn các vi điều khiển trong họ MCS-51 được đóng vỏ theo kiểu 2 hàng (PDIP) với tổng cộng 40 chân, một số khác được đóng vỏ theo kiểu hình vuông với 44 chân. Chip 8051 có các đặc trưng sau: 4 KB EPROM bên trong. 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. Xử lý bit (thao tác trên từng bit riêng rẽ). 210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit. 4ms cho hoạt động nhân hoặc chia. Ngoài ra nó còn được thiết kế với logic tĩnh cho phép hoạt động có tần số giảm suống 0 và hỗ trợ 2 chế độ tiết kiệm năng lượng được lựa chọn bằng phần mềm. Chế độ nghỉ dừng CPU trong khi vẫn cho phép Ram và các bộ định thời, đếm, cổng nối tiếp và các hệ thống ngắt tiếp tục hoạt động. Chế độ nguồn giảm duy trì nội dung của Ram nhưng không cho mạch dao động cung cấp xung clock nhằm vô hiệu hóa các hoạt động của chip cho đến khi có reset cứng tiếp theo. Sau đây là 3 loại cấu hình chân ra của IC 8051 S¬ ®å ch©n cña 8051 II.2 Cấu trúc phần cứng họ vi điều khiển MCS-51 Khối xử lý trung tâm Thanh ghi chứa Acc Thanh ghi chứa phụ B Ram trong Con trỏ ngăn xếp SP (Stack Pointer ) còng nh­ con trỏ dữ liệu để định địa chỉ bộ nhớ ngoài. Bộ đếm chương trình PC (Program Counter). Bộ giải mã lệnh Bộ điều khiển thời gian và logic Thanh ghi đặc biệt SFR(Special Function Register). Thanh ghi số liệu Thanh ghi từ trạng thái PSW. Hai bộ địng thời/ bộ đếm (Timer/Counter ) với các chế độ hoạt động khác nhau để giúp việc định thời gian hay đếm các sự kiện, định tốc độ Baud cho cổng nối tiếp. Một cổng nối tiếp bao gồm: giao diện truyền tin nối tiếp SCI có khả năng phát hay nhận một byte thông tin theo cách truyền tuần tự từng bit. Giao diện giao tiếp nối tiếp với thiết bị ngoại vi SPI, truyền tin nối tiếp với thiết bị ngoại vi Có 4 cổng vào/ra song song. Hệ thống điêug khiển ngắt với 5 nguồn ngắt Bảng tóm tắt các chân và chức năng của nó Số chân(Pin) Ký hiệu Chức năng 1¸8 P1.0 ¸ P1.7 Cổng vào / ra(port1) 9 Reset Lối vào reset tích cực mức cao 10¸17 P3.0 ¸ P3.7 Cổng vào/ra (Port 3) và tất cả các đường dẫn với chức năng đặc biệt 18 XTAL2 Lối vào của bộ dao động thạch anh bên trong 19 XTAL1 Lối vào của bộ dao động thạch anh bên trong 20 Vss Chân nối đất (0v) 21¸28 P2.0 ¸ P2.7 Cổng vào ra 2 và các đường địa chỉ cao từ A8¸A15 29 Dùng cho bộ nhớ chương trình ngoài 30 ALE Cho phép chốt địa chỉ 31 Để làm việc với ROM trong hay ROM ngoài 32¸39 P0.0¸P0.7 Cổng vào/ra 0 và các đường địa chỉ thấp A0¸A7 40 VCC Chân cấp nguồn (+5v) II.3 Mô tả các chân Họ vi điều khiển 8051 theo kiểu PDIP có tổng cộng 40 chân trong đó có 4 cổng vào ra song song: Cổng 0 (P0), cổng 1 (P1), cổng 2 (P2), cổng 3 (P3), các chân cấp nguồn và các chân điều khiển các thiết bị ngoại vi khác. Port 0: Port 0 (các chân 32 ¸ 39 của 8951) là cổng có 2 công dông. Trong các thiết kế nhỏ không dùng bộ nhớ ngoài thì nó có chức năng như các đường vào/ra. Đối với các thiết kế lớn cần phải có bộ nhớ ngoài, cổng này trở thành bus địa chỉ và bus dữ liệu đa hợp. Port 1: Port 1(các chân 1 ¸ 8 của 8951) chỉ có tác dụng xuất/nhập. Các chân được ký hiệu P1.0, P1.1, p1.2, ... p1.7 có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần. Port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị ngoại vi. Port 2: Port 2 (các chân 21 ¸ 28 của 8951) là cổng có 2 công dụng, chúng được dùng như các đường xuất/nhập hoặc là byte địa chỉ cao của bus địa chỉ 16 bit cho các thiết kế có bộ nhớ chương trình ngoài hoặc các thiết kế có nhiều hơn256 byte bộ nhớ dữ liệu ngoài. Port 3: Port 3 (các chân 10 ¸ 17 của 8951) là cổng có 2 công dụng. Khi không hoạt động xuất/nhập thì các chân của cổng 3 có nhiều chức năng riêng riêng biệt. Bảng dưới đây liệt kê các chức năng của từng chân của cổng 3 : Bit Tên Địa chỉ Chức năng chuyển đổi P3.0 RxD B0H Chân nhận dữ liệu của cổng nối tiếp P3.1 TxD B1H Chân phát dữ liệu của cổng nối tiếp P3.2 INT0 B2H Ngõ vào ngắt ngoài 0 P3.3 INT1 B3H Ngõ vào ngắt ngoài 1 P3.4 T0 B4H Ngõ vào củaTIMER/COUNTER thứ 0. P3.5 T1 B5H Ngõ vào củaTIMER/COUNTER thứ 1. P3.6 WR B6H Điều khiển ghi bộ nhớ dữ liệu ngoài P3.7 RD B7H Điều khiển đọc bộ nhớ dữ liệu ngoài Chân cho phép bộ nhớ chương trình PSEN. 8051 cung cấp cho ta 4 tín hiệu điều khiển Bus. Tín hiệu cho phép bộ nhớ chương trình là tín hiệu đưa ra trên chân 29. đây là tín hiệu điều khiển cho phép ta truy xuất bộ nhớ chương trình ngoài. Chân này thường nối với chân cho phép xuất (Output Enable) của Epprom (hoặc Rom) để cho phép đọc các byte lệnh. Tín hiệu ở mức logic 0 trong suốt thời gian tìm nạp lệnh. Các mã nhị phân của chương trình hay mã lệnh được đọc từ Eprom qua bus dữ liệu và được chốt vào thanh ghi lệnh IR để được giải mã. Khi thực thi chương trình chứa ở ROM nội, được duy trì ở mức không tích cực ( Mức 1). Chân cho phép chốt địa chỉ ALE. 8051 sử dụng chân 30, chân xuất tín hiệu cho phép chốt địa chỉ ALE (Address Latch Enable) để giải đa hợp bus dữ liệu và bus địa chỉ. Tín hiệu ALE có tần số bằng 1/6 tần số của mạch dao động bên trong và có thể dùng làm xung clock cho phần còn lại của hệ thống. Nếu mạch dao động có tần số 12MHz, tín hiệu ALE có tần số 2 MHz. Chân ALE còn được dùng để nhận xung ngõ vào lập trình cho EPROM trên chip 8051. Chân truy xuất ngoài . Ngõ vào này có thể được nối với 5V (logic 1) hoặc GND (logic 0). Nếu chân này nối lên 5 V, 8051/8052 thực thi chương trình trong ROM nội. Nếu chân này nối với GND (và PSEN cũng ở mức logic 0) thì chương trình cần thực thi chứa ở bộ nhớ ngoài. Nếu chân ở logic 0 đối với 8051/8052, ROM nội bên trong chip bị vô hiệu hóa và chương trình thực thi chứa ở ROM ngoài. đối với những loại không có ROM trong thì chân phải ở mức logic 0. Chân Reset Chân vào RST (chân 9) là ngõ vào reset của 8051 dùng để thiết lập lại trạng thái ban đầu của hệ thống. Khi ngõ vào này được treo ở 1 tối thiểu 2 chu kỳ máy thì các thanh ghi bên trong được nạp giá trị thích hợp cho việc nạp lại hệ thống. II.4. Cách tổ chức và truy cập bộ nhớ của 8051. Bộ nhớ của 8051 nói riêng và họ MCS – 51 nói chung có khả năng định địa chỉ cho ô nhớ dữ liệu và ô nhớ chương trình đến 64 Kbytes và được chia làm 2 vùng bộ nhớ riêng biệt: Bộ nhớ chương trình và bộ nhớ dữ liệu. =0 External =1 Internal 0FFFH 0000H FFFFH FFH 00H Internal Exterrnal FFFFH Program Memory ( Read only) Data Memory ( Read/Write) 2.4.1 Bộ nhớ chương trình. Bé vi điều khiển 8051 có thể định dịa chỉ bộ nhớ chương trình tới 64 Kbyte, bao gồm bộ nhớ ROM trong kích thước 4 Kbyte và bộ nhớ ROM ngoài kích thước 64 Kbyte. Nếu bộ vi điều khiển dùng ROM trong thì chân (External Access) phải được treo cao, lúc này 4Kbyte ROM trong được coi là miền địa chỉ thấp, miền địa chỉ còn lại do ROM ngoài quản lý. Nếu chương trình đọc địa chỉ 000H đến 0FFFH thì sẽ đọc trực tiếp từ ROM trong, còn lại địa chỉ 1000H đến FFFFH là đọc từ ROM ngoài. Ta phải sử dụng 16 bit địa chỉ để truy cập bộ nhớ chương trình ngoài. Bộ vi điều khiển có thể dùng toàn bộ bộ nhớ ROM ngoài 64Kbyte, lúc này thì chân được nối với đất (0V) và tất cả chương trình được đọc từ ROM ngoài. Khi đọc bộ nhớ chương trình bên ngoài thì chân (Program Strobe Enable) đưa ra các xung đọc dùng cho bộ nhớ chương trình bên ngoài. Do vậy tín hiệu chỉ có tác dụng đối với ROM ngoài còn đối với ROM trong thì chân này không có tác dụng. Sau khi Reset CPU bắt đầu thực hiện từ địa chỉ 0000H, tiếp theo là đến vùng đặt các ngắt của CPU từ địa chỉ 0003H đến 0023H. Việc sử dụng ROM trong ( đối với những loại có ROM trong) và ROM ngoài (đối với những hệ thống đòi hỏi phải mở rộng bộ nhớ) bằng cách sủ dụng chân để điều khiển. S¬ ®å ghÐp nèi vi xö lý víi ROM ngoµi Khi chân nối với Vcc. Đối với những loại có ROM trong 4KByte nh­ 8051 thì chương trình thực hiện từ địa chỉ 0000H đến 0FFFH của ROM trong sau đó tiếp tục từ địa chỉ 1000H đến FFFFH của ROM ngoài. Đối với những loại có ROM trong 8KByte nh­ 8051 thì chương trình thực hiện từ địa chỉ 0000H đến 1FFFH của ROM trong sau đó tiếp tục từ địa chỉ 2000H đến FFFFH của ROM ngoài. Đối với những loại có ROM trong 16KByte nh­ 8051 thì chương trình thực hiện từ địa chỉ 0000H đến 3FFFH của ROM trong sau đó tiếp tục từ địa chỉ 4000H đến FFFFH của ROM ngoài. Khi chân nối với Vss. Khi chân nối với Vss thì lúc này CPU sẽ làm việc toàn bộ đối với ROM ngoài. Do vậy đối với những loại không có ROM trong thì chân bắt buộc phải được nối với Vss. Trong khi truy cập bộ nhớ chương trình ngoài thì nó sẽ đưa 0FFH tới bộ chốt của cổng 0. Nh­ vậy nó có thể xoá bất cứ thông tin nào tại cổng 0 mà SFR có thể còn đang giữ nên việc viết ra cổng 0 trong khi đang truy cập bộ nhơ ngoài sẽ bị sai. Vì vậy ta không được viết ra cổng 0 khi bộ nhớ chương trình ngoài đang đựoc sử dụng. Hai điều kiện để truy nhập bộ nhớ chương trình ngoài là: - Khi chân tín hiệu tích cực - Bộ đếm chương trình có nội dung lớn hơn 0FFFH (1FFFH đối với loại 8052). 2.4.2 Bộ nhớ dữ liệu. Bộ nhớ dữ liệu RAM nếu có địa chỉ là 8 bit thì cho phép CPU 8 bit thao tác nhanh hơn. Nếu địa chỉ là 16 bit thì có thể truy cập được thông qua thanh ghi DPTR (Data Pointer ). Với 8051 có 128 byte RAM trong và có thể ghép với 64KByte RAM ngoài. Trong suốt quá trình CPU truy cập tới bộ nhớ dữ liệu sẽ phát tín hiệu đọc /RD và tín hiệu ghi /WR. Nửa thấp của 128 Bytes RAM trong từ 00H đến 7FH có thể truy cập trực tiếp hoặc gián tiếp, trong khi nửa cao của nó tù 80H đênFH chỉ có thể truy cập băng chế độ địa chỉ gián tiếp. Đối với 128 byte RAM trong, bao gồm: -32 byte thấp nhất là 4 nhóm trong bank thanh ghi. Mỗi bank bao gồm 8 thanh ghi R0 ¸ R7. Khi sử dụng các thanh ghi trong bank thanh ghi nào đó là do 2 bit RS0, RS1 trong thanh ghi từ trạng thái PSW quy định. -16 byte tiếp theo trong vùng 20H ¸ 2FH là vùng RAM định địa chỉ bit. Trong vùng này có 128 bit, bit 0 của byte 20H là 0 và bit 7 của byte 2FH có địa chỉ là 7FH. II.5 hoạt động reset 8051 được reset bằng cách giữ chân RTS ở mức cao tối thiểu 2 chu kỳ máy và sau đó chuyển về mức thấp. RTS có thể được tác động bằng tay hoặc được tác động khi cấp nguồn bằng cách dùng mạch RC nh­ hình dưới. Reset b»ng tay Reset khi cÊp nguån H×nh : Hai m¹ch dïng Reset hÖ thèng Sau khi reset thanh ghi PC được nạp 0000H. Khi RTS trở lại mức thấp, việc thực thi chương trình luôn luôn bắt đầu tại vị trí đầu tiên trong bộ nhớ chương trình. Nội dung của Ram trên chip không bị ảnh hưởng bởi hoạt động Reset. Trạng thái của tất cả các thanh ghi cho dưới bảng dưới đây: Thanh ghi Nội dung Bộ đếm chương trình Thanh chứa A Thanh chứa B Thanh ghi thái PSW SP DPRT Port 0 ¸ 3 IP IE Các thanh ghi định thời SCON SBUF PCON (HMOS) PCON (CMOS) 0000H 00H 00H 00H 07H 0000H FFH xxx00000B (8031/8051) xx000000B (8032/8052) 0xx00000B (8031/8051) 0x000000B (8032/8052) 00H 00H 00H 0xxx xxxxH 0xxx 0000 B B¶ng : Gi¸ trÞ cña c¸c thanh ghi sau khi reset hÖ thèng II.2.6 Các thanh ghi chức năng đặc biệt (SFRS) SFRS bao gồm các thanh ghi có các chức năng đặc biệt khác nhau nh­ thanh ghi điều khiển Timer, thanh ghi điều khiển cổng nối tiếp, thanh ghi điều khiển ngắt…. SFRS có địa chỉ từ 80H đến FFH. Bảng các thanh ghi đặc biệt của 8051: Register Mnemonic Internal Address Port 0 Latch P0 80H Stack Pointer SP 81H Data Pointer DPTR 82H¸83H Data Pointer Low Byte DPL 82H Data Pointer High Byte DPH 83H Power Control PCON 87H Timer/Counter Control TCON 88H Timer/Counter Mode Control TMOD 89H Timer/Counter 0 Low Byte TL0 8AH Timer/Counter 1 Low Byte TL1 8BH Timer/Counter 0 High Byte TH0 8CH Timer/Counter 1 High Byte TH1 8DH Port 1 Latch P1 90H Serial Port Control SCON 98H Serial Data Port SBUF 99H Port 2 Latch P2 A0H Interrupt Enable IE A8H Port 3 Latch P3 B0H Interrupt Priority Control IP B8H Program Status Word PSW D0H Accumulator Acc or a E0H B Register B F0H 2.6.1 Thanh ghi PSW (Program Status Word): Thanh ghi này bao gồm các bít trạng thái phản ánh trạng thái của CPU. 7 6 5 4 3 2 1 0 CY AC F0 RS1 RS0 OV - - - P Bit7(CY) :Cờ nhí, nó được set bằng 1 khi có nhớ từ bit 7 trong phép cộng hoặc có mượn cho bit 7 trong phép trừ. Bit 6(AC) :Cờ nhí phụ. Cờ này được set rtong phép cộng nếu có nhớ từ bit 3 sang bit 4 hoặc Nếu kết quả trong 4 bit thấp nằm trong khoảng từ 0AH đến 0FH . Bit5 (F0) :Cờ 0. Cờ này đanh cho người sử dụng. Bit 4(RS1) :Bit chọn dãy thanh ghi Bit 3(RS0) Bit chọn dãy thanh ghi Bit 2(OV) :Cờ tràn. Cờ này được set sau khi cộng hoặc trừ nếu có một tràn số học Bit1(IE0) :không dùng Bit0(IT0) :Cờ chẵn lẻ. Cờ này được set hoặc xoá bởi phần cứng sau mỗi chu kỳ lệnh để chỉ ra rằng có một số chẵn hoặc một số lẻ bit 1 trong thanh chứa. RS0 RS1 Bank tích cực Địa chỉ tích cực 0 0 0 00H ¸ 07H 0 1 1 08H ¸ 0FH 1 0 2 10H ¸ 17H 1 1 3 18H ¸ 1FH Bảng : Bảng chọn Bank II.7 Các chế độ địa chỉ trong 8051 2.7.1 Chế độ địa chỉ trực tiếp (Direct Addressing). Direct Addressing Opcode Kiểu định địa chỉ trực tiếp được sử dụng để truy xuất các biến nhớ hoặc các thanh ghi trên chip. Mét byte được thêm vào theo opcoede dùng để xác định địa chỉ. Trong chế độ này toán hạng chứa địa chỉ cao của ô nhớ, địa chỉ cao của ô nhớ được xác định bởi 8 bit còn địa chỉ toán hạng kia là thanh ghi. Ví dô: ADD A,7FH Câu lệnh này thực hiện cộng nội dung tại ô nhớ 7FH với nội dung thanh chứa A, kết quả chuyển vào thanh chứa A. 2.7.2 Chế độ địa chỉ gián tiếp (Indirect Addressing). Trong chế độ này thì các thanh ghi R0 và R1 có thể hoạt động nh­ là các con trỏ và nội dung của chúng chỉ ra trong địa chỉ RAM, nơi mà dữ liệu được đọc hay được ghi. Bit có ý nghĩa thấp nhất của opcode xác định thanh ghi nào (R0 hay R1) được sử dụng làm con trá. Chế độ địa chỉ này dùng cả với RAM trong và RAM ngoài. Trong chế độ này một toán hạng là một thanh ghi được sử dụng để chứa địa chỉ của ô nhớ còn toán hạng kia là thanh ghi. Nếu địa chỉ của ô nhớ là 8 bit ta có thể dùng các thanh ghi R0 ¸ R7 của các bank hoặc là Stack Pointer. Nếu địa chỉ là 16 bit ta có thể dùng thanh ghi DPTR. Ví dụ: ADD A,@R0 Câu lệnh này thực hiện cộng nội dung ô nhớ có địa chỉ đặt trong thanh ghi R0 với nội dung thanh chứa A, kết quả chuyển vào thanh chứa A. 2.7.3 Chế độ địa chỉ thanh ghi (Register Addressing). Các lệnh sử dụng kiểu định địa chỉ thanh ghi được mã hóa bằng cách dùng 3 bit thấp nhất của opcode để chỉ ra mét thanh ghi bên trong không gian địa chỉ logic này. một mă chức năng và địa chỉ của một toán hạng có thể được hình thành thành một lệnh ngắn. Trong chế độ này toán hạng nguồn hoặc toán hạng đích có thể là một trong 8 thanh ghi của Bank thanh ghi đã chọn. Ví dô: MOV R0,B MOV A,R7 Một vài lệnh dùng cụ thể cho 1 thanh ghi nào đó nh­ thanh ghi A, DPTR.... không cần các bit địa chỉ. Bản thân của opcode của lệnh đã chỉ ra thanh ghi cần thiết. Các lệnh đặc biệt liên quan đến thanh ghi này tham chiếu đến thanh chứa bằng ký hiệu “A” , con trỏ dữ liệu “DPTR”, bộ đếm chương trình “PC”, cờ nhớ “C”… 2.7.4 Chế độ địa chỉ tức thời (Immediate Addressing). Khi toán hạng nguồn là một hằng số thay vì một biến, hằng số có thể đưa vào lệnh và đây là byte dữ liệu tức thời Sự định địa chỉ tức thời được tượng trưng bởi ký hiệu # được đứng trước một hằng số, 1 biến hoặc một biểu thức số học được sử dụng bởi các hằng, các ký hiệu và các toán tử. Trình biên dịch tính toán giá trị và thay thế dữ liệu tức thời. Byte lệnh thêm vào chứa trị số dữ liệu tức thời nh­ sau: Ví dô: MOV A,#100 ; nạp vào thanh chứa A sè 100 cơ số 10 MOV A,#10H ; nạp vào thanh chứa A sè 10 cơ số 10 2.7.5 Chế độ địa chỉ thanh ghi chỉ số (Register Addressing). Chế độ này chủ yếu dùng để tra bảng. trong chế độ này thì địa chỉ nguồn và địa chỉ đích được tính bằng cách cộng giá trị trong ACC với địa chỉ cơ sở. Địa chỉ cơ sở có thể là DPTR ( Data Pointer ) hoặc là PC (Program Counter ). Ví dô : MOV DPTR,#8100H MOV A,#0 MOV A,@A+DPTR II.8 Timer/counter Bé vi điều khiển 8051 có 2 Timer/Counter 16 bit, cả 2 timer này có thể hoạt động như Timer hay Counter. Khi hoạt động nh­ Timer thì giá trị của nó lại tăng lên 1 sau mỗi chu kỳ máy. Khi hoạt động nh­ Counter thì giá trị của nó tăng lên 1 tương ứng với sự xuất hiện sườn suống tại các chân T0, T1. Mỗi Timer/Counter này lại có 4 chế độ làm việc. Việc khởi tạo hoạt động cho các Timer/Counter này phải dựa trên 2 thanh ghi TMOD và TCON. 7 6 5 4 3 2 1 0 GATE C/T M1 M0 GATE C/T M1 M0 Timer 1 Timer 0 Thanh ghi TMOD ( Timer/Counter Mode Control Register) GATE : là bit điều khiển cổng. Khi bit TRx trong TCON được set bằng 1 và chân GATE = 1 thì bộ định thời/đếm chỉ hoạt động khi chân INTx ở mức cao(điều khiển phần cứng). Khi GATE = 0 thì bộ định thời/đếm chỉ hoạt động khi TRx =1(Điều khiển mềm). C/T: bít chọn chức năng đếm hay định thời cho bộ đếm/định thời. Khi C/T=0 thì hoạt động định thời, khi C/T = 1 thì hoạt động đếm. M1: bit chọn chế độ ( xem bảng dưới) M0: bit chọn chế độ ( xem bảng dưới) M1 M0 Chế độ lựa chọn 0 0 0 Bộ định thời 13 bit 0 1 1 Bộ định thời/đếm 16 bit 1 0 2 Bộ định thời/đếm 8 bit tự động nạp lại 1 1 3 Timer 0 hoạt động nh­ 2 bé timer 8 bit riêng biệt Timer 1 không hoạt động. Thanh ghi TCON ( Timer/Counter Control Register) 7 6 5 4 3 2 1 0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Thanh ghi này có tác dụng điều khiển bộ định thời/đếm. Bit7(TF1) :Cờ báo tràn của bộ định thời 1. Nó được set bởi phần cứng khi bộ định thời/đếm bị tràn. Nó được xoá bởi phần mềm hoặc bởi phần cứng khi trình phục vụ ngắt được trỏ đến. Bit 6(TR1) :Bit điều khiển bộ định thời 1 hoạt động. Nó đựoc set/xoá bằng phần mềm để điều khiển bộ định thời hoạt động hoặc ngưng hoạt động. Bit5 (TF0) :Cờ tràn bộ định thời 0. Bit 4(TR0) :Bit điều khiển bộ định thời 0 hoạt động Bit 3(IE1) :Cờ ngắt ngoài 1 theo sườn. Nó được đặt bởi phần cứng khi sườn xung của ngắt ngoài đưa vào chân INT1 được phát hiện và nó được xoá bởi phần cứng khi ngắt được xử lý. Bit 2(IT1) :Bit điều khiển chọn loại ngắt. Nó được set/xóa bằng phần mềm để xác định ngắt thuộc loại tác động cạnh hay tác động theo mức thấp. Bit1(IE0) :Bit cờ ngắt ngoài tác động cạnh. Bit0(IT0) :Bit điều khiển chọn loại ngắt c. Các chế độ hoạt động của Timer/Counter + Chế độ 0: đó là chế độ định thời 13 bit. Byte cao của bộ định thời THx được ghép vói 5 bit thấp của byte thấp của bộ định thời TLx để tạo thành một bộ định thời 13 bit. Tín hiệu ngắt xuất hiện khi có sự đếm tràn, vì vậy nó có thể đếm được lớn nhất là 213 hay 8192 xung nhịp. TLx (5 bit) THx (8 bit) TFx Timer clock Overflow Flag ChÕ ®é 0 + Chế độ 1: Chế độ này là chế độ dịnh thời 16 bit. Xung clock đặt vào các thanh ghi định thời cao và thấp kết hợp. Khi có xung clock thì bộ định thời sẽ đếm lên 0000H, 0001H, 0002H…. Một tràn sẽ xuất hiện nếu có sự tràn từ FFFFH suống 0000H và nó sẽ set cờ tràn bằng 1 và bộ đếm sẽ tiếp tục đếm. Cờ tràn là bit TFx trong thanh ghi điều khiển định thời TCON, bit này được đọc hoặc ghi bởi phần mềm. Trong chế độ này nó có thể đếm được lớn nhất là 216 = 65535 xung nhịp. TLx THx TFx Timer clock Overflow Flag ChÕ ®é 1 + Chế độ 2: Đó là chế độ tự động nạp lại 8 bit. Byte thấp của bộ định thời hoạt động định thời 8 bit trong khi đó byte cao của bộ định thời lưu giữ giá trị nạp lại. Khi có số đếm tràn từ FFh suống 00h thì ngoài việc cờ của bộ định thời được set lên 1 mà giá trị trong THx còn được nạp vào TLx. Việc đếm sẽ tiếp tục từ giá trị này cho đến khi xảy ra một tràn kế tiếp. Chế độ này rất thuận tiện cho việc tràn bộ định thời trong một khoảng thời gian xác định và tuần hoàn khi các thanh ghi TMOD và THx đã được khởi động. TLx TFx Timer clock Overflow Flag ChÕ ®é 0 THx reload + Chế độ 3: chế độ 3 là chế độ định thời chia xẻ và có hoạt động khác nhau cho từng bộ định thời. Bộ định thời 0 ở chế độ 3 được chia làm 2 bộ định thời 8 bit hoạt động riêng rẽ TL0 và TH0, mỗi bộ định thời sẽ set các cờ tương ứng TF0 và TF1 khi xảy ra tràn. Bộ định thời 1 không hoạt động ở chế độ 3 nhưng có thể khởi động bằng cách chuyển bộ định thời này vào một trong các chế độ khác. Cờ tràn TF1 của bộ định thời 1 không bị ảnh hưởng bởi bộ định thời 1 khi xảy ra tràn vì TF1 được nối với bộ định thời 8 bit TH0. Chế độ 3 chủ yếu cung cấp thêm một bộ định thời 8 bit nữa. khi bộ định thời 0 ở chế độ 3, bộ định thời 1 có thể hoạt động bằng cách chuyển bộ này ra khỏi chế độ 3 hoặc vào chế độ 3. II.9 các nguồn ngắt Các nguồn ngắt được đặt tại địa chỉ từ 0003H ¸ 0023H trong bộ nhớ chương trình. Khi có ngắt thì CPU sẽ nhảy tới vùng mà nó phục vụ ngắt, Nếu chương trình phục vụ ngắt nằm trong khoảng 8 byte thì nó sẽ phục vụ ngắt ngay trong vùng đó. Nếu chương trình ngắt lớn hơn 8 byte và các nguồn ngắt đang phục vụ thì thì sẽ nhảy vượt sang vùng ngắt sau đó để thực hiện chương trình ngắt. khi có một ngắt xuất hiện và được CPU chấp nhận, chương trình chính bị ngắt thì các thao tác sau đây xảy ra: Hoàn tất việc thực thi lệnh hiện hành Bộ đếm chương trình PC được cất vào Stack Trạng thái ngắt hiện hành được lưu giữ lại. Bộ đếm chương trình PC được nạp địa chỉ vectơ của trình phục vụ ngắt ISR. ISR được thực thi. Bảng các vectơ ngắt: Nguồn ngắt Cờ Địa chỉ Ngắt ngoài 0 IE0 0003H Ngắt ngoài 1 TF0 000BH Do bộ định thời 1 IE1 0013H Do bộ định thời 0 TF1 001BH Do cổng nối tiếp RI&TI 0023H Cách sử dụng ngắt: Đặt bít EA ( Enable All) trong thanh ghi IE = 1 Đặt bit tương ứng với ngắt trong thanh ghi IE lên 1 Bắt đầu phục vụ ngắt tại địa chỉ tương ứng với ngắt. Để điều khiển hoạt động của ngắt ta có 2 thanh ghi tương ứng. Thanh ghi IE điều khiển cho phép các ngắt hoạt động. Thanh ghi IP điều khiển mức ưu tiên cho các ngắt. Thanh ghi IE(Interrupt Enable Register) 7 6 5 4 3 2 1 0 EA - - - - - - ES ET1 EX1 ET0 EX0 EA(IE.7): bit cho phép các ngắt hoạt động EA=0: không cho phép ngắt nào được hoạt động EA=0: cho phép các ngắt được hoạt động. - - - (IE.6): không sử dụng - - - (IE.5): không sử dụng ES (IE.4) : Cho phép hay không cho phép truyền nhận nối tiếp ET1 (IE.3) : Cho phép hay không cho phép ngắt Timer 1 EX1 (IE.2) : Cho phép hay không cho phép ngắt ngoài 1. ET0(IE.1) : Cho phép hay không cho phép ngắt Timer 0. EX1 (IE.0) : Cho phép hay không cho phép ngắt ngoài 0. Thứ tự ưu tiên các ngắt Để điều khiển hoạt động của các ngắt ta có thanh ghi IE để điều khiển. Thanh ghi này dùng để cho phép các ngắt hoạt động. Để đặt thứ tự ưu tiên của các ngắt thì ta sử dụng thanh ghi IP. Theo mặc định thì các ngắt có mức ưu tiên từ cao suống thấp như sau: IE0 Mức cao nhất Mức thấp nhất TF0 IE1 IF1 RI& TI B¶ng : Thø tù ­u tiªn cña ng¾t Khi không muốn sử dụng theo thứ tự ưu tiên mặc định đó thì ta có thể đặt các bit tương ứng trong thanh ghi IP = 1 để quy định mức ưu tiên. Thanh ghi IP ( Interrupt Register ) 7 6 5 4 3 2 1 0 - - - - - - - - - PS PT1 PX1 PT0 PX0 - - - ( IP.7 ): Không sử dụng ( Đặt bằng 0) - - - ( IP.6 ): Không sử dụng ( Đặt bằng 0) - - - ( IP.5 ): Không sử dụng ( Đặt bằng 0) PS (IP.4) : Mức ưu tiên ngắt cho cổng nối tiếp. PT1 (IP.3) : Mức ưu tiên ngắt cho Timer 1 PX1 (IP.2) : Mức ưu tiên ngắt cho ngắt ngoài 1 PT0 (IP.1) : Mức ưu tiên ngắt cho Timer 0 PX0 (IP.0) : Mức ưu tiên ngắt cho ngắt ngoài 0 II.10 Giao diện truyền tin nối tiếp Cổng nối tiếp có thể truyền và nhận đồng thời. Nó cũng là bộ đệm nhận nghĩa là nó có thể nhận byte thứ 2 trước khi byte trước đó được đọc từ thanh ghi nhận. Tuy nhiên byte thứ nhất sẽ bị mất đi nếu tiếp tục nhận byte tiếp theo. Cả 2 thanh ghi truyền và nhận đều là các thanh ghi có chức năng đặc biệt(SBUF). Việc ghi vào SBUF là nạp vào thanh ghi truyền còn việc đọc dữ liệu từ SBUF là việc nhận dữ liệu về. Cổng nối tiếp có 4 chế độ hoạt động + Mode 0: ở chế độ này nó hoạt động như thanh ghi dịch. Dữ liệu vào/ra nối tiếp qua RxD/TxD, đầu ra dịch theo xung đồng hồ. 8 bit được nhận bắt đầu từ LSB. Tốc độ truyền baud là 1/12 tần số xung của thạch anh. + Mode 1: Dữ liệu vào ra nối tiếp qua RxD/TxD. 10 bit dữ liệu được nhận hoặc truyền bao gồm 1 bit Start ( thường là mức 0), 1 bit Stop ( thường ở mức 1) và 8 bit dữ liệu bắt đầu từ LSB. ở chế độ này thì khi nhận dữ liệu thì bit Stop sẽ được chuyển vào bit RB8 trong thanh ghi chức năng đặc biệt. + Mode 2: Dữ liệu vào ra nối tiếp qua RxD/TxD. 11 bit dữ liệu được truyền hoặc nhận bao gồm 1 bit Start ( thường là mức 0)8 bit dữ liệu bắt đầu từ LSB, 1 bit Stop ( thường ở mức 1). Khi truyền dữ liệu thì bit thứ 9 được chuyển vào bit TB8 trong SCON có thể đặt là 1 hoặc 0 hoặc cũng có thể là bit kiểm tra chắn lẻ. Khi nhận dữ liệu thì bit thứ 9 sẽ được chuyển vào bit RB8 trong SCON trong khi đó thì bit Stop bị bỏ qua. Tốc độ baud có thể là 1/32 hoặc 1/64 tần số xung thạch anh. + Mode 3: Dữ liệu vào ra nối tiếp qua RxD/TxD. 11 bit dữ liệu được truyền hoặc nhận bao gồm 1 bit Start ( thường là mức 0)8 bit dữ liệu bắt đầu từ LSB, 1 bit cho phép lập trình, 1 bit Stop ( thường ở mức 1). Khi truyền dữ liệu thì bit thứ 9 được chuyển vào bit TB8 trong SCON có thể đặt là 1 hoặc 0 hoặc cũng có thể là bit kiểm tra chắn lẻ ( P) trong PSW). Khi nhận dữ liệu thì bit thứ 9 sẽ được chuyển vào bit RB8 trong SCON trong khi đó thì bit Stop bị bỏ qua. Tốc độ baud có thể thay đổi được. Trong cả 4 chế độ hoạt động trên thì: Khi gửi dữ liệu phải được khởi tạo và sử dụng SBUF nh­ thanh ghi đích Khi nhận dữ liệu: Mode 0 phải có điều kiện RI=0 và REN =0. Các chế độ khác Nếu bit REN = 1 thì bit start bắt đầu được nhận. Chế độ truyền đa kênh: Trong chế độ 2 và 3 còn được dùng cho việc truyền đa kênh, trong chế độ này thì bit dữ liệu nhận được còn bit 9 được chuyển vào RB8 sau đó là bit Stop. Cổng được lập trình sao cho khi bit Stop nhận được thì ngắt nối tiếp được tích cực khi RB8 = 1. Nét đặc trưng là cho phép đặt bit SM2 trong SCON, bằng cách này cho phép sử dụng chế độ truyền đa kênh. Khi trạm chủ(MASTER) muốn gửi một gói dữ liệu tới một trong các trạm tớ (SLAVE), đầu tiên trạm chủ gửi một byte địa chỉ để xác nhận trạm tớ nào chuẩn bị nhận dữ liệu. Byte địa chỉ này khác với byte dữ liệu là trong byte địa chỉ thì bit thứ 9 bằng 1 còn trong byte dữ liệu thì bit thứ 9 bằng 0. Khi SM2 = 1 thì không có trạm tớ nào bị ngắt khi đang truyền dữ liệu, tuy nhiên với byte địa chỉ thì tất cả đều bị ngắt. Vì vậy trạm tớ lúc nào cũng phải kiểm tra xem byte nhận được và xem nó có phải địa chỉ của mình nhận được hay không. Nếu không phải địa chỉ của mình nó vẫn đặt SM2 đồng thời báo bận và bỏ qua các byte dữ liệu đến. Bit SM2 không có tác dụng trong Mode 0, trong Mode 1 có thể dùng để kiểm tra giá trị của bit Stop. Khi nhận nếu SM2=1 thì ngắt nhận sẽ không có tác dụng trừ khi bit Stop đựoc nhận. Tốc độ Baud trong truyền nối tiếp Tèc ®é truyÒn : Baud rate = lÇn tÇn sè xung th¹ch anh. SMOD = 0: Baud rate = lÇn tÇn sè xung th¹ch anh. SMOD = 0: Baud rate = lÇn tÇn sè xung th¹ch anh. Đối với Mode 0: Tèc ®é truyÒn : Baud rate = lÇn tÇn sè xung th¹ch anh Đối với Mode 2: Đối với Mode 1, Mode 3: Trong hai chế độ này thì phải sử dụng Timer 1 để định tốc độ truyền Baud. Baud rate = x(Timer 1 Over Flow Rate ). Khi timer1 sö dông chÕ ®é ho¹t ®éng tù ®éng n¹p l¹i sè ®Õm khi trµn: Baud rate =tÇn sè xung th¹ch anh. Khi Timer 1 báo tràn: Việc khởi tạo và điều khiển chế độ hoạt động thông qua 2 thanh ghi SCON và PCON. Thanh ghi SCON ( Serial Port Control Register ) 7 6 5 4 3 2 1 0 SM0 SM1 SM2 REN TB8 RB8 TI RI Trong đó:SM0, SM1: dùng để định chế độ truyền nhận nối tiếp. SM0 SM1 MODE 0 0 0 0 1 1 1 0 2 1 1 3 SM2 : Cho phép truyền đa kênh trong Mode 2, Mode 3. Mode 1 thì SM2 dùng để kiểm tra giá trị của bit Stop Mode 0 thì SM2 không có tác dụng ( thường thì SM2 = 0). REN : Cho phép nhận nối tiếp, được đặt và xoá bằng phần mềm. TB8 : Mode 2, Mode3 bit thứ 9 được nhận và chuyển vào Mode 1: khi SM2 = 0, RB8 là bit stop được nhận. Mode 0: Không sử dụng bit này. TI : Cờ ngắt khi truyền, được đặt tại phần cứng tại cuối cùng của bit thứ 8 trong Mode 0 hoặc là khi bắt đầu bit stop trong Mode khác, bit này phải được xoá bằng phần mềm. RI : Cờ ngắt khi nhận, được đặt tại phần cứng tại cuối cùng của bit thứ 8 trong Mode 0 hoặc là giữa bit Stop trong Mode khác, bit này phải được xoá bằng phần mềm. Thanh ghi PCON ( Power Control Register ) 7 6 5 4 3 2 1 0 SMOD - - - - - - - - - GF1 GF0 PD IDL Trong đó: SMOD : Dùng để nhân đôi tốc độ baud - - - : Không sử dụng ( Đặt bằng 0 ) - - - : Không sử dụng ( Đặt bằng 0 ) - - - : Không sử dụng ( Đặt bằng 0 ) GF1 : Bit cờ cho mục đích chung ( Genral Purpose Flag Bit ) GF0 : Bit cờ cho mục đích chung ( Genral Purpose Flag Bit ). PD : Bit tắt nguồn ( Power Down bit ). IDL : Bit chế độ Idle ( Idle Mode bit ). II.11.Các loại lệnh của 8051 Các lệnh của 8051 được chia làm 5 nhóm sau: - Nhóm các lệnh số học. - Nhóm các lệnh logic. - Nhóm các lệnh dịch chuyển dữ liệu. - Nhóm các lệnh xử lý bit - Nhóm các lệnh rẽ nhánh chương trình 2.11.1.Các lệnh số học Các lệnh số học có 4 khả năng định địa chỉ bit. Định địa chỉ trực tiếp Định địa chỉ gián tiếp Định địa chỉ thanh ghi Định địa chỉ tức thời. Tất cả các lệnh số học được thực thi trong mét chu kỳ máy ngoại trừ lệnh INC, DPTR được thực thi trong hai chu kỳ máy, các lệnh MUL AB và DIV AB thực thi trong 4 chu kỳ máy 2.11.2.Các lệnh logic. Nhóm lệnh logic của 8051 thực hiện các phép toán logic (AND, OR, XOR và NOT) trên các byte dữ liệu và thực hiện trên từng bit có cùng giá trị vị trí (trọng số). Các kiểu định địa chỉ cho các lệnh logic cũng giống nh­ kiểu định địa chỉ cho các lệnh số học. Tất cả các lệnh sử dụng thanh chứa A để lưu một toán hạng sẽ được thực thi trong mét chu kỳ máy, ngược lại nếu sử dụng thanh ghi khác hoặc byte nhí thay cho thanh chứa A thì lệnh phải thực thi trong 2 chu kỳ máy. Các phép toán logic có thể được thực hiện trên một byte bất kỳ trong bộ nhớ dữ liệu nội mà không cân qua trung gian thanh chứa A. Nó giúp ta nhanh chóng và dễ dàng đảo mức logic các bit của cổng. Thí dụ lệnh: XRL P1,#0FFH Lệnh này thực hiện thao tác đọc - sửa - ghi. 8 bit của cổng 1 được đọc, sau đó từng bit được XOR với các bit tương ứng (Cùng vị trí) của dữ liệu tức thời. Sau đó kết quả được lại được ghi trở l¹i Port 1. 2.11.3.Các lệnh di chuyển dữ liệu. Trong RAM nội: Các lệnh di chuyển dữ liệu trong Ram nội được thực hiện trong 1 hoặc 2 chu kỳ máy. Dạng lệnh nh­ sau: MOV ,. Lệnh trên cho phép dữ liệu được di chuyển giữa các vị trí của Ram nội hoặc các thanh ghi chức năng đặc biệt SFR mà không cần qua trung gian thanh chứa A. Các lệnh chuyển dữ liệu còn bao gồm lệnh MOV 16 bit dùng để khởi động cong trỏ dữ liệu DPTR cho mục đích tìm các bảng trong bộ nhớ chương trình hoặc cho mục đích truy xuất bộ nhớ dữ liệu ngoài 16 bit. Lệnh hoán đổi nội dung XCH được sử dụng để hoán đổi nội dung thanh chứa A với nội dung của byte được chỉ ra trong lệnh. Dạng lệnh nh­ sau: XCH A,. Trong RAM ngoài: Với các lệnh mà việc di chuyển dữ liệu cho phép dữ liệu được di chuyển giữa RAM nội với RAM ngoài thì ta phải sử dụng kiểu định địa chỉ gián tiếp. Các địa chỉ gián tiếp được xác định bằng cách dùng địa chỉ 1 Byte (nh­ @Ri) hoặc địa chỉ 2 byte (nh­ @DPTR). Khi dùng địa chỉ 16 bit thì tất cả 8 bit của Port 2 phải được sử dụng nh­ byte cao của bus địa chỉ và ta không thể sử dụng cổng này làm cổng xuất/nhập. Tất cả các lệnh di chuyển dữ liệu hoạt động trên bộ nhớ ngoài được thực thi trong 2 chu kỳ máy và sử dụng thanh chứa làm toán hạng nguồn hoặc làm toá hạng đích. Các tín hiệu dùng để truy xuất RAM ngoài( và ) chỉ tích cực trong khi lệnh MOVC được thực thi. Bình thường các tín hiệu này không tích cực (mức cao) và nếu bộ nhớ ngoài không được sử dụng thì các đường và có chức năng như các đường xuất/nhập. Các bảng tìm kiếm: Có 2 lệnh di chuyển dữ liệu dùng cho việc đọc các bảng tìm kiếm trong bộ nhớ chương trình. Do bởi các lệnh này truy xuất bộ nhớ chương trình, các bảng tìm kiếm chỉ có thể được đọc mà không được cập nhật. Lệnh MOVC sử dụng hoặc bộ đếm chương trình hoặc con trỏ dữ liệu làm thanh ghi nền và thanh chứa A chứa địa chỉ Offset. 2.11.4.Các lệnh xử lý bit. Bé xử lý của 8051 chứa một bộ xử lý logic trên bit cho phép ta thực hiện các phép toán đơn bit. Các lệnh đối với bit có thể là lệnh rẽ nhánh có điều kiện, các lệnh di chuyển, set, xóa, lấy bù, OR hoặc AND. Mọi thao tác truy xuất bit đều sử dụng kiểu định địa chỉ trực tiếp với các địa chỉ bit từ 00H ¸ 7FH trong 128 vị trí thấp và từ địa chỉ 80H ¸ FFH trong không gian SFR. 2.11.5.Các lệnh nhảy. Trong tập lệnh của 8051 có nhiều lệnh điều khiển luồng chương trình bao gồm các lệnh gọi một thủ tục và quay về từ một thủ tục, rẽ nhánh có điều kiện hoặc không có điều kiện. Các lệnh này sử dụng 3 kiểu định địa chỉ: địa chỉ tương đối, tuyệt đối và địa chỉ dài. Lệnh SJMP xác định địa chỉ đích là Offet và khoảng cách nhảy được giới hạn từ -128 byte ¸ 127 byte so với địa chỉ của lệnh theo sau lệnh SJMP. Lệnh LJMP xác định địa chỉ đích là hằng số 16 bit. Vì lệnh dài 3 byte (mét opcode cộng với 2 byte địa chỉ) nên địa chỉ đích có thể ở bất cứ đâu trong không gian nhớ chương trình 64K. Lệnh AJMP xác định địa chỉ đích là hằng số 16 bit. Byte opcode sẽ chứa 3 trong 11 bit địa chỉ và byte 2 chứa 8 bit thấp của địa chỉ đích. Khi lệnh được thực thi thì 11 bit này thay thế cho 11 bit thấp trong PC còn 5 bit cao của PC vẫn giữ nguyên. Địa chỉ đích do vậy phải nằm trong cùng một trang 2K với lệnh theo sau lệnh AJMP. chương III giới thiệu một số linh kiện trong mạch III.1 Mạch chuyển đổi tương tự số ICL 7109 Sô ñoà chaân Các thông số nhiệt độ Họ IC Dải nhiệt độ hoạt động IC 7109MDL -55oC ¸ +125°C IC 7109IDL -25°C ¸ +85°C IC 7109CPL 0°C ¸ +70°C IC 7109MDL/883 -55°C ¸ +125°C IC 7109IPL -25°C ¸ +85°C Đặc điểm chung của ICL 7109 + ADC 12 bit ( có thêm một bit cực tính và một bít tràn ) hoạt động theo nguyên lý tích phân hai sườn dốc. + Ngõ ra 3 trạng thái tương thích TTL và với kiểu giao tiếp UART thì phù hợp với giao tiếp song song hoặc giao tiếp với hệ thống vi xử lý. + Chân Run/Hold và Status được dùng để theo dõi và kiểm tra sự chuyển đổi. Mức nhiễu thấp khoảng 15 mVp – p . + Dòng vào của cổng khoảng 1pA. + Hoạt động chuyển đổi có thể lên tới 10 lần biến đổi trong 1 giây. +Vi mạch sử dụng dao động thạch anh 3,58 MHz thì có thể chuyển đổi 7,5 lần trong 1 giây. ngoài ra còn có thể sử dụng mạch dao động RC để tạo dao động. +ICL 7109 thuoọc hoù CMOS, chuyeồn ủoồi nhanh, nguoàn nuoõi thaỏp vaứ ủửụùc thieỏt keỏ deó daứng giao tieỏp vụựi vi xửỷ lyự. Vi maùch ICL7109 coự nhửừng ửu ủieồm nhử: ủoọ chớnh xaực cao, nhieóu khoõng ủaựng keồ vaứ troõi aựp thaỏp ủaởc bieọt raỏt kinh teỏ. Ngoaứi ra noự coứn coự nhửừng thoõng soỏ khaực nhử: troõi aựp thaỏp hụn 1mV/oc, doứng vaứo toỏi ủa 10pA vaứ coõng suaỏt tieõu thuù 20mW… laứm cho vi maùch naứy caứng trụỷ neõn haỏp daón. CHệÙC NAấNG CAÙC CHAÂN: CHÂN KÝ HIỆU CHỨC NĂNG 1 GND Chân nối đất 2 STATUS Ngõ ra lên mức cao trong suốt quá trình biến đổi cho đến khi dữ liệu được chốt lại. Ngõ ra xuống thấp khi tín hiệu được chuyển đổi xong 3 POL Báo cực tính – Mức 1 khi tín hiệu tương tự vào dương 4 OR Bit tràn - Mức 1 nếu tràn. 5 6 7 8 9 10 11 12 13 14 15 16 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 Bit 12 có trọng số lớn nhất Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 có trọng số nhỏ nhất Bit dữ liệu ngõ ra 3 trạng thái Bit dữ liệu ngõ ra 3 trạng thái Bit dữ liệu ngõ ra 3 trạng thái Bit dữ liệu ngõ ra 3 trạng thái Bit dữ liệu ngõ ra 3 trạng thái Bit dữ liệu ngõ ra 3 trạng thái Bit dữ liệu ngõ ra 3 trạng thái Bit dữ liệu ngõ ra 3 trạng thái Bit dữ liệu ngõ ra 3 trạng thái Bit dữ liệu ngõ ra 3 trạng thái Bit dữ liệu ngõ ra 3 trạng thái Bit dữ liệu ngõ ra 3 trạng thái 17 TEST Bình thường mức cao. Mức thấp thì tất cả các bit ngõ ra lên cao dùng cho việc kiểm tra. Nối lên cao nếu không dùng. 18 LBEN Chân cho phép xuất byte thấp. Cùng với MODE (Chân 21) mức thấp và chân CE/LOAD (chân 20) mức thấp sẽ cho phép xuất các byte thấp từ B1 đến B8. 19 HBEN Chân cho phép xuất Byte cao. Kết hợp với chân MODE (21) ở mức thấp và chân CE/LOAD ở mức thấp sẽ cho phép xuất Byte cao từ B9 à B12 và bit POL/OR. 20 CE/LOAD Chân cho phép – Kết hợp với chân MODE (21) mức thấp có tác dụng điều khiển cho phép ngõ ra. Khi CE/LOAD ở mức cao sẽ cấm các chân B1 đến B12, POL, OR. 21 MODE Khi ngõ vào ở mức thấp – Các chân CE/LOAD, HBEN, LBEN điều khiển trực tiếp các Byte ngõ ra. Khi được cấp xung – chuẩn bị hoạt động theo kiểu “handshake”. Mức cao – Các chân cho phép CE/LOAD, HBEN, LBEN xem nh­ các ngõ ra và vi mạch hoạt động theo “handshake” 22 23 OSC IN OSC OUT Ngõ vào của dao động Ngõ ra của dao động. 24 OSC SEL Chọn tần số dao động – Mức cao thì tần số và pha tại OSC IN, OSC OUT bằng 1/58 tần số tại BUFF OSC OUT. 25 BUFF OSC OUT Ngõ ra dao động đệm 26 RUN / HOLD Ngõ vào mức cao – Biến đổi được thực hiện trong 8192 xung đồng hồ. Ngõvào mức thấp – Quá trình biến đổi kết thúc 27 SEND Ngõ vào – Nối lên +5V nếu không dùng. 28 V- Nguồn âm –5V 29 REF OUT Điện áp ngõ ra chuẩn =2,8V 30 BUFFER Ngõ ra khuếch đại đệm 31 AUTOZERO Tự động điều chỉnh mức 0 32 INTEGER- ATOR Ngõ ra kết hợp. 33 COMMON 34 INPUT LO Ngõ vào tương tự 35 INPUT HI Ngõ vào tương tự 36 REF IN + Điện áp chuẩn dương 37 REF CAP+ áp dương trên tụ 38 REF CAP - áp âm trên tụ 39 REF IN - Điện áp chuẩn âm. 40 V+ Nguồn cung cấp dương = +5V - Chức năng cụ thể của các chân điều khiển Chân MODE. Chân này dùng để điều khiển trạng thái biến của các cổng ra. Khi chân MODE ở mức thấp thì các chân ra dữ liệu được truy xuất trực tiếp thông qua sự điều điều khiển của chân ENABLE. Khi chân MODE được cấp xung thì sự chuyển đổi theo kiểu UART sau đó trở về kiểu chuyển đổi trực tiếp. Khi chân MODE ở mức cao thì dữ liệu chuyển đổi ra theo kiểu “HANDSAKE”. Chân STATUS Trong suốt thời gian ADC biến đổi, chân STATUS lên mức cao từ lúc bắt đầu chuyển đổi và suống mức thấp lúc nửa chu kỳ xung đồng hồ cuối cùng sau khi dữ liệu được chốt lại. Chân Khi chân vào ở mức cao thì ADC sẽ tiếp tục chu kỳ biến đổi và cập nhật tín hiệu ra trong suốt giai đoạn biến đổi. Khi hoạt động ở chế độ này thì một chu kỳ biến đổi cần 8192 nhịp clock. Nếu chân vào suống mức thấp khi ADC đang chuyển đổi thì vi mạch ngay lập tức trở về chế độ Auto_Zero. Đặc tính này dùng để cắt ngang thời gian biến đổi khi cần biến đổi một chu kỳ mới. Khi chân này chuyển lên mức cao thì quá trình biến đổi lại bắt đầu sau 7 chu kỳ xung (Chân STATUS sẽ lên mức cao). Dùng chân đểcho phép dễ dàng yêu cầu chuyển đổi. ADC được giữ ở chế độ Auto_Zero khi chân vào ở mức thấp. Khi chân này lên mức cao thì quá trình biến đổi lại tiếp tục, khi chân STATUS suống mức thấp thì dữ liệu đã được biến đổi xong. Nếu chân ở mức thấp và đứng ở đó trong khi Auto_Zero thì quá trình biến đổi dừng lại ở cuối của Auto_Zero và đợi tác động của chân để tiếp tục hoạt động. Chế độ trực tiếp: Khi chân MODE ở mức thấp và CE/LOAD ở mức thấp thì dữ liệu ra được truy nhập dưới sự điều khiển của chân LBEN và HBEN. -Khi LBEN=1, HBEN=0 thì dữ liệu đưa ra các chân từ B1 ¸ B8. -Khi LBEN=0, HBEN = 1 thì dữ liệu đưa ra các chân từ B9 ¸ B12 và các chân POL và OR. -Khi LBEN=1, HBEN=1 thì dữ liệu đưa ra các chân từ B1 ¸ B12 và các chân POL và OR. Chế độ Handshake Chế độ handshake được cung cấp khi sự lựa chọn giao diện của ICL7109 với các hệ thống số khi ADC trở thành tích cực trong điều khiển dòng chảy của dữ liệu. Nhưng thực tế nó phản ứng thụ động đối với các byte cho phép ở đầu vào. chế độ này được thiết kế đặc biệt để cho phép giao diện trực tiếp giữa ICL7109 với các chuẩn công nghiệp. Khi hoạt động trong chế độ Handshake, nó được cung cấp đầy đủ các điều khiển và các cờ cần thiết để truyền thứ tự 2 byte dữ liệu. Chế độ này được điều khiển bằng chân Mode. Khi chân Mode được giữ ở mức cao, ICL7109 sẽ hoạt động ở chế độ handshake sau khi dữ liệu mới đã được cất trong bộ chốt dữ liệu ra. Ở bất cứ một thời điểm nào trong quá trình chuyển đổi có sự chuyển tiếp từ mức o lên mức 1 của một xung ở chân Mode sẽ làm cho ADC hoạt động ở chế độ Handshake. Nếu có một xung xuất hiện trong khi dữ liệu mới đang được cất thì hoạt động trong chế độ handshake sẽ bị trễ cho đến khi dữ liệu mới ổn định. Khi ADC đang trong chế độ Handshake thì chân Mode được bỏ qua, quá trình cập nhật dữ liệu bị cấm cho đến khi quá trình biến đổi hoàn thành và thoát khỏi chế độ Handshake. 3.2 Vi mạch giải mã địa chỉ 74LS138. Khi ta muốn có nhiều đầu ra chọn vỏ từ bộ giải mã mà vẫn dùng các mạch lôgíc đơn giản thì thiết kế sẽ trở lên rất cồng kềnh do số lượng các mạch giải mã tăng lên. Trong trường hợp như vậy ta thường sử dung các mạch giải mã có sẵn. Một trong các mạch giải mã hay được sử dụng là 74LS138, mạch giải mã 3-8( nh­ hình vẽ ). IC trên bao gồm 14 chân, trong đó: Y0 ¸ Y7 là các đường ra địa chỉ, tích cực ở mức thấp. A,B,C là 3 đường địa chỉ vào, tích cực cao. E1 ,E2 là các đầu vào cho phép làm viêc, tích cực ở mức thấp. E3 là các đầu vào cho phép làm viêc, tích cực ở mức cao. Bảng chức năng của 74LS138: Các đầu vào Các đầu ra Chọn Cho phép C B A E1 E2 G1 E3 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 X x X 1 X X 1 1 1 1 1 1 1 1 X x X x 1 X 1 1 1 1 1 1 1 1 X x X x X 0 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1 0 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 x : không quan tâm. 3.3 Vi mạch dồn kênh 4051. Khi muốn sử dụng nhiều đầu vào mà chỉ có 1 đầu ra thì lúc đó ta sử dụng bộ dồn kênh này. Mạch này có 3 đầu vào A, B, C để lựa chọn và quyết định một trong 8 đầu vào được tích cực và nối đầu vào này với đầu ra chung. Nguồn cung cấp VCC = - 0,5V ¸ 7,5V. Khoảng nhiệt độ làm việc - 650C ¸ 150 0C Sơ đồ chân của IC 4051. Bảng chức năng của 4051 Tín hiệu điều khiÓn Kênh vào Inh A B C 1 0 0 0 0 0 0 0 0 x 0 0 0 0 1 1 1 1 x 0 0 1 1 0 0 1 1 x 0 1 0 1 0 1 0 1 Không Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 x : không quan tâm. 4.IC giải mã led 7 thanh 74ls47 Mét trong các phối ghép giữa vi xử lý và LED 7 thanh thường thấy là sử dụng mạch 7447 để giải mã số BCD 7 nét. Khi đưa số liệu vào 4 chân A, B, C, D thì mạch này sẽ tự động giải mã ra các thanh tương ứng. Điện áp cung cấp VCC max là 7V. Dải nhiệt độ làm việc 0 ¸ 75 0C. Sơ đồ chân của IC 4051 Bảng chức năng của 7447 Sè Input Output LT RBI D C B A a b c d e f G 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 x x x x x x x x x x x x x x x 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 Phần III tính toán thiết kế II. tổng quan. Để thiết kế được một hệ thu thập số liệu sử dụng vi xử lý ta cần phải quan tâm đến tính các đặc tính của hệ như: tính mềm dẻo trong các thao tác, tốc độ xử lý của hệ phải đáp ứng được yêu cầu đề ra, phải có độ tin cậy cao và phải thuận lợi trong việc tổ chức phần cứng. ưu điểm nổi bật của các hệ thống được thiết kế từ vi xử lý là nó đã có sẵn nhiều thành phần chức năng ở trong chíp nh­: ROM, RAM, các cổng vào ra…. Nó làm cho hệ thống được thiết kế trở lên gọn nhẹ hơn. 2. Trình tự thiết kế. Họ vi điều khiển 8051 được ứng dụng nhiều trong đo lường điều khiển. Khi thiết kế hệ thống này, em đã tuân thủ theo các bước sau: Bước 1: Phân tích chức năng nhiệm vụ hệ vi xử lý cần thiết kế. Người thiết kế phải tiến hành nghiên cứu kỹ lưỡng nhiệm vụ và các chức năng chính của hệ vi xử lý. Tìm hiểu về môi trường làm việc của hệ, đối tượng điều khiển của hệ, đặc trưng tham số của nguồn thông tin mà hệ cần thu thập và xử lý. Trên cơ sở đó phải phân chia một cách hợp lý chức năng nào thuộc phần cứng đảm nhiệm và chức năng nào do phần mềm đảm nhiệm. Với đề tài thiết kế này ta sử dụng vi điều khiển AT89C51 là bộ xử lý trung tâm. ngoài ra nó còn phải được ghép nối với các thiết bị ngoại vi khác: + Mạch biến đổi tương tự - số(ADC).ở đây ta sử dụng ICL7109 với 1 đầu vào tương tự, thời gian chuyển đổi nhanh, sai số nhỏ và công suất tiêu thụ thấp. + Vi mạch dồn kênh 4051: Do ADC chỉ có 1 đầu vào do đó ta sử dụng IC này để chọn kênh vào. + Lựa chọn các IC giải mã (74LS138) giải mã 7 thanh để phục vụ cho việc ghép nối. Tính toán thiết kế nguồn nuôi cho toàn mạch ứng với công suất tiêu thụ lớn nhất, thiết kế mạch phần cứng với cách bố trí thích hợp của các thiết bị. Bước 2: Xây dựng phần mềm cho hệ thống này. trên cơ sở bước 1 ta phải xây dựng phần mềm cho hệ thống đảm bảo phù hợp và hoạt động có hiệu quả. Xây dựng lưu đồ thuật toán tổng quát cho hoạt động của toàn hệ thống. Sau đó là lưu đồ thuật toán cho các nhiệm vụ cụ thể của nó. Từ các lưu đồ đó ta viết chương trình hoàn chỉnh của hệ, từ chương trình đó ta phải dịch ra mã máy để có thể nạp vào vi điều khiển. Bước 3: nạp chương trình đã viết vào chip và đưa vào thử mạch đã xây dựng. Sau đó hiệu chỉnh lại một số điểm chưa phù hợp với yêu cầu đề ra. Bước 4: thiết kế vỏ hộp bảo vệ. Yêu cầu của hệ là phải chắc chắn, vỏ hộp gọn nhẹ, hợp lý dễ vận hành và có thể chịu được va đập. C§CH2 S2 C§CH1 S1 C§CH8 S8 MUX ADC VXL (89C51) PC LED PB ....... SƠ ĐỒ KHỐI CỦA HỆ THU THẬP Trong đó: S1 ¸ S8 là các sensor đo hiệt độ CĐCH1 ¸ CĐCH8: là các mạch chuyển đổi chuẩn hóa MUX: Bộ dồn kênh. ADC: Bộ chuyển đổi tương tự - số. VXL: Bộ xử lý trung tâm. ở đây ta dùng 89C51. PB: các phím nhấn. 3. Thiết kế mạch nguồn. Để đảm bảo cho hệ thống hoạt động ổn định thì ta phải có mạch nguồn ổn định, có công suất phù hợp. Nguồn ở đây cung cấp cho mạch vi xử lý, mạch chuẩn hóa do đó cần nguồn ±5V, ±12V. Trong mạch này sử dụng IC ổn áp 7805, 7905, 7812, 7912. Sơ đồ mạch nguồn nh­ hình dưới. 4. Mạch chuẩn hóa Các tín hiệu đo được từ sensor chưa phù hợp với đầu vào của ADC do đó ta phải chuẩn hóa tín hiệu đó. Với IC đo nhiệt độ LM335, Trong khoảng nhiệt độ từ 00C ¸ 1000C thì điện áp ra của nó từ 2,73V ¸ 3,73V. ở 00C là 2,73V do đó ta phải xây dựng mạch trừ để ở nhiệt độ này điện áp ra là 0V, mạch khuếch đại để ở 1000C thì điện áp ra là 4V. Dưới đây là sơ đồ mạch chuẩn hóa. Phụ lục

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

  • docso lieu may tinh.doc
Tài liệu liên quan