M ỤC L ỤC
Lời nói đầu . 2
Lời cảm ơn . 3
Nhận xét giáo viên hướng dẫn 4
Nhận xét giáo viên phản biện . 5
Giới thiệu đề tài . 6
Chương 1-Giới thiệu tổng quan mạng điện thoại 9
1.1. Giới thiệu tổng quát về tổng đài . 9
1.2. Giới thiệu tổng quát về máy điện thoại . 12
Chương 2 - Giới thiệu linh kiện . 18
2.1. Vi điều khiển AVR . 18
2.2 IC MT8888 . 53
2.3 IC LM358 . 64
2.4 IC MAX232 . 67
Chương 3-Sơ đồ thiết kế và giải thuật . 69
3.1. Sơ đồ thiết kế . 69
3.1.1 Sơ đồ khối . 69
3.1.2 Sơ đồ nguyên lý . 69
3.2. Giải thuật . 76
3.2.1 Module PSTN-RS232 . 76
3.2.2 Module trạm . 80
Chương 4-Kết luận và hướng phát triển đề tài . 83
4.1 Kết luận . 83
4.2 Hướng phát triển đề tài . 83
Tài liệu tham khảo . 84
1
LỜI NÓI ĐẦU
Trong lĩnh vực kỹ thuật ngày nay thì lĩnh vực điện tử đóng vai trò vô cùng
quan trọng trong thời đại công nghiệp hoá hiện đại hoá đất nước. Nói đến lĩnh vực
điện tử thì chúng ta không thể không nhắc đến ngành kỹ thuật điện tử viễn thông.
Đó là chiếc chìa khoá vàng mở ra một kỷ nguyên mới, nhờ nó ta có thể thu thập
nhiều thông tin từ mọi nơi trên hành tinh để phục vụ cuộc sống.
Tuy chỉ mới thâm nhập vào nước ta gần đây nhưng công nghệ điện tử đã
phát triển rất nhanh và ngày càng giữ vai trò quan trọng trong nền công nghiệp
hoá nước nhà. Hệ thống viễn thông, dịch vụ khách hàng, thông tin di động, nhắn
tin càng phát triển với tính hiện đại và tự động hóa ngày càng cao.
Với sự phát triển nhanh chóng của ngành công nghệ điện tử, thì việc điều
khiển các thiết bị điện tự động ngày càng nhiều, chúng ta cần sử dụng các chip
điều khiển để lập trình chúng hoạt động theo ý muốn. Hiện nay, do nhu cầu trao
đổi thông tin của người dân là vô cùng lớn nên mạng điện thoại ngày càng được
mở rộng không chỉ dừng lại ở việc liên lạc thông tin mà còn thêm nhiều tính năng
và dịch vụ khác. Một trong những tính năng đó là sử dụng mạng điện thoại để
truyền tín hiệu điều khiển, nó đã giúp tiết kiệm được rất nhiều thời gian cho công
việc. Chính vì vậy mà tôi quyết định chọn đề tài “Giám sát và điều khiển thiết
bị qua đường PSTN”.
Song, do giới hạn về thời gian cũng như kiến thức nên nội dung còn nhiều
thiếu sót. Rất mong sự đóng góp ý kiến của quý thầy cô và các bạn sinh viên để
tập đồ án được hoàn thiện hơn. Xin chân thành cảm ơn !
2
LỜI CẢM ƠN
Trong thời gian hoàn thành xong đề tài, tôi đã được sự giúp đỡ của quí bậc
thầy cô và bạn bè nên đề tài đã được hoàn thành đúng thời gian. Tôi xin chân
thành cảm ơn đến: Thầy Trần Minh Hồng, đã hết lòng quan tâm, giúp đỡ tận
tình và tạo mọi điều kiện để tôi có thể hoàn thành đồ án này. Xin chân thành gửi
lời cảm ơn đến quí thầy cô trong Khoa Điện Tử đã cung cấp cho tôi những kiến
thức nền, chuyên môn làm cơ sở để tôi có thể hoàn thành đồ án này. Tôi cũng xin
chân thành cảm ơn đến các bạn sinh viên và các bậc anh chị đã giúp đỡ về nhiều
mặt: ý kiến, tài liệu ., để tôi có thể hoàn thành đồ án đúng thời gian .
102 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2356 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Giám sát và điều khiển thiết bị qua đường PSTN, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
c hiện phép cộng 2 thanh ghi bằng instruction ADD
như sau:
31
ADD R1,R2
Bạn thấy trong dòng lệnh trên, 2 thanh ghi R1 và R2 được sử dụng trực tiếp
với tên của chúng, dòng lệnh trên khi được dịch sang opcode để download vào
chip sẽ có dạng: 0000110000010010 trong đó 00001=1 tức thanh ghi R1 và 00010
= 2 chỉ thanh ghi R2. Sau phép cộng, kết quả sẽ được lưu vào thanh ghi R1.
Tất cả các instruction sử dụng RF làm toán hạng đều có thể truy nhập tất cả
các RF một cách trực tiếp trong 1 chu kỳ xung clock, ngoại trừ SBCI, SUBI, CPI,
ANDI và LDI, các instruction này chỉ có thể truy nhập các thanh ghi từ R16 đến
R31.
Thanh ghi R0 là thanh ghi duy nhất được sử dụng trong instruction LPM
(Load Program Memory). Các thanh ghi R26, R27, R28, R29, R30 và R31 ngoài
chức năng thông thường còn được sử dụng như các con trỏ (Pointer register) trong
một số instruction truy xuất gián tiếp. Chúng ta sẽ khảo sát vấn đề con trỏ sau này.
Hình 3 mô tả các chức năng phụ của các thanh ghi.
32
Tóm lại 32 RF của AVR được xem là 1 phần của CPU, vì thế chúng được
CPU sử dụng trực tiếp và nhanh chóng, để gọi các thanh ghi này, chúng ta không
cần gọi địa chỉ mà chỉ cần gọi trực tiếp tên của chúng. RF thường được sử dụng
như các toán hạng (operand) của các phép toán trong lúc lập trình.
Phần 2: là phần nằm ngay sau register file, phần này bao gồm 64 thanh ghi
được gọi là 64 thanh ghi nhập/xuất (64 I/O register) hay còn gọi là vùng nhớ I/O
(I/O Memory). Vùng nhớ I/O là cửa ngõ giao tiếp giữa CPU và thiết bị ngoại vi.
Tất cả các thanh ghi điều khiển, trạng thái…của thiết bị ngoại vi đều nằm ở đây.
Xem lại ví dụ trong bài 1, trong đó tôi có đề cập về việc điều khiển các PORT của
AVR, mỗi PORT liên quan đến 3 thanh ghi DDRx, PORTx và PINx, tất cả 3
thanh ghi này đều nằm trong vùng nhớ I/O. Xa hơn, nếu muốn truy xuất các thiết
bị ngoại vi khác như Timer, chuyển đổi Analog/Digital, giao tiếp USART…đều
thực hiện thông qua việc điều khiển các thanh ghi trong vùng nhớ này.
Vùng nhớ I/O có thể được truy cập như SRAM hay như các thanh ghi I/O. Nếu
sử dụng instruction truy xuất SRAM để truy xuất vùng nhớ này thì địa chỉ của
chúng được tính từ 0x0020 đến 0x005F. Nhưng nếu truy xuất như các thanh ghi
I/O thì địa chỉ của chúng đựơc tính từ 0x0000 đến 0x003F.
Xét ví dụ instruction OUT dùng xuất giá trị ra các thanh ghi I/O, lệnh này sử
dụng địa chỉ kiểu thanh ghi, cấu trúc của lệnh như sau: OUT A, Rr, trong đó A là
địa chỉ của thanh ghi trong vùng nhớ I/O, Rr là thanh ghi RF, lệnh OUT xuất giá
trị từ thanh ghi Rr ra thanh ghi I/O có địa chỉ là A. Giả sử chúng ta muốn xuất giá
trị chứa trong R6 ra thanh ghi điều khiển hướng của PORTD, tức thanh ghi
DDRD, địa chỉ tính theo vùng I/O của thanh ghi DDRD là 0x0011, như thế câu
lệnh của chúng ta sẽ có dạng: OUT 0x0011, R6. Tuy nhiên trong 1 trường hợp
khác, nếu muốn truy xuất DDRD theo dạng SRAM, ví dụ lệnh STS hay LDS, thì
phải dùng địa chỉ tuyệt đối của thanh ghi này, tức giá trị 0x0031, khi đó lệnh OUT
33
ở trên được viết lại là STS 0x0031, R6.
Để thống nhất cách sử dụng từ ngữ, từ bây giờ chúng ta dùng khái niệm “địa
chỉ I/O” cho các thanh ghi trong vùng nhớ I/O để nói đến địa chỉ không tính phần
Register File, khái niệm “địa chỉ bộ nhớ” của thanh ghi là chỉ địa chỉ tuyệt đối
của chúng trong SRAM. Ví dụ thanh ghi DDRD có “địa chỉ I/O” là 0x0011 và
“địa chỉ bộ nhớ” của nó là 0x0031, “địa chỉ bộ nhớ” = “địa chỉ I/O” + 0x0020.
Vì các thanh ghi trong vùng I/O không được hiểu theo tên gọi như các Register
file, khi lập trình cho các thanh ghi này, người lập trình cần nhớ địa chỉ của từng
thanh ghi, đây là việc tương đối khó khăn. Tuy nhiên, trong hầu hết các phần mềm
lập trình cho AVR, địa chỉ của tất cả các thanh ghi trong vùng I/O đều được định
nghĩa trước trong 1 file Definition, bạn chỉ cần đính kèm file này vào chương trình
của bạn là có thể truy xuất các thanh ghi với tên gọi của chúng. Giả sử trong ví dụ
ở bài 1, để lập trình cho chip Atmega8 bằng AVRStudio, dòng thứ 2 chúng ta sử
dụng INCLUDE "M8DEF.INC" để load file định nghĩa cho chip ATMega8, file
M8DEF.INC. Vì vậy, trong sau này khi muốn sử dụng thanh ghi DDRD bạn chỉ
cần gọi tên của chúng, như: OUT DDRD,R6.
Phần 3: RAM tĩnh, nội (internal SRAM), là vùng không gian cho chứa các
biến (tạm thời hoặc toàn cục) trong lúc thực thi chương trình, vùng này tương tự
các thanh RAM trong máy tính nhưng có dung lượng khá nhỏ (khoảng vài KB,
tùy thuộc vào loại chip).
Phần 4: RAM ngoại (external SRAM), các chip AVR cho phép người sử dụng
gắn thêm các bộ nhớ ngoài để chứa biến, vùng này thực chất chỉ tồn tại khi nào
người sử dụng gắn thêm bộ nhớ ngoài vào chip.
Phần 5: EEPROM (Electrically Ereasable Programmable ROM) là một phần
quan trọng của các chip AVR mới, vì là ROM nên bộ nhớ này không bị xóa ngay
cả khi không cung cấp nguồn nuôi cho chip, rất thích hợp cho các ứng dụng lưu
trữ dữ liệu. Như trong hình 1, phần bộ nhớ EEPROM được tách riêng và có địa
34
chỉ tính từ 0x0000.
Sơ đồ tổ chức bộ nhớ
2.1.4 Các Thanh Ghi
1. Thanh ghi SREG (STATUS REGISTRY).
Nằm trong vùng nhớ I/O, thanh ghi SREG có địa chỉ I/O là 0x003F và địa chỉ
bộ nhớ là 0x005F (thường đây là vị trí cuối cùng của vùng nhớ I/O) là một trong
số các thanh ghi quan trọng nhất của AVR, vì thế mà tôi dành phần này để giới
thiệu về thanh ghi này. Thanh ghi SREG chứa 8 bit cờ (flag) chỉ trạng thái của bộ
xử lí, tất cả các bit này đều bị xóa sau khi reset, các bit này cũng có thể được đọc
và ghi bởi chương trình. Chức năng của từng bit được mô tả như sau:
35
• Bit 0 – C (Carry Flag: Cờ nhớ): là bit nhớ trong các phép đại số hoặc logic,
ví dụ thanh ghi R1 chứa giá trị 200, R2 chứa 70, chúng ta thực hiện phép cộng có
nhớ: ADC R1, R2, sau phép cộng, kết quả sẽ được lưu lại trong thanh ghi R1,
trong khi kết quả thực là 270 mà thanh ghi R1 lại chỉ có khả năng chứa tối đa giá
trị 255 (vì có 8 bit) nên trong trường hợp này, giá trị lưu lại trong R1 thực chất chỉ
là 14, đồng thời cờ C được set lên 1 (vì 270=100001110, trong đó 8 bit sau
00001110 =14 sẽ được lưu lại trong R1).
• Bit 1 – Z (Zero Flag: Cờ 0): cờ này được set nếu kết quả phép toán đại số hay
phép Logic bằng 0.
• Bit 2 – N (Negative Flag: Cờ âm): cờ này được set nếu kết quả phép toán đại
số hay phép Logic là số âm.
• Bit 3 – V (Two’s complement Overflow Flag: Cờ tràn của bù 2): hoạt động
của cờ này có vẻ sẽ khó hiểu cho bạn vì nó liên quan đến kiến thức số nhị phân
(phần bù), chúng ta sẽ đề cập đến khi nào thấy cần thiết.
• Bit 4 – S (Sign Bit: Bit dấu): Bit S là kết quả phép XOR giữa 1 cờ N và V,
S=N xor V.
• Bit 5 – H (Half Carry Flag: Cờ nhờ nữa): cờ H là cờ nhớ trong 1 vài phép
toán đại số và phép Logic, cờ này hiệu quả đối với các phép toán với số BCD.
• Bit 6 – T (Bit Copy Storage): được sử dụng trong 2 Instruction BLD (Bit
LoaD) và BST (Bit STorage). Tôi sẽ giải thích chức năng Bit T trong phần giới
36
thiệu về BLD và BST.
• Bit 7 – I (Global Interrupt Enable) : Cho phép ngắt toàn bộ): Bit này phải
được set lên 1 nếu trong chương trình có sử dụng ngắt. Sau khi set bit này, bạn
muốn kích hoạt loại ngắt nào cần set các bit ngắt riêng của ngắt đó. Hai instruction
dùng riêng để Set và Clear bit I là SEI và CLI.
Chú ý: tất cả các bit trong thanh ghi SREG đều có thể được xóa thông qua các
instruction không toán hạng CLx và set bởi SEx, trong đó x là tên của Bit.Ví dụ
CLT là xóa Bit T và SEI là set bit I.
Tôi chỉ giải thích ngắn gọn chức năng của các bit trong thanh ghi SREG, cụ thể
chức năng và cách sử dụng của từng bit chúng ta sẽ tìm hiểu trong các trường hợp
cụ thể sau này, người đọc có thể tự tìm hiểu thêm trong các tài liệu về
INSTRUCTION cho AVR.
Tôi cung cấp thêm 1 bảng tóm tắt sự ảnh hưởng của các phép toán đại số, logic
lên các Bit trong thanh ghi SREG.
2. Thanh ghi MCUCR:
MCUCR là một thanh ghi 8 bit nhưng đối với hoạt động ngắt ngoài, chúng ta chỉ
quan tâm đến 4 bit thấp của thanh ghi này (4 bit cao dùng cho Power manager và
Sleep Mode), 4 bit thấp là các bit Interrupt Sense Control (ISC), 2 bit ISC11,
ISC10 dùng cho INT1 và ISC01, ISC00 dùng cho INT0. Hãy nhìn vào bảng tóm
tắt bên dưới để biết chức năng của các bit trên, đây là bảng “chân trị” của 2 bit
ISC11, ISC10. Bảng chân trị cho các bit ISC01, ISC00 hoàn toàn tương tự.
37
Thật dễ dàng để hiểu chức năng của các bit Sense Control, ví dụ bạn muốn set
cho INT1 là ngắt cạnh xuống (Falling Edge) trong khi INT0 là ngắt cạnh lên
(Rising Edge), hãy đặt dòng lệnh MCUCR =0x0B (0x0B = 00001011 nhị phân)
trong chương trình của bạn.
3. Thanh ghi GICR:
Thanh ghi điều khiển ngắt thông thường – GICR (General Interrupt Control
Register) (trên các chip AVR cũ, như các chip AT90Sxxxx, thanh ghi này có tên
là thanh ghi mặt nạ ngắt thông thường GIMSK, bạn tham khảo thêm datasheet của
các chip này nếu cần sử dụng đến). GICR cũng là 1 thanh ghi 8 bit nhưng chỉ có 2
bit cao (bit 6 và bit 7) là được sử dụng cho điều khiển ngắt, cấu trúc thanh ghi như
bên dưới (trích datasheet).
Bit 7 – INT1 gọi là bit cho phép ngắt 1(Interrupt Enable), set bit này bằng 1
nghĩa bạn cho phép ngắt INT1 hoạt động, tương tự, bit INT0 điều khiển ngắt
38
INT0.
4. Thanh ghi GIFR:
Thanh ghi cờ ngắt thông thường – GIFR (General Interrupt Flag Register) có 2 bit
INTF1 và INTF0 là các bit trạng thái (hay bit cờ - Flag) của 2 ngắt INT1 và INT0,
nếu có 1 sự kiện ngắt phù hợp xảy ra trên chân INT1, bit INTF1 được tự động set
bằng 1 (tương tự cho trường hợp của INTF0), chúng ta có thể sử dụng các bit này
để nhận ra các ngắt, tuy nhiên điều này là không cần thiết nếu chúng ta cho phép
ngắt tự động, vì vậy thanh ghi này thường không được quan tâm khi lập trình ngắt
ngoài. Cấu trúc thanh ghi GIFR được trình bày trong hình ngay bên dưới.
5. Thanh ghi TCCR0:
• TCCR0 (Timer/Counter Control Register): là thanh ghi điều khiển hoạt
động của T/C0. Tuy là thanh ghi 8 bit nhưng thực chất chỉ có 3 bit có tác
dụng đó là CS00, CS01 và CS02.
Các bit CS00, CS01 và CS02 gọi là các chip chọn nguồn xung nhịp cho T/C0
(Clock Select). Chức năng các bit này được mô tả trong bảng 1.
Bảng 1: chức năng các bit CS0X
39
6. Thanh ghi TCNT0:
• TCNT0 (Timer/Counter Register): là 1 thanh ghi 8 bit chứa giá trị vận hành
của T/C0. Thanh ghi này cho phép bạn đọc và ghi giá trị một cách trực tiếp.
7. Thanh ghi TIMSK:
• TIMSK (Timer/Counter Interrupt Mask Register): là thanh ghi mặt nạ cho ngắt
của tất cả các T/C trong Atmega8, trong đó chỉ có bit TOIE0 tức bit số 0 (bit đầu
tiên) trong thanh ghi này là liên quan đến T/C0, bit này có tên là bit cho phép ngắt
khi có tràn ở T/C0. Tràn (Overflow) là hiện tượng xảy ra khi bộ giá trị trong thanh
ghi TCNT0 đã đạt đến MAX (255) và lại đếm thêm 1 lần nữa.
Bit 1, TOIE0=1, bit quy định ngắt tràn cho thanh T/C0.
Bit 2, TOIE1, bit quy định ngắt tràn cho thanh T/C1.
40
Bit 3, OCIE1B là bit cho phép ngắt khi có 1 “Match” xảy ra trong việc so sánh
TCNT1 với OCR1B.
Bit 4, OCIE1A là bit cho phép ngắt khi có 1 “Match” xảy ra trong việc so sánh
TCNT1 với OCR1A.
Bit 5, TICIE1 là bit cho phép ngắt trong trường hợp Input Capture được dùng.
Bit 6, TOIE2, bit quy định ngắt tràn cho thanh T/C2.
Bit 7, OCIE2 là bit cho phép ngắt khi có 1 “Match” xảy ra trong việc so sánh
TCNT2 với OCR2.
8. Thanh ghi TIFR:
• TIFR (Timer/Counter Interrupt Flag Register): là thanh ghi cờ nhớ cho tất cả
các bộ T/C. Trong thanh ghi này bit số 0, TOV0 là cờ chỉ thị ngắt tràn của T/C0.
Khi có ngắt tràn xảy ra, bit này tự động được set lên 1.
9. Thanh ghi TCNT1:
• TCNT1H và TCNT1L (Timer/Counter Register): là 2 thanh ghi 8 bit tạo thành
thanh ghi 16 bits (TCNT1) chứa giá trị vận hành của T/C1. Cả 2 thanh ghi này cho
phép bạn đọc và ghi giá trị một cách trực tiếp. 2 thanh ghi được kết hợp như sau:
41
10. Thanh ghi TCCR1:
• TCCR1A và TCCR1B (Timer/Counter Control Register): là 2 thanh ghi điều
khiển hoạt động của T/C1. Tất cả các mode hoạt động của T/C1 đều được xác
định thông qua các bit trong 2 thanh ghi này. Tuy nhiên, đây không phải là 2 byte
cao và thấp của một thanh ghi mà là 2 thanh ghi hoàn toàn độc lập. Các bit trong 2
thanh ghi này bao gồm các bit chọn mode hay chọn dạng sóng (Waveform
Generating Mode – WGM), các bit quy định dạng ngõ ra (Compare Output Match
– COM), các bit chọn giá trị chia prescaler cho xung nhịp (Clock Select – CS)
…Cấu trúc của 2 thanh ghi được trình bày như bên dưới.
Nhìn chung để “thuộc” hết cách phối hợp các bit trong 2 thanh ghi TCCR1A
và TCCR1B là tương đối phức tạp vì T/C1 có rất nhiều mode hoạt động, chúng ta
sẽ khảo sát chúng trong phần các chế độ hoạt động của T/C1 bên dưới. Ở đây,
trong thanh ghi TCCR1B có 3 bit khá quen thuộc là CS10, CS11 và CS12. Đây là
các bit chọn xung nhịp cho T/C1 như truong T/C0. Bảng 2 sẽ tóm tắt các chế độ
42
xung nhịp trong T/C1.
Bảng 2: chức năng các bit CS12, CS11 và CS10.
Các mode hoạt động: có tất cả 5 chế độ hoạt động chính trên T/C1. Các chế độ
hoạt động cơ bản được quy định bởi 4 bit Waveform Generation Mode (WGM13,
WGM12, WGM11 WGM10) và một số bit phụ khác. 4 bit Waveform Generation
Mode lại được bố trí nằm trong 2 thanh ghi TCCR1A và TCCR1B (WGM13 là bit
4, WGM12 là bit 3 trong TCCR1B trong khi WGM11 là bit 1 và WGM10 là bit 0
trong thanh ghi TCCR1A) vì thế cần phối hợp 2 thanh ghi TCCR1 trong lúc điều
khiển T/C1. Các chế độ hoạt động của T/C1 được tóm tắt trong bảng sau 3:
Bảng 3: các bit WGM và các chế độ hoạt động của T/C1.
43
Chú ý các bit COM1A1, COM1A0 và COM1B1, COM1B0 là các bit chọn dạng
tín hiệu ra của PWM (Compare Output Mode bits). COM1A1, COM1A0 dùng cho
kênh A và COM1B1, COM1B0 dùng cho kênh B. Hãy đối chiếu bảng 4.
Bảng 4: mô tả các bit COM trong chế độ fast PWM.
44
11. Thanh ghi OCR1:
• OCR1A và OCR1B (Ouput Compare Register A và B): có một số khái niệm
mới mà chúng ta cần biết khi làm việc với T/C1, một trong số đó là Ouput
Compare (sorry, I don’t wanna translate it to Vietnamese). Trong lúc T/C hoạt
động, giá trị thanh ghi TCNT1 tăng, giá trị này được liên tục so sánh với các thanh
ghi OCR1A và OCR1B (so sánh độc lập với từng thanh ghi), việc so sánh này trên
AVR gọi là gọi là Ouput Compare. Khi giá trị so sánh bằng nhau thì 1 “Match”
xảy ra, khi đó một ngắt hoặc 1 sự thay đổi trên chân OC1A (hoặc/và chân OC1B)
xảy ra (đây là cách tạo PWM bởi T/C1). Tại sao lại có A và B? Đó là vì người
thiết kế AVR muốn mở rộng khả năng ứng dụng T/C1 cho bạn. A và B đại diện
cho 2 kênh (channel) và B. Cũng vì điều này mà chúng ta có thể tạo 2 kênh PWM
bằng T/C1. Tóm lại, cơ bản 2 thanh ghi này chứa các giá trị để so sánh, chức năng
và các chế độ hoạt động cụ thể của chúng sẽ được khảo sát trong các phần sau.
45
12. Thanh ghi ICR1:
• ICR1 (InputCapture Register 1): khái niệm mới thứ 2 của T/C1 là Input
Capture. Khi có 1 sự kiện trên chân ICP1 (chân 14 trên Atmega8), thanh ghi
ICR1sẽ “capture” giá trị của thanh ghi đếm TCNT1. Một ngắt có thể xảy ra trong
trường hợp này, vì thế Input Capture có thể được dùng để cập nhật giá trị “TOP”
của T/C1.
13. Thanh ghi UDR:
• UDR: hay thanh ghi dữ liệu, là 1 thanh ghi 8 bit chứa giá trị nhận được và phát
đi của USART. Thực chất thanh ghi này có thể coi như 2 thanh ghi TXB
(Transmit data Buffer) và RXB (Reveive data Buffer) có chung địa chỉ. Đọc UDR
thu được giá trị thanh ghi đệm dữ liệu nhận, viết giá trị vào UDR tương đương đặt
giá trị vào thanh ghi đệm phát, chuẩn bị để gởi đi. Chú ý trong các khung truyền
sử dụng 5, 6 hoặc 7 bit dữ liệu, các bit cao của thanh ghi UDR sẽ không được sử
dụng
46
14. Thanh ghi UCSRA:
• UCSRA (USART Control and Status Register A): là 1 trong 3 thanh ghi điều
khiển hoạt động của module USART.
Thanh ghi UCSRA chủ yếu chứa các bit trạng thái như bit báo quá trình nhận
kết thúc (RXC), truyền kết thúc (TXC), báo thanh ghi dữ liệu trống (UDRE),
khung truyền có lỗi (FE), dữ liệu tràn (DOR), kiểm tra parity có lỗi (PE)…Bạn
chú ý một số bit quan trọng của thanh ghi này:
* UDRE (USART Data Register Empty) khi bit bày bằng 1 nghĩa là thanh ghi dữ
liệu UDR đang trống và sẵn sàng cho một nhiệm vụ truyền hay nhận tiếp theo. Vì
thế nếu bạn muốn truyền dữ liệu đầu tiên bạn phải kiểm tra xem bit UDRE có
bằng 1 hay không, sau khi chắc chắn rằng UDRE=1 hãy viết dữ liệu vào thanh ghi
UDR để truyền đi.
* U2X là bit chỉ định gấp đôi tốc độ truyền, khi bit này được set lên 1, tốc độ
truyền so cao gấp 2 lần so với khi bit này mang giá trị 0.
* MPCM là bit chọn chế độ hoạt động đa xử lí (multi-processor).
15. Thanh ghi UCSRB:
• UCSRB (USART Control and Status Register B): đây là thanh ghi quan trọng
điều khiển USART. Vì thế chúng ta sẽ khảo sát chi tiết từng bit của thanh ghi này.
47
* RXCIE (Receive Complete Interrupt Enable) là bit cho phép ngắt khi quá trình
nhận kết thúc. Việc nhận dữ liệu truyền bằng phương pháp nối tiếp không đồng bộ
thường được thực hiện thông qua ngắt, vì thế bit này thường được set bằng 1 khi
USART được dung nhận dữ liệu.
* TXCIE (Transmit Complete Interrupt Enable) bit cho phép ngắt khi quá trình
truyền kết thúc.
* UDRIE (USART Data Register Empty Interrupt Enable) là bit cho phép ngắt khi
thanh ghi dữ liệu UDR trống.
* RXEN (Receiver Enable) là một bit quan trọng điều khiển bộ nhận của USART,
đề kích hoạt chức năng nhận dữ liệu bạn phải set bit này lên 1.
* TXEN (Transmitter Enable) là bit điều khiển bộ phát. Set bit này lên 1 bạn sẽ
khởi động bộ phát của USART.
* UCSZ2 (Chracter size) bit này kết hợp với 2 bit khác trong thanh ghi UCSRC
quy định độ dài của dữ liệu truyền/nhận. Chúng ta sẽ khảo sát chi tiết khi tìm hiểu
thanh ghi UCSRC.
* RXB8 (Receive Data Bit 8) gọi là bit dữ liệu 8. Bạn nhớ lại rằng USART trong
AVR có hỗ trợ truyền dữ liệu có độ dài tối đa 9 bit, trong khi thanh ghi dữ liệu là
thanh ghi 8 bit. Do đó, khi có gói dữ liệu 9 bit được nhận, 8 bit đầu sẽ chứa trong
thanh ghi UDR, cần có 1 bit khác đóng vai trò bit thứ chín, RXD8 là bit thứ chín
48
này. Bạn chú ý là các bit được đánh số từ 0, vì thế bit thứ chín sẽ có chỉ số là 8, vì
lẽ đó mà bit này có tên là RXD8 (không phải RXD9).
* TXB8 (Transmit Data Bit 8), tương tự như bit RXD8, bit TXB8 cũng đóng vai
trò bit thứ 9 truyền thông, nhưng bit này được dung trong lúc truyền dữ liệu.
16. Thanh ghi UCSRC:
• UCSRC (USART Control and Status Register C): thanh ghi này chủ yếu quy
định khung truyền và chế độ truyền. Tuy nhiên, có một rắc rối nho nhỏ là thanh
ghi này lại có cùng địa chỉ với thanh ghi UBRRH (thanh ghi chứa byte cao dùng
để xác lập tốc độ baud), nói một cách khác 2 thanh ghi này là 1. Vì thế bit 7 trong
thanh ghi này, tức bit URSEL là bit chọn thanh ghi. Khi URSEL=1, thanh ghi này
được chip AVR hiểu là thanh ghi điều khiển UCSRC, nhưng nếu bit URSEL=0 thì
thanh ghi UBRRH sẽ được sử dụng.
Các bit còn lại trong thanh ghi UCSRC được mô tả như sau:
* UMSEL (USART Mode Select) là bit lựa chọn giữa 2 chế độ truyền thông đồng
bộ và không đồng bộ. Nếu UMSEL=0, chế độ không đồng bộ được chọn, ngược
lại nếu UMSEL=1, chế độ đồng bộ được kích hoạt.
* Hai bit UPM1 và UPM0( Parity Mode) được dùng để quy định kiểm tra pariry.
Nếu UPM1:0=00, parity không được sử dụng (mode này khá thông dụng),
UPM1:0=01 không được sử dụng, UPM1:0=10 thì parity chẵn được dùng,
UPM1:0=11 parity lẻ được sử dụng (xem thêm bảng 1).
Bảng 1: chọn kiểm tra parity.
49
* USBS (Stop bit Select), bit Stop trong khung truyền bằng AVR USART có thể
là 1 hoặc 2 bit, nếu USBS=0 thì Stop bit chỉ là 1 bit trong khi USBS=1 sẽ có 2
Stop bit được dùng.
* Hai bit UCSZ1 và UCSZ2 (Character Size) kết hợp với bit UCSZ2 trong thanh
ghi UCSRB tạo thành 3 bit quy định độ dài dữ liệu truyền. Bảng 2 tóm tắt các giá
trị có thể có của tổ hợp 3 bit này và độ dài dữ liệu truyền tương ứng.
Bảng 2: độ dài dữ liệu truyền.
* UCPOL (Clock Pority) là bit chỉ cực của xung kích trong chế độ truyền thông
đồng bộ. nếu UCPOL=0, dữ liệu sẽ thay đổi thay đổi ở cạnh lên của xung nhịp,
nếu UCPOL=1, dữ liệu thay đổi ở cạnh xuống xung nhịp. Nếu bạn sử dụng chế độ
truyền thông không đồng bộ, hãy set bit này bằng 0..
17. Thanh ghi UBRR:
• UBRRL và UBRRH (USART Baud Rate Register): 2 thanh ghi thấp và cao
quy định tốc độ baud.
50
Nhắc lại là thanh ghi UBRRH dùng chung địa chỉ thanh ghi UCSRC, bạn phải
set bit này bằng 0 nếu muốn sử dụng thanh ghi UBRRH. Như bạn quan sát trong
hình trên, chỉ có 4 bit thấp của UBRRH được dùng, 4 bit này kết hợp với 8 bit
trong thanh ghi UBRRL tạo thành thanh ghi 12 bit quy định tốc độ baud. Chú ý là
nếu bạn viết giá trị vào thanh ghi UBRRL, tốc độ baud sẽ tức thì được cập nhật, vì
thế bạn phải viết giá trị vào thanh ghi UBRRH trước khi viết vào thanh ghi
UBRRL.
Giá trị gán cho thanh ghi UBRR không phải là tốc độ baud, nó chỉ được
USART dùng để tính tốc độ baud. Bảng 3 hướng dẫn cách tính tốc độ baud dựa
vào giá trị của thanh ghi UBRR và ngược lại, cách tính giá trị cần thiết gán cho
thanh ghi UBRR khi đã biết tốc độ baud.
Bảng 3: tính tốc độ baud.
Trong các công thức trong bảng 3, fOSC là tốc tần số xung nhịp của hệ thống
(thạch anh hay nguồn xung nội…). Để tiện cho bạn theo dõi, tôi đính kèm bảng ví
51
dụ cách đặt giá trị cho UBRR theo tốc độ baud mẫu.
Bảng 4: một số tốc độ baud mẫu.
52
53
54
18. Thanh ghi ADMUX:
ADMUX (ADC Multiplexer Selection Register): là 1 thanh ghi 8 bit điều khiển
việc chọn điện áp tham chiếu, kênh và chế độ hoạt động của ADC. Chức năng của
từng bit trên thanh ghi này sẽ được trình bày cụ thể như sau:
55
• Bit 7:6- REFS1:0 (Reference Selection Bits): là các bit chọn điện áp tham
chiếu cho ADC, 1 trong 3 nguồn điện áp tham chiếu có thể được chọn là: điện áp
ngoài từ chân VREF, điện áp tham chiếu nội 2.56V hoặc điện áp AVCC. Bảng 2
tóm tắt giá trị các bit và điện áp tham chiếu tương ứng.
• Bit 5-ADLAR (ADC Left Adjust Result): là bit cho phép hiệu chỉnh trái kết
quả chuyển đổi. Sở dĩ có bit này là vì ADC trên AVR có độ phân giải 10 bit, nghĩa
là kết quả thu được sau chuyển đổi là 1 số có độ dài 10 bit (tối đa 1023), AVR bố
trí 2 thanh ghi data 8 bit để chứa giá trị sau chuyển đổi. Như thế giá trị chuyển đổi
sẽ không lắp đầy 2 thanh ghi data, trong một số trường hợp người dùng muốn 10
bit kết quả nằm lệch về phía trái trong khi cũng có trường hợp người dùng muốn
kết quả nằm về phía phải. Bit ADLAR sẽ quyết định vị trí của 10 bit kết quả trong
16 bit của 2 thanh ghi data. Nếu ADLAR=0 kết quả sẽ được hiệu chỉnh về phía
phải (thanh ghi ADCL chứa trọn 8 bit thấp và thanh ghi ADCH chứa 2 bit cao
trong 10 bit kết quả), và nếu ADLAR=1 thì kết quả được hiệu chỉnh trái (thanh ghi
ADCH chứa trọn 8 bit cao nhất, các bit từ 9 đến 2, và thanh ADCL chứa 2 bit thấp
nhất trong 10 bit kết quả (bạn xem hình cách bố trí 2 thanh ghi ADCL và ADCH
bên dưới để hiểu rõ hơn).
• Bits 4:0-MUX4:0 (Analog Channel and Gain Selection Bits): là 5 bit cho phép
chọn kênh, chế độ và cả hệ số khuyếch đại cho ADC. Do bộ ADC trên AVR có
56
nhiều kênh và cho phép thực hiện chuyển đổi ADC kiểu so sánh (so sánh điện áp
giữa 2 chân analog) nên trước khi thực hiện chuyển đổi, chúng ta cần set các bit
MUX để chọn kênh và chế độ cần sử dụng. Bảng 3 tóm tắt các chế độ hoạt động
của ADC thông qua các giá trị của các bit MUX. Trong bảng này, ứng với các giá
trị từ 00000 đến 00111 (nhị phân), các kênh ADC được chọn ở chế độ đơn kênh
(tín hiệu input lấy trực tiếp từ các chân analog và so sánh với 0V), giá trị từ 01000
đến 11101 tương ứng với chế độ chuyển đổi so sánh.
57
19. Thanh ghi ADCSRA:
ADCSRA (ADC Control and Status RegisterA): là thanh ghi chính điều khiển
hoạt động và chứa trạng thái của module ADC.
Từng bit của thanh ghi ADCSRA được mô tả như bên dưới:
• Bit 7 - ADEN(ADC Enable): viết giá trị 1 vào bit này tức bạn đã cho phép
module ADC được sử dụng. Tuy nhiên khi ADEN=1 không có nghĩa là ADC đã
hoạt động ngay, bạn cần set một bit khác lên 1 để bắt đầu quá trình chuyển đổi, đó
là bit ADSC.
• Bit 6 - ADSC(ADC Start Conversion): set bit này lên 1 là bắt đầu khởi động
quá trình chuyển đổi. Trong suốt quá trình chuyển đổi, bit ADSC sẽ được giữ
nguyên giá trị 1, khi quá trình chuyển đổi kết thúc (tự động), bit này sẽ được trả về
0. Vì vậy bạn không cần và cũng không nên viết giá trị 0 vào bit này ở bất kỳ tình
huống nào. Để thực hiện một chuyển đổi, thông thường chúng ta sẽ set bit
ADEN=1 trước và sau đó set ADSC=1.
58
• Bit 4 – ADIF(ADC Interrupt Flag): cờ báo ngắt. Khi một chuyển đổi kết thúc,
bit này tự động được set lên 1, vì thế người dùng cần kiểm tra giá trị bit này trước
khi thực hiện đọc giá trị chuyển đổi để đảm bảo quá trình chuyển đổi đã thực sự
hoàn tất.
• Bit 3 – ADIE(ADC Interrupt Enable): bit cho phép ngắt, nếu bit này được set
bằng 1 và bit cho phép ngắt toàn cục (bit I trong thanh ghi trạng thái của chip)
được set, một ngắt sẽ xảy ra khi một quá trình chuyển đổi ADC kết thúc và các giá
trị chuyển đổi đã được cập nhật (các giá trị chuyển đổi chứa trong 2 thanh ghi
ADCL và ADCH).
• Bit 2:0 – ADPS2:0(ADC Prescaler Select Bits): các bit chọn hệ số chia xung
nhịp cho ADC. ADC, cũng như tất cả các module khác trên AVR, cần được giữ
nhịp bằng một nguồn xung clock. Xung nhịp này được lấy từ nguồn xung chính
của chip thông qua một hệ số chia. Các bit ADPS cho phép người dùng chọn hệ số
chia từ nguồn clock chính đến ADC. Tham khảo bảng 4 để biết cách chọn hệ số
chia.
20. Thanh ghi ADC:
ADCL và ADCH (ADC Data Register): 2 thanh ghi chứa giá trị của quá trình
59
chuyển đổi. Do module ADC trên AVR có độ phân giải tối đa 10 bits nên cần 2
thanh ghi để chứa giá trị chuyển đổi. Tuy nhiên tổng số bít của 2 thanh ghi 8 bit là
16, con số này nhiều hơn 10 bit của kết quả chuyển đổi, vì thế chúng ta được phép
chọn cách ghi 10 bit kết quả vào 2 thanh ghi này. Bit ADLAR trong thanh ghi
ADMUX quy định cách mà kết quả được ghi vào.
Thông thường, 2 thanh ghi data được sắp xếp theo định dạng ADLAR=0,
ADCL chứa 8 bit thấp và 2 bit thấp của ADCH chứa 2 bit cao nhất của giá trị thu
được. Chú ý thứ tự đọc giá trị từ 2 thanh ghi này, để tránh đọc sai kết quả, bạn cần
đọc thanh ghi ADCL trước và ADCH sau, vì sau khi ADCH được đọc, các thanh
ghi data có thể được cập nhật giá trị tiếp theo.
21. Thanh ghi SFIOR:
SFIOR(Special FunctionIO Register C): thanh ghi chức năng đặc biệt, 3 bit cao
trong thanh ghi này quy định nguồn kích ADC nếu chế độ Auto Trigger được sử
dụng. Đó là các bit ADTS2:0 (Auto Trigger Source 2:0). Các loại nguồn kích
được trình báy trong bảng 5.
60
22. Thanh ghi SPCR:
• SPCR (SPI Control Register): là 1 thanh ghi 8 bit điều khiển tất cả hoạt động
của SPI.
* Bit 7- SPIE (SPI Interrupt Enable) bit cho phép ngắt SPI. Nếu bit này được set
bằng 1 và bit I trong thanh ghi trạng thái được set bằng 1 (sei), 1 ngắt sẽ xảy ra sau
61
khi một gói dữ liệu được truyền hoặc nhận. Chúng ta nên dùng ngắt (nhất là đối
với chip Slave) khi truyền nhận dữ liệu với SPI.
* Bit 6 – SPE (SPI Enable). set bit này lên 1 để cho phép bộ SPI hoạt động. Nếu
SPIE=0 thì module SPI dừng hoạt động.
* Bit 5 – DORD (Data Order) bit này chỉ định thứ tự dữ liệu các bit được truyền
và nhận trên các đường MISO và MOSI, khi DORD=0 bit có trọng số lớn nhất của
dữ liệu được truyền trước (MSB) ngược lại khi DORD=1, bit LSB được truyền
trước. Thật ra khi giao tiếp giữa 2 AVR với nhau, thứ tự này không quan trọng
nhưng phải đảm bảo các bit DORD giống nhau trên cả Master và Slaves.
* Bit 4 – MSTR (Master/Slave Select) nếu MSTR =1 thì chip được nhận diện là
Master, ngược lại MSTR=0 thì chip là Slave..
* Bit 3 và 2 – CPOL và CPHA đây chính là 2 bit xác lập cực của xung giữ nhịp và
cạnh sample dữ liệu mà chúng ta đã khảo sát trong phần đầu. Sự kết hợp 2 bit này
tạo thành 4 chế độ hoạt động của SPI. Một lần nữa, chọn chế độ nào không quan
trọng nhưng phải đảm bảo Master và Slave cùng chế độ hoạt động. Vì thế có thể
để 2 bit này bằng 0 trong tất cả các chip. Hình 3 trình bày cách sample dữ liệu
trong 4 chế độ của SPI trên AVR.
* Bit 1:0 – CPR1:0 hai bit này kết hợp với bit SPI2X trong thanh ghi SPSR cho
phép chọn tốc độ giao tiếp SPI, tốc độ này được xác lập dựa trên tốc độ nguồn
xung clock chia cho một hệ số chia. Bảng 1 tóm tắt các tốc độ mà SPI trong AVR
có thể đạt. Thông thường, tốc bộ này không được lớn hơn 1/4 tốc độ xung nhịp
cho chip.
62
23. Thanh ghi SPSR:
• SPSR (SPI Status Register): là 1 thanh ghi trạng thái của module SPI. Trong
thanh ghi này chỉ có 3 bit được sử dụng. Bit 7 – SPIF là cờ báo SPI, khi một gói
dữ liệu đã được truyền hoặc nhận từ SPI, bit SPIF sẽ tự động được set len 1. Bit 6
– WCOL là bít báo va chạm dữ liệu (Write Colision), bit này được AVR set lên 1
nếu chúng ta cố tình viết 1 gói dữ liệu mới vào thanh ghi dữ liệu SPDR trong khi
quá trình truyền nhận trước chưa kết thúc. Bit 0 – SPI2X gọi là bit nhân đôi tốc độ
truyền, bit này kết hợp với 2 bit SPR1:0 trong thanh ghi điều khiển SPCR xác lập
tốc độ cho SPI.
24. Thanh ghi SPDR:
• SPDR (SPI Data Register): là thanh ghi dữ liệu của SPI. Trên chip Master,
ghi giá trị vào thanh ghi SPDR sẽ kích quá trình tuyền thông SPI. Trên chip Slave,
63
dữ liệu nhận được từ Master sẽ lưu trong thanh ghi SPDR, dữ liệu được lưu sẵn
trong SPDR sẽ được truyền cho Master.
25. Thanh ghi EEAR:
Địa chỉ thanh ghi EEPROM sẽ truy xuất.
26. Thanh ghi EEDR:
Chứa giá trị sẽ ghi hoặc đọc từ EEPROM.
27. Thanh ghi EECR:
Bit 3 - EERIE - EEPROM Ready Interrupt Enable: cho phép ngắt khi
EEPROM sẵn sang nhận them dữ liệu. Ngắt này được sinh ra sau khi EEWE bị
xóa.
Bit 2 - EEMWE - EEPROM Master Write Enable: quyết định có cho phép
viec ghi 1 vào EEWE sẽ thực hiện việc ghi EEPROM hay không. Giá trị
EEMWE là 1(0) tương ứng với (không) cho phép. Sau khi ghi 1 vào EEMWE, nó
sẽ bị xóa bằng phần cứng sau 4 xung clock.
Bit 1 - EEWE - EEPROM Write Enable: set lên 1 sẽ bắt đầu việc ghi vào
EEPROM (xem thêm EEMWE).
64
Bit 0 - EERE - EEPROM Read Enable: set lên 1 sẽ bắt đầu việc đọc từ
EEPROM.
28. Thanh ghi port xuất nhập:
• Thanh ghi DDRx (x tên port B,C,D):
Thanh ghi điều khiển việc đọc hoặc xuất ra port, DDRx=0 cấu hình là
port đọc dữ liệu, ngược lại DDRx=255 cấu hình là port xuất dữ liệu.
• Thanh ghi PORTx (x tên port B,C,D):
Thanh ghi chứa giá trị sẽ xuất ra port.
• Thanh ghi PINx (x tên port B,C,D):
Thanh ghi chứa giá trị đọc vào từ port.
2.2 KHẢO SÁT IC THU PHÁT TONE MT8888:
MT8888 là một IC thu phát DTMF trọn bộ kèm theo một bộ lọc thoại (Call
Progress Filter). MT8888 là IC CMOS tiêu thụ nguồn thấp. Bộ thu DTMF dựa
trên kỹ thuật chuẩn của IC MT8870, còn gọi là bộ phát DTMF sử dụng phương
pháp biến đổi D/A biến dung (Switched Capacitor) cho ra tín hệu DTMF chính
xác, ít nhiễu. Các bộ đếm bên trong giúp hình thành chế độ Burst Mode nhờ vậy
các cặp tone xuất ra với thời hằng chính xác. Bộ lọc Call Progress cho phép bộ vi
xử lý phân tích các tone trạng thái đường dây. Bus chuẩn của nó kết hợp MPU và
đặc biệt thích hợp họ 6800 của Motorola. MT8888 có 5 thanh ghi bên trong để
giao tiếp với vi xử lý, có thể chia làm 3 loại:
Nhận phát dữ liệu: 2 thanh ghi.
Thanh ghi trạng thái.
Nhận từ điều khiển: 2 thanh ghi.
Sơ đồ khối bên trong IC MT8888
65
Hình 2 – 1: Sơ đồ khối bên trong IC MT8888
2.2.1 Sơ đồ chân:
66
Hình 2 – 2: Sơ đồ các chân của IC MT8888
Bảng chức năng các chân của IC MT8888
PIN TÊN MÔ TẢ
1 IN+ Chân vào không đảo của OP-AMP
2 IN- Chân vào đảo của OP – AMP
3 GS Chọn độ lợi cho bộ khuếch đại OP – AMP
4 VREF
Đầu ra điện áp tĩnh VDD/2 được dùng để cân bằng tĩnh ở
đầu vào.
5 VSS Ground (0V)
6 OSC1 Đầu vào bộ dao động thạch anh.
7 OSC2
Đầu ra của bộ dao động, dao động thạch anh 3.579545
MHz được nối giữa OSC1 và OSC2 tạo thành dao động
dòng điện ở bên trong vi mạch.
8 TONE Ngõ ra tone DTMF.
9 WR\ Chân ra để CPU điều khiển trực tiếp viết dữ liệu.
10 CS\ Ngõ vào chip Select, tác động mức thấp
11 RSO Chân chọn Register.
67
12 RD\ Chân để CPU điều khiển trực tiếp đọc dữ liệu
13 IRQ/CP
Yêu cầu ngắt gởi tới MPU (Chân cực máng hở). Khi Mode
Call Progress (CP)và Mode Interrupt cùng được chọn,
chân IRQ/CP sẽ đưa ra dạng sóng hình chữ nhật đặc trưng
cho tín hiệu đầu vào OP.AMP với điều kiện tín hiệu đầu
vào này phải nằm trong dải thông của bộ lọc thông dải.
14÷17 D0-D3 Data Bus
18 Est
(Early Steering Output). Cho ra mức logic 1 khi phát hiện
được một cặp tone hợp lệ. Bất kì trạng thái nào không có
tín hiệu hợp lệ đều cho ra logic 0.
19 St/GT
(Steering Output/ Guard Time Output 2 chiều). Một cặp
điện áp lớn hơn VEST khi xuất hiện tại ST làm cho thiết bị
ghi nhận cặp tone và truy cập bộ chốt ngõ ra.Một điện áp
nhỏ hơn VEST giải phóng thiết bị để thu nhận cặp tone
mới. Ngõ ra GT làm nhiệm vụ reset mạch định thời bên
ngoài. Trạng thái của nó là một hàm của VEST theo điện
áp tại chân ST.
20 VDD Nguồn cung cấp dương (cỡ 5V)
2.2.2 Mô tả chức năng:
MT8888 bao gồm bộ thu DTMF chất lượng cao (kèm bộ khuếch đại)
và một bộ tạo DTMF sử dụng Burst Counter giúp cho việc tổng hợp đóng
ngắt Tone được chính xác. Ngoài ra ta có thể chọn chế độ Call Progress để
giúp phát hiện các tần số nằm trong giải thông thoại. Đó là các tín hiệu trạng
thái đường dây.
68
2.2.3 Cấu hình ngõ vào:
Thiết kế đầu vào của MT8888 cung cấp một bộ khuếch đại OPAMP
ngõ vào vi sai cũng như một ngõ vào VREF để điều chỉnh thiên áp cho đầu
vào tại VDD/2. Chân GS giúp nối ngõ ra bộ khuếch đại với ngõ vào qua một
điện trở ngoài để điều chỉnh độ lợi.
Hình 2 – 3: Cấu hình ngõ vào của MT8888
2.2.4 Bộ thu:
Hai bộ lọc băng thông bậc 6 giúp tách các tone trong các nhóm tone LOW
và HIGH. Đầu ra mỗi bộ lọc điện dung giúp nắn dạng tín hiệu trước khi qua bộ
hạn biên. Việc hạn biên được đảm nhiệm bởi bộ so sánh (Comparator) có kèm
theo bộ trễ để tránh chọn lầm tín hiệu mức thấp không mong muốn. Đầu ra của bộ
so sánh cho ta các dao động có mức logic tại tần số DTMF thu được.
Tiếp theo phần lọc là bộ giải mã sử dụng kỹ thuật đếm số để kiểm tra tần số
của các tone thu được và bảo đảm chúng tương ứng với các tần số DTMF chuẩn.
Một kỹ thuật lấy trung bình phức giúp loại trừ các tone giả tạo thành do tiếng nói
trong khi vẫn đảm bảo một khoảng biến động cho tone thu do bị lệch. Khi bộ kiểm
tra nhận dạng được hai tone đúng thì đầu ra “early steering” (EST) sẽ lên mức
69
kích hoạt( Active). Lúc không nhận được tín hiệu tone thì EST sẽ ở mức Inactive.
Bảng mã hóa các tín hiệu quay số DTMF
FLOW FHIGH DIGIT D3 D2 D1 D0
697 1209 1 0 0 0 1
697 1336 2 0 0 1 0
697 1477 3 0 0 1 1
770 1209 4 0 1 0 0
770 1336 5 0 1 0 1
770 1477 6 0 1 1 0
852 1209 7 0 1 1 1
852 1336 8 1 0 0 0
852 1477 9 1 0 0 1
941 1336 0 1 0 1 0
941 1209 * 1 0 1 1
941 1477 # 1 1 0 0
697 1633 A 1 1 0 1
770 1633 B 1 1 1 0
852 1633 C 1 1 1 1
941 1633 D 0 0 0 0
2.2.5 Mạch STEERING:
Trước khi thu nhận một cặp tone đã giải mã, bộ thu phải kiểm tra xem thời
hằng của tín hiệu có đúng không. Việc kiểm tra này được thực hiện bởi một bộ RC
mắc ngoài. Khi Est lên HIGH làm cho Vc tăng lên khi tụ xả. Khi mà Est vẫn còn
HIGH trong một thời đoạn hợp lệ( tone) thì Vc tiến tới mức ngưỡng VSTt của
logic Steering để nhận một cặp tone và chốt 4 bit mã tương ứng với nó vào thanh
70
ghi Receive Data Register. Lúc này, đầu ra GT được kích hoạt và đẩy Vc lên tới
VDD. Cuối cùng sau một thời gian delay ngắn cho phép việc chốt Data thực hiện
xong thì cờ của mạch Steering lên HIGH báo hiệu rằng cặp tone thu được đã được
lưu vào thanh ghi. Ta có thể kiểm tra bit tương ứng trong thanh ghi trạng thái. Nếu
ta cho Mode Interrupt thì chân IRQ/CP sẽ xuống LOW khi cờ này được kích hoạt.
Dữ liệu thu được sẽ đi ra Databus (2 chiều) khi thanh ghi Receive Data được đọc.
Mạch steering lại hoạt động nhưng theo chiều ngược lại để kiểm tra khoảng dừng
giữa hai số được quay. Vì vậy bộ thu vừa bỏ qua tín hiệu quá ngắn không hợp lệ
vừa không chấp nhận các khoảng ngắt quá nhỏ không thể coi là khoảng dừng giữa
các số. Chức năng này cũng như khả năng chọn thời hằng Steering bằng mạch
ngoài cho phép người thiết kế điều chỉnh hoạt động cho phù hợp với các đòi hỏi
khác nhau của từng ứng dụng.
Hình 2 – 4: Mạch Steering
2.2.6 Bộ lọc thoại:
Mode Call Progress khi được chọn thì cho phép kiểm tra các tone khác
nhau thể hiện trạng thái đường dây. Đầu vào của Call Progress và mode tone
DTMF là chung nhưng tone Call Progress chỉ có thể kiểm tra nếu ta chọn mode
CP. DTMF tone lại không thể nhận dạng được nếu ta chọn mode CP.
71
Các tần số đưa đến đầu vào +IN và –IN nằm trong giới hạn băng thông
chấp nhận của bộ lọc (280-550 Hz) sẽ đưa qua bộ so sánh có độ lợi cao và đến
chân IRQ/CP. Dạng sóng ở đầu ra tạo bởi mạch trigger có thể phân tích bởi vi xử
lý để xác định tính chất của các tone trạng thái đường dây. Các tần số trong vùng
loại bỏ sẽ không được kiểm tra và như vậy sẽ không có tín hiệu nào ở chân
IRQ/CP khi gặp các tần số này.
2.2.7 Bộ phát DTMF:
Bộ phát DTMF trong MT8888 có khả năng tạo tất cả 16 cặp tone DTMF
chuẩn với nhiễu tối thiểu và độ chính xác cao. Tất cả tần số này đều lấy từ dao
động thạch anh 3.579545 MHz mắc ngoài. Dạng sóng sin của từng tone được tổng
hợp số bằng cách sử dụng bộ phận chia hàng và cột tổng hợp được, và bộ biến đổi
D/A biến dung. Các tone hàng và cột được trộn lại và lọc để cho ra tín hiệu DTMF
với ít hài và độ chính xác cao. Để phát một tín hiệu DTMF thì dữ liệu tương ứng
với dạng mã ở bảng 1 sẽ phải được viết vào thanh ghi Transmit Data. Chú ý rằng
mã phát này phải tương ứng với mã nhận. Các tone riêng lẻ được phân thành hai
nhóm là: nhóm thấp và nhóm cao (low và high).
Các số trong nhóm tone thấp là 697, 770, 852 và 941 (Hz).
Các số trong nhóm tone cao là: 1209, 1306, 1447 và 1663 (Hz).
2.2.8 Mạch kích DTMF
Mạch Clock tần số có tần số cộng hưởng là 3.579545 MHz. Một
nhóm IC MT8888 có thể nối chung lại với nhau dùng chung một dao động
thạch anh.
72
Hình 2 – 5: Mạch Clock DTMF
2.2.9 Bộ giao tiếp với vi xử lý:
MT8888 sử dụng một bộ giao tiếp vi xử lý cho phép điều khiển một cách
chính xác với chức năng thu và phát. Có tổng cộng 5 thanh ghi chia làm ba loại:
Thanh ghi dữ liệu thu /phát, thanh ghi điều khiển thu /phát và thanh ghi trạng thái.
Có hai thanh ghi dữ liệu: thanh ghi Receive data chứa mã xuất ra của cặp tone
DTMF hợp lệ gần nhất và là thanh ghi chỉ đọc. Data đưa vào thanh ghi Transmit
Data sẽ qui định cặp tone nào được phát đi, Data chỉ có thể được vào thanh ghi
này.
Điều khiển thu phát tone được đảm nhận bởi 2 thanh ghi Control Register
A và Control Register B( RA và CRB) có cùng một địa chỉ. Muốn ghi vào thanh
ghi CRB thì trước đó phải có set một bit tương ứng ở CRA. Chu kỳ ghi kế tiếp vào
cùng địa chỉ với CRA sẽ cho phép truy cập tới CRB. Và chu kỳ ghi kế tiếp nữa sẽ
trở lại CRA. Khi cấp điện, mạch điện reset nội sẽ xóa các thanh ghi điều khiển.
Tuy vậy, để ngăn ngừa thì chương trình phần mềm nên có một dòng lệnh để kích
khởi các thanh ghi này. Giả sử rằng thanh ghi phát rỗng sau khi reset, ta xem qua
các bảng bên dưới để thấy rõ chi tiết về các thanh ghi điều khiển. Chân IRQ/CP có
thể được lập trình sao cho nó có thể cung cấp tín hiệu yêu cầu ngắt sau khi nhận
xung DTMF hợp lệ hay khi bộ phát đã sẵn sàng cho data kế tiếp (chỉ trong Burst
mode). Chân IRQ/CP là ngõ ra cực máng hở và vì thế cần có một điện trở kéo lên.
Thanh ghi nhận data chứa mã lệnh xuất của giá trị cuối cùng cặp tone
73
DTMF được giải mã và chỉ là thanh ghi đọc data vào. Tín hiệu data vào trong
thanh ghi phát sẽ được định rõ với cặp tone nào mà được phát sinh ra. Data chỉ có
thể được viết với thanh ghi phát.
Hai thanh ghi điều khiển CRA và CRB chỉ chiếm chỗ trong một khoảng địa
chỉ tương ứng ghép ghi với CRB có thể được thực hiện bằng cách đặt dành riêng
bit trong CRA phép ghi tiếp theo tới địa chỉ tương tự sẽ được trực tiếp đưa tới
CRB và tiếp theo sau cho chu kỳ ghi sẽ được trực tiếp trở lại CRA.
Cách truy cập thanh ghi
RS0 WR\ RD\ CHỨC NĂNG
0 0 1 Ghi vào thanh ghi dữ liệu phát
0 1 0 Đọc từ thanh ghi dữ liệu thu
1 0 1 Ghi vào thanh ghi điều khiển
1 1 0 Đọc từ thanh ghi trạng thái
Trạng thái thanh ghi CRA
B3 B2 B1 B0
REGISTER
SELECT
INTERRUPT
ENABLE
CP/DTMF MODE
\
TONE OUT
Chức năng CRA (Control Register A)
BIT TÊN CÁCH SỬ DỤNG
B0 TONE OUTPUT
Mức logic 1 cho phép tone được phát ra. Chức
năng này có thể được thực hiện trong Busrt
mode hoặc None – Busrt mode.
74
B1
CP/DTMF MODE
\
Chọn mode DTMF (mức 0) cho phép thu và
phát tone đồng thời. Khi chọn mode CP
(mức1 bộ lọc dãi bậc 6) được kích hoạt cho
phép kiểm tra các tone trạng thái đường dây(
call progress tone). Các tone này nếu nằm trong
dãi thông qui định thì được thể hiện ở chân
IRQ/CP ở dạng sóng hình chữ nhật nếu bit
IRQ được chọn (CRA, B2=1).
B2
INTERRUPT
ENABLE
Logic 1 cho phép mode Interrup. Khi mode này
mức tích cực và mode DTMF được chọn (CRA,
1=0), ngõ ra IRQ/CP sẽ bị kéo xuống mức 0 khi:
+ Một tín hiệu DTMF hợp lệ được nhận và đã
hiện hữu được trong khoảng thời gian an toàn.
+ Bộ phát sẵn sàng cho data kế tiếp( chỉ trong
Busrt mode).
B3
REGISTER
SELECT
Logic 1 cho phép CRB trong chu kỳ ghi kế tiếp
trên cùng địa chỉ này. Chu kỳ ghi kế sau nữa sẽ
trở lại ghi vào CRA.
Trạng thái thanh ghi CRB
B3 B2 B2 B0
COLUMN/ROW
TONE\
SINGLE/DUAL
TONE
TEST MODE BURST MODE\
Chức năng CRB (Control Register B)
BIT TÊN CÁCH SỬ DỤNG
75
B0 BURST\
Mức 0 cho phép chọn Busrt mode khi mode này được
chọn, dữ liệu tương ứng với cặp tone DTMF có thể được
viết vào thanh ghi phát để tạo ra khoảng mở tone với thời
hằng chuẩn (51ms). Kế tiếp sau là khoảng ngắt tone với
thời hằng tương tự. Ngay sau khoảng ngắt tone thì thanh
ghi trạng thái sẽ được truy cập để cho biết rằng thanh ghi
phát đã sẵn sàng cho các lệnh mới và một ngắt được tạo
ra nếu mode Interrupt đã được chọn trước đó. Khi CP
mode (CRA, B1) được chọn thì khoảng tone tắt mở từ
51ms đến 102 ms.
B1 TEST
Cho phép chọn Test Mode (logic 1). Khi đó chân IRQ/CP
sẽ xuất hiện tín hiệu Steering được làm trễ từ bộ thu
DTMF. DTMF Mode phải được chọn (CRA, B1=0) trước
khi Test Mode được kích hoạt.
B2 S/D\
Mức logic 0 cho phép tín hiệu Dual Tone Multi
Frequency. Logic 1 chọn chế độ tone đơn (single tone)
cho phép tạo ra một tone nhóm thấp hoăc nhóm cao dựa
vào trạng thái của bit B3 trong thanh ghi CRB.
B3 C/R\
Sử dụng với bit B2 ở trên. Bộ phát có thể được chọn để
phát tần số nằm trên hàng hay cột và mức logic 1 sẽ chọn
tần số cột, mức logic thấp cho phép chọn hàng.
Thanh ghi trạng thái
BIT TÊN
CỜ TRẠNG THÁI
LẬP
CỜ TRẠNG THÁI
XÓA
76
B0 IRQ
Ngắt xuất hiện. B1 hoặc
B2 đã được lập.
Ngắt chưa kích hoạt. Bị
xóa sau khi thanh ghi
trạng thái đã được đọc.
B1
Thanh ghi dữ
liệu phát
rỗng (chỉ
trong burst
mode)
Thời hằng ngắt tone đã
kết thúc và bộ phát đang
chờ dữ liệu kế tiếp.
Bị xóa sau khi thanh ghi
trạng thái được đọc hay
khi chọn None_Burst
Mode.
B2
Thanh ghi dữ
liệu thu đầy
Dữ liệu hợp lệ đang nằm
trong thanh ghi dữ liệu
thu.
Bị xóa sau khi thanh trạng
thái được đọc.
B3
Delay
Steering
Được lập khi phát hiện
thấy sự không xuất hiện
không hợp lệ của tín hiệu
DTMF
Bị xóa sau khi phát hiện
tín hiệu DTMF hợp lệ.
2.3 IC LM358:
* LM358 là một IC gồm hai vi mạch thuật toán nằm trong cùng một
vỏ. Vi mạch thuật toán tiêu chuẩn là loại vi mạch đơn khối tích hợp lớn
được chế tạo theo công nghệ màng mỏng. Nhờ khả năng tích hợp lớn nên
vi mạch loại này được ứng dụng rộng rãi trong thực tế.
* Ưu điểm nổi bật của vi mạch là làm việc tốt ở mức điện áp thấp đến
5VDC. Vi mạch thuật toán có các đặc tính chung như sau:
Có độ lệch điểm trôi về zero quá nhỏ.
Không cần bù tần số, tăng độ ổn định ở chế độ làm việc tuyến tính.
Có bảo vệ ngắn mạch và bảo vệ quá tải.
77
Không bị khoá nếu tín hiệu đưa vào không thích hợp.
Hệ số nén dòng pha lớn.
Tiêu hao công suất nhỏ.
78
2.3.1 Sơ đồ chân:
Hình 2 – 7: Sơ đồ chân IC LM358
2.3.2 Chức năng các chân:
Chức năng các chân của IC TL082
Chân Chức năng
1 Ngõ ra 1
2 Ngõ vào đảo 1
3 Ngõ vào không đảo 1
4 -Vcc
79
5 Ngõ vào không đảo 2
6 Ngõ vào đảo 2
7 Ngõ ra 2
8 +Vcc
2.3.3 Thông số:
Nguồn cung cấp: VCC = ± 16V.
Điện áp ngõ vào: Vi = -0.3->32V.
Điện áp ngõ vào sai biệt: Vid = 32V.
Đô lợi AV = 100 dB.
Về mặt nguyên lý, vi mạch lý tưởng sẽ có tổng trở vào vô cùng lớn, tổng
trở ra vô cùng nhỏ, tốc dộ bám giữ tín hiệu ra với tín hiệu vào không bị giới hạn
và có băng thông rất rộng. Tuy nhiên trên thực tế không thể nào có một OPAMP
lý tưởng như vậy.
Về độ khuếch đại điện áp hay độ lợi:
Vi mạch dùng vòng hồi tiếp là một vòng hở có độ lợi khoảng 100dB
Tổng trở vào khoảng vài chục MΩ
Tổng trở ngõ ra khoảng đến 100Ω
Dòng phân cực ngõ vào:khi dùng transistor lưỡng cực ở tần đầu vào, giá trị
IB cỡ từ 0,1µA đến 0,8µA
Nguồn cung cấp:
Thông thường dùng nguồn lưỡng cực để khai thác hết hiệu suất của vi
mạch.
Tín hiệu vào không vượt quá VCC. Giá trị cực đại cho phép thường nhỏ
hơn VCC từ 1 đến 3V.
2.4 IC MAX232.
Max-232 là IC thường được dùng trong lĩnh vực giao tiếp với máy tính, theo
chuẩn RS-232, MAX-232 có nhiều loại, ở đây chỉ đề cập đến loại MAX-232E có
80
16 chân.
Với điện áp là 5V thì điện ra của ngõ xuất sẽ dao động trong khoảng 8V khi
tải ở ngõ nhận có giá trị là 5k, trong điều kiện tồi tệ nhất mức điện áp tối thiểu ở
ngõ ra cũng phải dao động trong khoảng 5V.Gồm có một tải 3k, điện áp tối thiểu,
và một nhiệt độ hoạt động tối đa. Trong một mạch điện mở rộng thì điện áp ngõ ra
dao động trong khoảng từ (V+ - 0,6V) đến V- . Ngưỡng ngõ vào của hai họ
CMOS/TTL phải tương thích với nhau. Max 232 không có điện trở kéo lên ở ngõ
vào chân phát.
Hình 2.4: Hình dạng và cấu tạo của max232
Ngõ nhận của RS-232 sẽ chuyển đổi tín hiệu đến ngõ ra của con CMOS-
logic. để đảm bảo ngưỡng vào của ngõ nhận đạt được 0.8V và 2.4V thì điều có
nghĩa là phải nhỏ hơn ngưỡng 3V (theo bắt buộc về đặc điểm kỹ thuật của
EIA/TIA-232E). điều này cho phép ngõ vào nhận (receiver) phản ứng lại mức độ
hợp lý của TTL/CMOS cũng giống như của RS-232.
Việc bảo đảm ngưỡng vào ở mức thấp 0.8V là sự đảm bảo được rằng ngõ
nhận không thể tồn tại lâu trạng thái ngõ ra ở mức 1. Điện trở 5k ở ngõ vào hoàn
81
toàn đảm bảo được rằng ngõ nhận với ngõ vào tương ứng sẽ chỉ có duy nhất một
ngõ ra ở mức 1.
Ngõ vào nhận chỉ sai lệch xấp xỉ 0.5V. Điều này đã làm cho ngõ ra được
chuyển trạng thái nhanh gọn hơn, thậm chí với tín hiệu tăng chậm hoặc giảm theo
thời gian thì lượng tín hiệu nhiễu cũng vừa phải hơn.
CHƯƠNG 3: SƠ ĐỒ THIẾT KẾ VÀ LƯU
ĐỒ GIẢI THUẬT
3.1 SƠ ĐỒ THIẾT KẾ.
3.1.1 Sơ đồ khối.
a. MODULE PSTN-RS232:
b. MODULE TRẠM:
82
3.1.2 Sơ đồ nguyên lý.
a. Khối nguồn.
83
Dùng IC ổn áp 7805 và 7812, có nhiệm vụ cung cấp điện áp ổn định cho
84
mạch. Ngoài ra mạch còn tạo điện áp -12V nhờ vào IC555.
Tần số dao động của IC555 là: f=1/0.693*C28*(R23+R24).
Khi ngõ ra chân 3 IC ở mức cao thì tụ C26 sẽ được nạp thông qua D16, khi
ngõ ra chân 3 ở mức thấp thì tụ C26 sẽ xả qua D15 và nạp vào C27. Vậy
điện áp lấy ra giữa hai đầu tụ C27 sẽ là điện áp âm -12V.
b. Khối cảm biến chuông.
Nhiệm vụ của mạch là cảm biến khi có chuông gọi vào.
Bình thường thì tụ C3 sẽ ngăn áp DC không cho vào mạch, khi đó opto
P521 chưa dẫn nên chân ngõ ra RING sẽ ở mức cao.
Khi có chuông gọi vào thì tụ C3 sẽ cho điện áp đi qua, chỉnh lưu 1 chiều
nhờ cầu diode, khi đó P521 sẽ dẫn và ngõ ra RING sẽ ở mức thấp báo cho
VXL biết.
c. Khối chuyển mạch, tải giả.
85
Có nhiệm vụ kết nối line điện thoại với khối thu phát DTMF.
Mạch tạo tải giả nhằm tạo trở kháng giống như 1 thuê bao nhấc máy. Q2 có
nhiệm vụ thay thế một thuê bao trên lĩnh vực trở kháng. Điện trở DC của một
máy điện thoại là 300 , điện trở xoay chiều tại tần số f = 1 KHz là 700 30%.
Tổng trở vào của mạch này phải phù hợp các thông số trên, tụ C9 nhằm lọc
xoay chiều. Tín hiệu AC không ảnh hưởng đến trở kháng DC của mạch.
D10,D11,Q2,R6 tạo thành nguồn dòng ổn định I=0.6/22=27mA.
d. Khối thu, phát DTMF.
86
87
Tụ C10 ngăn DC chỉ cho tín hiệu âm tần đi qua, tín hiệu âm tần này được
tải qua biến áp suất âm. Hai diode D12,D13 chống quá áp.
Tín hiệu vào được khuếch đại qua U5A. Hệ số khuếch đại Av= -R4/R13= -
10.
Tín hiệu ra được khuếch đại qua U5B. Hệ số khuếch đại Av= -R11/R20= -
10.
Tụ C11,C12,C5 là các tụ liên lạc.
R14 chống điện áp sai biệt R14=R13//R4.
e. Khối xử lý trung tâm.
88
f. Khối giao tiếp RS232.
g. Khối đo nhiệt độ.
89
Đọc nhiệt độ nhờ IC LM35 ,ngõ ra IC LM35 thay đổi 10mV/oC. Điều
chỉnh giá trị nhiệt độ nhờ biến trở R39, sau đó đưa qua bộ khuếch đại với
hệ số khuếch đại là Av=1+R38/R37=11.
h. Khối cảm biến ngõ vào.
90
• Khối điều khiển.
91
92
3.2 Lưu đồ giải thuật.
3.2.1 Module PSTN-RS232.
93
94
95
96
3.2.2 Module trạm.
97
98
99
CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT
TRIỂN ĐỀ TÀI
4.1 KẾT LUẬN.
Sau thời gian nghiên cứu và tiến hành thi công đồ án đã được hoàn thành.
100
Trong quá trình thi công và thực hiện tôi đã gặp rất nhiều vấn đề phát sinh ngoài
mong đợi. Tuy đã cố gắng sửa chữa tuy nhiên vẫn còn một vài lỗi nhỏ.
4.2 HƯỚNG PHÁT TRIỂN ĐỀ TÀI.
Theo tôi thì đề tài này còn có thể phát triển để hoàn chỉnh hơn:
Mở rộng thêm các ngõ vào đọc trạng thái, nhiệt độ và các ngõ ra. Thêm
chức năng chọn lựa có thể điều khiển tự động tại chỗ hoặc điều khiển từ phần
mềm giám sát. Có thể set cấu hình như ngưỡng để gửi nhiệt độ cao, thấp.. .Phần
mềm giám sát có thể cùng lúc giám sát được nhiều module trạm hơn.
TÀI LIỆU THAM KHẢO
• Giáo trình Hệ Thống Viễn Thông- Bùi Thư Cao- Trường Đại Học
Công Nghiệp Thành Phố Hồ Chí Minh.
• Giáo trình Thiết Bị Đầu Cuối Viễn Thông- Trần Minh Hồng-
101
Trường Đại Học Công Nghiệp Thành Phố Hồ Chí Minh.
• Các Website : www.diendandientu.com
www.dientuvietnam.net
www.datasheetcatalog.com
102
Các file đính kèm theo tài liệu này:
- Giám sát và điều khiển thiết bị qua đường PSTN.pdf