Download miễn phí Giám sát và điều khiển thiết bị qua đường PSTN
M ỤC L ỤC
Lời nói đầu . 2
Lời Thank . 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 chức năng
và dịch vụ khác. Một trong những chức 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à tui 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 Thank !
2
LỜI CẢM ƠN
Trong thời gian hoàn thành xong đề tài, tui đã đượ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. tui xin chân
thành Thank đế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 để tui có thể hoàn thành đồ án này. Xin chân thành gửi
lời Thank đến quí thầy cô trong Khoa Điện Tử đã cung cấp cho tui những kiến
thức nền, chuyên môn làm cơ sở để tui có thể hoàn thành đồ án này. tui cũng xin
chân thành Thank đế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 ., để tui có thể hoàn thành đồ án đúng thời gian .
http://s1.luanvan.co/qYjQuXJz1boKCeiU9qAb3in9SJBEGxos/swf/2013/06/23/giam_sat_va_dieu_khien_thiet_bi_qua_duong_pstn.zrrsQx4c0T.swf luanvanco /luan-van/de-tai-ung-dung-tren-liketly-31476/
Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí
Tóm tắt nội dung tài liệu:
c hiện phép cộng 2 thanh ghi bằng instruction ADDnhư 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 LPhần mềm
(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 đó tui 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 hay 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à tui 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ố hay 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). tui 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...