điều khiển thiết bị từ xa sử dụng module sim900ANgày nay, ngành công nghệ thông tin đã đạt được những tiến bộ vượt bậc với sự ra đời của ngành công nghiệp phần cứng, cũng như phần mềm việc giải quyết các công việc giúp con người trở nên dễ dàng, thuận tiện và nhanh chóng. Cùng với sự phát triển của ngành công nghệ thông tin là sự phát triển mạnh mẽ của các hệ thống thông tin liên lạc, sự ra đời của các dịch vụ điện thoại mà cụ thể là điện thoại di động với ưu thế dễ dàng hoạt động khi di chuyển mọi lúc mọi nơi. Chính vì vậy ngoài việc dùng điện thoại để liên lạc một vấn đề được đặt ra là chúng ta có thể sử dụng điện thoại như một chiếc Remote để điều khiển các thiết bị điện từ xa.
Trang 1MỤC LỤC
LỜI NÓI ĐẦU
Ngày nay, ngành công nghệ thông tin đã đạt được những tiến bộ vượt bậcvới sự ra đời của ngành công nghiệp phần cứng, cũng như phần mềm việc giảiquyết các công việc giúp con người trở nên dễ dàng, thuận tiện và nhanh chóng
Cùng với sự phát triển của ngành công nghệ thông tin là sự phát triển mạnh
mẽ của các hệ thống thông tin liên lạc, sự ra đời của các dịch vụ điện thoại mà cụthể là điện thoại di động với ưu thế dễ dàng hoạt động khi di chuyển mọi lúc mọinơi Chính vì vậy ngoài việc dùng điện thoại để liên lạc một vấn đề được đặt ra làchúng ta có thể sử dụng điện thoại như một chiếc Remote để điều khiển các thiết bịđiện từ xa Từ yêu cầu trên và những kiến thức em được học ở trường em đã lựachọn đề tài: “Điều khiển thiết bị từ xa sử dụng Module Sim900.”
Em xin chân thành cảm ơn cô Nguyễn Thị Thu Hà đã nhiệt tình hướng em
trong suốt thời gian thực hiện đề tài cũng như tất cả các thầy cô đã cung cấp kiến
thức nền tảng để em hoàn thành tốt đề tài theo đúng kế hoạch
Mặc dù đã có nhiều cố gắng và nỗ lực thực hiện, nhưng do kiến thức cũng nhưkhả năng bản thân còn nhiều hạn chế nên trong quá trình thực hiện đề tài không thểtránh khỏi những sai phạm, thiếu sót…Rất mong nhận được sự góp ý, chỉ dẫn từ nơiquý thầy cô và các bạn sinh viên
Xin chân thành cảm ơn!
Sinh viên thực hiện
Trang 2Nguyễn Đình Quyết
Trang 3DANH MỤC CÁC HÌNH
DANH MỤC CÁC BẢNG
Trang 4Chương 1
SƠ LƯỢC VỀ ĐIỀU KHIỂN TỪ XA VÀ Ý TƯỞNG THIẾT KẾ
1.1 TẦM QUAN TRỌNG VÀ ỨNG DỤNG CỦA ĐIỀU KHIỂN TỪ XA
Đất nước ta đang trên đà phát triển và hội nhập với nền kinh tế thế giới Một đấtnước phát triển không thể dựa vào một ngành nông nghiệp, lâm nghiệp, ngư nghiệp
mà cần phải có một ngành công nghiệp phát triển mạnh Một nền công nghiệp pháttriển mạnh luôn đi đôi với các thiết bị máy móc tinh vi hơn, phức tạp hơn Với nềncông nghiệp phát triển như thế, điều khiển từ xa đóng vai trò quan trọng trong côngcuộc công nghiệp hóa hiện đại hóa đất nước
Trong công nghiệp, tại các lò phản ứng, các nhà máy, hay tại những nới có mức
độ nguy hiểm cao mà con người không thể tiếp cận để điều khiển được Ta phải cầnđến bộ điều khiển từ xa để điều khiển Trong công nghiệp nghiên cứu vũ trụ, điềukhiển từ xa được sử dụng trong các phi thuyền không người lái, các tàu do thám khônggian
Điều khiển từ xa không những phục vụ cho công nghiệp, quân sự, hay nghiêncứu khoa học, mà nó còn góp phần không nhỏ vào phục vụ cho nhu cầu cuộc sốnghàng ngày của chúng ta
Trong công cuộc công nghiệp hóa hiện đại hóa đất nước Con người phải dànhnhiều thời gian cho công việc, luôn ở cơ quan, xí nghiệp, hay tại công trường nên có ítthời gian ở nhà Vì vậy điều khiển từ xa giúp chúng ta không cần phải về nhà mà cũng
có thể điểu khiển đóng ngắt các thiết bị
1.2 CÁC DẠNG ĐIỂU KHIỂN TỪ XA
Dựa vào các ứng dụng thực tiễn của điểu khiển từ xa ta có thể chia làm 2 dạng :điều khiển từ xa bằng vô tuyến và điểu khiển từ xa bằng hữu tuyến
1.2.1 Điều khiển từ xa bằng vô tuyến
Ta có thể điều khiển từ xa bằng tia sáng hồng ngoại, hay sóng siêu âm Môitrường truyền là không khí Với tia hồng ngoại ta chỉ có thể điều khiển các thiết bị ởkhoảng cách gần Vì vậy nó được ứng dụng nhiều trong các thiết bị dân dụng
1.2.2 Điều khiển từ xa bằng hữu tuyến
Với dạng điều khiển này ta lợi dụng vào đường truyền của mạng điện thoại đểđiều khiển các thiết bị từ xa Có thể sử dụng dây song hành, cáp đồng trục, cáp quang
Trang 5để truyền tải tín hiệu.
1.2.3 Dây song hành
Loại dây này chống ẩm, chống được nhiễu điện từ Tuy nhiên khi sử dụng dâynày ở tần số cao sẽ bị suy hao Sự suy hao này phụ thuộc vào chiều dài và đường kínhdây dẫn
1.2.4 Cáp đồng trục
Cáp đồng trục có khả năng chống nhiễu cao Tuy nhiên cáp đồng trục thì khóghép nối, khi nơi phát và nơi thu quá xa sẽ gây mất cân bằng về mass, làm sinh ranhiễu
1.2.5 Cáp quang
Cáp quang có băng thông rất rộng (Từ vài chục MHz đến vài GHz) Cáp quangcho phép truyền trông tin với tốc độ cao, độ suy hao thấp, không bị ảnh hưởng củanhiễu trường điện từ, ít thay đổi đặc tính theo nhiệt độ, cách điện hoàn toàn giữaphần thu và phần phát
1.3 KĨ THUẬT GỬI SỐ BẰNG XUNG LƯỠNG ÂM ĐA TẦN (DUAL TONE MULTIFREQUENCY - DTMF)
1.3.1 Hệ thống DTMF
Hệ thống DTMF đang phát triển và đã trở thành phổ biến trong hệ thống điệnthoại hiện đại hiện nay Hệ thống này còn gọi là hệ thống Touch- Tone, hệ thống đượchình thành vào năm 1960 nhưng đến mãi năm 1970 mới được phát triển rộng rãi Hệthống DTMF giờ đây trở thành chuẩn thay thế cho hệ thống xung kiểu cũ
DTMF là tổng hợp của hai âm thanh nhưng điểm đặc biệt của hai âm thanh này
là không cùng âm nghĩa là tần số của hai âm thanh này không có cùng ước số chungvới âm thanh kia Ví dụ như 750 và 500 thì có chung ước số là 250 vì vậy 750 và 500
là hai âm không thể kết hợp thành tín hiệu DTMF
Lợi ích của việc sử dụng tín hiệu DTMF trong điện thoại là chống được nhiễu tínhiệu do đó tổng đài có thể biết chính xác được phím nào đã được nhấn Ngoài ra nócòn giúp cho người ta sử dụng điện thoại thuận tiện hơn Ngày nay hầu hết các hệthống điện thoại đều sử dụng tín hiệu DTMF Bàn phím chuẩn của loại điện thoại này
có dạng ma trận chữ nhật gồm 3 hàng 4 cột tạo nên tổng cộng 12 phím nhấn: 10 phímchữ số (0 đến 9), hai phím chức năng đặc biệt là ‘*’ và ‘#’ Mỗi một hàng trên bànphím được gán cho một tần số tone thấp, mỗi cột được gán cho một tần số tone cao
Trang 6# 0
Hinh 1.1 Bàn phím chuẩn 12 phím.
1.3.2 Tiếp nhận âm hiệu DTMF.
Tần số DTMF được chọn kỹ để ở tổng đài có lẫn với những âm hiệu khác có thểxuất hiện trên đường đây Bộ thu có những mạch lọc rất tốt chỉ để tiếp nhận các tần sốDTMF và có những mạch đo thời gian để đảm bảo âm hiệu xuất hiện trong thời gian ítnhất là 50ms trước khi nhận lại âm hiệu DTMF
Sau khi được nối thông đến người gọi, bộ thu đã được tách ra khỏi đường dây vàthuê bao có thể dùng bằng nút bấm để điểu chỉnh tín hiệu DTMF đến người bị gọi
1.3.3 So sánh thời gian gửi số
Gửi số bằng lưỡng âm đa tần DTMF nhanh hơn cách quay số rất nhiều về mặtnguyên tắc cũng như trên thực thế Với DTMF thời gian nhận được một số là 50ms vàthời gian nghỉ giữa hai số là 50ms, tổng cộng là 100ms cho mỗi số Giả sử gửi đi 10số:
Với DTMF mất 10ms x 10 = 1s
Ngoài ưu điểm sử dụng dễ dàng, DTMF giảm thời gian chiếm dụng bộ thu số rấtnhiều, giảm bớt số lượng bộ thu số dẫn tới giảm giá thành tổng đài
1.3.4 Yêu cầu đối với bộ thu phát âm hiệu DTMF.
Để kết nối tốt với đường dây cần đảm bảo yêu cầu sau:
Trang 7Người điều khiển Tổng đài IC MT8870 Vi điều khiển Thiết bị
- Điện áp nguồn nuôi một chiều (DC) và mạch vòng phải đượcgiữ ở mức ổn định dù là máy ở xa hay gần tổng đài
- Âm hiệu phải có mức điện ổn định
- Bộ phát âm hiệu DTMF phải phối hợp trở kháng tốt đối vớiđường dây
1.4 Ý TƯỞNG VÀ NGUYÊN LÝ HOẠT ĐỘNG.
Nguyên tắc của điều khiển thiết bị là: tùy vào mã đã được quy định người điềukhiển sẽ nhấn số tương ứng với mục đích điều khiển của mình Mạch điều khiển thiết
bị sẽ dựa vào những số của tổng đài gửi về giải mã từ dạng DTMF sang dạng nhị phânnhờ IC thu DTMF MT8870, số dưới dạng nhị phân từ IC MT8870 đưa về sẽ được sosánh với số lưu sẵn trong vi điều khiển và xuất ra lệnh điều khiển đã được qui định cụthể với từng số
Hinh 1.2 Sơ đồ khối thực hiện.
Dựa vào đường truyền qua mạng điện thoại, ta thiết kế hệ thống điều khiển thiết
bị từ xa qua đường dây điện thoại Hệ thống này thiết kế để điều khiển đóng ngắt cácthiết bị từ xa với sự giúp đỡ của vi điều khiển 89c51 Hệ thống được thiết kế trên môhình đóng ngắt 4 thiết bị và phản hồi bằng tin nhắn Khi có cuộc gọi vào số thuê bao,
bộ xử lý trung tâm sẽ kích hoạt mạch tạo tải giả hoạt động để kết nối thuê bao Sau khihai thuê bao đã kết nối Lúc này người điều khiển có thể bật tắt thiết bị nhờ các phímchức năng trên điện thoại
Trong hệ thống này các số được quy định cho các thiết bị như sau:
Trang 9cấp những hỗ trợ mở rộng trên Chip dùng cho những biến một Bit như là kiểu dữ liệuriêng biệt cho phép quản lý và kiểm tra Bit trực tiếp trong điều khiển
* 89C51 là một vi điều khiển 8 Bit, chế tạo theo công nghệ CMOS chất lượngcao, với 4 KB EEPROM (Flash Programmable and erasable read only memory) Thiết
bị này được chế tạo bằng cách sử dụng bộ nhớ không bốc hơi mật độ cao của ATMEL
và tương thích với chuẩn công nghiệp MCS - 51 về tập lệnh và các chân ra ATMELAT89C51 là một vi điều khiển mạnh (có công suất lớn), nó cung cấp một sự linh độngcao và giải pháp về giá cả đối với nhiều ứng dụng vi điều khiển
Các đặc điểm của 89C51 được tóm tắt như sau:
* 4 KB bộ nhớ có thể lập trình lại nhanh
* Tần số hoạt động từ: 0Hz đến 24 MHz
* 2 bộ Timer/counter 16 Bit
* 128 Byte RAM nội
* 4 Port xuất/ nhập I/O 8 bít
* Giao tiếp nối tiếp
* 64 KB vùng nhớ mã ngoài
* 64 KB vùng nhớ dữ liệu ngoài
* Xử lý Boolean (hoạt động trên bit đơn)
* 210 vị trí nhớ có thể định vị bit
Trang 10OTHER REGISTER
128 byte RAM
128 byte RAM 8051\8052
ROM 4K: 8031 4K: 8051 EPROM 4K: 8951
INTERRUPT
CONTROL
SERIAL PORT TIMER 0 TIMER 1 TIME 2
Hinh 2.1 Sơ đồ khối vi điều khiển 89C51.
Phần chính của vi điều khiển 89C51 là bộ xử lý trung tâm (CPU: centralprocessinunit) bao gồm:
- Thanh ghi tích lũy A
- Thanh ghi tích lũy phụ B, dùng cho phép nhân và phép chia
- Đơn vị logic học (ALU: Arithmetic Logical Unit)
Trang 11- Từ trạng thái chương trình (PSW: Program Status Word)
- Bốn băng thanh ghi
Hai bộ định thời 16 bit hoạt động như một bộ đếm
Các cổng (port0, port1, port2, port3) sử dụng vào mục đích điều khiển
Ở cổng 3 có thêm các đường dẫn điều khiển dùng để trao đổi với một bộ nhớ bênngoài, hoặc để đầu nối giao diện nối nối tiếp, cũng như các đường ngắt dẫn bên ngoài.Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ, làmviệc độc lập với nhau Tốc độ truyền qua cổng nối tiếp có thể đặt trong dải rộng vàđược ấn định bằng một bộ định thời
Trong vi điều khiển 89C51 có hai thành phần quan trọng khác đó là bộ nhớ và cácthanh ghi
Bộ nhớ gồm có bộ nhớ Ram và bộ nhớ Rom (chỉ có ở 8051) dùng để lưu trữ dữliệu và mã lệnh
Các thanh ghi sử dụng để lưu trữ thông tin trong quá trình xử lý Khi CPU làmviệc, nó làm thay đổi nội dung của các thanh ghi
2.1.2 KHẢO SÁT SƠ ĐỒ VÀ CHỨC NĂNG CÁC CHÂN
2.1.2.1 Sơ đồ chân 89C51
Mặc dù các thành viên của họ 8051 (ví dụ 8751, 89S52, 89C51, DS5000) đều cócác kiểu đóng vỏ khác nhau, chẳng hạn như hai hàng chân DIP (Dual In-Line Pakage),dạng vỏ dẹt vuông QPF (Quad Flat Pakage) và dạng chip không có chân đỡ LLC
Trang 12(Leadless Chip Carrier) thì chúng đều có 40 chân cho các chức năng khác nhau nhưvào ra I/O, đọc RD\, ghi WR\, địa chỉ, dữ liệu và ngắt Cần phải lưu ý một số hãngcung cấp một phiên bản 8051 có 20 chân với số cổng vào ra ít hơn cho các ứng dụngyêu cầu thấp hơn Tuy nhiên vì hầu hết các nhà phát triển sử dụng chip đóng vỏ 40chân với hai hàng chân DIP nên đồ án chỉ tập trung mô tả phiên bản này.
Hinh 2.2 Sơ đồ chân 89C51.
2.1.2.2 Chức năng các chân của 89C51
89C51 có tất cả 40 chân có chức năng như các đường xuất nhập Trong đó có 24chân có tác dụng kép (có nghĩa 1 chân có 2 chức năng), mỗi đường có thể hoạt độngnhư đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus dữliệu và bus địa chỉ
a Các Port:
Port 0: là port có 2 chức năng ở các chân 32 - 39 của 89C51 Trong các thiết kế
cỡ nhỡ không dùng hộ nhớ mở rộng nó có chức năng như các đường I/O Đối với cácthiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu
Port 1: ( chân 4 – 8 ): Là port I/O trên các chân 1 - 8 Các chân được ký hiệu
P1.0, P1.2 có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần Port 1 không có
Trang 13chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài
Port 2: (chân 21 – 28), có 8 bit (P2.0 – P2.7), có hai công dụng:
+ Khi sử dụng bộ nhớ nội thì port 2 là một port xuất / nhập thông thường
+ Khi sử dụng bộ nhớ ngoài thì port 2 đóng vai trò là byte cao của bus địa chỉ
Port3: (chân 10 – 17), có 8 bit (P3.0 – P3.7), có hai công dụng (port nối tiếp)
+ Là các đường xuất / nhập thông thường
+ Nó thực hiện các chức năng đặc biệt:
Bảng 2.1 Chức năng các chân Port 3.
b Các ngõ tín hiệu điều khiển:
* Ngõ tín hiệu PSEN (Program 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 thường được nói đến chân OE (output enable) của EPROM cho phépđọc các byte mã lệnh
+ PSEN ở mức thấp trong thời gian Microcontroller 89C51 lấy lệnh Các mã lệnhcủa chương trình được đọc từ EPROM qua bus dữ liệu và được chốt vào thanh ghi
Trang 14lệnh bên trong 89C51 để giải mã lệnh Khi 89C51 thi hành chương trình trong ROMnội PSEN sẽ ở mức logic 1
* Ngõ tín hiệu điều khiển ALE (Address Latch Enable):
+ Khi 89C51 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ vàbus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu ra ALE ở chân thứ
30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nóichúng với IC chốt
+ Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò
là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động
* Ngõ tín hiệu EA (External Access):
Tín hiệu vào EA ở chân 31 thường được mắc lên nguồn Nếu ở mức 1, 89C51 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp 8 Kbyte Nếu ở mức 0,89C51 sẽ thi hành chương trình từ bộ nhớ mở rộng Chân EA được lấy làm chân cấpnguồn 21V khi lập trình cho EPROM trong 89C51
* Ngõ tín hiệu RST (Reset): Ngõ vào RST ở chân 9 là ngõ vào Reset của 89C51 Khi ngõ vào tín hiệu này đưa lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trongđược nạp những giá trị thích hợp để khởi động hệ thống Khi cấp điện mạch tự độngReset
* Các ngõ vào bộ dao động X1, X2:
Bộ dao động được tích hợp bên trong 89C51, khi sử dụng 89C51 người thiết kế chỉ cần kết nối thêm thạch anh và các tụ như hình vẽ trong sơ đồ Tần số thạch anhthường sử dụng cho 89C51 là 12 Mhz
* Chân 40 (Vcc) được nổi lên nguồn 5V, chân 20 (Vss) = 0V
Trang 15Bộ nhớ trên chip External Memory
2.1.3 CẤU TRÚC BÊN TRONG VI ĐIỀU KHIỂN
2.1.3.1 Tổ chức bộ nhớ
Hinh 2.3 Sơ đồ tổ chức bộ nhớ.
- Bộ nhớ trong 89C51 bao gồm ROM và RAM RAM trong 89C51 bao gồmnhiều thành phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bankthanh ghi và các thanh ghi chức năng đặc biệt
- 89C51 có bộ nhớ theo cấu trúc Harvard: có những vùng bộ nhớ riêng biệt chochương trình và dữ liệu Chương trình và dữ liệu có thể chứa bên trong 89C51 nhưng89C51 vẫn có thể kết nối với 64K byte bộ nhớ chương trình và 64K byte dữ liệu
Các đặc tính cần chú ý là:
- Các thanh ghi và các port xuất nhập đã được định vị (xác định) trong bộ nhớ và
có thể truy xuất trực tiếp giống như các cơ sở địa chỉ bộ nhớ khác
- Ngăn xếp bên trong Ram nội nhỏ hơn so với Ram ngoại
RAM bên trong 89C51 được phân chia như sau:
- Các bank thanh ghi có địa chỉ từ 00H đến 1FH RAM địa chỉ hóa từng bit có địachỉ từ 20H đến 2FH RAM đa dụng từ 30H đến 7FH
- Các thanh ghi chức năng đặc biệt từ 80H đến FFH
a RAM đa dụng:
Trang 16- Mặc dù trên hình vẽ cho thấy 80 byte đa dụng chiếm các địa chỉ từ 30H đến7FH, byte dưới từ 00H đến 1FH cũng có thể dùng với mục đích tương tự (mặc dù cácđịa chỉ này đã có mục đích khác)
- Mọi địa chỉ trong vùng RAM đa dụng đều có thể truy xuất tự do dùng kiểu địachỉ trực tiếp hoặc gián tiếp
b RAM có thể truy xuất từng bit:
- 89C51 chứa 210 bit được địa chỉ hóa, trong đó có 128 bit có chứa các byte cóchứa các địa chỉ từ 20F đến 2FH và các bit còn lại chứa trong nhóm thanh ghi có chứcnăng đặc biệt
- Ý tưởng truy xuất từng bit bằng phần mềm là các đặc tính mạnh củamicrocontroller xử lý chung Các bit có thể được đặt, xóa, AND, OR , với 1 lệnh đơn
Đa số các microcontroller xử lý đòi hỏi một chuỗi lệnh đọc - sửa - ghi để đạt đượcmục đích tương tự Ngoài ra các port cũng có thể truy xuất được từng bit
+ 128 bit truy xuất từng bit này cũng có thể truy xuất như các byte hoặc như cácbit phụ thuộc vào lệnh được dùng
c Các bank thanh ghi:
32 byte thấp của bộ nhớ nội được dành cho các bank thanh ghi Bộ lệnh 89C51
hỗ trợ 8 thanh ghi có tên là R0 đến R7 và theo mặc định sau khi reset hệ thống, cácthanh ghi này có các địa chỉ từ 00H đến 07H
- Các lệnh dùng các thanh ghi R0 đến R7 sẽ ngắn hơn và nhanh hơn so với cáclệnh có chức năng tương ứng dùng kiểu địa chỉ trực tiếp Các dữ liệu được dùngthường xuyên nên dùng một trong các thanh ghi này
- Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghi đượctruy xuất bởi các thanh ghi R0 đến R7 để chuyển đổi việc truy xuất các bank thanh ghi
ta phải thay đổi các bit chọn bank trong thanh ghi trạng thái
2.1.3.2 Các thanh ghi có chức năng đặc biệt:
- Các thanh ghi nội của 89C51 được truy xuất ngầm định bởi bộ lệnh
- Các thanh ghi trong 89C51 được định dạng như một phần của RAM trên chip vì
Trang 17vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi bộ đếm chương trình và thanhghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp) Cũng như R0 đến R7,89C51 có 21 thanh ghi có chức năng đặc biệt (SFR: Special Function Register) ở vùngtrên của RAM nội từ địa chỉ 80H đến FFH
* Chú ý: Tất cả 128 địa chỉ từ 80H đến FFH không được định nghĩa, chỉ có 21 thanh
ghi có chức năng đặc biệt được định nghĩa sẵn các địa chỉ
- Ngoại trừ thanh ghi A có thể được truy xuất ngầm như đã nói, đa số các thanhghi có chức năng đặc biệt SFR có thể địa chỉ hóa từng bit hoặc byte
Thanh ghi trạng thái chương trình (PSW: Prorgam Status Word): ở địa chỉ
D0H
Bảng 2.2 Các bit trong thanh ghi trạng thái chương trình.
PSW.4 RS1 D4H Register bank select 1: chọn băng thanh
ghi bit 1PSW.3 RS0 D3H Register bank select 0: chọn băng thanh
ghi bit 0
Chức năng từng bit trạng thái chương trình:
+ Cờ Carry CY: Cờ nhớ có tác dụng kép Thông thường nó được dùng cho các
lệnh toán học: C = 1 nếu phép toán cộng có sự tràn hoặc phép trừ có mượn và ngượclại C = 0 nếu phép toán cộng không tràn và phép trừ không có mượn
+ Cờ Carry phụ AC: Khi cộng những giá trị BCD (Binary Code Decimal), cờ
nhớ phụ AC được thiết lập nếu kết quả 4 bit thấp nằm trong phạm vi điều khiển 0FH Ngược lại AC = 0
0AH-+ Cờ 0 (Flag 0): Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của người
Trang 18dùng
+ Những bit chọn bank thanh ghi truy xuất: RS1 và RS0 quyết định dãy thanh
ghi tích cực Chúng được xóa sau khi reset hệ thống và được thay đổi bởi phần mềmkhi cần thiết
Tùy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tích cực tương ứng làBank 0, Bank 1, Bank 2, Bank 3
+ Cờ tràn OV: Cờ tràn được thiết lập sau một hoạt động cộng hoặc trừ nếu có sự
tràn toán học Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểmtra bit này để xác định xem kết quả có nằm trong tầm xác định không Khi các sốkhông có dấu được cộng bit OV được bỏ qua Các kết quả lớn hơn +127 hoặc nhỏ hơn
- 128 thì bit OV = 1
+ Bit Party (P): Bit tự động được thiết lập hay xóa ở mỗi chu kỳ máy để lập
trạng thái chẵn với thanh ghi A Sự đếm các bit 1 trong thanh ghi A cộng với bit Parityluôn luôn chẵn Ví dụ A chứa 10101101B thì bit P thiết lập lên một để tổng số bit 1trong A và P tạo thành số chẵn
Bit Parity thường được dùng trong sự kết hợp với những thủ tục của Port nối tiếp
để tạo ra bit Parity trước khi phát đi hoặc kiểm tra bit Parity sau khi thu
+Thanh ghi B: Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi A cho
các phép toán nhân chia Lệnh MUL AB( lấy A chia B), kết quả nguyên đặt vào A, số
dư đặt vào B Thanh ghi B có thể được dùng như một thanh ghi đệm trung gian đa mụcđích Nó là những bit định vị thông qua những địa chỉ từ F0H F7H
+ Con trỏ Ngăn xếp SP (Stack Pointer): Con trỏ ngăn xếp là một thanh ghi 8 bit
ở địa chỉ 81H Nó chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh ngăn xếp Các lệnhtrên ngăn xếp bao gồm các lệnh cất dữ liệu vào ngăn xếp (PUSH) và lấy dữ liệu rakhỏi ngăn xếp (POP) Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trước khi ghi dữliệu và lệnh lấy ra khỏi ngăn xếp sẽ làm giảm SP Ngăn xếp của 8031/8051 được giữtrong RAM nội và giới hạn các địa chỉ có thể truy xuất bằng địa chỉ gián tiếp, chúng là
128 byte đầu của 89C51
Trang 19- Để khởi động SP với ngăn xếp bắt đầu tại địa chỉ 60H, các lệnh sau đây đượcdùng: MOV SP, #5F
- Với lệnh trên thì ngăn xếp của 89C51 chỉ có 32 byte vì địa chỉ cao nhất củaRAM trên chip là 7FH Sở dĩ giá trị 5FH được nạp vào SP vì SP tăng lên 60H trướckhi cất byte dữ liệu
- Khi Reset 89C51, SP sẽ mang giá trị mặc định là 07H và dữ liệu đầu tiên sẽđược cất vào ô nhớ ngăn xếp có địa chỉ 08H Nếu phần mềm ứng dụng không khởiđộng SP một giá trị mới thì bank thanh ghi 1 có thể cả 2 và 3 sẽ không dùng được vìvùng RAM này đã được dùng làm ngăn xếp Ngăn xếp được truy xuất trực tiếp bằngcác lệnh PUSH và POP để lưu trữ tạm thời và lấy lại dữ liệu, hoặc truy xuất ngầmbằng lệnh gọi chương trình con (ACALL, LCALL) và các lệnh trở về (RET, RETI) đểlưu trữ giá trị của bộ đếm chương trình khi bắt đầu thực hiện chương trình con và lấylại khi kết thúc chương trình con
+ Con trỏ dữ liệu DPTR (Data Pointer): Con trỏ dữ liệu (DPTR) được dùng để
truy xuất bộ nhớ ngoài là một thanh ghi 16 bit ở địa chỉ 82H (DPL: byte thấp) và 83H (DPH: byte cao) Ba lệnh sau sẽ ghi 55H vào RAM ngoài ở địa chỉ 1000H:
+ Các thanh ghi Port (Port Register): Các Port của 89C51 bao gồm Port 0 ở địa
chỉ 80H Port 1 ở địa chỉ 90H, Port 2 ở địa chỉ A0H và Port 3 ở địa chỉ B0H Tất cả cácPort này đều có thể truy xuất từng bit nên rất thuận tiện trong khả năng giao tiếp
+ Các thanh ghi Timer (Timer Register): 89C51 có chứa hai bộ định thời/ bộ
đếm 16 bit được dùng cho việc định thời được đếm sự kiện Timer 0 ở địa chỉ 8AH
Trang 20(TL0: byte thấp) và 8CH (TH0: byte cao) Timer 1 ở địa chỉ 8BH (TL1: byte thấp) và8DH (TH1: byte cao) Việc khởi động timer được thiết lập bởi Timer Mode (TMOD) ởđịa chỉ 89H và thanh ghi điều khiển Timer (TCON) ở địa chỉ 88H Chỉ có TCON đượcđịa chỉ hóa từng bit
+ Các thanh ghi Port nối tiếp (Serial Port Register): 89C51 chứa một Port nối
tiếp cho việc trao đổi thông tin với các thiết bị nối tiếp như máy tính, modem hoặcgiao tiếp nối tiếp với các IC khác Một thanh ghi đệm dữ liệu nối tiếp (SBUF) ở địa chỉ99H sẽ giữ cả hai dữ liệu truyền và dữ liệu nhập Khi truyền dữ liệu ghi lên SBUF, khinhận dữ liệu thì đọc SBUF Các mode khác nhau được lập trình qua thanh ghi điềukhiển Port nối tiếp (SCON) được địa chỉ hóa từng bit ở địa chỉ 98H
+ Các thanh ghi ngắt (Interrupt Register): 89C51 có cấu trúc 5 nguồn ngắt, 2
mức ưu tiên Các ngắt bị cấm sau khi bị reset hệ thống và sẽ được cho phép bằng việcghi thanh ghi cho phép ngắt (IE) ở địa chỉ A8H Cả hai được địa chỉ hóa từng bit
+ Thanh ghi điều khiển nguồn PCON (Power Control Register): Thanh ghi
PCON không có bit định vị Nó ở địa chỉ 87H chứa nhiều bit điều khiển Thanh ghiPCON được tóm tắt như sau:
Bit 7 (SMOD): Bit có tốc độ Baud ở chế độ 1, 2, 3 ở port nối tiếp khithiết lập
Bit 6, 5, 4 : Không có địa chỉ
Bit 3 (GF1): Bit cờ đa năng 1
Bit 2 (GF0): Bit cờ đa năng 2
Bit 1 (PD): Thiết lập để khởi động chế độ 1và thoát
Bit 0 (IDL): Set để khởi động chế độ 0 và thoát khi ngắt mạch hoặc reset Các bit điều khiển chế độ 0 và 1 có tác dụng chính trong tất cả các IC họ MSC -
51 nhưng chỉ được thi hành trong sự biên dịch của CMOS
2.1.3.3 Bộ nhớ ngoài (External memory)
89C51 có khả năng mở rộng bộ nhớ lên đến 64K byte bộ nhớ chương trình và64K byte bộ nhớ dữ liệu ngoài Do đó có thể dùng thêm RAM và ROM nếu cần
Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được đọc hoặc ghi khi được cho phép
Trang 21của tín hiệu RD\ và WR Hai tín hiệu này nằm ở chân P3.7 (RD) và P3.6 (WR)
Hoạt động Reset: 89C51 có 2 cách thực hiện reset: reset bằng tay hoặc reset tự
động
• Reset tự động:
- Mạch Reset tự động thường được dùng để xác định trạng thái đầu tiên của mạchngay khi vừa cấp nguồn để mạch luôn luôn hoạt động đúng như yêu cầu thiết kế Khichưa cấp nguồn điện áp trên tụ bằng 0V, nên khi vừa cấp điện tụ nạp từ 0V -> Vcc, do
đó khi cấp điện thì điện áp đưa vào chân Reset là Vcc, nên mạch tự động hệ thống
• Reset bằng tay:
- Thường trong hệ thống rất cần động tác Reset khi mạch đang hoạt động, do đóchỉ có mạch Reset khi vừa bật máy là chưa đủ Việc thiết kế mạch Reset bằng tay rấtđơn giản chỉ việc thêm vào mạch Reset tự động một SW và điện trở Nguyên lý mạchgiống như mạch Reset tự động
- Trang thái của tất cả các thanh ghi trong 89C51 sau khi reset hệ thống:
Bảng 2.3 Trạng thái các thanh ghi sau reset
Trang 222.1.4 HOẠT ĐỘNG CỦA TIMER
2.1.4.1 Giới thiệu
Hinh 2.4 Cấu tạo bộ định thời timer
Timer là một chuỗi các Flip-Flop chia đôi tần số mắc nối tiếp với nhau, chúngnhận tín hiệu vào làm nguồn xung nhịp Xung nhịp được đưa vào Flip-Flop thứ nhất đểchia đôi tần số xung nhịp Ngõ ra của Flip-Flop thứ nhất làm xung nhịp cho Flip-Flopthứ hai…Vì mỗi tầng kế tiếp chia đôi cho nên Timer có n tầng sẽ cho xung ra có tần số
là tần số xung nhịp chia cho 2n Ngõ ra của tầng cuối làm xung nhịp cho Flip-Flop báotràn của Timer Giá trị nhị phân trong các Flip-Flop của Timer có thể xem như số đếmxung nhịp (hoặc các sự kiện) từ khi Timer bắt đầu chạy Ví dụ, Timer 16 bit sẽ đếm lên
từ 0000H đến FFFFH Cờ báo tràn sẽ lên 1 khi số đếm tràn từ FFFFH đến 0000H
89C51 có hai Timer 16 bit, mỗi Timer có bốn chế độ hoạt động Người ta sửdụng Timer để: Định khoảng thời gian, đếm sự kiện, tạo tốc độ Baud chocổng nối tiếp có sẵn trong 89C51
- Vì mỗi tầng kế tiếp chia cho 2, nên Timer n tầng phải chia tần số clock ngõ vàocho 2n Ngõ ra của tầng cuối cùng là clock của Flip Flop tràn Timer hoặc cờ mà nókiểm tra bởi phần mềm hoặc sinh ra ngắt Giá trị nhị phân trong các FF của bộ Timer
Trang 23có thể được nghỉ như đếm xung clock hoặc các sự kiện quan trọng
Ví dụ: Timer 16 bit có thể đếm đến từ FFFFH sang 0000H
- Các Timer được ứng dụng thực tế cho các hoạt động định hướng, 89C51 có 2
bộ Timer 16 bit, mỗi Timer có 4 mode hoạt động Các Timer dùng để đếm giờ, đếmcác sự kiện cần thiết và sự sinh ra tốc độ của tốc độ Baud cho Port nối tiếp
- Mỗi sự định thời là một Timer 16 bit, do đó tầng cuối cùng là tầng thứ 16 sẽchia tần số clock vào cho 216 = 65536
- Trong các ứng dụng định thời, 1 Timer được lập trình để tràn ở một khoảng thờigian đều đặn và được thiết lập cờ tràn Timer Cờ được dùng để đồng bộ chương trình
để thực hiện một hoạt động như việc đưa tới 1 tầng các ngõ vào hoặc gửi dữ liệu đếmngõ ra Các ứng dụng khác có sử dụng việc ghi giờ đều của Timer để đo thời gian đãtrôi qua hai trạng thái (ví dụ đo độ rộng xung) Việc đếm một sự kiện được dùng đểxác định số lần xuất hiện của sự kiện đó, tức thời gian trôi qua giữa các sự kiện
2.1.4.2 Thanh ghi điều khiển Timer TCON:
Thanh ghi TCON chứa các bit điều khiển và trạng thái cho timer 0 và timer 1.Bốn bit cao của TCON (TCON.4 – TCON.7) được dùng để bật timer chạy và tắt timer(TR0, TR1), hoặc để báo hiệu tràn timer (TF0, TF1) Bốn bit thấp trong TCON(TCON.0 – TCON.3) không ảnh hưởng đến các Timer Chúng được dùng để phát hiện
và khởi động ngắt ngoài
Bảng 2.4 Thanh ghi TCON
Bit Ký hiệu Địa chỉ bit Mô tả
TCON.6 TR1 8EH Bit điều khiển Timer 1 chạy
TCON.4 TR0 8CH Bit điều khiển Timer 0 chạy
TCON.3 IE1 8BH Cờ cạnh ngắt 1 bên ngoài
TCON.2 IT1 8AH Cờ kiểu ngắt 1 bên ngoài
TCON.1 IE0 89H Cờ cạnh ngắt 0 bên ngoài
TCON.0 IT0 88H Cờ kiểu ngắt 0 bên ngoài
2.1.4.3 Thanh ghi mode timer (TMOD):
Trang 24Thanh ghi TMOD gồm hai nhóm 4 bit là: 4 bit thấp đặt mode hoạt động choTimer 0 và 4 bit cao đặt mode hoạt động cho Timer 1 8 bit của thanh ghi TMOD đượctóm tắt như sau:
Bảng 2.5 Thanh ghi TMOD
n
Ti me r
* Với hai bit M0 và M1 của TMOD để chọn mode cho Timer 0 hoặc Timer 1
TMOD không có bit định vị, nó thường được LOAD một lần bởi phần mềm ởđầu chương trình để khởi động mode Timer Sau đó sự định giờ có thể dừng lại vàđược khởi động lại như thế bởi sự truy xuất các thanh ghi chức năng đặc biệt củaTimer
2.1.4.4 Các mode và cờ tràn
- 89C51 có 2 Timer và Timer 0 và Timer 1 Ta dùng ký hiệu TLx và THx để chỉ
2 thanh ghi byte thấp và byte cao của Timer 0 hoặc Timer 1
Mode Timer 13 bit (MODE 0):
- Mode 0 là mode Timer 13 bit, trong đó byte cao của Timer (THx) được đặt thấp
Trang 25và 5 bit trọng số thấp nhất của byte thấp Timer (TLx) đặt cao để hợp thành Timer 13bit 3 bit cao của TLx không dùng
Mode Timer 16 bit (MODE 1):
- Mode 1 là mode Timer 16 bit, tương tự như mode 0 ngoại trừ Timer này hoạtđộng như một Timer đầy đủ 16 bit, xung clock được dùng với sự kết hợp các thanh ghicao và thấp (TLx, THx) Khi xung clock được nhận vào, bộ đếm Timer tăng lên0000H, 0001H, 0002H, và một sự tràn sẽ xuất hiện khi có sự chuyển trên bộ đếmTimer từ FFFH sang 0000H và sẽ thiết lập cờ tràn Timer, sau đó Timer đếm tiếp
- Cờ tràn là bit TFx trong thanh ghi TCON mà nó sẽ được đọc hoặc ghi bởi phầnmềm
- Bit có trọng số lớn nhất (MSB) của giá trị trong thanh ghi Timer là bit 7 củaTHx và bit có trọng số thấp nhất (LSB) và bit 0 của TLx
Mode tự động nạp 8 bit (MODE 2):
- Mode 2 là mode tự động nạp 8 bit, byte thấp TLx của Timer hoạt động như mộtTimer 8 bit trong khi byte cao THx của Timer giữ giá trị Reload Khi bộ đếm tràn từFFH sang 00H, không chỉ cờ tràn được set mà giá trị trong THx cũng được nạp vàoTLx:
Bộ đếm được tiếp tục từ giá trị này lên đến sự chuyển trạng thái từ FFH sang 00H
kế tiếp và cứ thế tiếp tục Mode này thì phù hợp bởi vì các sự tràn xuất hiện cụ thể màmỗi lúc nghỉ thanh ghi TMOD và THx được khởi động
Mode Timer tách ra (MODE 3):
- Mode 3 là mode Timer tách ra và là sự khác biệt cho mỗi Timer
- Timer 0 ở mode 3 được chia là 2 timer 8 bit TL0 và TH0 hoạt động như nhữngTimer riêng lẻ với sự tràn sẽ set các bit TL0 và TF1 tương ứng
- Timer 1 bị dừng lại ở mode 3, nhưng có thể được khởi động bởi việc ngắt nóvào một trong các mode khác Chỉ có nhược điểm là cờ tràn TF1 của Timer 1 không bịảnh hưởng bởi các sự tràn của Timer 1 bởi vì TF1 được nối với TH0
- Khi timer 0 ở chế độ 3, timer 1 vẫn có thể sử dụng bởi port nối tiếp như tạo tốc
Trang 26độ baud (vì nó không còn được nối với TF1)
2.1.4.5 Các nguồn xung clock (CLOCK SOURCES):
- Có hai nguồn xung clock có thể đếm giờ là sự định giờ bên trong và sự đếm sựkiện bên ngoài Bit C/T trong TMOD cho phép chọn 1 trong 2 khi Timer được khởiđộng
Hinh 2.5 Nguồn cấp xung nhịp Đếm sự kiện (Event Counting):
- Nếu bit C/T = 1 thì bộ Timer được ghi giờ từ nguồn bên ngoài trong nhiều ứngdụng, nguồn bên ngoài này cung cấp 1 sự định giờ với 1 xung trên sự xảy ra của sựkiện Sự định giờ là sự đếm sự kiện Con số sự kiện được xác định trong phần mềm bởiviệc đọc các thanh ghi Timer TLx/THx, bởi vì giá trị 16 bit trong các thanh này tănglên cho mỗi sự kiện
- Nguồn xung clock bên ngoài đưa vào chân P3.4 là ngõ nhập của xung clock bởi Timer 0 (T0) và P3.5 là ngõ nhập của xung clock bởi Timer 1 (T1)
- Trong các ứng dụng đếm các thanh ghi Timer được tăng trong đáp ứng của sựchuyển trạng thái từ 1 sang 0 ở ngõ nhập Tx
2.1.4.6 Sự bắt đầu, dừng và điều khiển các timer:
- Bit TRx trong thanh ghi có bit định vị TCON được điều khiển bởi phần mềm đểbắt đầu hoặc kết thúc các Timer Để bắt đầu các Timer ta thiết lập bit TRx và để kếtthúc Timer ta xóa TRx
Ví dụ Timer 0 được bắt đầu bởi lệnh SETB TR0 và được kết thúc bởi lệnh CLR
Trang 27TR0 (bit Gate = 0) Bit TRx bị xóa sau sự reset hệ thống, do đó các Timer bị cấm bằng
sự mặc định
-Thêm phương pháp nữa để điều khiển các Timer là dùng bit GATE trong thanhghi TMOD và ngõ nhập bên ngoài INTx Điều này được dùng để đo các độ rộng xung
Hinh 2.6 Thời gian hoạt động của mode 1
2.1.4.7 Sự khởi động và truy xuất các thanh ghi timer:
- Các Timer được khởi động 1 lần ở đầu chương trình để đặt mode hoạt động chochúng Sau đó trong chương trình các Timer được bắt đầu, được xóa, các thanh ghiTimer được đọc và cập nhật… theo yêu cầu của từng ứng dụng cụ thể
- TMOD là thanh ghi đầu tiên được khởi tạo, bởi vì đặt mode hoạt động cho cácTimer Ví dụ khởi động cho Timer 1 hoạt động ở mode 1 (mode Timer 16 bit) và đượcghi giờ bằng dao động trên Chip ta dùng lệnh: MOV TMOD, #00001000B
- Trong lệnh này M1 = 0, M0 = 1 để vào mode 1 và C/T = 0, GATE = 0 để chophép ghi giờ bên trong đồng thời xóa các bit mode của Timer 0 Sau lệnh trên Timervẫn chưa đếm giờ, nó chỉ bắt đầu đếm giờ khi thiết lập bit điều khiển chạy TR1 của nó
- Nếu ta không gán giá trị đầu cho các thanh ghi TLx/THx thì Timer sẽ bắt đầuđếm từ 0000H lên và khi tràn từ FFFFH sang 0000H nó sẽ bắt đầu tràn TFx rồi tiếp tụcđếm từ 0000H lên tiếp…
- Ta có thể lập trình chờ sau mỗi lần tràn ta sẽ xóa cờ TFx và quay vòng lặp gáncho TLx/THx để Timer luôn luôn bắt đầu đếm từ giá trị gán lên theo ý ta mong muốn
Trang 28- Đặc biệt những sự gán nhỏ hơn 256 ở chế độ 2 Sau khi khởi gán giá trị đầu vàoTHx, khi thiết lập bit TRx thì Timer sẽ bắt đầu đếm giá trị khởi gán và khi tràn từ FFHsang 00H trong TLx, cờ TFx tự động được set đồng thời giá trị khởi gán mà ta khởigán cho Thx được nạp tự động vào TLx và Timer lại được đếm từ giá trị khởi gán nàylên Nói cách khác, sau mỗi tràn ta không cần khởi gán lại cho các thanh ghi Timer màchúng vẫn đếm được lại từ giá trị ban đầu
2.1.5 CỔNG NỐI TIẾP
2.1.5.1 Giới thiệu:
+ 89C51 có 1 port nối tiếp, có thể hoạt động theo nhiều chế độ
+ Chức năng chính của port nối tiếp là:
- Chuyển đổi từ song song sang nối tiếp đối với dữ liệu xuất và ngược lại đối với
dữ liệu nhập, truy cập phần cứng với port nối tiếp thông qua port 3: p3.0 (RXD) chân
- Thanh ghi SCON ở địa chỉ 98H được địa hóa theo từng bit: chứa các bit trạngthái và các bit điều khiển Các bit trạng thái được kiểm tra trong phần mềm hoặc đượclập trình để tạo ngắt
- Tần số hoạt động của port nối tiếp hay tốc độ baud có thể cố định (mạch daođộng trong 89C51) hoặc thay đổi được (timer 1 cung cấp xung nhịp, và phải được lậptrình tương ứng (trong timer 2 của 89C52/80C52 có thể cung cấp xung nhịp)
2.1.5.2 Thanh ghi port nối tiếp:
Chế độ hoạt động của port nối tiếp được đặt bằng các thanh ghi Sau đây là bảngtóm tắt của thanh ghi SCON:
Bảng 2.6 Thanh ghi Port nối tiếp
Thứ tự bit Tên bit Địa chỉ Chức năng
Trang 29SCON.7 SM0 9FH Chế độ cổng nối tiếp bit 0
SCON.6 SM1 9EH Chế độ cổng nối tiếp bit 1
SCON.5 SM2 9DH Chế độ hoạt động đặc biệt cho port nối tiếp
SCON.4 REN 9CH Bit cho phép thu
SCON.3 TB8 9BH Bit dữ liệu phát thứ 9
SCON.2 RB8 9AH Bit dữ liệu thu thứ 9
SCON.1 TI 99H Bit ngắt phát (được thiết lập lên 1 khi kết thúc truyền
ký tự và xóa bằng phần mềm)SCON.0 RI 98H Bit ngắt thu (được thiết lập lên 1 khi kết thúc nhận
ký tự và xóa bằng phần mềm)
Các chế độ port nối tiếp:
Bảng 2.7 Các chế độ hoạt động
Trước khi sử dụng port nối tiếp ta phải khởi tạo SCON đúng chế độ ta mongmuốn như đã được quy định như trên
2.1.5.3 Các chế độ hoạt động
Port nối tiếp có 4 chế độ hoạt động Trong đó có 3 chế độ truyền thông bất đồng
bộ Với 1 ký tự được phát hoặc thu đều được đóng khung bằng bit start và kết thúcbằng 1 bit stop Chế độ còn lại hoạt động như 1 thanh ghi dịch đơn giản
a Thanh ghi dịch 8 bit (chế độ 0):
Chế độ này được chọn khi SM0 = 0 và SM1 = 0 Dữ liệu vào ra ở chân RXD, cònTXD xuất xung nhịp dịch Bit đầu tiên của thu hoặc phát là LSB Tốc độ cố định 1/12của dao động trên chip
Việc phát đi được khởi động bằng bất cứ lệnh nào ghi dữ liệu vào SBUF Dữ liệuđược dịch ra ngoài trên đường RXD (P3.0) với các xung nhịp được gửi ra từ chânTXD (P3.1) Mỗi bit phát đi hợp lệ trong 1 chu kỳ máy
Việc thu khi bit REN = 1 và RI = 0 Khi RI bị xóa, các xung nhịp được đưa ra
Trang 30đường TXD, bắt đầu chu kì máy kế tiếp, và dữ liệu theo xung ra chân RXD Lấy xungnhịp cho dữ liệu vào port nối tiếp xảy ra ở sườn dương của TXD
b UART 8 bit với tốc độ baud thay đổi được (chế độ 1):
UART (universal Asynchronous receiver/transmitter): bộ phát thu bất đồng bộvạn năng) với chức năng thu/ phát nối tiếp Với mỗi ký tự dữ liệu đi trước là bit start ởmức thấp và theo sau là bit stop ở mức cao Có hoặc không bit kiểm tra chẵn lẻ parity
Ở chế độ này 10 bit được phát trên TXD hoặc thu trên RXD Với hoạt động thu,bit stop được đưa vào RB8 trong SCON Trong 8051/8031 chế độ baud được đặt bằngtốc độ báo tràn của timer 1
Tạo xung nhịp và đồng bộ các thanh ghi dịch trong chế độ 1, 2, 3 được thiết lậpbằng bộ đếm 4 bit chia cho 16, ngõ ra là xung nhịp tốc độ baud, ngõ vào được chọnbằng phần mềm
Truyền dữ liệu được khởi động bằng cách ghi vào SBUF Cờ ngắt TI = 1 khi xuấthiện bit stop trên chân TXD
Thu dữ liệu bằng cách chuyển trạng thái từ 1 xuống 0 trên chân RXD Luồng bitđến được lấy mẫu giữ 16 lần đếm Giả sử đã phát hiện bit start hợp lệ, thì tiếp tục thu
kí tự
Sau khi thu xong thì:
° Bit thứ 9 (bit stop) được chốt vào RB8 trong SCON
° SBUF được nạp 8 bit dữ liệu
° Cờ RI đặt lên 1
c UART 9 bit với tốc độ baud cố định (chế độ 2):
Khi SM1 = 1, SM0 = 0, lúc này 11 bit được phát hoặc thu: 1 bit srat, 8 bit dữliệu, bit thứ 9 có thể lập trình được và 1 bit stop
Khi phát bit thứ 9 là bit đưa vào TB8 trong SCON Khi thu bit thứ 9 sẽ ở trongRB8 Tốc độ baud là 1/32 hoặc 1/64 tần số dao động trên chip tùy theo bit SMOD
d UART 9 bit tốc độ baud thay đổi được (chế độ 3):
- Chế độ này giống chế độ 2 ngoại trừ tốc độ baud có thể thay đổi được bằng
Trang 31timer1
- Tốc độ baud của port nối tiếp:
- Tốc độ bị ảnh hưởng bởi 1 bit trong thanh ghi điều khiển nguồn cung cấp(PCON) đó là SMOD = 1 thì tốc độ baud trong chế độ 1, 2, 3 sẽ gấp đôi
- Chế độ có tốc độ cố định: chế độ 0 và chế độ 2
- Chế độ 0: bằng tần số dao động trên chip chia cho 12
- Chế độ 2: bằng tần số dao động trên chip chia 32 hoặc 64 tùy vào SMOD.SMOD = 0: chia 64 SMOD = 1: chia 32
Sau khi reset thì chia 64
- Chế độ 1 và 3: Tần số dựa vào thời gian tràn của timer1
- Vì PCON không được địa chỉ theo bit, nên để đặt bit SMOD lên 1 thì ta có thểlàm như sau:
MOV A, PCON; lấy giá trị hiện thời của PCON
SETB ACC.7; đặt lên 1
MOV PCON, A; nạp ngược lại
2.1.6 TỔ CHỨC NGẮT CỦA 89C51
* Có 5 nguồn ngắt ở 89C51: 2 ngắt ngoài, ngắt từ timer và 1 ngắt port nối tiếp.Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi reset hệ thống và được cho phéptừng cái bằng phần mềm
* Khi có 2 hoặc nhiều ngắt đồng thời, hoặc một ngắt xảy ra trong khi 1 ngắt khácđang được phục vụ, thì có 2 cách giải quyết: sự tuần tự hỏi vòng và sơ đồ ưu tiên Việchỏi vòng tuần tự thì cố định, còn ưu tiên ngắt thì có thể lập trình
Trang 32Bảng 2.8 Thanh ghi ngắt IE
2.1.6.1 Ưu tiên ngắt
Lập trình thông qua thanh ghi chức năng đặc biệt địa chỉ bit IP ở địa chỉ B8H
Bảng 2.9 Thanh ghi ưu tiên ngắt
Trang 33Ngắt port nối tiếp TI hoặc RI 0023H
+ Ngắt ngoài: khi có tác động từ bên ngoài thì cờ IE0 hoặc IE1 được thiết lập lên
1, khi đó, ngắt ngoài sẽ được thực thi Cờ sẽ tự động xóa bằng phần cứng khi vi điềukhiển thực hiện trình phục vụ ngắt
+ Ngắt timer: khi cờ TF0, TF1 (TFx) được thiết lập lên 1 thì ngắt timer sẽ đượctác động, TFx tự động xóa bằng phần cứng khi vi điều khiển thực hiện trình phục vụngắt
+ Ngắt port nối tiếp: khi cờ TI hoặc RI được set lên 1 tức là tác động ngắt port nốitiếp Cờ RI hoặc TI không tự động xóa bằng phần cứng khi vi điều khiển thực thi trìnhphục vụ ngắt, do đó, phải xóa bằng phần mềm
2.2 IC MT8870
MT8870 bao gồm các mạch lọc và giải mã cho sự ghi nhận một cặp tone (tần sốchuẩn DTMF: Dual Tone Multi Frequency) với đầu ra là 4 bit nhị phân Nó thích hợpcho các ứng dụng ở các thiết bị điều khiển từ xa, hệ thống điện thoại nhận số, tổng đàinội bộ PABX, hệ thống thẻ tín dụng, máy tính cá nhân…
2.2.1 Sơ đồ chân IC MT8870
Hinh 2.7 Sơ đồ chân MT8870.
- Chân 1(IN+): Non-Investing op-amp, ngõ vào không đảo
- Chân 2(IN-): Investing op-amp, ngõ vào đảo
- Chân 3(GS): (Gain Select) giúp truy xuất ngõ ra của bộ khuếch đại vi sai đầu cuốiqua điện trở hồi tiếp
- Chân 4(Vref): (Reference Voltage) điện áp chuẩn thông thường bằng VDD/2
Trang 34- Chân 5(INH): (Inhibit) khi chân này ở mức logic cao thì không nhận dạng kí tự
A, B, C ở ngõ ra
- Chân 6(PWDN): (Power down) tác động mức cao Khi chân này tác động thì sẽcấm mạch dao động và IC 8870 hoạt động
- Chân 7(OSC 1): Clock ngõ vào (MHz)
- Chân 8(OSC 2): Clock ngõ ra
- Chân 9(Vss): điện áp MASS
- Chân 10(TOE): (Three Stage Output Enable) ngõ ra Q1-Q4 hoạt động khi TOE ởmức cao
- Chân 11-> 14: từ Q1 -> Q4, khi TOE ở mức cao các chân này cung cấp mãtương ứng với các cặp tần số dò tìm được (theo bảng chức năng), khi TOE ở mứcthấp dữ liệu ngõ ra ở trạng thái trở kháng cao
- Chân 15(STD): (Delayed Steering) ở mức cao khi gặp tần số tone đã được ghinhận và ngõ ra chốt thích hợp, trở về mức thấp khi điện áp trên ST/GT nhỏ hơnđiện áp ngưỡng VTST
- Chân 16(EST): (Early Steering) chân này lên mức 1 khi bộ thuật toán nhận đượccặp tone và trả về mức 0 khi mất tone
- Chân 17(ST/GT): (Steering Input/ Guard tune output) khi điện áp VCC lớn hơn
VTST thì ST sẽ điều khiển dò tìm cặp tone và chốt ngõ ra
- Chân 18(VDD): điên áp dương nguồn, thường là +5V
Trang 352.2.2 Sơ đồ khối IC MT8870.
Hinh 2.8 Sơ đồ khối IC MT8870.
2.2.2.1 Chức năng:
Trang 36IC thu tone MT8870 bao gồm một bộ thu DTMF chất lượng cao (kèm bộ khuếchđại) và một bộ tạo dao động DTMF giúp cho việc tổng hợp đóng ngắt tone được chínhxác.
2.2.2.2 Cấu hình ngõ vào
Thiết kế đầu vào của IC MT8870 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 áp cho đầu vào tại VDD/2 Chân GSgiúp nối ngõ ra bộ khuếch đại với ngõ vào qua một điện trở ngoài
2.2.2.3 Khối Dial tone filter
Khối này sẽ tách tín hiệu tone thành nhóm tần số thấp và nhóm tần số cao Thựchiện việc này nhờ 2 bộ lọc thông qua 6 bậc Một từ 697 Hz đến 941 Hz và một từ 1209
Hz đến 1633 Hz Cả 2 nhóm tín hiệu này được biến đổi thành xung vuông bởi bộ dòZero Crossing
2.2.2.4 Khối High group filter và Low group filter
- High group filter là bộ lọc để lọc tần số cao có băng thông từ 697 Hz đến 941Hz
- Low group filter là bộ lọc để lọc tần số thấp có băng thông từ từ 1209 Hz đến
1633 Hz
- Ngoài ra, có bộ Zero crossing detectors có nhiệm vụ dò mức không để biến đổitín hiệu thành xung vuông
2.2.2.5 Khối Digital detection argorethm:
Khối này là bộ thuật toán dùng kỹ thuật số để xác định tần số và kiểm tra chúngtương ứng với tần số chuẩn DTMF Nhờ giải thuật lấy trung bình phức hợp giúp loạitrừ các tần số giả tạo thành do tiếng nói trong khi vẫn bảo đảm một khoảng biến độngcho tần số thực do bị lệch Khi bộ kiểm tra nhận dạng được hai tần số đúng thì đầu raEST sẽ lên mức tác động Lúc không nhận được tín hiệu tone thì ngõ ra EST sẽ ở mứckhông tác động
2.2.2.6 Mạch Steering: