1. Trang chủ
  2. » Cao đẳng - Đại học

Tài liệu MT8888 và 8051

12 444 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Giao tiếp MT888 và 8051 1/12 Trần Thiện Nhân MT8888 VÀ 8051 1 Giới thiệu MT8888 Để tạo giao diện giao tiếp với mạng điện thoại, Mitel giới thiệu đến chúng ta một dòng các vi điều khiển: MT8880, MT8888, MT8889 Các vi điều khiển này đều có khả năng thu và phát tín hiệu DTMF (Dual Tone) cùng các khả năng khác như lọc tín hiệu xử lí cuộc gọi (Call progress Filter), phát đơn tone (Single Tone). Trong đó MT8888 là IC được thiết kế riêng để giao tiếp với dòng vi điều khiển Intel mà ở đây là 8051. Nếu đọc kĩ datasheet của chúng bạn có thể nhận thấy có một vài khác biệt nhỏ giữa chúng. Mặc dù MT8880, MT8889 đều có thể giao tiếp với 8051, nhưng tôi khuyên bạn nên sử dụng MT8888. 1.1 Sơ đồ chân MT8888 Hình 1.1: Sơ đồ chân linh kiện MT8888C Giao tiếp MT888 và 8051 2/12 Trần Thiện Nhân Chân Tên Chức năng Ghi chú 1 IN+ Ngõ vào không đảo Đây là các chân của một op_am làm nhiệm vụ khếch đại tính hiệu vào. 2 IN- Ngỏ vào đảo 3 GS Gain Select 4 VRef Reference Voltage output Luôn có giá trị là nửa điện áp nguồn nuôi (ở đây là 2.5V) 5 VSS GND 6 OSC1 Chân vào của thạch anh yêu cầu nối vơi điện trở 4M7 xuống mass Hai chân thạch anh dùng loại 3.579545 MHz 7 OSC2 Chân ra của thạch anh. 8 TONE Tone DTMF out put Đường phát tín hiệu DTMF 9 /WR Yêu cầu đọc dữ liệu từ thanh ghi Bốn chân này dùng để điều khiển việc truy xuất dữ liệu của IC. Đặc biệt chú ý các chân này, đây là điểm khác biệt giữa các IC đã nói ở trên. 10 /CS Chip Select, yêu cầu đặt ở mức thấp khi truy xuất dữ liệu của IC 11 RS0 Cho phép chọn thanh ghi truy xuất 12 /RD Yêu cầu ghi dữ liệu lên thanh ghi 13 IRQ/CP Chân tạo ngắt Tạo ngắt ngoài cho vi điều khiển. 14-17 D0-D3 Đường dữ liệu 18 Est Early Steering ouput Không cần quan tâm 19 St/Gt Steering input/ Guard Time output 20 VCC Power Chân nguồn nối lên 5V Bảng 1.1 Mô tả chân IC 1.2 Các thanh ghi MT8888 dùng 5 thanh ghi cho việc giao tiếp với vi điều khiển, chúng được chia thành 3 nhóm: thu phát dữ liệu (Transmit Data Register: chỉ ghi, Receive Data Register: chỉ đọc), điều khiển (Control Register A và B: chỉ ghi), trạng thái (Status Register: chỉ đọc).Cụ thể như sau: • Transmit Data Register: chứa mã của nhị phân của kí tự mà MT8888 sẽ phát, rõ ràng đây là thanh ghi chỉ ghi. • Receive Data Register: chứa mã nhị phân của kí tự vừa nhận được, bạn chỉ có thể đọc giá trị này. Chú ý mã này chỉ có ý nghĩa khi có dấu hiệu nhận được một kí tự (ngắt). • Control Register A và B: là hai thanh ghi dùng để định chế độ của MT8888, chúng là các thanh ghi chỉ ghi. • Status Register: đúng như tên của nó, thanh ghi này cho biết trạng thái của IC, đây là thanh ghi chỉ đọc. Giao tiếp MT888 và 8051 3/12 Trần Thiện Nhân RSO /WR /RD Thanh ghi 0 0 1 Ghi lên Transmit Data Register 0 1 0 Đọc từ Receive Data Register 1 0 1 Ghi lên Control Register 1 1 0 Đọc từ Status Register Bảng 1.2 Chọn thanh ghi Bit Tên Chức năng b3 RSEL 0: Lần ghi kế tiếp được thực hiện lên thanh ghi CRA 1: Lần ghi kế tiếp được thực hiện lên thanh ghi CRB b2 IRQ 0: Không tạo ngắt. 1: Cho phép tạo ngắt trên chân 13. Nếu chọn chế độ DTMF thí ngắt được tạo khi nhận được tín hiệu DTMF hợp lệ hoặc đã phát xong tín hiệu DTMF. Lưu ý: bit này dùng kết hợp với b1 của CRA b1 CP-/D TMF Dùng kết hợp với b3 của CRA. 0: chọn chế độ lọc tín hiệu xử lí cuộc gọi. 1: chọn chế độ DTMF. Lưu ý: ở chế độ CP không thu được DTMF và ngược lại. b0 TOUT 0: ngừng phát tone 1: phát tone Lưu ý: bit này có giá trị trong tất cả các chế độ. Bảng 1.3 Thanh ghi điều khiển CRA Giao tiếp MT888 và 8051 4/12 Trần Thiện Nhân Bảng 1.4 Thanh ghi điều khiển CRB Bit Tên Bật Tắt b3 DELAYED STEERING Khi không nhận được tín hiệu hợp lệ Nhận được tín hiệu hợp lệ b2 RECEIVE DATA REGISTER FULL Khi có dữ liệu hợp lệ trong thanh ghi nhận Khi thanh ghi trạng thái được đọc b1 TRANSMIT DATA REGISTER EMPTY (BURST MODE ONLY) Khi đã sẵn sàng cho việc nhận kí tự mới. Khi thanh ghi được đọc b0 IRQ Đã có ngắt xảy ra b1 hoặc b2 được bật Khi thanh trạng thái được đọc Bảng 1.5 Thanh ghi trạng thái 2 Giao tiếp MT8888-8051 2.1 Giới thiệu Qui trình đọc và ghi các thanh ghi của MT8888 được mô tả trong các hình 1.2 và 1.3. Đối với qui trình đọc (hình 1.3) các tín hiệu /CS và RSO phải được đặt trước, dữ liệu sẽ được đọc từ thanh ghi MT8888 khi tín hiệu /RD được set xuống 0. Sau khi quan sát hình 1.4, giản đồ thời gian lệnh MOVX của 8051, tôi đã nhận thấy sự tương đồng giữa hai giản đồ hình 1.3 và hình 1.4. Nếu ta nối ALE với /CS, một chân của P2 với RSO, /RD của 8051 với /RD của MT8888, bus dữ liệu với P0 khi đó ta có thể dùng MOVX để đọc với các thanh ghi của MT8888 mà không phải dùng thêm bất kì lệnh nào khác. Hình 1.5 là sơ đồ khối giao tiếp mà tôi đã thực hiện, trong đó A8 (P2.0) là chân được chọn để nối với RSO; A9 (P2.1), ALE và hai cổng logic tạo thành một tín hiệu tự động điều khiển chân /CS của MT8888, chân A9 được xem như là CS của MT8888, nó phải được set ở mức cao khi muốn chọn MT8888, bạn có thể bỏ đi hai cổng logic, nối trực tiếp chân ALE với MT8888 điều này đồng nghĩa với MT8888 luôn được chọn. Bit Tên Chức năng b3 C-/R 1: Chọn cột 2: Chọn dòng Lưu ý: bit này dùng kết hợp với b2 của CRB b2 S-/D Dùng kết hợp với b3 của CRB 0: Phát đa tone 1: Phát đơn tone b1 TEST 0: Không chọn 1: Chọn Nếu được chọn tín hiệu trên chân 13 sẽ tương tự như tín hiệu DELAYED STERRING của Status Register. b0 /BURST 0: Chế độ burst 1: phát liên tục Tần số phát là 51+51, nếu ở chế độ DTMF. Tần số 102+102 nếu ở chế độ CP. Giao tiếp MT888 và 8051 5/12 Trần Thiện Nhân Hình 1.2 Giản đồ thời gian ghi các thanh ghi MT8888 Hình 1.3 Giản đồ thời gian đọc các thanh ghi MT8888 Hình 1.4 Giản đồ thời gian lệnh MOVX của 8051 PCH DPH PCL Opcode DPL External data in ALE /RD /PSEN Port 2 Port 0 Giao tiếp MT888 và 8051 6/12 Trần Thiện Nhân Với sơ đồ khối như trên MT8888 được xem như là bộ nhớ dữ liệu ngoài, với các ô nhớ được đọc bởi lệnh MOVX A,@DPTR và ghi bởi lệnh MOVX @DPTR,A có hai địa chỉ ô nhớ sau, (chỉ quan tâm byte địa chỉ cao). Tên A9 A8 Đọc Ghi SCReg 1 1 Status Register CRA, CRB DataReg 1 0 Received Data Register Transmit Data Register Khai báo trong KeilC char xdata SCReg _at_ 0xffff ; char xdata DataReg _at_ 0xfeff ; Truy xuất các thanh ghi trong KeilC char temp; temp = SCReg ; // đọc giá thanh ghi trạng thái vào temp SCReg = 0 ; // ghi lên thanh ghi điều khiển (CRA hoặc CRB) giá trị 0 temp = DataReg ; // đọc giá trị từ thanh ghi Received Data Register vào temp DataReg = 0 ; // ghi lên thanh ghi Transmit Data Register giá trị 0 2.2 Chương trình mẫu viết trong KeilC Các biến dùng trong bài viết này được khai báo như sau char bdata MT_Read; sbit TFinished = MT_Read^1; sbit DRecieved = MT_Read^2; bit ok; char idata Digit; Quá trình lập trình cho MT8888 yêu cầu các bước sau Bước 1: MT8888 yêu cầu phải được khởi động trước khi thu phát DTMF. ALE A9 A8 P0 /RD /WR INT1 /CS RSO D0-D3 /RD /WR IRQ/CP 8051 MT8888 Hình 1.5 Sơ đồ khối giao tiếp 8051-MT8888 Giao tiếp MT888 và 8051 7/12 Trần Thiện Nhân Hàm khởi động MT8888 trong KeilC, nó phải được gọi trong vòng 100ms sau khi reset. void initMT8888(void) { MT_Read = SCReg; // Read status Register, xóa tất cả các cờ SCReg = 0; //Write to control Register ghi không cần biết thanh ghi nào SCReg = 0; //Write to control Register ghi không cần biết thanh ghi nào, //lần ghi tiếp theo chắc chắn là thanh ghi CRA SCReg = 8; //Write to CRA SCReg = 0; //Write to CRB MT_Read = SCReg; // Read status Register, xóa tất cả các cờ } Bước 2: Cài đặt chế độ cho MT8888, trong bài viết này tôi trình bày chế độ Burst mode 50 + 50 và thu tín hiệu DTMF. void setupMT8888(void) { SCReg = 13; //write to control A, 1101 //chọn thanh ghi CRB cho lần ghi tiếp theo //cho phép ngắt trên chân 13 (ngắt 1) //chọn chế độ DTMF //không phát tone SCReg = 0; //write to control B, 0000 //không quan tâm //chọn chế độ phát đa tone //không chọn chế độ TEST //chọn chế độ phát Burst } Bước 3: thu hoặc phát tone DTMF. Qui trình phát tone DTMF. Giao tiếp MT888 và 8051 8/12 Trần Thiện Nhân Vì chúng ta đang ở chế độ Burst nên sau khi phát bạn phải đợi cho đến khi MT8888 báo là đã phát xong và đã sẵn sàng nhận kí tự khác thì việc phát mới xem là đã kết thúc. void TransmitDTMF(char digit) { EX1=0; // cấm ngắt 1 EA=0; DataReg = digit; // write digit to transmit data do { MT_Read = SCReg; } while (TFinished==0); } Quá trình thu tone DTMF: Trước tiên dùng ngắt 1 để đẩy kí tự nhận được vào biến digit và báo là có kí tự vừa nhận Begin End Ghi dữ liệu digit lên thanh ghi phát Đọc thanh ghi trạng thái vào MT_Read TFinished==0 Y N Giao tiếp MT888 và 8051 9/12 Trần Thiện Nhân Hàm xử lí ngắt như sau void my_int1(void) interrupt 2 { EA=0; MT_Read = SCReg; if(DRecieved==1) { ok=1; Digit = DataReg; } EA=1; } Hàm nhận một kí tự sẽ như sau char ReceiveDTMF(void) { EA=1; while(ok==0){;} Digit &=0x0f; // bỏ nible cao vì chỉ có nible thấp của digit là có ý nghĩa return Digit; } Xin hãy xem thêm datasheet để biết chi tiết. Ngắt 1 End Ngắt 1 Cấm tất cả các ngắt Đọc thanh ghi trạng thái vào MT_Read DRecieved ==1 N Y Ok=0; Đọc giá trị thanh ghi nhận vào digit Cho phép ngắt D T M F _ I N C 4 1 n C 6 1 u R 1 1 1 0 0 k C 2 0 . 4 7 u G N D C 3 1 u - + U 1 A T L 0 8 4 3 2 1 R 1 3 1 0 k T 1 1 : 1 1 3 2 4 D 1 Z 4 . 3 V 1 2 - + U 1 D T L 0 8 4 1 2 1 3 1 4 M a y d i e n t h o a i b a n D T M F _ O U T D U O N G D A Y D I E N T H O A I R 6 2 2 k R 9 5 0 0 k C 5 1 0 u T I P D 2 Z 4 . 3 V 12 R I N G R 8 1 0 0 k - + U 1 B T L 0 8 4 5 6 7 G N D R 7 1 0 k G N D R 41 k G N D R 5 2 2 k R 3 1 k Giao tiếp MT888 và 8051 10/12 Trần Thiện Nhân Đây là sơ đồ test, mạch này tôi tìm được trên mạng. Để thu tone , bạn chỉ cần nhấc máy điện thoại lên, và bấm số, chú ý tránh bấm số đúng, vì khi đó tổng đài sẽ thực hiện kết nối điện thoại của bạn với một hộ nào đó. Việc ấn số liên tiếp 1,2,3,4,5… thì không có vấn đề gì . Để phát tone, bạn cũng nhấc máy điện thoại lên, thử dùng chương trình mình vừa viết xong, quay số tự động đến nhà người quen, bạn mình chẳng hạn, sau đó, bạn dùng ống nghe điện thoại là có thể nói chuyện bình thuờng. Chương trình tôi đã viết như sau #include <AT89X52.h> //MT8888 Data Reg char xdata DataReg _at_ 0xfeff; //Control Reg Read Status Reg //Read on the Control Reg and write to the Status reg char xdata SCReg _at_ 0xffff; //Data read from MT8888 char bdata MT_Read; sbit TFinished = MT_Read^1; sbit DRecieved = MT_Read^2; bit ok; char idata Digit; ///////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////// void delayms(unsigned int time){ while(time ) { unsigned char temp=125; while(temp ); } } ////////////////////////////////////////////////////////////////// // interrupts ////////////////////////////////////////////////////////////////// [...]...Giao tiếp MT888 và 8051 11/12 void my_int1(void) interrupt 2 { EA=0; MT_Read = SCReg; if(DRecieved==1) { ok=1; Digit = DataReg; } EA=1; } void init(void){ //initalize interrupts IT1=1; EX1=0; //enable interrupt 1 EA=0; //enable interrupts } void initMT8888(void) { MT_Read = SCReg; SCReg = 0; SCReg = 0; SCReg = 8; SCReg = 0; MT_Read = SCReg; } void setupMT8888(void) { SCReg = 13; //write... MT_Read = SCReg; } while (TFinished==0); } char ReceiveDTMF(void) { EA=1; Trần Thiện Nhân Giao tiếp MT888 và 8051 12/12 Trần Thiện Nhân while(ok==0){;} Digit &=0x0f; // b? nible cao vì ch? có nible th?p c?a digit là có ý ngh?a return Digit; } void main(void) { char digit; init(); initMT8888(); setupMT8888(); // Goi cho ban be // o day minh dung tong dai noi bo TransmitDTMF(12); delayms(1500); TransmitDTMF(3); . MT888 và 8051 1/12 Trần Thiện Nhân MT8888 VÀ 8051 1 Giới thiệu MT8888 Để tạo giao diện giao tiếp với mạng điện thoại, Mitel giới thiệu đến chúng ta một dòng các vi điều khiển: MT8880, MT8888, . thái 2 Giao tiếp MT8888- 8051 2.1 Giới thiệu Qui trình đọc và ghi các thanh ghi của MT8888 được mô tả trong các hình 1.2 và 1.3. Đối với qui trình đọc (hình 1.3) các tín hiệu /CS và RSO phải được. Sơ đồ khối giao tiếp 8051 -MT8888 Giao tiếp MT888 và 8051 7/12 Trần Thiện Nhân Hàm khởi động MT8888 trong KeilC, nó phải được gọi trong vòng 100ms sau khi reset. void initMT8888(void) { MT_Read

Ngày đăng: 18/08/2014, 07:49

Xem thêm: Tài liệu MT8888 và 8051

TỪ KHÓA LIÊN QUAN

Mục lục

    1.1 Sơ đồ chân MT8888

    2 Giao tiếp MT8888-8051

    2.2 Chương trình mẫu viết trong KeilC

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w