Nếu trong chương trình ứngdụng không xử dụng đến ngắt ngoài 0 thì địa chỉ 0003H vẫn có thể dùng cho mục đíchkhác sử dụng cho bộ nhớ chương trình... Hình 7: Cấu trúc 128 byte cao của bộ
Trang 1MỤC LỤC
NHIỆM VỤ ĐỒ ÁN 3
LỜI CẢM ƠN 4
LỜI CAM ĐOAN 5
LỜI MỞ ĐẦU 6
CHƯƠNG 1 7
KIẾN THỨC TỔNG QUAN 7
1.1 Giới thiệu điều khiển từ xa 7
1.1.1 Điều khiển từ xa bằng tần số vô tuyến (RF) 7
1.1.2 Hoạt động 7
1.2 Giới thiệu linh kiện sử dụng 7
1.2.1 Tổng quan về vi điều khiển AT89c51 7
1.2.1.1 Tóm tắt về lịch sử của 8051 7
1.2.1.2 Kiến trúc vi điều khiển 8051 14
1.2.1.3 Các cổng vào ra của 8051 26
1.2.2 Tổng quan về PT 2262 và PT2272 32
1.2.4 Relay 39
1.2.5 Tụ điện: 40
1.2.6 Điện Trở: 42
1.2.7 Diode 43
1.2.8 Led đơn : 43
1.2.9 Transistor c1815: 44
CHƯƠNG 2 46
THIẾT KẾ MẠCH 46
2.1 Sơ đồ khối 46
2.1.1 Chức năng nhiệm vụ của từng khối 46
Trang 22.2 Sơ đồ nguyên lý và hoạt động của mạch 51
2.2.1 Sơ đồ nguyên lý 51
2.2.2 Nguyên lý hoạt động của mạch 52
2.3.2 Khi tắt thiết bị: 53
2.4 Lưu đồ giải thuật 54
2.5 Code chương trình 54
CHƯƠNG 3 55
THI CÔNG MẠCH 55
3.1 Dụng cụ sử dụng 55
3.2 Tiến hành thi công mạch 55
3.3 Sản Phẩm hoàn thiện 57
3.4 Hướng Dẫn Sử dụng 57
KẾT LUẬN 59
Tài Liệu Tham Khảo 60
Trang 3NHIỆM VỤ ĐỒ ÁN
Đồ án tập trung nghiên cứu các vấn đề cơ bản của vi điều khiển AT89c51 và xâydựng module điều khiển thiết bị điện từ xa bằng sóng RF với các nhiệm vụ sau:
- Nghiện cứu một cách tổng quan về vi điều khiển AT89c51
- Thiết kế chế tạo module điều khiển thiết bị điện bằng sóng RF
Trang 4LỜI CẢM ƠN
Trong suốt qua trình học tập (2009- 2014) và thời gian làm đồ án tại trường ĐHCÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG, em đã nhận được sự hướng dẫn,giúp đỡ nhiệt tình của quý thầy cô, các anh chị và các bạn Quý thầy cô không chỉtruyền đạt cho chúng em những kiến thức về chuyên môn cần thiết sau khi ra trườngmà chúng em còn học hỏi được rất nhiều kiến thức thực tế từ thầy cô trong khoa cũngnhư cô hướng dẫn Do vậy em đã có thể hoàn thành đồ án tốt nghiệp trong đúng thờigian quy định
Với lòng kính trọng và biết ơn sâu sắc, em xin được bày tỏ lời cảm ơn chânthành tới: Quý thầy cô trường ĐH CNTT &TT đã giảng dạy cho chúng em nhiều kiếnthức quý báu Bộ môn Công nghệ viễn thông cùng tất cả quý thầy cô trong khoa Côngnghệ điện tử và truyền thông đã giảng dạy những kiến thức chuyên môn làm cơ sở để
em thực hiện tốt đồ án tốt nghiệp và tạo điều kiện thuận lợi cho chúng em hoàn tấtkhóa học
Đặc biệt, em xin được cảm ơn thầy giáo … - giáo viên hướng dẫn đã nhiệt tìnhgiúp đỡ và chỉ dạy, giúp em định hướng tốt trong trong suốt thời gian hoàn thành đồán,
Thái nguyên, ngày…tháng….năm 2014
SINH VIÊN THỰC HIỆN
Trang 5LỜI CAM ĐOAN
Em xin cam đoan:
Những nội dung trong đồ án này là do em thực hiện dưới sự hướng dấn trực tiếpcủa thầy giáo Lê Văn Chung.- giáo viên hướng dẫn, nghiên cứu trên Internet, sách báo,và các tài liệu trong và ngoài nước có liên quan Không sao chép hay sử dụng bài làmcủa bất kỳ ai khác
Mọi tham khảo dùng trong đồ án đều được trích dẫn rõ ràng tên tác giả, tên côngtrình, thời gian, địa điểm công bố
Em xin chịu hoàn toàn trách nhiệm về lời cam đoan của mình trước Quý thầy côvà nhà trường
Thái Nguyên, ngày…tháng…năm 2013
Trang 6LỜI MỞ ĐẦU
Điện tử đang trở thành một ngành khoa học đa nhiệm vụ điện tử đã đáp ứngđược những đòi hỏi không ngừng của các ngành, lĩnh vực khác nhau cho đến nhu cầuthiết yếu của con người trong cuộc sống hằng ngày Một trong những ứng dụng quantrọng của ngành công nghệ điện tử là kỹ thuật điều khiển từ xa bằng RF Sử dụng RFđược ứng dụng rất nhiều trong công nghiệp và các lĩnh vực khác trong cuộc sống vớinhững thiết bị điều khiển từ xa rất tinh vi và đạt được năng suất, kinh tế thật cao Xuấtphát từ những ứng dụng đó, em đã thiết kế và lắp ráp một mạch ứng dụng nhỏ trong thuphát RF: “ Bộ điều khiển từ xa bằng RF ”
Bộ điều khiển từ xa sau khi thi công mạch xong có thể điều khiển được bốn thiết
bị Mạch sử dụng IC phát PT2262 để mã hóa tín hiệu điều khiển Dữ liệu sau khi mã hóa
sẽ được truyền đi bằng modul phát RF 315Mhz , tín hiệu sẽ được thu bưởi khối thu RF,
dữ liệu sẽ được giải mã bằng PT2272 và đưa về vi xử lý Vi xử lý xử lý tín hiệu đưa về từPT2272 và điều khiển khối Relay để bật những thiết bị được yêu cầu mở bởi bên phát
Nội Dung báo cáo gồm 3 chương:
Chương 1: Kiến Thức Tổng Quan
Chương 2:Thiết Kế Mạch
Chương 3:Thi Công Mạch
Đề tài này giúp em hiểu rõ hơn về nguyên lý thu phát và ứng dụng những lý thuyếtđược học vào thực tế đồng thời tìm hiểu thêm những điều chưa được học và nâng cao kỹnăng thực hành cũng như là những ứng dụng của mạch trong thực tế Qua quá trìnhnghiên cứu và thực hiện thì em:
1 Đã làm được:
- Mạch đã có thể chạy ổn định
- Kết hợp được moldul phát với vi điều khiển
- Điều khiển tín hiệu dạng on/off từ phím bấm sang vi điều khiển và vi điều khiển xuấtlệnh thực thi sang bên phát gửi đi
2 Chưa làm được:
- Mạch còn hạn chế về số thiết bị điều khiển,chỉ mới điều khiển được 2 thiết bị
Trang 7- Chưa chế tạo được module thu phát mà phải mua
3 Hướng phát triển của đề tài:
- Thiết kế điều khiển nhiều hơn 2 thiết bị, tối đa đươc 15x256 thiết bị
- Mở rộng điều khiển thiết bị bằng tin nhắn SMS hay internet
CHƯƠNG 1 KIẾN THỨC TỔNG QUAN 1.1 Giới thiệu điều khiển từ xa
Ít người biết rằng những chiếc điều khiển từ xa đầu tiên trên thế giới được ra đờinhằm mục đích phục vụ cho chiến tranh Các loại điều khiển từ xa bằng tần số vô tuyếnxuất hiện vào chiến tranh thế giới I nhằm hướng dẫn các tàu hải quân Đức đâm vàothuyền của quân Đồng Minh
Đến chiến tranh thế giới II, điều khiển từ xa dùng để kích nổ những quả bom Sauchiến tranh, công nghệ tuyệt vời của chúng tiếp tục được cải tiến để phục vụ đắc lựctrong đời sống con người Và đến nay, có thể nói, gần như ai cũng đã từng sử dụng điềukhiển từ xa để điều khiển một thiết bị nào đó
Ban đầu, người ta dùng điều khiển từ xa sử dụng công nghệ tần số vô tuyến RF(Radio Frequency) và sau đó bắt đầu ứng dụng công nghệ hồng ngoại IR (InfraredRemote) vào điều khiển từ xa Hiện nay trong đời sống, chúng ta sử dụng cả hai loại điềukhiển từ xa này
1.1.1 Điều khiển từ xa bằng tần số vô tuyến (RF)
Là loại điều khiển từ xa xuất hiện đầu tiên và đến nay vẫn giữ một vai trò quantrọng và phổ biến trong đời sống Nếu điều khiển IR chỉ dùng trong nhà thì điều khiển RFlại dùng cho nhiều vật dụng bên ngoài như các thiết bị mở cửa gara xe, hệ thống báo hiệucho xem các loại đồ chơi điện tử từ xa thậm chí kiểm soát vệ tinh và các hệ thống máytính xách tay và điện thoại thông minh…
1.1.2 Hoạt động
Với loại điều khiển này, nó cũng sử dụng nguyên lý tương tự như điều khiển bằngtia hồng ngoại nhưng thay vì gửi đi các tfn hiệu ánh sáng, nó lại truyền sóng vô tuyếntương ứng với các lệnh nhị phân Bộ phận thu sóng vô tuyến trên thiết bị được điều khiểnnhận tín hiệu và giải mã nó
1.2 Giới thiệu linh kiện sử dụng
1.2.1 Tổng quan về vi điều khiển AT89c51
1.2.1.1 Tóm tắt về lịch sử của 8051
Trang 8Vào năm 1981 hãng Intel giới thiệu một số bộ vi điều khiển được gọi là 8051 Bộ
vi điều khiển này có 128 byte RAM, 4K byte ROM trên chip, hai bộ định thời, một cổngnối tiếp và 4 cổng (đều rộng 8 bit) vào – ra tất cả được đặt trên một chip Lúc ấy nó đượccoi là một “hệ thống trên chip” 8051 là một bộ xử lý 8 bit có nghĩa là CPU chỉ có thể làmviệc với 8 bit dữ liệu tại một thời điểm Dữ liệu lớn hơn 8 bit được chia ra thành các dựliệu 8 bit để xử lý 8051 có tất cả 4 cổng vào – ra I/O mỗi cổng rộng 8 bit Mặc dù 8051
có thể có một ROM trên chip cực đại là 64K byte, nhưng các nhà sản xuất lúc đó đã choxuất xưởng chỉ với 4K byte ROM trên chip
8051 đã trở lên phổ biến sau khi Intel cho phép các nhà sản xuất khác sản xuất vàbán bất kỳ dạng biến thể nào của 8051 mà họ thích với điều kiện họ phải để lại mã tươngthích với 8051 Điều này dẫn đến sự ra đời nhiều phiên bản của 8051 với các tốc độ khácnhau và dung lượng ROM trên chip khác nhau được bán bởi hơn nửa các nhà sản xuất.Điều này quan trọng là mặc dù có nhiều biến thể khác nhau của 8051 về tốc độ và dunglượng nhớ ROM trên chip, nhưng tất cả chúng đều tương thích với 8051 ban đầu về cáclệnh Điều này có nghĩa là nếu viết chương trình của mình cho một phiên bản nào đó thì
nó cũng sẽ chạy với mọi phiên bản bất kỳ khác mà không phân biệt nó được sản xuất từhãng nào
Các đặc tính của 8051 đầu tiên:
ROM trên chipRAM
Bộ định thờiCác chân vào – raCổng nối tiếpNguồn ngắt
4K byte
128 byte2
3216
2 Bộ vi điều khiển 8051
Bộ vi điều khiển 8051 là thành viên đầu tiên của họ 8051 Hãng Intel ký hiệu nó như làMCS51
Trang 9Sơ đồ khối của 8051
- Các thành viên khác của họ 8051
a Bộ vi điều khiển 8052
Bộ vi điều khiển 8052 là một thành viên khác của họ 8051, 8052 có tất cảcác đặc tính chuẩn của 8051 ngoài ra nó có thêm 128 byte RAM và một bộ định thời nữa.Hay nói cách khác là 8052 có 256 byte RAM và 3 bộ định thời Nó cũng có 8K byteROM Trên chíp thay vì 4K byte như 8051
Trang 10hạn bởi 4K byte, còn ROM ngoài chứa chương trinh được gắn vào 8031 thì có thể lớnđến 64K byte Khi bổ xung cổng, như vậy chỉ còn lại 2 cổng để thao tác Để giải quyếtvấn đề này ta có thể bổ xung cổng vào - ra cho 8031 Phối phép 8031 với bộ nhớ và cổngvào - ra Ngoài ra còn có các phiên bản khác nhau về tốc độ của 8031 từ các hãng sảnxuất khác nhau.
- Các bộ vi điều khiển 8051 từ các hãng khác nhau
a Bộ vi điều khiển 8751
Chíp 8751 chỉ có 4K byte bộ nhớ UV-EPROM trên chíp Để sử dụng chípnày để phát triển yêu cầu truy cập đến một bộ đốt PROM cũng như bộ xoá UV- EPROM
để xoá nội dung của bộ nhớ UV-EPROM bên trong 8751 trước khi ta có thể lập trình lại
nó Do một thực tế là ROM trên chíp đối với 8751 là UV-EPROM nên cần phải mất 20phút để xoá 8751 trước khi nó có thể được lập trình trở lại Điều này đã dẫn đến nhiềunhà sản xuất giới thiệu các phiên bản Flash Rom và UV-RAM của 8051 Ngoài ra còn cónhiều phiên bản với các tốc độ khác nhau của 8751 từ nhiều hãng khác nhau
b Bộ vi điều khiển AT8951 từ Atmel Corporation
Chíp 8051 phổ biến này có ROM trên chíp ở dạng bộ nhớ Flash Điều nàylà lý tưởng đối với những phát triển nhanh vì bộ nhớ Flash có thể được xoá trong vài giâytrong tương quan so với 20 phút hoặc hơn mà 8751 yêu cầu Vì lý do này mà AT89C51
để phát triển một hệ thống dựa trên bộ vi điều khiển yêu cầu một bộ đốt ROM mà có hỗtrợ bộ nhớ Flash Tuy nhiên lại không yêu cầu bộ xoá ROM Lưu ý rằng trong bộ nhớFlash ta phải xoá toàn bộ nội dung của ROM nhằm để lập trình lại cho nó Việc xoá bộnhớ Flash được thực hiện bởi chính bộ đốt PROM và đây chính là lý do tại sao lại khôngcần đến bộ xoá Để loại trừ nhu cầu đối với một bộ đốt PROM hãng Atmel đang nghiêncứu một phiên bản của AT 89C51 có thể được lập trình qua cổng truyền thông COM củamáy tính IBM PC
Trang 11Các phiên bản của 8051 từ Atmel (Flash ROM).
Chữ C trong ký hiệu AT89C51 là CMOS.
Cũng có những phiên bản đóng vỏ và tốc độ khác nhau của những sản phẩm trên đây.Xem bảng dưới Ví dụ để ý rằng chữ “C” đứng trước số 51 trong AT 89C51 -12PC là kýhiệu cho CMOS “12” ký hiệu cho 12 MHZ và “P” là kiểu đóng vỏ DIP và chữ “C” cuốicùng là ký hiệu cho thương mại (ngược với chữ “M” là quân sự ) Thông thườngAT89C51 - 12PC rất lý tưởng cho các dự án của học sinh, sinh viên
AT89C51-12PC
Các phiên bản 8051 với tốc độ khác nhau của Atmel.
c Bộ vi điều khiển DS5000 từ hãng Dallas Semiconductor
Một phiên bản phổ biến khác nữa của 8051 là DS5000 của hãng DallasSemiconductor Bộ nhớ ROM trên chíp của DS5000 ở dưới dạng NV-RAM Khả năngđọc/ ghi của nó cho phép chương trình được nạp vào ROM trên chíp trong khi nó vẫn ởtrong hệ thống (không cần phải lấy ra) Điều này còn có thể được thực hiện thông quacổng nối tiếp của máy tính IBM PC Việc nạp chương trình trong hệ thống (in-system)của DS5000 thông qua cổng nối tiếp của PC làm cho nó trở thành một hệ thống phát triểntại chỗ lý tưởng Một ưu việt của NV-RAM là khả năng thay đổi nội dung của ROM theotừng byte tại một thời điểm Điều này tương phản với bộ nhớ Flash và EPROM mà bộnhớ của chúng phải được xoá sạch trước khi lập trình lại cho chúng
Trang 12Mã linh kiện ROM RAM Chân I/O Timer Ngắt Vcc Đóng
vỏ
DS5000-8DS5000-32DS5000T-8DS5000T-8
8K32K8K32K
128128128128
32323232
2222
6666
5V5V5V5V
40404040
Các phiên bản 8051 từ hãng Dallas Semiconductor.
Chữ “T” đứng sau 5000 là có đồng hồ thời gian thực
Lưu ý rằng đồng hồ thời gian thực RTC là khác với bộ định thời Timer RTC tạo và giữthời gian l phút giờ, ngày, tháng - năm kể cả khi tắt nguồn
Còn có nhiều phiên bản DS5000 với những tốc độ và kiểu đóng gói khác nhau Ví dụDS5000-8-8 có 8K NV-RAM và tốc đọ 8MHZ Thông thường DS5000-8-12 hoặcDS5000T-8-12 là lý tưởng đối với các dự án của sinh viên
DS5000-8-8DS5000-8-12DS5000-32-8DS5000T-32-12DS5000-32-12DS5000-8-12
8K8K32K32K32K8K
8MHz12MHz8MHz8MHz (with RTC)12MHz
12MHz (with RTC)
Các phiên bản của DS5000 với các tốc độ khác nhau
d Phiên bản OTP của 8051
Các phiên bản OTP của 8051 là các chíp 8051 có thể lập trình được một lần vàđược cung cấp từ nhiều hãng sản xuất khác nhau Các phiên bản Flash và NV-RAMthường được dùng để phát triển sản phẩm mẫu Khi một sản pohẩm được thiết kế và được
Trang 13hoàn thiện tuyệt đối thì phiên bản OTP của 8051 được dùng để sản hàng loạt vì nó rẻ hơnrất nhiều theo giá thành một đơn vị sản phẩm.
e Họ 8051 từ Hãng Philips
Một nhà sản xuất chính của họ 8051 khác nữa là Philips Corporation Thật vậy,hãng này có một dải lựa chọn rộng lớn cho các bộ vi điều khiển họ 8051 Nhiều sản phẩmcủa hãng đã có kèm theo các đặc tính như các bộ chuyển đổi ADC, DAC, cổng I/0 mởrộng và cả các phiên bản OTP và Flash
Trang 141.2.1.2 Kiến trúc vi điều khiển 8051
- Tổ chức bộ nhớ
Các vi điều khiển thuộc họ 8051 đều tổ chức thành 2 không gian chương trình và
dữ liệu, hình 1 và hình 2 sẽ mô tả điều này Kiến trúc vi xử lý 8 bit của 8051 này chophép truy nhập và tính toán nhanh hơn đối với không gian dữ liệu nhờ việc phân chia 2không gian bộ nhớ chương trình và dữ liệu như trên Tuy nhiên bộ nhớ ngoài được truynhập bởi hệ thống 16 bit địa chỉ vẫn có thể thực hiện nhờ thanh ghi con trỏ
Bộ nhớ chương trình (ROM, EPROM) là bộ nhớ chỉ đọc, có thể mở rộng tối đa64Kbyte Với họ vi điều khiển 89xx, bộ nhớ chương trình được tích hợp sẵn trong chip
có kích thước nhỏ nhất là 4kByte Với các vi điều khiển không tích hợp sẵn bộ nhớchương trình trên chip, buộc phải thiết kế bộ nhớ chương trình bên ngoài Ví dụ sử dụngEPROM: 2764 (64Kbyte), khi đó chân PSEN phải ở mức tích cực (5V)
Hình 1: Cấu trúc vi điều khiển 8051
Bộ nhớ dữ liệu (RAM) tồn tại độc lập so với bộ nhớ chương trình Họ vi điềukhiển 8051 có bộ nhớ dữ liệu tích hợp trên chip nhỏ nhất là 128byte và có thể mở rộngvới bộ nhớ dữ liệu ngoài lên tới 64kByte Với những vi điều khiển không tích hợp ROMtrên chip thì vẫn có RAM trên chip là 128byte Khi sử dụng RAM ngoài, CPU đọc và ghi
dữ liệu nhờ tín hiệu trên các chân RD và WR Khi sử dụng cả bộ nhớ chương trình và bộnhớ dữ liệu bên ngoài thì buộc phải kết hợp chân RD và PSEN bởi cổng logic AND đểphân biệt tín hiệu truy xuất dữ liệu trên ROM hay RAM ngoài
Trang 15Bộ nhớ chương trình
Hình 2: Cấu trúc bộ nhớ chương trình
Hình 3: Địa chỉ các ngắt trên bộ nhớ chương trình
Hình 2 mô tả cấu trúc bộ nhớ chương trình Sau khi khởi động, CPU bắt đầu thực hiện
chương trình ở vị trí 0000H
Hình 3 mô tả địa chỉ ngắt mặc định trên bộ nhớ chương trình Mối khi xảy ra ngắt, con
trỏ của CPU sẽ nhảy đến đúng địa chỉ ngắt tương ứng và thực thi chương trình tại đó Ví
dụ ngắt ngoài 0 sẽ có địa chỉ là 0003H, khi xảy ra ngắt ngoài 0 thì con trỏ chương trình sẽnhảy đến đúng địa chỉ 0003H để thực thi chương trình tại đó Nếu trong chương trình ứngdụng không xử dụng đến ngắt ngoài 0 thì địa chỉ 0003H vẫn có thể dùng cho mục đíchkhác (sử dụng cho bộ nhớ chương trình)
- Bộ nhớ dữ liệu
Trang 16Hình 4: Cấu trúc bộ nhớ dữ liệu
Hình 4 mô tả cấu trúc bộ nhớ dữ liệu trong và bộ nhớ dữ liệu ngoài của họ vi điều khiển
8051 CPU sẽ dùng đến các chân RD và WR khi truy cập đến bộ nhớ dữ liệu ngoài
Hình 5 mô tả cấu trúc bộ nhớ dữ liệu trong chip, được chia thành 3 khối là 128 byte thấp,
128 byte cao và 128 byte đặc biệt
Hình 5: Cấu trúc bộ nhớ trong
Hình 6 mô tả cấu trúc 128 byte thấp của bộ nhớ dữ liệu của họ vi điều khiển 8051 32
byte đầu tiên (00H-1FH) được sử dụng cho 4 bộ 8 thanh ghi R0-R7 Hai bit của thanh ghiđặc biệt PSW sẽ lựa chọn 1 trong 4 bộ thanh ghi mà vi điều khiển sẽ dùng trong khi thựcthi chương trình
Trang 17Hình 6: Cấu trúc 128 byte thấp của bộ nhớ dữ liệu trong
8051 chứa 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trong các byte ở địa chỉ
từ 20H đến 2FH (16 byte x 8 bit = 128 bit) và phần còn lại chứa trong các thanh ghi đặcbiệt Ngoài ra 8051 còn có các port xuất/nhập có thể định địa chỉ từng bit, điều này làmđơn giản việc giao tiếp bằng phần mềm với các thiết bị xuất/nhập đơn bit
Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H đến 7FH, bên dưới vùng này từđịa chỉ 00H đến 2FH là vùng nhớ có thể được sử dụng tương tự Bất kỳ vị trí nhớ nàotrong vùng RAM đa mục đích đều có thể được truy xuất tự do bằng cách sử dụng cáckiểu định địa chỉ trực tiếp hoặc gián tiếp
Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truy xuất tự do bằngcách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp
Cũng như các thanh ghi từ R0 đến R7, ta có 21 thanh ghi chức năng đặc biệt SFR chiếmphần trên của Ram nội từ địa chỉ 80H đến FFH Cần lưu ý là không phải tất cả 128 địachỉ từ 80H đến FFH đều được định nghĩa mà chỉ có 21 địa chỉ được định nghĩa
Trang 18Hình 7: Cấu trúc 128 byte cao của bộ nhớ dữ liệu
- Bên trong 8051
Các thanh ghi
Trong bộ vi điều khiển các thanh ghi được dùng để lưu cất thông tin tạm thời, nhữngthông tin này có thể là một byte dữ liệu cần được sử lý hoặc là một địa chỉ đến dữ liệucần được nạp
Phần lớn các thanh ghi của 8051 là các thanh ghi 8 bit Trong 8051 chỉ có một kiểu dữliệu: Loại 8 bit, 8 bit của một thanh ghi được trình bày như sau :
D7D6 D5 D4 D3 D2 D1 D0
Với MBS (Most Sigfican bit) là bit có giá trị cao nhất D7 cho đến LBS (Leart Significantbit) là bit có giá trị thấp nhất D0 Với một kiểu dữ liệu 8 bit thì bất kỳ dữ liệu nào lớn hơn
8 bit đều phải được chia thành các khúc 8 bit trước khi được xử lý
Trang 19Thanh ghi 8 bit của 8051
Thanh ghi 16 bit của 8051
Các thanh ghi được sử dụng rộng rãi nhất của 8051 là A (thanh ghi tích lũy), B, R0 – R7,DPTR (con trỏ dữ liệu) và PC (bộ đếm chương trình) Tất cả các dữ liệu trên đều là thanhghi 8 bit, trừ DPTR và PC là 16 bit
Thanh ghi tích lũy A được sử dụng cho tất cả mọi phép toán số học và logic
Các thanh ghi đặc biệt
8051 có 21 thanh ghi chức năng đặc biệt SFR chiếm phần trên của RAM nội từ địachỉ 80H đến FFH Cần lưu ý là không phải tất cả 128 địa chỉ từ 80H đến FFH đều được
định nghĩa mà chỉ có 21 địa chỉ được định nghĩa Hình 8 mô tả các thanh ghi đặc biệt
trong vùng nhớ dữ liệu 80H đến FFH và giá trị của chúng sau khi Reset
Trang 20Hình 8: Các thanh ghi đặc biệt
Thanh ghi trạng thái chương trình (PSW):
Trang 21Thanh ghi trạng thái chương trình PSW (địa chỉ: D0H) là thanh ghi mô tả toàn bộ trạngthái chương trình đang hoạt động của hệ thống Hai bảng sau sẽ mô tả thanh ghi này.
Cờ nhớ (Carry Flag): được Set nếu có Bit nhớ
từ Bit 7 trong phép cộng hoặc có Bit mượn choBit 7 trong phép trừ
Cờ nhớ phụ: được Set trong phép cộng nếu có
Bit nhớ từ Bit 3 sang Bit 4 hoặc kết quả trong 4Bit thấp nằm trong khoảng 0AH->0FH
PSW.5 FO D5H Cờ O: dành cho người sử dụng.
PSW.4 RS1 D4H Chọn dãy thanh ghi (Bit 1)
Chọn dãy thanh ghi (Bit 0)
00=Bank 0: Địa chỉ 00H->07H01=Bank 1: Địa chỉ 08H->0FH10=Bank 2: Địa chỉ 10H->17H11=Bank 3: Địa chỉ 18H->1FH
PSW.2 OV D2H Cờ tràn (Overflow Flag): được Set khi phép
toán có dấu có kết quả > +127 hoặc < -128
Cờ kiểm tra chẵn lẻ: được Set hoặc Clear bởi
phần cứng sau mỗi 1 chu kỳ lệnh, để chỉ ra rằng
có 1 số chẵn hoặc số lẻ Bit 1 trong thanh chứa
Trang 22Chi tiết các bit trong thanh ghi PSW
Thanh ghi ngăn xếp (Stack Pointer):
Con trỏ stack SP (stack pointer) là 1 thanh ghi 8 bit ở địa chỉ 81H SP chứa địa chỉ của dữliệu hiện đang ở đỉnh của stack Các lệnh liên quan đến satck bao gồm lệnh cất dữ liệuvào stack và lệnh lấy dữ liệu ra khỏi stack Việc cất vào stack làm tăng SP trước khi ghi
dữ liệu và việc lấy dữ liệu ra khỏi stack sẽ giảm SP Vùng stack của 8051 được giữ trongRAM nội và được giới hạn đến các địa chỉ truy xuất được bởi kiểu định địa chỉ gián tiếp.Các lệnh PUSH và POP sẽ cất dữ liệu vào stack và lấy dữ liệu từ stack, các lệnh gọichương trình con (ACALL, LCALL) và lệnh trở về (RET, RETI) cũng cất và phục hồinội dung của bộ đếm chương trình PC (Program counter)
Con trỏ dữ liệu DPTR:
Con trỏ dữ liệu DPTR (data pointer) được dùng để truy xuất bộ nhớ chương trình ngoàihoặc bộ nhớ dữ liệu ngoài DPTR là một thanh ghi 16 bit có địa chỉ là 82H (DPL, bytethấp) và 83H (DPH, byte cao)
Thanh ghi các cổng P0-P3:
Các port xuất/nhập của 8051 bao gồm Port 0 tại địa chỉ 80H, Port 1 tại địa chỉ 90H, Port
2 tại địa chỉ A0H và Port 3 tại địa chỉ B0H Tất cả các port đều được định địa chỉ từng bitnhằm cung cấp các khả năng giao tiếp mạnh
Thanh ghi bộ đệm truyền thông nối tiếp (Serial Data Buffer):
Bộ đệm truyền thông được chia thành hai bộ đệm, bộ đệm truyền dữ liệu và bộđệm nhận dữ liệu Khi dữ liệu được chuyển vào thanh ghi SBUF, dữ liệu sẽ được chuyểnvào bộ đệm truyền dữ liệu và sẽ được lưu giữ ở đó cho đến khi quá trình truyền dữ liệuqua truyền thông nối tiếp kết thúc Khi thực hiện việc chuyển dữ liệu từ SBUF ra ngoài,
dữ liệu sẽ được lấy từ bộ đệm nhận dữ liệu của truyền thông nối tiếp
Thanh ghi của bộ định thời/bộ đếm:
8051 có 2 bộ đếm/định thời (counter/timer) 16 bit để định các khoảng thời gian hoặc đểđếm các sự kiện Các cặp thanh ghi (TH0, TL0) và (TH1, TL1) là các thanh ghi của bộđếm thời gian Bộ định thời 0 có địa chỉ 8AH (TL0, byte thấp) và 8CH (TH0, byte cao)
Bộ định thời 1 có địa chỉ 8BH (TL1, byte thấp) và 8DH (TH1, byte cao)
Hoạt động của bộ định thời được thiết lập bởi thanh ghi chế độ định thời TMOD (TimerMode Register) ở địa chỉ 88H Chỉ có TCON được định địa chỉ từng bit
Các thanh ghi điều khiển:
Trang 23Các thanh ghi điều khiển đặc biệt như IP, IE, TMOD, TCON, SCON và PCON là cácthanh ghi điều khiển và ghi nhận trạng thái của hệ thống ngắt, bộ đếm/định thời, truyềnthông nối tiếp.
- Truy xuất dữ liệu
8051 có các kiểu truy xuất địa chỉ khác nhau:
- Thanh ghi (Register)
- Trực tiếp (Direct)
- Gián tiếp (Indirect)
- Tức thời (Immediate)
- Tương đối (Relative)
- Tuyệt đối (Absolute)
- Dài (Long)
- Chỉ số (Indexed)
- Truy xuất địa chỉ thanh ghi
8051 cho phép truy xuất 8 thanh ghi “làm việc”, được đánh số từ R0 → R7 Cáclệnh sử dụng kiểu định địa chỉ thanh ghi được mã hóa bằng các dùng 3 bit thấp nhất củaopcode( của lệnh) để chỉ ra 1 thanh ghi bên trong không gian địa chỉ logic này
Vậy : 1 mã chức năng + địa chỉ toán hạng → 1 lệnh ngắn 1 byte
Truy xuất địa chỉ kiểu trực tiếp
Kiểu định địa chỉ trực tiếp được sử dụng để truy xuất các biến nhớ hoặc các thanh ghitrên chip Một byte thêm vào tiếp theo opcode dùng để xác định địa chỉ Trong 8051 có
128 byte bộ nhớ RAM Bộ nhớ RAM được gán địa chỉ từ 00H đến FFH và được phânchia như sau:
Các ngăn nhớ từ 00H đến 1FH được gán cho các băng thanh ghi và ngăn xếp
Các ngăn nhớ từ 20H đến 2FH được dành cho không gian định địa chỉ bít để lưu dữ liệutheo từng bit
Các ngăn nhớ từ 30H đến 7FH là không gian để lưu dữ liệu có kích thước 1 byte
Chế độ định địa chỉ trực tiếp có thể truy cập toàn bộ không gian của bộ nhớ RAM Tuynhiên, chế độ này thường được dùng để truy cập các ngăn nhớ RAM từ 30H đến 7FH, vìthực tế đối với không gian nhớ danh cho băng thanh ghi thì đã được truy cập bằng tênthanh ghi như R0- R7 ở chế độ định địa chỉ trực tiếp , địa chỉ ngăn nhớ RAM chứa dữliệu là toán hạng của lệnh
Ví dụ:
Trang 24MOV R0, 40 ; sao nội dung ngăn nhớ 40H của RAM vào R0
MOV R4, 7FH ; chuyển nội dung ngăn nhớ 7FH vào R4
Một ứng dụng quan trọng của chế độ định địa chỉ trực tiếp là ngăn xếp Trong họ 8051,chỉ có chế độ định địa chỉ trực tiếp là được phép cất và lấy dữ liệu từ ngăn xếp
- Truy xuất địa chỉ kiểu gián tiếp
Ở chế độ này, thanh ghi được dùng để trỏ đến dữ liệu có trong bộ nhớ
Nếu dữ liệu có trên chip CPU thì chỉ các thanh ghi R0 và R1 mới được sử dụng, và nhưvậy cũng có nghĩa là không thể dùng các thanh ghi R2-R7 để trỏ đến địa chỉ của toánhạng ở chế độ định địa chỉ này Nếu R0 và R1 được dùng làm con trỏ, nghĩa là chúng lưuđịa chỉ của ngăn nhớ RAM thì trước các thanh ghi cần đặt dấu " @" như các ví dụ sau:MOV A, @R0 ; chuyển ngăn nhớ RAM có địa chỉ ở R0 vào A
MOV @R1, B ; chuyển B vào ngăn nhớ RAM có địa chỉ ở R1
Chú ý: ở đây R0 cũng như R1 đều có dấu "@" đứng trước Nếu không có dấu "@" đứngtrước thì đó là lệnh chuyển nội dung thanh ghi R0 và R1 chứ không phải dữ liệu ngănnhớ có địa chỉ trong R0 và R1 Một trong những ưu diểm của chế độ định địa chỉ giántiếp là cho phép truy cập dữ liệu linh hoạt hơn so với chế độ định địa chỉ trực tiếp Tuynhiên R0 và R1 là các thanh ghi 8 bit, nên chúng chỉ được phép truy cập đến các ngănnhớ RAM trong, từ địa chỉ 30H đến 7FH và các thanh ghi SFR Trong thực tế, có nhiềutrường hợp cần truy cập dữ liệu được cất ở RAM ngoài hoặc không gian ROM trên chip.Trong những trường hợp đó chúng ta cần sử dụng thanh ghi 16 bit DPTR
- Truy xuất địa chỉ kiểu tức thời
Khi toán hạng là một hằng số thay vì là một biến, hằng số này có thể đưa vào lệnh và đâylà byte dữ liệu tức thời
Trong hợp ngữ, các toàn hạng tức thời được nhận biết nhờ vào ký tự ‘# ‘ đặt trướcchúng Toán hạng này có thể là một hằng số học, một biến hoặc một biểu thức số học sửdụng các hằng số, các ký hiệu và các toán tử Trình dịch hợp ngữ tính giá trị và thay thế
dữ liệu tức thời vào trong lệnh
Ví dụ lệnh : MOV A, #12 ;Nạp giá trị 12(OCH) vào thanh chứa A
Trang 25Tất cả các lệnh sử dụng kiểu định địa chỉ tức thời đều sử dụng hằng dữ liệu 8 bitlàm dữ liệu tức thời Có một ngoại lệ khi ta khởi động con trỏ dữ liệu 16-bit DPTR, hằngđịa chỉ 16 bit được cần đến.
- Truy xuất địa chỉ kiểu tương đối
Kiểu định địa chỉ tương đối chỉ được sử dụng cho các lệnh nhảy Một địa chỉ tương đốilà một giá trị 8 bit có dấu Giá trị này được cộng với một bộ đếm chương trình để tạo rađịa chỉ của lệnh tiếp theo cần thực thi Định địa chỉ tương đối có điểm lợi là cung cấp cho
ta mã không phụ thuộc vào vị trí, nhưng lại có điểm bất lợi là các đích nhảy bị giới hạntrong tầm
- Truy xuất địa chỉ kiểu tuyệt đối
Kiểu định địa chỉ này được sử dụng với các lệnh ACAll và AJMP Đây là các lệnh 2 bytecho phép rẽ nhánh chương trình trong trang 2k hiện hành của bộ nhớ chương trình bằngcách cung cấp 11 bit thấp của địa chỉ đích Trong đó có 3 bit cao (A8-A10) và 8 bit thấp(A0-A7) thành lập byte thứ 2 của lệnh
- Truy xuất địa chỉ kiểu dài
Kiểu định địa chỉ dài chỉ được dùng cho các lệnh LCALL và LJMP Các lệnh 3 byte nàychứa địa chỉ đích 16 bit Lợi ích của kiểu định địa chỉ này là sử dụng hết toàn bộ khônggian nhớ chương trình 64K, nhưng lại có điểm bất lợi là lệnh dài đến 3-byte và phụ thuộcvào vị trí
- Truy xuất địa chỉ kiểu chỉ số
Chế độ định địa chỉ chỉ số được sử dụng rộng rãi khi truy cập các phần tử dữ liệu củabảng trong không gian ROM chương trình của 8051 Lệnh được dùng cho mục đích nàylà "MOVC A, @A+DPTR" Thanh ghi 16 bit DPTR và thanh ghi A được dùng để tạo rađịa chỉ của phần tử dữ liệu được lưu trong ROM trên chip ở lệnh này, nội dung của Ađược cộng với nội dung thanh ghi 16- bit DPTR để tạo ra địa chỉ 16 bit
o Các lệnh dịch và quay
o Các lệnh làm việc với ngăn xếp
Trang 261.2.1.3 Các cổng vào ra của 8051
Mô tả chân của 8051
Mặc dù các thành viên của họ 8051 (ví dụ 8751, 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ẹtvuông QFP (Quad Flat Pakage) và dạng chíp không có chân đỡ LLC (Leadless ChipCarrier) thì chúng đều có 40 chân cho các chức năng khác nhau như vào/ra I/0, đọc RD,ghi WR, địa chỉ, dữ liệu và ngắt Cần phải lưu ý rằng một số hãng cung cấp một phiênbản 8051 có 20 chân với số cổng vào-ra ít hơn cho các ứng dụng yêu cầu thấp hơn Tuynhiên, vì hầu hết các nhà phát triển chính sử dụng chíp đóng vỏ 40 chân với hai hàngchân DIP nên ta chỉ tập trung mô tả phiên bản này
Hình 1: Sơ đồ bố trí chân của 8051
Hình 1 trên là sơ đồ bố trí chân của 8051 Ta thấy rằng trong 40 chân thì có 32 chân dành
cho các cổng P0, P1, P2 và P3 với mỗi cổng có 8 chân Các chân còn lại được dành chonguồn VCC, đất GND, các chân dao động XTAL1 và XTAL2, chân Reset RST, chân chophép chốt địa chỉ ALE, chân truy cập địa chỉ ngoài EA, cho phép cất chương trình PSEN.Trong 8 chân này thì 6 chân VCC , GND, XTAL1, XTAL2, RST và EA được các họ
8051 sử dụng Hay nói cách khác là chúng phải được nối để cho hệ thống làm việc Cònhai chân khác là PSEN và ALE được sử dụng chủ yếu trong các họ 8031
Trang 27- Chân VCC
Chân số 40 là VCC , có chức năng cấp điện áp nguồn cho chíp Nguồn điện áp là +5V
- Chân GND
Chân số 20 là GND, được nối với đất
- Chân XTAL1 và XTAL2
8051 có một bộ dao động trên chíp nhưng nó yêu cầu có một xung đồng hồ ngoài để chạy
nó Một bộ dao động thạch anh sẽ được nối tới các chân đầu vào XTAL1 (chân 19) vàXTAL2 (chân 18) Bộ dao động thạch anh được nối tới XTAL1 và XTAL2 cũng cần hai
tụ gốm giá trị khoảng 30pF Một phía của tụ điện được nối xuống đất như được trình bày
trên hình 2a.
Cần phải lưu ý rằng có nhiều tốc độ khác nhau của họ 8051 Tốc độ được coi như là tần
số cực đại của bộ dao động được nối tới chân XTAL Một bộ vi điều khiển 8051 yêu cầumột tinh thể thạch anh có tần số không lớn hơn 20MHz Khi 8051 được nối tới một bộdao động tinh thể thạch anh và cấp nguồn thì ta có thể quan sát tần số trên chân XTAL2bằng máy hiện sóng Nếu ta quyết định sử dụng một nguồn tần số khác bộ dao độngthạch anh, chẳng hạn như là bộ dao động TTL thì nó sẽ được nối tới chân XTAL1, còn
chân XTAL2 thì để hở không nối như hình 2b.
Chân RST
RST là chân số 9 - Reset Nó là một chân đầu vào có mức tích cực cao (bình thường ở mứcthấp) Khi cấp xung cao tới chân này thì bộ vi điều khiển sẽ được Reset và kết thúc mọi hoạtđộng Điều này thường được coi như là sự tái bật nguồn Khi kích hoạt tái bật nguồn sẽ làmmất mọi giá trị trên các thanh ghi Hình 3 liệt kê các thanh ghi đặc biệt của 8051 và giá trị củachúng sau khi Reset
Trang 28Hình 3 : Giá trị một số thanh ghi sau khi RESET
Lưu ý rằng giá trị của bộ đếm chương trình PC là 0 khi tái lập để ép CPU nạp mã lệnh đầu tiên
từ bộ nhớ ROM tại vị trí ngăn nhớ 0000 Điều này có nghĩa là ta phải đặt dòng đầu tiên của
mã nguồn tại vị trí ngăn nhớ 0 của ROM vì đây là mã mà sau khi CPU thức tỉnh sẽ tìm lệnhđầu tiên Hình 4 trình bày cách nối chân RST với mạch Reset
Trang 29Các chân mô tả ở trên đều phải được nối mà không cần thành phần nào được sử dụng Còn haichân dưới đây được sử dụng chủ yếu trong hệ thống vi điều khiển 8031.
2 Chân PSEN
PSEN là chân đầu ra cho phép cất chương trình (Program Store Enable) trong hệ thống Trên
vi điều khiển 8031, chương trình được cất ở bộ nhớ ROM ngoài thì chân này được nối tớichân OE của ROM
3 Chân ALE
Chân cho phép chốt địa chỉ ALE là chân đầu ra tích cực cao Khi nối 8031 tới bộ nhớ ngoài thìcổng P0 dùng để trao đổi cả địa chỉ và dữ liệu Hay nói cách khác 8031 dồn cả địa chỉ và dữliệu qua cổng P0 để tiết kiệm số chân Chân ALE được sử dụng để phân kênh địa chỉ và dữliệu
Trang 304 Các chân cổng vào/ra và các chức năng của chúng
Bốn cổng P0, P1, P2 và P3 đều sử dụng 8 chân và tạo thành cổng 8 bít Tất cả các cổng khiReset đều được cấu hình như các đầu ra, sẵn sàng để được sử dụng như các cổng đầu ra Muốn
sử dụng cổng nào trong số các cổng này làm đầu vào thì nó phải được lập trình
a Cổng P0
Cổng P0 chiếm tất cả 8 chân (từ chân 32 đến 39) Nó có thể được dùng như cổng đầu ra, để sửdụng các chân của cổng P0 vừa làm đầu ra, vừa làm đầu vào thì mỗi chân phải được nối tớimột điện trở kéo bên ngoài 10kW Điều này là do một thực tế là cổng P0 là một máng mởkhác với các cổng P1, P2 và P3 Khái niệm máng mở được sử dụng trong các chíp MOS vềchừng mực nào đó nó giống như collector hở đối với các chíp TTL
Trong bất kỳ hệ thống nào sử dụng 8751, 89C51 hoặc DS5000 ta thường nối cổng P0 tới cácđiện trở kéo (Xem hình 5), bằng cách này ta có thể sử dụng được cổng P0 cho cả 2 trường hợpđầu ra và đầu vào Với những điện trở kéo ngoài được nối, khi Reset cổng P0 được cấu hìnhnhư một cổng đầu ra
Hình 5: Cổng P0 với các điện trở kéo
Cổng P0 là đầu vào: Với các điện trở được nối tới cổng P0 nhằm để tạo nó thành cổng đầu
vào thì nó phải được lập trình bằng cách ghi 1 tới tất cả các bit của P0
Vai trò kép của cổng P0: Như trên hình 1, cổng P0 được gán là các bit địa chỉ AD0 - AD7
cho phép nó được sử dụng vừa cho địa chỉ, vừa cho dữ liệu Khi nối 8051/31 tới bộ nhớ ngoàithì cổng P0 cung cấp cả địa chỉ và dữ liệu, 8051 dồn dữ liệu và địa chỉ qua cổng P0 để tiết
Trang 31kiệm số chân ALE được sử dụng để tách địa chỉ và dữ liệu với sự trợ giúp của IC chốt dữ liệu74LS373.
b Cổng P1
Cổng P1 cũng chiếm tất cả 8 chân (từ chân 1 đến chân 8) nó có thể được sử dụng như đầu vàohoặc đầu ra So với cổng P0 thì cổng này không cần đến điện trở kéo vì nó đã có các điện trởkéo bên trong Trong quá trình Reset thì cổng P1 được cấu hình như một cổng đầu ra
Cổng P1 là đầu vào: Tương tự P0, để biến cổng P1 thành đầu vào thì nó phải được lập trìnhbằng cách ghi 1 đến tất cả các bit của nó
c Cổng P2
Cổng P2 cũng chiếm 8 chân (các chân từ 21 đến 28) Nó có thể được sử dụng như đầu vàohoặc đầu ra, giống như cổng P1, cổng P2 cũng không cần điện trở kéo vì nó đã có các điện trởkéo bên trong Khi Reset, thì cổng P2 được cấu hình như một cổng đầu ra
Cổng P2 là đầu vào: Để tạo cổng P2 như đầu vào thì nó phải được lập trình bằng cách ghi các
số 1 tới tất cả các chân của nó
Vai trò kép của P2: Trong các hệ thống 8751, 89C51 và DS5000 thì P2 được dùng như đầu
ra Tuy nhiên trong hệ thống 80312 thì cổng P2 có thể được dùng cùng với P0 để tạo ra địa chỉ
16 bit đối với bộ nhớ ngoài Như chỉ ra trên hình 1 cổng P2 cũng được chỉ định như là các bitđịa chỉ A8 - A15 báo chức năng kép của nó Vì một bộ 8031 có khả năng truy cập 64k byte bộnhớ ngoài, nên nó cần một đường địa chỉ 16 bít Trong khi P0 cung cấp 8 bit thấp qua A0 -A7 Công việc của P2 là cung cấp các bít địa chỉ A8 - A15 Hay nói cách khác khi 8031 đượcnối tới bộ nhớ ngoài thì P2 được dùng cho 8 bít cao của địa chỉ 16 bit và nó không thể dùngcho vào/ra
Từ những trình bày trên đây ta có thể kết luận rằng trong các hệ thống vi điều khiển 8751,89C51 hoặc DS5000 thì ta có các cống P0, P1, P2 và P3 cho các thao tác vào ra và như thế là
có thể đủ cho các ứng dụng với hầu hết các bộ vi điều khiển Ngoài ra cổng P3 còn để dànhcho các chức năng đặc biệt khác mà ta sẽ cùng bàn dưới đây
d Cổng P3
Cổng P3 chiếm tổng cộng là 8 chân từ chân 10 đến chân 17 Nó có thể được sử dụng như đầuvào hoặc đầu ra Cống P3 không cần các điện trở kéo cũng như P1 và P2 Mặc dù cổng P3được cấu hình như một cống đầu ra khi Reset, nhưng đây không phải là cách nó được sử dụngphổ biến nhất
Cống P3 được bổ sung các chức năng quan trọng, đặc biệt