Hệ thống báo động qua đường dây điện thoại
Trang 1Con xin tỏ lòng biết ơn đến thầy hướng dẫnTRẦN VĂN TRỌNG đã tận tình chỉ dạy, hướng dẫn,đóng góp nhiều ý kiến quý báu và tạo điều kiện cho emtrong thời gian qua.
Em xin cảm ơn quý thầy cô trong khoa Điện Điện tử trường Đại học Sư phạm Kỹ thuật đã hết lòngdạy dỗ em trong thời gian học ở trường
-Xin cảm ơn các bạn cùng khoá đã tận tình giúpđỡ để tôi hoàn thành tốt luận văn này
Sinh viên thực hiệnTrương Phước Toàn
W X
Em xin chân thành cảm ơn quý thầy cô trong khoa Điện – Điện tử trừơng Đại Học Bình Dương đã giúp đỡ
em hoàn thành tốt quyển đồ án này
Em xin tỏ lòng biết ơn đến thầy Nguyễn Minh Cảo đã tận tình hướng dẫn, chỉ dạy và đóng góp nhiều ý kiến quý báu cho em trong thời gian vừa qua
Xin chân thành cảm ơn các bạn cùng khóa đã giúp đỡ tôi trong thời gian vừa qua Sau hết xin chân thành cảm ơn những ngừơi thân, bạn bè đã giúp đỡ tôi về vật chất cũng như về tinh thần trong thời gian thực hiện quyển đồ án này
Xin thành thật cảm ơn!
Sinh viên thực hiện:
Phùng Khắc Hy
Trang 2NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Bình Dương, ngày tháng năm 2008
Giáo viên hướng dẫn
Trang 3Trang 3
MSSV: 06DT053
SVTH: Phùng Khắc Hy
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Bình Dương, ngày tháng năm 2008
Giáo viên phản biện
Trang 4MỤC LỤC
W X
PHẦN DẪN NHẬP 8
PHẦN MỘT: GIỚI THIỆU CHUNG 10
CHƯƠNG MỘT: GIỚI THIỆU TỔNG QUAN VỀ ĐƯỜNG DÂY ĐIỆN THOẠI 11
I Tổng quan về mạng điện thoại cố định: 11
II Đặc tính của điện thoại: 11
III Hệ thống âm hiệu giao tiếp giữa tổng đài và thuê bao: 12
IV Phương thức gửi số đến tổng đài: 14
V Phương thức làm việc giữa tổng đài và các thuê bao: 16
CHƯƠNG HAI:GIỚI THIỆU TỔNG QUÁT VỀ VI ĐIỀU KHIỂN 18
I Tóm tắt lịch sử phát triển của vi điều khiển 8051: 18
II Tóm tắt phần cứng: 18
III Cấu trúc của port xuất nhập: 22
IV Tổ chức bộ nhớ: 22
V Hoạt động của bộ định thời: 26
VI Hoạt động ngắt: 32
CHƯƠNG BA:GIỚI THIỆU KHÁI QUÁT VỀ IC THU PHÁT TONE DTMF 36
I Mô tả chức năng: 36
II Cấu hình ngõ vào: 38
III Cách kết nối MT8880: 43
IV Quá trình ghi và đọc các thanh ghi của MT 8880: 43
V Quá trình thu, phát DTMF: 44
CHƯƠNGBỐN:GIỚI THIỆU MỘT SỐ LINH KIỆN SỬ DỤNG TRONG MẠCH 45
I LCD (Liquid Crystal Display): 45
II Bộ nhớ SRam HM6264ALP: 47
III Vi mạch chốt địa chỉ 74HC573 48
IV Bàn phím: 49
V IC thu phát âm ISD2590: 50
PHẦN HAI: THI CÔNG PHẦN CỨNG 54
I Sơ đồ khối của hệ thống: 55
II Nhiệm vụ từng khối: 55
III Tính toán thi công phần cứng: 56
1) Mạch giao tiếp đường dây: 56
2) Mạch cảm biến nhiệt dùng LM335: 62
PHẦN BA:LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH 67
I Chương trình chính: 68
II Chương trình ngắt khi báo cháy: 69
Trang 5Trang 5
MSSV: 06DT053
SVTH: Phùng Khắc Hy
III Chương trình con báo động: 69
IV Chương trình nhập số điện thoại: 71
V Chương trình con menu: 72
VI Chương trình con mở khóa: 74
VII.Chương trình con nhập số : 75
VIII.Chương trình con đổi mật mã: 76
IX Chương trình con xem số điện thoại: 76
X Chương trình con quét phím: 77
XI Chương trình con chờ chuông điện thoại khi báo động: 78
PHẦN BỐN : KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 106
TÀI LIỆU THAM KHẢO: 108
Trang 6Lời nói đầu
W X
Hiện nay, các khu chung cư, nhà cao tầng, cơ quan, xí nghiệp mọc lên ngày càng nhiều Do đó, nguy cơ xảy ra các vụ hoả hoạng là rất lớn Bên cạnh đó, việc bảo vệ tài sản, của cải riêng trong một môi trường như thế là một vấn đề không dễ dàng chút nào Để giải quyết các vấn đề trên, một yêu cầu được đặt ra là phải phát hiện sớm các vụ hoả hoạng và trộm cắp để kịp thời xử lý
Trong thời đại bùng nổ về hệ thống thông tin liên lạc như hiện nay thì việc phát hiện hoả hoạng, trộm cắp và báo động qua điện thoại là phổ biến HỆ THỐNG BÁO ĐỘNG QUA ĐIỆN THOẠI giúp cho chủ nhà phát hiện sớm các sự việc không hay có thể xảy đến cho nhà mình Xuất phát từ những yêu cầu trên, em đã chọn đề tài “ HỆ THỐNG BÁO ĐỘNG QUA ĐƯỜNG DÂY ĐIỆN THOẠI “ làm đồ án tốt nghiệp
Hệ thống báo động bao gồm báo cháy và báo trộm Báo trộm dùng một hệ thống khóa điện tử , đóng mở bằng mật mã, nếu nhập mật mã sai sau một số lần quy định thì hệ thống báo động sẽ được kích hoạt Báo cháy dùng cảm biến nhiệt, với nhiệt độ báo động được đặt trước bởi người chế tạo Nếu quá nhiệt độ quy định thì hệ thống báo động sẽ kích hoạt và tiến hành gọi điện tới các số điện thoại đã được cài đặt sẵn
Do thời gian và tài liệu còn hạn chế nên mạch điện còn nhiều thiếu sót mong nhận được sự góp ý của thầy cô và các bạn để mạch điện được tốt hơn.
Bình Dương, tháng năm 2008
SV thực hiện
Phùng Khắc Hy
Trang 7Trang 7
MSSV: 06DT053
SVTH: Phuøng Khaéc Hy
Trang 8PHẦN DẪN NHẬP
W X
Ngày nay với sự phát triển vượt bậc của ngành Điện - Điện Tử, sự ra đời của nhiều công nghệ mới được ứng dụng vào lĩnh vực Viễn Thông đã giúp cho
ngành Viễn Thông có nhiều sự tiến bộ đáng kể Hệ thống thông tin liên lạc đã được nâng cao, sử dụng đa năng, hiệu quả, chính xác và nhanh chóng để đáp ứng nhiều nhu cầu của đời sống con người
Nhận thấy sự tiện lợi và nhanh chóng của việc trao đổi thông tin qua điện thoại, và muốn áp dụng những kiến thức đã được học trong những năm qua vào thực tế, em quyết định thực hiện đề tài “ HỆ THỐNG BÁO ĐỘNG QUA ĐƯỜNG DÂY ĐIỆN THOẠI “.Với mong muốn sản phẩm làm ra có thể ứng dụng rộng rãi trong thực tế
Do thời gian và kiến thức về hệ thống viễn thông có hạn, nên quyển đồ án và sản phẩm làm ra không tránh khỏi những thiếu sót Mong nhận được những ý
kiến quý báu của thầy cô, bạn bè
Mục đích chính của đề tài là nhằm phát hiện sớm các vụ hỏa hoạng, các vụ xâm nhập bất chính và báo động cho chủ nhà biết để có cách giải quyết sớm
Từ những mục đích trên, đề tài phải thỏa mãn được các yêu cầu sau:
Ỵ Hệ thống dễ dàng lắp đặt
Ỵ Phù hợp với nhiều đường dây thuê bao cố định
Ỵ Báo động kịp thời, nhanh chóng, chính xác khi xảy ra sự cố ở nơi lắp đặt
Ỵ Có thể báo động đến nhiều số điện thoại khác nhau
Đề tài có thể ứng dụng trong các khu chung cư cao tầng, các cơ quan xí nghiệp, kho hàng, nhà riêng, …, những nơi có đường dây thuê bao điện thoại cố định
Trang 9Trang 9
MSSV: 06DT053
SVTH: Phùng Khắc Hy
Do ngành học của em là tự động, mà đề tài có liên quan nhiều đến hệ thống viễn thông nên đề tài chỉ tập trung giải quyết các vấn đề sau:
Ỵ Phát hiện trộm bằng hệ thống khóa điện tử dùng mật mã
Ỵ Phát hiện cháy bằng cảm biến nhiệt
Ỵ Báo động tại chỗ bằng tiếng còi
Ỵ Báo động đến 3 số điện thoại khác nhau
Hiện nay kỹ thuật vi điều khiển phát triển mạnh mẽ, giá cả phù hợp và việc thiết kế phần cứng gọn nhẹ, nên em chọn phương án dùng vi điều khiển để thực hiện đề tài
Trang 10PHẦN MỘT:
GIỚI THIỆU CHUNG
W X
Trang 11Mạng điện thoại cố định là một hệ thống liên lạc hoạt động như một sự giao tiếp giữa máy điện thoại và toàn bộ hệ thống còn lại, tạo ra các liên kết vật lý giữa một máy và các máy khác trong cùng một tổng đài
Nhiệm vụ chính của tổng đài là nhận biết trạng thái của các các thuê bao để phục vụ khi thuê bao có yêu cầu Nếu số thuê bao cần gọi ở trong một tổng đài khác, trạm đầu cuối chịu trách nhiệm kết nối đến một liện kết đặc biệt giữa các tổng đài gọi là đường trung kế Để tạo ra độ mềm dẻo tối đa, một trung tâm ở một cấp có thể liên kết đến những trung tâm khác ở những cấp khác mà không cần phải đi khỏi hết cấu trúc mạng Các liên kết của mạng rất đa dạng cho phép hệ thống điện thoại định tuyến cuộc gọi cực kỳ mềm dẻo theo đường ngắn nhất hoặc các đường dài hơn khi đường ngắn nhất bị quá tải hoặc sự cố
¾ Tổng trở điện thoại khi nhấc máy : 600Ω
¾ Băng thông làm việc 300Hz ÷ 3400 Hz
¾ Tỉ số tín hiệu/tạp âm S/N ≥ 29,5 dB
¾ Dòng điện qua điện thoại : 5÷ 30 mA
¾ Điện áp khi gác máy : 48 VDC
¾ Điện áp khi nhấc máy : 10 VDC
Trang 12Hình 1.1: Tín hiệu mời quay số
Khi thuê bao vừa nhấc máy thì tổng đài sẽ nhận biết trạng thái này và sẽ cấp tín hiệu Dial tone cho thuê bao nếu đường dây không bận Dialtone là tín hiệu sin tần số f=425± 25Hz, biên độ 2VRMS trên nền DC, phát liên tục Chỉ khi nghe tín hiệu này thì thuê bao mới có thể gởi số cần gọi đến tổng đài
Khi nhấc máy mà nghe âm hiệu này thì thuê bao không thể gởi số cần gọi đến tổng đài Khi đó, thuê bao cần đợi đến khi tổng đài cấp tín hiêu Dial tone thì mới có thể thực hiện việc gởi số đến tổng đài
Busytone là tín hiệu Sin tần số f=425± 25Hz, biên độ 2VRMS trên nền DC, phát ngắt quãng 0,5s có 0,5 không
0,5s 0,5s
Hình 1.2: Tín hiệu báo bận (Busy tone )
Trang 13Trang 13
MSSV: 06DT053
SVTH: Phùng Khắc Hy
Để người gọi biết số thuê bao mình vừa gởi đến tổng đài đã được chấp nhận, thì tổng đài sẽ cấp cho thuê bao gọi một tín hiệu gọi là tín hiệu Ring back tone Ring back tone là tín hiệu sin tần số f=425± 25Hz, biên độ 2VRMS trên nền DC 10v, phát ngắt quãng 2s có 4s không
Khi đã xác định được thuê bao bị gọi, tổng dài sẽ cấp một tín hiệu chuông đến để báo hiệu cho thuê bao bị gọi biết là có người đang gọi nếu thuê bao
bị gọi không bận Tín hiệu chuông (ring tone)là tín hiệu sin tần số f=25 Hz, biên độ
VPP=75V ÷ 90V trên nền DC 48v, phát ngắt quãng 2s có 3s không
Khi nhấc máy quá lâu mà không gởi số đến tổng đài hoặc khi đang thông thoại mà một đầu dây gác máy, thì tổng đài sẽ cấp một tín hiệu báo gác máy đến thuê bao hoặc đến đầu dây còn lại Tín hiệu này là tổng hợp của bốn tần số 1400Hz + 2050Hz + 2450Hz + 2600Hz được phát dạng xung 0.1s có và 0.1s không
3s2s
10V
Hình 1.3: Tín hiệu hồi chuông
3s2s
48V
Hình 1.4: Tín hiệu chuông
Trang 146) Tín hiệu báo gọi sai số:
Khi thuê bao gởi đến tổng đài một số không có thực (ví dụ bấm liên tiếp dãy số 123456 ) thì sẽ nhận được tín hiệu xung có chu kỳ 1Hz và có tần số 200Hz–400Hz Đối với hệ thống tổng đài hiện nay thì tín hiệu này được thay thế bằng một thông báo có dạng như sau: “Số vừa gọi không có thực, xin vui lòng kiểm tra lại hoặc gọi đến số ……… để được hướng dẫn”
Máy điện thoại ấn phím có hai phương thức gửi số đến tổng đài là chế độ quay số đa tần ( DTMF ) và chế độ phát xung thập phân ( PULSE )
Khi ta ấn một phím nào đó thì máy điện thoại sẽ phát đi một chuỗi xung có dạng như hình 1.5 Số xung phát đi bằng số phím ấn Ví dụ, nếu ta ấn phím 5 thì sẽ phát đi 5 xung Khi ta chưa ấn phím thì máy có dòng điện một chiều ( mức cao ), khi ta ấn 1 phím thì từ có dòng điện chuyển sang không dòng ( mức thấp ) rồi lên mức cao Khi hết thời gian quay số thì lại có dòng Aán số phím nào thì chuỗi xung sẽ có mức thấp bằng số phím đó ( trong hình 1.5 là ấn số 2 ) Ấn số 1 thì phát 1 xung, ấn phím 0 thì sẽ phát 10 xung Thời gian 1 xung ( gồm mức thấp và mức cao ) là 100ms Vậy trong một giây chỉ phát được 10 xung vì vậy phương thức này gửi số chậm, nhất là khi số thuê bao nhiều Do đó cách quay số này hiện nay ít được sử dụng
Hình sau mô tả cách gửi số đến tổng đài theo phương pháp PULSE:
Frequency) hay còn gọi là chế độ Tone :
Hệ thống DTMF đang phát triển và đã trở thành phổ biến trong hệ thống điện thọai hiện đại hiện nay Hệ thống này còn gọi là hệ thống Touch-Tone, hệ thống được
không dòng (mức cao)
Có dòng (mức cao)
38ms 62ms
Hình 1.5: Dạng xung gởi đến tổng đài khi quay số dạng PULSE
Trang 15Ưu điểm của việc quay số dạng TONE là chống được nhiễu vì vậy tổng đài sẽ kết nối các thuê bao chính xác hơn Hơn nữa quay số dạng TONE giúp giảm thời gian gởi số đến tổng đài Bảng sau trình bày các cặp tần số được phát đi khi nhấn các phím số tương ứng
Phím số Nhóm fthấp Nhóm fcao
Bảng 1.1 :Nhóm tần số thấp, tần số cao và các phím số tương ứng
Bàn phím chuẩn của điện thoại ngày nay có dạng ma trận chữ nhật 3 x 4 tạo nên
12 phím nhấn: 10 phím cho chữ số (0-9), hai phím đặc biệt là ‘* ’ và ‘# ’ Mỗi một hàng trên bàn phím được gán cho một tần số tone thấp, mỗi cột được gán cho tần số tone cao Mỗi một phím sẽ có một tín hiệu DTMF riêng mà được tổng hợp bởi hai tần số tương ứng với hàng và cột.Ngày nay để tăng khả năng sử dụng của điện thoại người ta phát triển
Trang 16thêm một cột nữa cho bàn phím điện thoại chuẩn tạo nên bàn phím ma trận 4x4 Hình 1.6
trình bày hai loại bàn phím vừa nêu
Quá trình làm việc giữa tổng đài và thuê bao được thực hiện theo trình tự sau:
Nhận dạng trạng thái của thuê bao gọi: tổng đài nhận dạng trạng thái của
thuê bao thông qua sự biến đổi tổng trở mạch vòng của đường dây Bình thường khi
thuê bao ở trạng thái gác máy thì tổng trở đường dây vô cùng lớn ( xem như hở mạch
) Cấp nguồn 48 ± 2VDC cho thuê bao, dòng cấp từ 20mA ÷ 100 mA Khi thuê bao
nhấc máy điện trở mạch vòng còn 150Ω ÷1500Ω ( thường là 600Ω ) đó là tổng trở
vào của điện thoại Tổng đài nhận biết được sự thay đổi này thông qua bộ cảm biến
trạng thái đường dây thuê bao
Khi thuê bao nhấc máy thì tổng đài sẽ kiểm tra xem có còn liên kết trống
hay không Nếu còn, tổng đài sẽ cấp tín hiệu Dial Tone trên đường dây đến thuê
bao Chỉ khi nhận được tín hiệu này thì thuê bao mới được quay số thuê bao cần gọi
Có thể quay số dưới dạng DTMF hoặc dạng PULSE Tổng đài nhận biết thuê bao
bắt đầu quay số sẽ cắt dial tone và bắt đầu nhận biết các số mà thuê bao đã quay
Nếu thuê bao bị gọi đang thông thoại hoặc các đường dây kết nối bị bận thì
tổng đài cấp tín hiệu BUSY TONE ngược về cho thuê bao gọi
Tổng đài nhận các số do thuê bao gởi đến và kiểm tra, nếu số đầu nằm
trong tập thể số thuê bao của tổng đài thì tổng đài sẽ phục vụ cuộc gọi nội đài
Ngược lại tổng đài sẽ phục vụ cuộc gọi liên đài thông qua trung kế và gửi toàn bộ
phần định vị quay số sang tổng đài có thuê bao bị gọi để giải mã Nếu số đầu là mã
1209 1336 1477
941
694 770 852
a) Bàn phím ma trận 3x4 b) bàn phím ma trận 4x4
Trang 17 Khi thuê bao bị gọi nhấc máy thì tổng đài sẽ nhận biết tín hiệu này và cắt dòng chuông để tránh hư hỏng cho cho thuê bao bị gọi, đồng thời cắt tín hiệu Ring Back Tone đến thuê bao gọi và tiến hành kết nối thông thoại cho 2 thuê bao Tổng đài giải tỏa các thiết bị không cần thiết để tiếp tục phục vụ cho cuộc đàm thoại và bắt đầu tính cước
Khi hai thuê bao đang thông thoại có một thuê bao gác máy, tổng đài ngắt thông thoại 2 thuê bao và cấp Busy Tone cho thuê bao còn lại Khi thuê bao còn lại gác máy thì tổng đài sẽ ngắt Busy Tone và kết thúc chương trình phục vụ thuê bao
Tất cả mọi hoạt động nêu trên của tổng đài điện tử đều được thực hiện một cách hoàn toàn tự động nhờ vào các mạch điều khiển điện tử Ngoài ra, điện thoại viên có thể trực tiếp theo dõi toàn bộ hoạt động của tổng đài ở mọi thời điểm nhờ vào các bộ chỉ báo, chỉ thị và có thể trực tiếp điều khiển tổng đài thông qua các thao tác trên bàn phím, hệ thống công tắc,… Các hoạt động điều khiển có thể gồm có nghe xen vào các cuộc đàm thoại, hội nghị điện thoại,…
Tổng đài điện tử cũng có thể được điều khiển bởi một máy tính nếu như tổng đài được thiết kế liên kết với máy tính Chính điều này giúp làm tăng khả năng khai thác và sử dụng hệ thống điện thoại lên rất nhiều
Trang 18CHƯƠNG HAI:
GIỚI THIỆU TỔNG QUAN VỀ VI ĐIỀU KHIỂN
W X
Vào năm 1971 tập đoàn Intel đã giới thiệu 8080, bộ vi xử lý thành công đầu tiên Sau đó không lâu Motorola, RCA, kế đến là MOS Technology và Zilog đã giới thiệu các bộ vi xử lý tương tự: 6800, 1801, 6502 và Z80
Vào năm 1976 Intel giới thiệu bộ vi điều khiển (micro controller ) 8748,một chip tương tự như các bộ vi xử lý và là chip đầu tiên trong họ vi điều khiển MCS-48 8748 là một vi mạch chứa trên 17000 transistor bao gồm một CPU, 1 Kbyte EPROM, 64 Kbyte RAM, 27 chân xuất nhập và một bộ định thời 8 bit
Năm 1980 khi Intel công bố chip 8051, bộ vi điều khiển đầu tiên của họ vi điều khiển MCS-51 So với 8048, chip 8051 chứa trên 60000 transisitor bao gồm 4 Kbyte ROM,128 byte RAM, 32 đường xuất nhập, 1 port nối tiếp và 2 bộ định thời 16 bit
MCS-51 là một họ IC điều khiển, được chế tạo và bán trên thị trường bởi hãng Intel của Mỹ Họ IC này được cung cấp các thiết bị bởi nhiều hãng sản xuất IC khác trên thế giới chẳng hạn: nhà sản xuất IC SIEMENS của Đức, FUJITSU của Nhật và PHILIPS của Hà Lan Mỗi IC trong họ MCS-51 đều có sự hoàn thiện riêng, phù hợp với nhu cầu của người sử dụng và yêu cầu đặt ra của nhà sản xuất
Vi mạch tổng quát của họ MCS-51 là chíp 8051, linh kiện đầu tiên của họ này được đưa ra thị trường Chip 8051 có các đặt trưng được tóm tắt như sau:
4KB ROM
128 byte RAM
4 port xuất nhập (I/O port) 8 bit
2 bộ định thời 16 bit
Trang 19Trang 19
MSSV: 06DT053
SVTH: Phùng Khắc Hy
Mạch giao tiếp nối tiếp
Không gian nhớ chương trình ngoài 64K
Không gian nhớ dữ liệu ngoài 64K
Bộ xử lý bit (thao tác trên các bit riêng rẽ)
210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit
RAM
128 byte RAM 8032\8052
ROM 0K:
8031\8032 4K: 8051 8K:8052 INTERRUPT
CONTROL
INT1\
INT0\
SERIAL PORT TEMER0 TEMER1 TEMER2
CPU
OSCILATOR
BUS CONTROL I/O PORT SERIAL PORT
EA\
RST
ALE PSEN\ P 0 P 2 P 1 P 3
Address\Data
TXD RXD
TiMER 2 8032\8052
Timer 0
T2 T1 T0 T2EX
Hình 2.1: Sơ đồ khối của chip 8051
Trang 20Sơ đồ chân của 8051:
Port 0:
Port 0 là port có hai chức năng ở các chân từ 32÷39 Trong các thiết kế nhỏ port 0 được sử dụng làm nhiệm vụ xuất/nhập Trong các thiết kế lớn hơn có bộ nhớ ngoài, port 0 trở thành bus dữ liệu và bus địa chỉ đa hợp ( byte thấp của bus địa chỉ nếu là bus địa chỉ)
Port 1:
Port 1 chỉ có một công dụng la port xuất/nhập ( các chân từ 1-8 ) Các chân được ký hiệu là P1.0, P1.1, P1.2,…P1.7, có thể dùng giao tiếp với các thiết bị bên ngoài khi có yêu cầu Port 1 không có chức năng nào khác vì vậy nó chỉ dùng cho giao tiếp với các thiết bị bên ngoài (chẳng hạn ROM, RAM, 8255, led, loa, …)
Port 2:
Port 2 là một port có 2 công dụng ( các chân từ 21-28 ) hoặc dùng như các đường xuất nhập hoặc là byte cao của Bus địa chỉ cho các thiết kế cỡ lớn (có bộ nhớ chương trình ngoài hoặc các thiết kế có nhiều hơn 256 byte bộ nhớ dữ liệu ngoài )
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 XTAL1 XTAL2 GDN
ALE PSEN\
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
8
0
5 1
Hinh 2.2 : Sơ Đồ Chân Của 8051
Trang 21Trang 21
MSSV: 06DT053
SVTH: Phùng Khắc Hy
Port 3:
Port 3 là một port có hai công dụng ( các chân từ 10 –17 ) Khi không hoạt
động xuất nhập, các chân của port 3 có nhiều chức năng, các công dụng chuyển đổi có liên hệ với đặc tính đặc biệt của 8051 như bảng sau:
Bit Tên Chức năng chuyển đổi P3.0
P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7
RXD TXD INT0\
INT1\
T0 T1 WR\
RD\
Ngõ vào dữ liệu nối tiếp Ngõ ra dữ liệu nối tiếp Ngõ vào ngắt cứng thứ 0 Ngõ vào ngắt cứng thứ 1 Ngõ vào của temer\counter thứ 0 Ngõ vào của temer\counter thứ 1 Tín hiệu ghi dữ liệu lên bộ nhớ ngoài Tín hiệu đọc bộ nhớ dữ liệu ngoài
Bảng 2.2 : Chức năng các chân port 3
Chân cho phép bộ nhớ chương trình PSEN\ (Progam store enable):
PSEN\ là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương trình mở rộng và thường được nối với chân OE\ (output enable) của EPROM ( ROM ) cho phép đọc các byte lệnh
PSEN ở mức thấp ( 0 ) trong thời gian tìm nạp lệnh Các mã nhị phân của chương trình được đọc từ EPROM, qua bus dữ liệu và được chốt vào thanh ghi lệnh IR của 8051 để giải mã lệnh Khi thi hành chương trình trong ROM nội , PSEN\ sẽ được duy trì ở mức 1
Chân cho phép chốt địa chỉ ALE (Address latch enable):
8051 sử dụng chân 30, chân xuất tín hiệu cho phép chốt địa chỉ ALE để giải đa hợp bus dữ liệu và bus địa chỉ Khi port 0 được sử dụng làm bus địa chỉ/dữ liệu đa hợp, chân ALE xuất tín hiệu để chốt địa chỉ vào một thanh ghi ngoài trong suốt ½ đầu chu kỳ bộ nhớ Sau khi điều này đã được thực hiện, các chân của port 0 sẽ xuất nhập dữ liệu hợp lệ trong suốt ½ thứ hai của chu kỳ bộ nhớ
Tín hiệu ALE tần số bằng 1/6 tần số của mạch dao động dao động trên
vi điều kkiển và có thể được dùng làm xung clock cho các phần khác của hệ thống Ngoại lệ duy nhất là trong htời gian thực thi lệnh MOVX, một xung ALE sẽ bị bỏ qua Chân ALE còn được dùng để nhận xung ngõ vào lập trình cho EPROM trong chip đối với các phiên bản của 8051 có EPROM này
Trang 22 Chân truy xuất ngoài EA\ (External Access ):
Tín hiệu vào EA\ ở chân 31 có thể được nối với 5V( logic 1 ) hoặc với GND (logic 0 ) Nếu ở mức 1 thì 8051 thi hành chương trình trong ROM nội ( chương trình nhỏ hơn 4K ) Nếu chân này nối với GND thì 8051 thi hành chương trình ở bộ nhớ ngoài Đối với 8031 chân AE\ phải nối với GND vì nó không có bộ nhớ chương trình trên chip
Các phiên bản EPROM của 8051 còn sử dụng chân AE\ làm chân nhận điện áp cấp nguồn 21V lập trình cho EPROM nội
Ngõ tín hiệu RST (Reset):
Ngõ tín hiệu RST ở chân 9 là ngõ vào xóa chính của 8051 dùng để thiết lập lại trạng thái ban đầu cho hệ thống hay gọi tắt là reset hệ thống Khi ngõ vào này đưa lên mức cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong của
8051 được nạp những giá trị thích hợp để khởi động lại hệ thống
Ngõ vào bộ dao động XTAL1, XTAL2:
Mạch dao động bên trong chip 8051 được ghép với thạch anh bên ngoài
ở hai chân XTAL1 và XTAL2 ( chân 18 và 19 ) Tần số danh định của thạch anh là 12 MHZ cho hầu hết các chip của họ MCS-51
Nguồn cho 8051:
Nguồn cho 8051 được cung cấp ở 2 chân là 20 và 40 cấp GND (0 V ) và Vcc ( 5 V )
Khả năng tải của port 0 là 8 tải vi mạch TTL loại Schottky công suất thấp ( LS ) còn của port 1,2,3 là 4 tải LS –TTL Lưu ý là điện trở kéo lên (pull up)sẽ không có ở port 0 ( trừ khi port này port này làm nhiệm vụ của bus địa chỉ/dữ liệu đa hợp ), do vậy một điện trở kéo lên bên ngoài phải được cần đến
Chip vi điều khiển 8051 có không gian nhố riêng cho chương trình và dữ liệu Cả hai bộ nhớ chương trình và dữ liệu được đặt bên trong chip, tuy nhiên ta có thể mở rộng bộ nhớ chương trình và dữ liệu bằng cách sử dụng các chip nhớ bên ngoài với dung lượng tối đa là 64K cho bộ nhớ chương trình và 64K cho bộ nhớ dữ liệu
Trang 23Hai đặc tính đáng lưu ý là:
Các thanh ghi và các port xuất nhập được định địa chỉ theo kiểu ánh xạ bộ nhớ và có thể truy xuất như một vị trí nhớ trong bộ nhớ
Vùng stack thường trú trong RAM nội thay vì ở trong RAM ngoại như các bộ vi xử lý khác
RAM bên trong 8051 được phân chia như sau:
Các Bank thanh ghi có địa chỉ 00H ÷ 1FH
RAM định địa chỉ bit có địa chỉ 20H ÷ 2FH
RAM đa chức năng có địa chỉ 30H ÷ 7FH
Các thanh ghi có chức năng đặc biệt 80H ÷ FFH
Trang 24Hình2.3: Sơ đồ tổ chức bộ nhớ trên chip 8051
Byte address
Byte
address
Bit address
Bit address
Sau đây là sơ đồ tổ chức bộ nhớ trên chip:
7F FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 B E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW
30
RAM đa dụng
B8 - - - BC BB BA B9 B8 IP 2F 7F 7E 7D 7C 7B 7A 79 78
23 1F 1E 1D 1C 1B 1A 19 18 8D không định địa chỉù bit TH1
22 17 16 15 14 13 12 11 10 8C không định địa chỉù bit TH0
21 0F 0E 0D 0C 0B 0A 09 08 8B không định địa chỉù bit TL1
20 07 06 05 04 03 02 01 00 8A không định địa chỉù bit TL0
00
Bank thanh ghi 0
(mặc định cho R0 -R7) 88 87 86 85 84 83 82 81 80 P0
Trang 25Trang 25
MSSV: 06DT053
SVTH: Phùng Khắc Hy
Mặc dù trên hình vẽ cho thấy 80 byte đa dụng đặt ở địa chỉ từ 30H÷7FH, bên dưới vùng này từ địa chỉ 00H÷2FH cũng có thể được dùng với mục đích tương tự (mặc dù các vị trí nhớ này cũng đã có các mục đích khác).Mọi vị trí nhớ nào trong vùng RAM đa dụng đều có thể được truy xuất tự do bằng cách dùng kiểu định địa chỉ gián tiếp hoặc trực tiếp
Ví dụ: để đọc nội dung ở địa chỉ 5FH của RAM nội vào thanh ghi A, có thể dùng lệnh sau:
MOV A, 5FH Vùng RAM đa mục đích còn có thể được truy xuất bằng cách dùng kiểu định địa chỉ gián tiếp qua các thanh ghi R0,R1 ví dụ hai lệnh sau thực hiện cùng công viêïc như ví dụ trên
MOV R0, #5FH MOV A, @R0 Lệnh đầu tiên dùng để nạp địa chỉ tức thời 5FH vào thanh ghi R0, lệnh thứ 2 dùng để chuyển nội dung của ô nhớ có địa chỉ mà R0 đang chỉ tới vào thanh ghi A
8051 chứa 210 vị trí bit được định địa chỉ, trong đó có 128bit chứa các byte có địa chỉ từ 20H÷2FH và các bit còn lại chức trong nhóm thanh ghi có chứa năng đặc biệt Các địa chỉ này được truy xuất như là các byte hay các bit tùy vào lệnh cụ thể
Ví dụ: để set bit thứ 67 bằng 1 ta dùng lệnh sau:
32 byte thấp nhất của bộ nhớ RAM nội được dùng cho các bank thanh ghi Bộ lệnh 8051 hỗ trợ 8 thanh ghi nói trên có tên là R0 ÷ R7 thuộc dãy thanh ghi 0 Đây là dãy mặc định sau khi reset hệ thống, các thanh ghi này có địa chỉ từ 00H ÷ 07H
Ví dụ: lệnh sau đây sẽ đọc nội dung của ô nhớ có địa chỉ 05H vào thanh ghi A
Trang 26MOV A, R5 Đây là lệnh 1 byte dùng địa chỉ thanh ghi Tuy nhiên yêu cầu trên có thể thi hành bằng lệnh 2 byte dùng địa chỉ trực tiếp nằm trong byte thứ hai: MOV A,05H
Một định nghĩa đơn giản của timer là một chuỗi các flip-flop chia đôi tần sồ nối tiếp với nhau, chúng nhận tín hiệu vào làm nguồn xung nhịp Ngõ
ra của tầng cuối làm xung nhịp cho flip - flop báo tràn của timer (flip - flop cờ) Giá trị nhị phân trong các flip - flop của timer có thể xem như đếm số xung nhịp (hoặc các sự kiện) từ khởi động timer Ví dụ timer 16 bit sẽ đếm từ 0000H đến FFFFH Cờ báo tràn sẽ lên 1 khi số đếm tràn từ FFFFH đến 0000H
Chip 8051 có hai timer 16 bit, mỗi timer có 4 mode làm việc Người ta sử dụng các timer để:
Định khoảng thời gian
Đếm sự kiện
Tạo tốc độ baud cho port nối tiếp của chip 8051
Thanh ghi TMOD chứa hai nhóm 4 bit dùng để đặt chế độ làm việc cho timer 0 và timer 1
7 GATE 1 Bit điều khiển cổng Khi được set lên 1, bộ định thời chỉ hoạt động khi INT1\ ở mức cao
6 C/T 1 Bit chọn chế độ counter/ timer 1 = Bộ đếm sự kiện
0 = Bộ định khoảng thời gian
5 M1 1 Bit chọn chế độ thứ nhất
4 M0 1 Bit chọn chế độ thứ hai
3 GATE 0 Bit điều khiển cổng cho bộ định thời 0
2 C/T 0 Bit chọn counter/ timer cho bộ định thời 0
1 M1 0 Bit chọn chế độ thứ nhất
0 M0 0 Bit chọn chế độ thứ hai
Bảng 2.3 : Thanh ghi chọn chế độ định thời TMOD
Trang 27Trang 27
MSSV: 06DT053
SVTH: Phùng Khắc Hy
Các chế độ định thời:
M1 M0 Chế độ Mô tả
0 0 0 Chế độ định thời 13 bit
0 1 1 Chế độ định thời 16 bit
1 0 2 Chế độ tự động nạp lại 8 bit
1 1 3 Chế độ định thời chia xẻ
Bảng 2.4 : Các chế độ định thời
Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho timer
0 và timer 1 như được mô tả trong bảng sau :
TCON.7 TF1 8FH Cờ báo tràn timer1 Được set bởi phần cứng khi tràn, được xóa bởi phần mềm hoặc phần cứng
khi bộ xử lí trỏ đến chương trình phục vụ ngắt
TCON.6 TR1 8EH Bit điều khiển hoạt động của timer1 Được set/xóa bằng phần mềm để bộ định thời chạy/
ngưng TCON.5 TF0 8DH Cờ báo tràn timer 0
TCON.4 TR0 8CH Bit điều khiển hoạt động của timer 0
TCON.3 IE1 8BH
Cờ ngắt bên ngoài 1 (kích khởi cạnh ) Được set bởi phần cứng khi phát hiện một cạnh xuống ở INT1\ xóa bằng phần mềm hoặc phần cứng khi CPU chỉ đến chương trình phục vụ ngắt
TCON.2 IT1 8AH Cờ ngắt bên ngoài 1 ( kích khởi cạnh hoặc mức) Được set/xóa bằng phần mềm khi xảy ra cạnh
xuống hoặc mức thấp tại chân ngắt ngoài
TCON.1 IE0 89H Cờ ngắt bên ngoài 0 ( kích khởi cạnh )
TCON.0 ITO 88H Cờ ngắt bên ngoài 0 ( kích khởi cạnh hoặc mức)
Trang 28Bảng 2.5 : Thanh ghi điều khiển định thời TCON
a Chế độ định thời 13 bit ( chế độ 0 ) :
Chế độ này không được dùng cho các thiết kế mới Byte cao của bộ định thời THx được ghép cascade 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 Ba bit cao của TLx không sử dụng
Hình 2.4 : Chế độ 0
b Chế độ định thời 16 bit ( chế độ 1 ) :
Khi có xung clock đến, bộ định thời đếm lên : 0000h, 0001h,… Một tràn sẽ xuất hiện khi có sự chuyển số đếm từ FFFFH xuống 0000H,sự kiện này sẽ set cờ tràn bằng 1và bộ định thời 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
Bit có ý nghĩa lớn nhất ( MSB ) của giá trị trong các thanh ghi định thời là bit 7 của THx và bit có ý nghãi thấp nhất ( LSB ) là bit 0 của TLx Các thanh ghi định thời ( TLx/THx ) có thể được đọc hoặc ghi ở một thời điểm bất kỳ bởi phần mềm
TLx (8 bits) (8 bits) THx TFx
Timer clock
Overflow flag
TLx (5 bits) (8 bits) THx TFx Timer clock
Overflow flag
Trang 29Trang 29
MSSV: 06DT053
SVTH: Phùng Khắc Hy
c Chế độ tự nạp lại 8 bit ( chế độ 2 ) :
Byte thấp của bộ định thời ( TLx ) 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 số đếm tràn từ FFH xuống 00H, không chỉ cờ tràn của bộ định thời được set lên 1 mà giá trị trong THx còn đựơc nạp vào TLx và việc đếm được tiếp tục cho đến khi xảy ra 1 tràn kế tiếp
Hình 2.6 : Chế độ 2
Có hai khả năng tạo ra nguồn xung clock, việc lựa chọn khả năng nào
do ta thiết lập bit C/T ( counter/ timer ) của thanh ghi TMOD bằng 0 hay bằng 1 khi bộ định thời được khởi động Một nguồn xung clock được dùng để định thời một khoảng thời gian, nguồn xung clock còn lại được dùng để đếm sự kiện
Định thời một khoảng thời gian: Nếu C/T = 0 hoạt động định thời được chọn và nguồn xung clock của bộ định thời do mạch dao động bên trong chip tạo ra Một mạch chia 12 được thêm vào để giảm tần số xung clock đến một giá trị thích hợp với hầu hết các ứng dụng Lúc này, bộ định thời được dùng để định thời một khoảng thời
TLx
THx
TFxTimer clock
reload Overflow
flag
Trang 30gian Các thanh ghi định thời đếm lên với tần số xung clock bằng 1/12 tần số của mạch dao động trên chip Bộ định thời sẽ tràn sau một số xung clock cố định phụ thuộc vào giá trị ban đầu nạp cho các thanh ghi định thời
Đếm sự kiện:
Nếu bit C/T = 1, bộ định thời được cung cấp xung clock từ một nguồn tạo xung bên ngoài Trong đa số các ứng dụng, nguồn xung clock này cung cấp cho bộ định thời một xung dựa trên việc xảy ra một sự kiện Số sự kiện được xác định trong phần mềm bằng cách đọc các thanh ghi định thời, giá trị trong các thanh ghi này tăng theo mỗi sự kiện Hai chân của port3 là P3.4, P3.5 bây giờ trở thành ngõ vào xung clock cho bộ định thời
Hình sau trình bày hai cách tạo nguồn xung clock cho bộ định thời:
Hình 2.6 :Nguồn xung clock
Để khởi động và dừng các bộ định thời ta sử dụng bit điều khiển hoạt động TRx trong thanh ghi TCON TRx được xóa khi thiết lập lại hệ thống; nghĩa là các bộ điïnh thời ngưng hoạt động
TRx
Xung nhịp timer
0 = lên: timer dừng
1 = xuống: timer chạy
Các thanh ghi timer
÷ 12
Bộ dao động trong
0: (lên) định khoảng thời gian
Trang 31Trang 31
MSSV: 06DT053
SVTH: Phùng Khắc Hy
Hình 2.7 : Bắt đầu và dừng các bộ định thời
Thông thường các thanh ghi được khởi động một lần ở đầu chương trình để đặt chế độ làm việc đúng Sau đó, trong thân chương trình, các timer được cho khởi động, dừng, các bit cờ được kiểm tra và xóa, các thanh ghi timer được đọc và cập nhật v,v… theo đòi hỏi của các ứng dụng
TMOD là thanh ghi thứ nhất được khởi động vì nó đặt chế đôï hoạt động Ví dụ các lệnh sau khởi động timer1 như bộ định thời 16 bit (chế độ 1) có xung nhịp từ bộ dao động trên chip cho việc định khoảng thời gian:
MOV TMOD, #00010000B Kết quả của lệnh này là thiết lập M1=0 và M0=1 để chọn chế độ 1, C/T= 0 và GATE = 0 để sử dụng xung clock trên chip, xóa các bit chọn chế độ của bộ định thời 0 Đến đây, bộ định thời vẫn chưa thể hoạt động cho tới khi bit điều khiển Tr1 được SET lên 1
Nếu cần số đếm ban đầu, các thanh ghi timer TL1/TH1 cũng phải được khởi động Cần nhớ là các timer đếm lên và thiết lặp cờ báo tràn bằng 1 khi có tràn số đếm từ FFFFH sang 0000H Khi bộ định thời tràn , ta cần dừng bộ định thời và xóa cờ tràn bằng phần mềm
Một phương pháp khác để điều khiển các bộ định thời là sử dụng bit GATE trong thanh ghi TMOD và ngõ vào /INTX Bằng cách SET bit GATE lên 1 ta cho phép bộ định thời được điều khiển bởi /INTX Phương pháp này thường được dùng để đo độ rộng xung
Giả sử /INT0 ở mức thấp rồi chuyển sang mức cao trong một khoảng thời gian và ta muốn đo khoảng thời gian này Ta khởi động bộ định thời 0 ở chế độ 2 ( chế độ định thời 16 bit ) với TL0/TH0 = 0000H, GATE = 1 và TR0
= 1 Khi /INT0 chuyển lên mức cao, bộ định thời được mở cổng và nhận xung clock có tần số 1Mhz Khi /INT0 chuyển xuống mức thấp, bộ định thời bị khóa cổng không nhận xung clock nữa và độ rộng xung tính bằng μs là số đếm trong TL0/TH0 /INT0 có thể được lập trình để tạo ra ngắt khi chân này trở về mức thấp
Hình sau minh họa bộ định thời 1 hoạt động ở chế độ 1 Cùng với thanh ghi TL1/TH1 và cờ tràn TF1, sơ đồ trình bày các khả năng cấp nguồn xung clock, khởi động, dừng và điều khiển bộ định thời 1
÷ 12
Bộ dao động trên chip
0: lên 1: xuống
Trang 32Hình 2.8 : Hoạt động ở chế độ 1 của bộ định thời 1
Ngắt là sự xảy ra của một điều kiện – một sự kiện – làm cho chương trình hiện hành bị tạm ngưng trong khi điều kiện được phục vụ bởi một chương trình khác Các ngắt đóng vai trò quan trọng trong việc thiết kế và hiện thực các ứng dụng của bộ vi điều khiển Chúng cho phép hệ thống đáp ứng một sự kiện theo cách không đồng bộ và xử lý sự kiện trong khi một chương trình khác đang thực thi
Chương trình xử lý một ngắt được gọi là trình phục vụ ngắt ISR (Interrupt service routine ) hay quản lý ngắt ( Interrupt handler ) Khi một ngắt xuất hiện, việc thực thi chương trình chính bị tạm dừng và CPU thực hiện việc rẻ nhánh đến trình phục vụ ngắt CPU thực thi ISR để thực hiện một công việc và kết thúc việc thực thi này khi gặp lệnh quay về từ một trình phục vụ ngắt; chương trình chính được tiếp tục tại nơi bị tạm dừng Ta có thể nói chương trình chính được thực thi ở mức nền còn ISR được thực thi ở mức ngắt
Hình 2.9 : Thực thi chương trình có ngắt và không ngắt
Vi điều khiển 8051 có 5 nguyên nhân tạo ra ngắt đó là: hai ngắt do bên ngoài, hai ngắt do bộ định thời và một ngắt do port nối tiếp Khi ta thiết lập trạng thái ban đầu cho hệ thống ( reset hệ thống ) , tất cả các ngắt đều bị vô hiệu hóa ( cấm ) và sau đó chúng được cho phép riêng rẻ bằng phần mềm ( nếu có sử dụng ngắt trong chương trìmh )
Khi xảy ra hai hay nhiều ngắt đồng thời hoặc xảy ra một ngắt trong khi một ngắt khác đang được phục vụ, ta có hai sơ đồ xử lý ngắt: sơ đồ chuỗi
CHƯƠNG TRÌNH CHÍNHThực thi chương trình không có ngắt
Trang 33Mỗi nguyên nhân ngắt được cho phép hoặc không cho phép riêng rẽ thông qua thanh ghi chức năng đặt biệt định địa chỉ bit, thanh ghi cho phép ngắt có địa chỉ byte là 0A8H
Bit Ký hiệu Địa chỉ bit Mô tả (1 = cho phép, 0=cấm)
IE.7 EA AFH Cho phép / cấm toàn cục
IE.6 _ AEH Không được định nghĩa
IE.5 ET2 ADH Cho phép ngắt do timer 2(8052)
IE.4 ES ACH Cho phép ngắt do Port nối tiếp
IE.3 ET1 ABH Cho phép ngắt do timer 1
IE.2 EX1 AAH Cho phép ngắt từ bên ngoài 1
IE.1 ET0 A8H Cho phép ngắt do timer 0
IE.0 EX0 A8H Cho phép ngắt từ bên ngoài 0
Bảng 2.6 : Thanh ghi cho phép ngắt
Để cho phép một ngắt nào đó, hai bit sau đây phải được set bằng 1: bit cho phép ngắt riêng rẽ và bit cho phép ngắt toàn cục Ví dụ để cho phép ngắt từ bên ngoài 0 ta dùng các lệnh sau:
Hoặc dùng lệnh sau:
Hoặc: MOV IE,#82H
Mỗi một nguyên nhân ngắt được lập trình riêng rẽ để có một trong hai mức ưu tiên thông qua thanh ghi ưu tiên ngắt IP, thanh ghi này có địa chỉ byte là 0B8H Nếu có ngắt với mức ưu tiên cao xuất hiện trình phục vụ ngắt cho ngắt có mức ưu tiên thấp phải tạm dừng ( nghãi là bị ngắt ) Ta không thể tạm dừng một chương trình phục vụ ngắt có mức ưu tiên cao
Chương trình chính do được thực thi ở mức nền và không được kết hợp với một ngắt nào nên luôn luôn bị ngắt bởi các ngắt cho dù các ngắt này có
Trang 34mức ưu tiên thấp hay cao Nếu có hai ngắt với mức ưu tiên ngắt khác nhau xuất hiện đồng thời, ngắt có mức ưu tiên cao sẽ được phuc vụ trước Sau đây là thanh ghi ưu tiên ngắt IP:
Bit Ký hiệu Địa chỉ bit Mô tả
IP.7 _ _ Không sử dụng
IP.6 _ _ Không sử dụng
Ip.5 PT2 0BDH Ưu tiên ngắt do bộ định thời 2
IP.4 PS 0BCH Ưu tiên ngắt do port nối tiếp
IP.3 PT1 0BBH Ưu tiên ngắt do bộ định thời 1
IP.2 PX1 0BAH Ưu tiên ngắt do bên ngoài(ngắt ngoài 1)
IP.1 PT0 0B9H Ưu tiên ngắt do bộ định thời 0
IP.0 PX0 0B8H Ưu tiên ngắt do bên ngoài(ngắt ngoài 0)
Bảng 2.7 : Thanh ghi ưu tiên ngắt IP
Các bit cờ tạo các ngắt được tóm tắc trong bảng sau:
Ngắt Cờ Thanh ghi SFR và vị trí bit
Bảng 2.8 : Các cờ ngắt
Nếu có hai ngắt có cùng mức ưu tiên xuất hiện đồng thời, chuỗi vòng cố định sẽ xác định ngắt nào được phục vụ trước Chuỗi vòng này sẽ là: ngắt ngoài 0, ngắt do bộ định thời 0,ngắt ngoài 1,ngắt do bộ định thời 1, ngắt do port nối tiếp
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 Các thao tác sau đây xảy ra:
Trang 35Trang 35
MSSV: 06DT053
SVTH: Phùng Khắc Hy
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 ngăn xếp ( stack )
Trạng thái của ngắt hiện hành được lưu giữ lại
Các ngắt được chận lại ở mức ngắt
Bộ đếm chương trình PC được nạp địa chỉ vector của trình phục vụ ngắt ISR
ISR được thực thi
ISR được thực thi để đáp ứng công việc của ngắt Việc thực thi ISR kết thúc khi gặp lệnh RETI ( trở về từ một trình phục vụ ngắt ) Lệnh này lấy giá trị cũ của bộ đếm chương trình PC từ stack và phục hồi trạng thái của ngắt cũ Việc thực thi chương trình được tiếp tục ở nơi bị tạm ngưng
Khi một ngắt được chấp nhận, giá trị được nạp cho bộ đếm chương trình
PC được gọi là vector ngắt Vector ngắt là địa chỉ bắt đầu của trình phục vụ ngắt Các vector được cho trong bảng sau:
Ngắt Cờ Địa chỉ vector
Port nối tiếp TI hoặc RI 0023H
Bảng 2.9 : Các vector ngắt
Khi một trình phục vụ ngắt được trỏ tới, cờ gây ra ngắt sẽ tự động bị xóa về 0 bởi phần cứng Ngoại lệ các cờ TI và RI đối với các ngắt do port nối tiếp Nguyên nhân ngắt trên do có hai khả năng tạo ra ngắt nên CPU không xóa cờ ngắt
Các bit cờ này phải được kiểm tra trong ISR để xác định nguyên nhân ngắt và sau đó cờ gây ra ngắt được xóa bởi phần mềm Vì các vector ngắt đặt
ở đáy của bộ nhớ chương trình, lệnh đầu tiên của chương trình chính thường là một lệmh nhảy qua khỏi vùng nhớ chứa các vector ngắt, ví dụ như lệnh: LJMP 0030H
Trang 36CHƯƠNG BA:
GIỚI THIỆU KHÁI QUÁT VỀ IC THU PHÁT TONE DTMF
W X
MT8880 là một IC thu phát DTMF trọn bộ kèm theo một bộ lọc thoại (Call Progress Filter) 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ế độ Brust 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
MT8880 có 5 thanh ghi bên trong để giao tiếp với vi điều khiển
Thanh ghi dữ liệu thu
Thanh ghi dữ liệu phát
Thanh ghi điều khiển ( hai thanh ghi CRA, CRB)
Thanh ghi trạng thái
Sơ đồ khối của MT8880:
Trang 37Trang 37
MSSV: 06DT053
SVTH: Phùng Khắc Hy
Sau đây là sơ đồ chân IC MT8880:
Hình 3.1 : Sơ đồ chân MT8880
Ý nghĩa các chân của MT8880:
Thứ tự
chân Tên Mô tả chức năng
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 Điện áp âm cung cấp
6 OSC1 Đầu vào bộ dao động thạch anh
7 OSC2 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 R/W Chân để CPU điều khiển trực tiếp đọc viết data
10 CS Chip Select
11 RSO Chân chọn Register
12 Φ2 Xung đồng hồ hệ thống
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) chế độ ngắt 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
Trang 3818 Est (Early Steering Output) Cho ra mức logic 1 khi phát hiện được một cặt 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
(Sreering Output/ Guard Time Output 2 chiều) Một đ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à cập nhất 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ì bên ngoài Trạng thái cũa nó là một hàm của Est và điện áp tại chân St
20 VDD Nguồn cung cấp dương
Bảng 3.1 : Ý nghĩa các chân MT8880
Thiết kế đầu vào của MT8880 cung cấp một bộ khuếch đại OP-AMP 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
Hai bộ lọc băng thông bậc 6 giúp tách các Tone trong các nhóm Tone thấp và cao Đầ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 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 Est sẽ lên mức 1 Lúc không nhận được tín hiệu Tone thì chân Est sẽ ở mức 0
VDD St/GT Est MT8880
R1
C1VDD
Hình 3.2 : Mạch steering
Trang 39Dữ 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.
Chế độ 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à Tone DTMF là chung nhưng CALL PROGRESS chỉ có thể kiểm tra nếu ta chọn mode CP Tone DTMF lại không thể nhận dạng được nếu ta chọn mode CP
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 (280Hz ÷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
Bộ phát DTMF trong MT8880 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.579 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 (3.2) sẽ phải được viết vào thanh ghi dữ liệu phát ( Transmit Data ) Chú ý rằng mã phát này tương
Trang 40ứ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 (flow và high)
Như bảng sau, các số trong nhóm thấp là 697, 770, 852 và 941 Hz, các số trong nhóm cao là : 1209, 1336, 1477, 1663 Theo tiêu chuẩn thì tỷ số biên độ của nhóm cao với nhóm thấp là 2dB để tránh suy hao tần số cao trên đường truyền
Tuy nhiên khi CP mode (Call Progress Mode) được chọn thì một thời hằng đóng ngắt thứ hai là 102ms ± 2ms sẽ được sử dụng Khoảng thời hằng dài hơn này sẽ hữu ích khi thời gian xuất hiện tone là 51 ms Chú ý rằng khi
CP mode và burst mode cùng được chọn thì MT8880 chỉ hoạt động ở chế độ