Kiến trúc Von Neumann tận dụng được tài nguyên bộ nhớ, trong khi đó kiến trúc Harvard sẽ đạt tốc độ xử lý cao hơn, mặt khác đường truyền dữ liệu và đường truyền lệnh điều khiển chương tr
Trang 1621.3815 TRƯỜNG ĐẠI HỌC VINH
KHOA ĐIỆN TỬ - VIỄN THÔNG
VÀ VI ĐIỀU KHIỂN 8051
GV hướng dẫn : ThS Phạm Mạnh Toàn
SV thực hiện : Lương Xuân Thọ
Lớp : 51K1 - ĐTVT Khóa học : 2010 - 2015
NGHỆ AN - 01/2015
Trang 2MỤC LỤC
Trang
LỜI CẢM ƠN 5
MỞ ĐẦU 6
TÓM TẮT ĐỒ ÁN 7
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT 8
DANH MỤC HÌNH VẼ 9
DANH MỤC BẢNG BIỂU 11
Chương 1 TỔNG QUAN VỀ VI ĐIỀU KHIỂN 12
1.1 Khái quát về vi điều khiển 12
1.1.1 Kiến trúc vi điều khiển 12
1.1.2 Tập lệnh 12
1.1.3 Chức năng 13
1 2 Các bộ vi điều khiển 13
1.2.1 Các bộ vi điều khiển và các bộ xử lý nhúng 13
1.2.2 Định nghĩa bộ vi xử lý 13
1.2.3 Các bộ vi điều khiển cho hệ thống nhúng 14
1.2.4 Các ứng dụng nhúng của PC86 16
1.2.5 Lựa chọn một bộ vi điều khiển 16
1.3 Tìm hiểu chung về họ 8051 16
1.3.1 Cấu trúc bus 16
1.3.2 Bộ nhớ chương trình 17
1.3.3 Bộ nhớ dữ liệu 17
1.4 Họ vi điều khiển 8051 17
1.4.1 Tóm tắt về lịch sử của 8051 17
1.4.2 Đặc tính vi điều khiển 8051 18
1.4.3 Sơ đồ khối chung của họ vi điều khiển 8051 19
1.4.4 Thành viên họ vi điều khiển 8051 19
1.5 Các họ vi điều khiển khác 23
Trang 31.5.1 Họ vi điều khiển AMCC 23
1.5.2 Họ vi điều khiển Cypress MicroSystems 23
1.5.3 Họ vi điều khiển Freescale Semiconductor 23
1.5.4 Họ vi điều khiển Fujitsu 24
1.5.5 Họ vi điều khiển Intel 24
1.5.6 Họ vi điều khiển Microchip 25
Chương 2 TÌM HIỂU VỀ VI ĐIỀU KHIỂN 89S52 31
2.1 Giới thiệu chương 31
2.2 Sơ đồ khối, sơ đồ chân của vi điều khiển 89S52 31
2.2.1 Giới thiệu sơ lược 31
2.2.2 Cấu hình của 89S52 31
2.2.3 Sơ đồ khối 89S52 32
2.2.4 Sơ đồ chân 89S52 33
2.2.5 Chức năng các chân của AT89S52 33
2.3 Tổ chức bộ nhớ bên trong 89S52 36
2.4 Kết nối vi điều khiển với một số thiết bị ngoại vi đơn giản 42
2.4.1 VĐK giao tiếp led đơn và phím nhấn 42
2.4.2 Kết nối VĐK với Rơle 42
2.4.3 Kết nối VĐK với LCD 43
2.4.4 Kết nối VĐK với ma trận led 43
2.4.5 Kết nối VĐK với máy tính bằng chẩn giao tiếp RS232 44
Chương 3 CẢM BIẾN QUANG ENCODER VÀ MODULE DL3155M33 49
3.1 Giới thiệu chương 49
3.2 Tổng quan về cảm biến quang Encoder 49
3.2.1 Giới thiệu chung 49
3.2.2 Encoder tuyệt đối 50
3.2.3 Encoder xung 53
3.2.4 Ứng dụng của encoder 54
3.3 Module DL3155M33 56
Trang 43.3.1 Khối điều chế độ rộng xung PWM 56
3.3.2 Khối cảm biến chuẩn 58
3.3.3 Khối encoder 58
Chương 4 THIẾT KẾ MẠCH ĐO TỐC ĐỘ ĐÔNG CƠ 60
4.1 Giới thiệu chương 60
4.2 Xây dựng mạch đo tốc độ quay động cơ 60
4.2.1 Nguyên tắc đo tốc độ quay động cơ 60
4.2.2 Sơ đồ khối và hoạt động 61
4.2.3 Sơ đồ thuật toán 63
4.2.4 Mô phỏng 63
4.2.5 Giao diện 64
4.2.6.Sơ đồ nguyên lý 65
4.2.7 Thực hiện mạch thật 65
4.2.8 Kết quả mô phỏng và đo thử nghiệm 66
4.3 Kết quả và thảo luận 67
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 68
TÀI LIỆU THAM KHẢO 69 PHỤ LỤC 1
PHỤ LỤC 2
Trang 5LỜI CẢM ƠN
Lời đầu tiên cho phép em được gửi lời cảm ơn chân thành tới quý thầy cô trong khoa Điện tử - Viễn thông đã giảng dạy cho em trong suốt khóa học, tạo mọi điều kiện thuận lợi để chúng em được học tập, làm việc và sáng tạo Trong suốt quá trình học tập tại trường, thầy cô đã dạy cho em những kỹ năng tốt nhất để em có thể hoàn thành đồ án này
Em xin cảm ơn ThS Phạm Mạnh Toàn đã hướng dẫn về nội dung và phương pháp, giúp em hoàn thành đồ án đúng tiến độ Do thời gian thực hiện đồ án còn nhiều thiếu sót nên mong được sự góp ý của quý thầy cô
Trang 6MỞ ĐẦU
Ngày nay, với những ứng dụng của khoa học kỹ thuật tiên tiến, thế giới của chúng ta đã và đang mỗi ngày một thay đổi văn minh và hiện đại hơn Sự phát triển của kỹ thuật điện tử đã tạo ra hàng loạt thiết bị với các đặc điểm như độ chính xác cao, tốc độ nhanh, gọn nhẹ là những yếu tố rất cần thiết góp phần cho hoạt động của con người đạt hiệu quả cao Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành và sử dụng được lại là một điều rất phức tạp Các bộ vi điều khiển theo thời gian cùng với sự phát triển của công nghệ bán dẫn đã tiến triển rất nhanh, từ các bộ vi điều khiển 4 bit đơn giản đến các bộ vi điều khiển 32 bit, đến 64 bit Điện tử đang trở thành một nghành khoa học đa nhiệm vụ Điện tử đã đáp ứng được những đòi hỏi không ngừng từ các lĩnh vực công – nông – lâm- ngư nghiệp cho đến các nhu cầu cần thiết trong hoạt động đời sống hằng ngày Một trong những ứng dụng thiết thực trong đó là ứng dụng về đo và hiển thị tốc độ động cơ Đây là một ứng dụng rất quan trọng được áp dụng trong nhiều lĩnh vực và dây chuyền sản xuất Tốc độ động cơ sẽ được hiển thị trên màn hình máy tính, từ đó chúng ta có thể giám sát được tốc độ động cơ để có quyết định điều khiển cho phù hợp với yêu cầu
Đó là lý do em lựa chọn đề tài “Nghiên cứu thiết kế chế tạo mạch đo tốc độ quay động cơ trên cơ sở sử dụng Module DL3155M33 và vi điều khiển 8051” Mục đích của đề tài này là sử dụng thiết bị sẵn có trong phòng thí nghiệm để xây dựng mạch
đo tốc độ quay động cơ và hiển thị được tốc độ đó lên màn hình máy tính Kết quả
đã xây dựng được mạch thật với sai số là 1%
Nghệ An, tháng 01 năm 2015
Sinh viên thực hiện Lương Xuân Thọ
Trang 7TÓM TẮT ĐỒ ÁN
DL3155M33 là mô-đun được sử dụng trong phòng thí nghiệm đo lường thuộc khoa Điện tử - Viễn thông, Trường Đại học Vinh Mô-đun này gồm 3 khối đó
là khối điều chế độ rộng xung PWM, khối cảm biến chuẩn và khối encoder
Đồ án này nghiên cứu và xây dựng thành công một mạch đo tốc độ quay động cơ trên cơ sở phát triển ứng dụng của module DL3155M33 và vi điều khiển 89S52 thuộc họ 8051 Kết quả thu được có thể được sử dụng để học tập và nghiên cứu khoa học cho sinh viên Khoa Điện tử - Viễn thông
ABSTRACT
DL3155M33 is a module of laboratory measurements of the department of Electronics and Telecommunications, Vinh University This module consist of of 3 blocks which is the pulse width modulator PWM, encoder block and sensor standard block
This thesis investigated and installed the circuits of engine speed measurement based on the development applications of DL3155M33 module and 89S52 microcontroller in 8051 family microcontroller The obtained results can be used to learning and scientific research for students department of Electronics and Telecommunications
Trang 8DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
Metal-Oxide-Semiconductor
Công nghệ dùng để chế tạo vi mạch tích hợp
Computer
Máy tính thông minh khả trình
Trang 9DANH MỤC HÌNH VẼ
Trang
Hình 1.1 Bố trí bên trong của sơ đồ khối 8051 19
Hình 1.2 Kiến trúc Havard và kiến trúc Von-Neuman 25
Hình 1.3 Cơ chế pipelining 27
Hình 2.1 Sơ đồ khối của bộ vi điều khiển AT89S52 32
Hình 2.2 Sơ đồ chân của AT89S52 33
Hình 2.3 Sơ đồ Port 0 34
Hình 2.4 Sơ đồ Port 1 34
Hình 2.5 Sơ đồ Port 2 34
Hình 2.6 Mạch reset 36
Hình 2.7 Mạch dao động 36
Hình 2.8 Bản đồ bộ nhớ Data bên trong Chip 89S52 37
Hình 2.9 Thanh ghi cho phép ngắt IE 40
Hình 2.10 VĐK giao tiếp led đơn và phím nhấn 42
Hình 2.11 VĐK giao tiếp rơle-5V 43
Hình 2.12 VĐK giao tiếp phím nhấn và LCD 43
Hình 2.13 VĐK giao tiếp với ma trận led 44
Hình 2.14 Các linh kiện để ghép nối 45
Hình 2.15 Mạch giao tiếp 47
Hình 2.16 VĐK giao tiếp với máy tính 48
Hình 3.1 Cấu tạo encoder quay quang 49
Hình 3.2 Encoder tuyệt đối 50
Hình 3.3 Mã Gray 52
Hình 3.4 Encoder loại 1 kênh 54
Hình 3.5 Encoder 2 kênh 54
Hình 3.6 Encoder đơn kênh kết hợp với tính hiệu điều khiển 54
Hình 3.7 Giải mã trực tiếp tín hiệu 55
Hình 3.8 Mạch Encoder xung khi ghép nối với máy tính 55
Hình 3.9 Encoder kết nối với vi điều khiển 56
Hình 3.10 Thiết lập khối PWM 57
Trang 10Hình 3.11 Điện áp ra 57
Hình 3.12 Sơ đồ kết nối khối cảm biến chuẩn 58
Hình 4.1 Lấy mẫu xung 60
Hình 4.2 Sơ đồ khối hệ thống đo tốc độ động cơ 61
Hình 4.3 Khối nguồn 61
Hình 4.4 Khối vi điều khiển 62
Hình 4.5 Khối giao tiếp máy tính 62
Hình 4.6 Sơ đồ thuật toán 63
Hình 4.7 Sơ đồ mạch mô phỏng 64
Hình 4.8 Giao diện 64
Hình 4.9 Sơ đồ nguyên lý 65
Hình 4.10 Mạch hoàn thiện 65
Hình 4.11 Tần số đo được 66
Trang 11DANH MỤC CÁC BẢNG BIỂU
Trang
Bảng 1.1 Các đặc tính của 8051 đầu tiên 18
Bảng 1.2 So sánh các đặc tính của các thành viên họ 8051 20
Bảng 1.3 Thông số các thành viên của 8051 từ Atmel 21
Bảng 1.4 Các phiên bản 8051 với tốc độ khác nhau của Atmel 21
Bảng 1.5 Các phiên bản 8051 từ hãng Dallas Semiconductor 22
Bảng 1.6 Một số thành viên của họ 8051 22
Bảng 2.1 Các chức năng của Port 3 35
Bảng 2.2 Bit chọn Bank thanh ghi 39
Bảng 2.3 Bảng vector ngắt của 8051 40
Bảng 2.4 Tóm tắt thanhh ghi chức năng TMOD 42
Bảng 3.1 Thông số của Encoder EP50 51
Bảng 3.2 Cách chia độ phân giải của encoder [5] 51
Bảng 3.3 Trạng thái lỗi của mã Gray 52
Bảng 4.1 Tốc độ quay của động cơ ứng với các giá trị điện áp khác nhau 67
Trang 12Chương 1 TỔNG QUAN VỀ VI ĐIỀU KHIỂN 1.1 Khái quát về vi điều khiển
Năm 1976, hãng Intel giới thiệu bộ vi điều khiển 8748-mở đầu cho họ vi điều khiển MCU-48 8747 là một vi mạch chứa hơn 17.000 transistor bao gồm CPU, 1kbyte bộ nhớ ROM, 64KB RAM, một bộ đếm/định thời 8 bit và 27 chân vào/ra Vi điều khiển (MCU: Micro Control Unit) có thể được coi như một máy tính thu nhỏ trên một chíp, nó còn có thể hoạt động với một vài linh kiện phụ trợ ở bên ngoài Sau 8748, các bộ vi điều khiển mới tiếp tục được các hãng sản xuất như Intel, Atmel, Simens…giới thiệu cho các ứng dụng nhúng [1]
1.1.1 Kiến trúc vi điều khiển
Thực ra vi điều khiển cũng là một cấu trúc nhỏ, gồm các linh kiện điện tử ở kích thước micro hoặc nano, các linh kiện này được kết hợp với nhau và được nối với các thiết bị bên ngoài qua các chân vi điều khiển Kiến trúc máy tính hay kiến trúc vi điều khiển cũng tương tự nhau Do đó, các bạn có thể tìm hiểu về kiến trúc máy tính, để hiểu rõ về kiến trúc vi điều khiển
Hai kiến trúc vi điều khiển rất phổ biến hiện nay là kiến trúc Von Neumann và kiến trúc Harvard Sự khác biệt chủ yếu giữa hai kiến trúc này chính là việc tổ chức
bộ nhớ dữ liệu và bộ nhớ chương trình Kiến trúc Von Neumann tổ chức bộ nhớ dữ liệu và bộ nhớ chương trình chung với nhau, chính vì vậy đường truyền (bus) của kiến trúc Von Neumann là đường truyền chung Trong khi đó, kiến trúc Harvard tách rời bộ nhớ dữ liệu và bộ nhớ chương trình
Mỗi kiến trúc này có một lợi điểm riêng rẽ khác nhau Kiến trúc Von Neumann tận dụng được tài nguyên bộ nhớ, trong khi đó kiến trúc Harvard sẽ đạt tốc độ xử lý cao hơn, mặt khác đường truyền dữ liệu và đường truyền lệnh điều khiển (chương trình) có thể có dung lượng khác nhau [2]
1.1.2 Tập lệnh
Tập lệnh ở đây được coi là tập mã lệnh nhị phân, bản chất của tập lệnh là một tập hợp các mã nhị phân mà từ đó các đơn vị xử lý trung tâm (CPU) nhận biết và thực hiện Dữ liệu được CPU xử lý là các số nhị phân Chính vì vậy, tập lệnh dù thế
Trang 13nào đi nữa cũng sẽ thực hiện các việc chính sau:
- Tính toán các con số nhị phân
- Các lệnh để chuyển các giá trị ra thành tín hiệu điện tử ở chân linh kiện
- Các lệnh di chuyển các giá trị giữa các thanh ghi
- Các lệnh điều khiển con trỏ chương trình
1.1.3 Chức năng
Hiện nay rất nhiều loại vi điều khiển ra đời và rất nhiều tính năng được tích hợp vào trong vi điều khiển dưới dạng phần cứng Tuy nhiên, tựu chung lại thì mọi việc cũng đều nằm ở việc điều khiển động cơ và đọc cảm biến Một cánh cửa tự động là một cái cảm biến hồng ngoại và một cái động cơ Đại đa số những gì tự động đều có dính đến động cơ trong đó, vì không có động cơ thì nó không biến đổi điện năng thành cơ năng được Khi đó ta sẽ phải thiết kế một cảm biển để quan sát
Để biết được tính năng của từng loại vi điều khiển ta chọn phần datasheet nói tóm lại chức năng của vi điều khiển rất phong phú và đa dạng Nên hãy nghiên cứu thật kĩ trước khi mua về để phục vụ các nhu cầu của mình đang cần
1 2 Các bộ vi điều khiển
1.2.1 Các bộ vi điều khiển và các bộ xử lý nhúng
Trong mục này chúng ta bàn về nhu cầu đối với các bộ vi điều khiển và so sánh chúng với các bộ vi xử lý cùng dạng chung như Pentium và các bộ vi xử lý 86 khác Chúng ta sẽ cùng xem xét vai trò của các vi điều khiển trong thị trường các sản phẩm nhúng Ngoài ra, chúng ta cung cấp một số tiêu chuẩn và cách lựa chọn một bộ vi điều khiển như thế nào
1.2.2 Định nghĩa bộ vi xử lý
Bộ vi xử lý ở đây là các bộ vi xử lý công dụng chung như họ Intell 86(8086,
80286, 80386, Pentium hoặc họ Motorola 6800(68000, 68010, 68020, 68030…) Những bộ vi xử lý này không có RAM, ROM và không có các cổng vào ra trên chip Với lý do đó mà chúng được gọi chung đó là các bộ vi xử lý công dụng chung Một nhà thiết kế hệ thống sử dụng một bộ vi xử lý công dụng chung chẳng hạn như Pentium hay 68040 phải bổ sung thêm RAM, ROM Các cổng vào ra và các bộ định thời ngoài để làm cho chúng hoạt động được Mặc dù bổ sung thêm RAM,
Trang 14ROM và các cổng vào ra bên ngoài làm cho hệ thống cồng kềnh và đắt hơn, nhưng chúng có ưu điểm là linh hoạt chẳng hạn như người thiết kế có thể quyết định về số lượng RAM, ROM và các cổng ra vào cần thiết phù hợp với bài toán trong tầm tay của mình
Điều này không thể có được đối với các bộ vi điều khiển Một bộ vi điều khiển
có một CPU (một bộ vi xử lý) cùng với một lượng cố định RAM, ROM, các cổng vào ra và một bộ định thời tất cả trên cùng một chip Hay nói cách khác là bộ xử lý, RAM, ROM các cổng vào ra và bộ định thời đều được nhúng với nhau trên một chip, do vậy người thiết kế không thể bổ xung thêm bộ nhớ ngoài, cổng vào ra hoặc
bộ định thời cho nó Số lượng cố định của RAM, ROM trên chip và số các cổng vào – ra trong các bộ vi điều khiển làm cho chúng trở nên lý tưởng đối với nhiều ứng dụng mà trong đó giá thành và không gian lại hạn chế Trong nhiều ứng dụng, ví dụ như bộ điều khiển TV từ xa thì không cần công suất tính toán của bộ vi xử lý 486 hoặc thậm chí như 8086 Trong rất nhiều ứng dụng thì không gian nó chiếm, công suất nó tiêu tốn và giá thành trên một đơn vị là những cân nhắc nghiêm ngặt hơn nhiều so với công suất tính toán Những ứng dụng thường yêu cầu một số thao tác vào – ra để đọc các tín hiệu và tắt – mở những bit nhất định Điều thú vị là một số nhà sản xuất các bộ vi điều khiển đã đi xa hơn là tích hợp cả một bộ chuyển đổi ADC và các ngoại vi khác vào trong bộ vi điều khiển [1]
1.2.3 Các bộ vi điều khiển cho hệ thống nhúng
Trong tài liệu về các bộ vi xử lý ta thường thấy khái niệm hệ thống nhúng Các
bộ vi xử lý và các bộ vi điều khiển được sử dụng rộng rãi trong các sản phẩm hệ thống nhúng Một sản phẩm nhúng sử dụng một bộ vi xử lý và chỉ một mà thôi Một máy in là một ví dụ về một việc nhúng vì bộ xử lý bên trong nó chỉ làm một việc đó
là nhận dữ liệu và in nó ra
Định nghĩa về hệ thống nhúng (embedded system): Hệ thống nhúng là hệ thống xử lý thông tin được nhúng vào trong một sản phẩm lớn hơn và bình thường người dùng không thấy nó một cách trực tiếp [2]
Hệ thống tính toán nhúng (embedded computing system) là hệ thống tính toán được nhúng trong thiết bị điện tử (hầu như là các hệ thống tính toán khác máy tính) Thông thường các hệ thống nhúng là những ứng dụng đơn chức năng
Trang 15Hệ thống nhúng là hệ thống mà chức năng chính của nó không chỉ có tính toán
mà được điều khiển bởi máy tính được nhúng trong nó
Trong các định nghĩa trên, chúng ta thấy định nghĩa thứ nhất có thể mô tả tổng quát về hệ thống nhúng Ngày nay các hệ thống nhúng ở khắp nơi, chúng xuất hiện trong nhà, văn phòng, nhà máy, xe hơi, bệnh viện,…
Những đặc tính chung của các hệ thống nhúng
Các hệ thống nhúng có các đặc tính chung sau:
Thường thì các hệ thống nhúng được nối với môi trường vật lý qua các cảm biến để thu thập thông tin từ môi trường đó và qua các bộ điều khiển/tác động để điều khiển môi trường
Các hệ thống nhúng phải tin cậy được “Tin cậy được” bao gồm độ tin cậy, tính bảo trì, tính khả dụng, an toàn và bảo mật
Các hệ thống nhúng phải có hiệu suất cao Để đánh giá hiệu suất, người ta dựa vào các tiêu chí sau: năng lượng, kích thước mã chương trình/tài nguyên sử dụng, hiệu suất lúc chạy thật (run-time efficiency), khối lượng và giá,dành riêng cho ứng dụng cụ thể Thí dụ bộ xử lý chạy chương trình điều khiển trong xe hơi sẽ luôn luôn chạy chương trình mà không chuyển sang chương trình khác
Hầu hết các hệ thống nhúng không dùng bàn phím, chuột hay màn mình để giao tiếp với người dùng Thay vào đó, chúng có các giao tiếp dành riêng cho người dùng như các nút nhấn, bàn đạp…
Nhiều hệ thống nhúng phải thỏa mãn các ràng buộc thời gian thực Nhiều hệ thống nhúng là những hệ thống hỗn hợp (hybrid systems) theo nghĩa gồm cả hai phần tương tự và số
Các hệ thống nhúng là những hệ thống có phản ứng lại (reactive systems) Chúng có thể được định nghĩa như sau: hệ thống có phản ứng lại là hệ thống mà có tương tác liên tục với môi trường của nó và thực thi với tốc độ được xác định bởi môi trường đó [2]
Thật ra không phải mọi hệ thống nhúng sẽ có tất cả các đặc tính trên Chúng ta cũng có thể định nghĩa thuật ngữ “hệ thống nhúng” theo cách sau: Những hệ thống xử lý thông tin thỏa mãn phần lớn các đặc tính trên được gọi là những hệ thống nhúng
Trang 161.2.4 Các ứng dụng nhúng của PC86
Chúng ta có thể thấy các hệ thống nhúng trong nhiều lĩnh vực:
- Điện tử gia dụng: máy giặt, tủ lạnh, máy chụp hình số
- Điện tử ô-tô: hệ điều khiển động cơ, hệ điều khiển thắng, hệ thống GPS
- Điện tử trong máy bay: hệ thống thông tin cho phi công, hệ chống va chạm
- Điện tử y sinh: đo nhiệt độ, ECG, chẩn đoán từ xa
1.2.5 Lựa chọn một bộ vi điều khiển
Có 4 bộ VĐK 8 bít chính Đó là 6811 của Motorola, 8051 của Intel và Pic 16 của Microchip Mỗi một kiểu loại trên đây đều có một tệp lệnh và thanh ghi riêng duy nhất, nếu chúng đều không tương tích lẫn nhau Cũng có những bộ VĐK 16 bit
và 32 bit được sản xuất bởi các hãng sản xuất chíp khác nhau Với tất cả những bộ
vi điều khiển khác nhau như thế thì tiêu chuẩn lựa chọn mà các nhà thiết kế phải cân nhắc là gì? Có 3 tiêu chuẩn để lựa chọn các bộ vi điều khiển là [1]:
1- Đáp ứng nhu cầu tính toán của bài toán một cách hiệu quả về mặt giá thành
và đầy đủ chức năng có thể nhìn thấy được
2- Có sẵn các công cụ phát triển phần mềm chẳng hạn như các trình biên dịch, trình hợp ngữ và gỡ rối
3- Nguồn các bộ vi điều khiển có sẵn nhiều và tin cậy
1.3 Tìm hiểu chung về họ 8051
1.3.1 Cấu trúc bus
Bus địa chỉ của họ vi điều khiển 8051 gồm 16 đường tín hiệu (thường gọi là bus địa chỉ 16 bit) với lượng bit địa chỉ như vậy, không gian nhớ của nó có thể mở rộng tối đa đên 2^16=65536 địa chỉ tương đương 64K
Trang 17Bus dữ liệu của họ 8051 gồm 8 đường tín hiệu (thường gọi là dữ liệu 8 bit), đó
là lí do vì sao nói 8051 là họ vi điều khiển 8 bit Với độ rộng của bus dữ liệu như vậy, các chip họ 8051 có thể xử lí được các toán hạng 8 bit trong 1 chu kì lệnh [1]
1.3.2 Bộ nhớ chương trình
Vi điều khiển họ 8051 có không gian nhớ là 64K địa chỉ, đó cũng là bộ nhớ chương trình lớn nhất mà mỗi chip thuộc họ này có được Bộ nhớ chương trình của các chip thuộc họ 8051 có thể thuộc loại ROM, EPROM, Flash, hoặc không có bộ nhớ chương trình bên trong chip, tên của chip thể hiện bộ nhớ chương trình mà nó chứa bên trong [1]
1.3.3 Bộ nhớ dữ liệu
Bộ nhớ SRAM được tích hợp bên trong mọi chip thuộc họ này, có dung lượng khác nhau tùy loại chip nhưng thường thì chỉ khoảng vài trăm byte Đây chính là nơi chứa các biến trung gian trong quá trình hoạt động của chip Khi mất điện do bản chất của SRAM mà các giá trị này cũng mất theo Bên cạnh bộ nhớ loại SRAM thì một số chip thuộc họ 8051 còn có thêm bộ nhớ EEPROM với dung lượng tối
đa vài Kbyte tùy từng loại chip cụ thể
1.4 Họ vi điều khiển 8051
1.4.1 Tóm tắt về lịch sử của 8051
Và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, hai bộ định thời, một cổng nối tiếp và 4 cổng 8 bit Tất cả đều được tích hợp trên một chip Lúc bấy giờ,
bộ vi điều khiển như vậy được coi là một “hệ thống trên chip” 8051 là một bộ xử lý
8 bit, tức là CPU chỉ có thể làm việc với 8 bit dữ liệu Dữ liệu lớn hơn 8 bit được chia thành các dữ liệu 8 bit để xử lý 8051 có tất cả 4 cổng I/O mỗi cổng rộng 8 bit,
có thể có một ROM trên chip cực đại là 64 Kbyte Tuy nhiên, lúc đó các nhà sản xuất đã cho xuất xưởng chỉ với 4 Kbyte ROM trên chip 8051 đã trở nê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 để mã chương trình tương thích với
8051 Từ đó dẫn đến sự ra đời nhiều phiên bản của 8051 với các tốc độ khác nhau Tuy nhiên, điều quan trọng là mặc dù có nhiều biến thể của 8051, như khác nhau về tốc độ và dung lượng nhớ ROM trên chip, nhưng tất cả các lệnh đều tương thích với
Trang 188051 ban đầu Điều này có nghĩa là nếu ta 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ó từ hãng sản xuất nào [1]
1.4.2 Đặc tính 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
Interrupt control: Điều khiển ngắt
Other registes: Các thanh ghi khác
128 Byte RAM: RAM 128 Byte
Bảng 1.1 Các đặc tính của 8051 đầu tiên
Interrupt control: Điều khiển ngắt
Other registes: Các thanh ghi khác
RAM: RAM 128 Byte
Timer 0, 1, 2: Bộ định thời 0, 1, 2
CPU: Đơn vị điều khiển trung tâm
Oscillator: Mạch dao động
Bus control: Điều khiển Bus
I/O ports: Các ports vào/ra
Serial port: Port nối tiếp
Address/data: Địa chỉ/dữ liệu
Trang 191.4.3 Sơ đồ khối chung của họ vi điều khiển 8051
Hình 1.1 Bố trí bên trong của sơ đồ khối 8051 [3]
1.4.4 Thành viên họ vi điều khiển 8051
Bộ vi điều khiển 8052 là một thành viên khác của họ 8051, 8952 có tất 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 3 bộ định thời và có 8 Kbyte ROM trên chip thay vì 4 Kbyte như 8051
- Các bộ vi điều khiển 8051 từ các hãng khác nhau
Mặc dù 8051 là thành viên phổ biến nhất của họ 8051 nhưng chúng ta sẽ thấy
nó trong kho linh kiện Đó là do 8051 có dưới nhiều dạng kiểu bộ nhớ khác nhau như UV – PROM, Flash và NV– RAM mà chúng đều có số đăng ký linh kiện khác nhau Phiên bản Flash ROM được bán bởi nhiều hãng khác nhau chẳng hạn của Atmel corp với tên gọi là AT89C51 còn phiên bản NV – RAM của 8051 do Dalas Semi Conductor cung cấp thì được gọi là DS5000 Ngoài ra còn có phiên bản OTP (khả trình một lần) của 8051 được sản xuất bởi rất nhiều hãng
- Bộ vi điều khiển AT89C51 từ Atmel Corporation Chip 8051 phổ biến này có ROM trên chip ở dạng bộ nhớ Flash Điều này là lý tưởng đối với những phát triển nhanh vì bộ nhớ Flash có thể được xóa trong vài giây trong 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ệ
Trang 20thố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ộ xóa ROM Lưu ý rằng trong bộ nhớ Flash ta phải xóa toàn bộ nội dung của ROM nhằm để lập trình lại cho nó Việc xóa 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ông cần đến bộ xoá Để loại trừ nhu cầu đối với một bộ đốt PROM hãng Atmel đang nghiên cứu một phiên bản của AT89C51 có thể được lập trình qua cổng truyền thông COM của máy tính IBM PC 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 1.2 Ví dụ để ý rằng chữ “C” đứng trước số 51 trong AT89C51 – 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ối cùng là ký hiệu cho thương mại (ngược với chữ “M” là quân sự)
Bảng 1.2 So sánh các đặc tính của các thành viên họ 8051
Thông thường AT89C51 – 12PC rất lý tưởng cho các dự án của học sinh, sinh viên
Trang 21Chữ “T” đứng sau 5000 là có đồng hồ thời gian thực
Bảng 1.3 Thông số các thành viên của 8051 từ Atmel
Bảng 1.4 Các phiên bản 8051 với tốc độ khác nhau của Atmel
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 1 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ặc
DS5000T-8-12 là lý tưởng đối với các dự án của sinh viên Phiên bản OTP của 8051 các phiên bản OTP của 8051 là các chip 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 – RAM thường được dùng để phát triển sản phẩm mẫu Khi một sản phẩm được thiết kế và được hoàn thiện tuyết đối thì phiên bản OTP của 8051 được dùng để sản xuất hàng loạt vì giá thành một đơn vị sản phẩm sẽ rẻ hơn
- Phiên bản OTP của 8051 các phiên bản OTP của 8051 là các chip 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 – RAM thường được dùng để phát triển sản phẩm mẫu Khi
Trang 22một sản phẩm được thiết kế và được hoàn thiện tuyết đối thì phiên bản OTP của
8051 được dùng để sản xuất hang loạt vì giá thành một đơn vị sản phẩm sẽ rẻ hơn
Bảng 1.5 Các phiên bản 8051 từ hãng Dallas Semiconductor
Trang 231.5 Các họ vi điều khiển khác
1.5.1 Họ vi điều khiển AMCC
Họ vi điều khiển AMCC do tập đoàn "Applied Micro Circuits Corporation" sản xuất Từ tháng 5 năm 2004, họ vi điều khiển này được phát triển và tung ra thị
trường bởi IBM Họ này gồm các dòng :
1.5.2 Họ vi điều khiển Cypress MicroSystems
Crypress nổi tiếng với dòng sản phẩm PsoC, đây là những vi mạch có tích hợp
vi điều khiển, các linh kiện tương tự (các bộ khuếch đại, các bộ biến đổi A/D, D/A, các bộ lọc, các bộ so sánh…) và các linh kiện số (bộ định thời, bộ đếm, bộ tạo xung PWM, SPI, UART, I2C…) trên một chip duy nhất Việc tích hợp hàng trăm khối chức năng cùng với một bộ điều khiển trên một chip cho phép giảm thời gian thiết
kế, thu gọn kích thước sản phẩm, giảm công suất tiêu thụ và giảm giá thành sản phẩm
1.5.3 Họ vi điều khiển Freescale Semiconductor
Từ năm 2004, những vi điều khiển này được phát triển và tung ra thị trường bởi Motorola
Trang 24- FR-V Family (32 bit RISC)
1.5.5 Họ vi điều khiển Intel
Trang 251.5.6 Họ vi điều khiển Microchip
- 12-bit instruction PIC
- 14-bit instruction PIC
- PIC16F84
- 16-bit instruction PIC
PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dịch là
“máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho vi điều khiển đầu tiên của họ: PIC1650 được thiết kế để dùng làm các thiết bị ngoại vi cho
vi điều khiển CP1600 Vi điều khiển này sau đó được nghiên cứu phát triển thêm và
từ đó hình thành nên dòng vi điều khiển PIC ngày nay
- Kiến trúc PIC gồm cấu trúc phần cứng của một vi điều khiển được thiết kế theo hai dạng kiến trúc là kiến trúc Von Neuman và kiến trúc Havard Tổ chức phần cứng của PIC được thiết kế theo kiến trúc Havard Điểm khác biệt giữa kiến trúc Havard và kiến trúc Von-Neuman là cấu trúc bộ nhớ dữ liệu và bộ nhớ chương trình
Bộ nhớ
Bộ nhớ chương trình
Kiến trúc Havard
CPU
Bộ nhớ chương trihf và dữ liệu
kiến trúc Neuman
Von-Hình 1.2 Kiến trúc Havard và kiến trúc Von-Neuman Đối với kiến trúc Von-Neuman, bộ nhớ dữ liệu và bộ nhớ chương trình nằm chung trong một bộ nhớ, do đó ta có thể tổ chức, cân đối một cách linh hoạt bộ nhớ chương trình và bộ nhớ dữ liệu Tuy nhiên điều này chỉ có ý nghĩa khi tốc độ xử lí của CPU phải rất cao, vì với cấu trúc đó, trong cùng một thời điểm CPU chỉ có thể
Trang 26tương tác với bộ nhớ dữ liệu hoặc bộ nhớ chương trình Như vậy có thể nói kiến trúc Von-Neuman không thích hợp với cấu trúc của một vi điều khiển
Đối với kiến trúc Havard, bộ nhớ dữ liệu và bộ nhớ chương trình tách ra thành hai bộ nhớ riêng biệt Do đó trong cùng một thời điểm CPU có thể tương tác với cả hai bộ nhớ, như vậy tốc độ xử lí của vi điều khiển được cải thiện đáng kể
Một điểm cần chú ý nữa là tập lệnh trong kiến trúc Havard có thể được tối ưu tùy theo yêu cầu kiến trúc của vi điều khiển mà không phụ thuộc vào cấu trúc dữ liệu Ví dụ, đối với vi điều khiển dòng 16F, độ dài lệnh luôn là 14 bit (trong khi dữ liệu được tổ chức thành từng byte), còn đối với kiến trúc Von-Neuman, độ dài lệnh luôn là bội số của 1 byte (do dữ liệu được tổ chức thành từng byte) Đặc điểm này được minh họa cụ thể trong hình 1.2
- RISC và CISC
Như đã trình bày ở trên, kiến trúc Havard là khái niệm mới hơn so với kiến trúc Von-Neuman Khái niệm này được hình thành nhằm cải tiến tốc độ thực thi của một vi điều khiển
Qua việc tách rời bộ nhớ chương trình và bộ nhớ dữ liệu, bus chương trình và bus dữ liệu, CPU có thể cùng một lúc truy xuất cả bộ nhớ chương trình và bộ nhớ
dữ liệu, giúp tăng tốc độ xử lí của vi điều khiển lên gấp đôi Đồng thời cấu trúc lệnh không còn phụ thuộc vào cấu trúc dữ liệu nữa mà có thể linh động điều chỉnh tùy theo khả năng và tốc độ của từng vi điều khiển Và để tiếp tục cải tiến tốc độ thực thi lệnh, tập lệnh của họ vi điều khiển PIC được thiết kế sao cho chiều dài mã lệnh luôn cố định (ví dụ đối với họ 16Fxxxx chiều dài mã lệnh luôn là 14 bit) và cho phép thực thi lệnh trong một chu kì của xung clock ( ngoại trừ một số trường hợp đặc biệt như lệnh nhảy, lệnh gọi chương trình con … cần hai chu kì xung đồng hồ) Điều này có nghĩa tập lệnh của vi điều khiển thuộc cấu trúc Havard sẽ ít lệnh hơn, ngắn hơn, đơn giản hơn để đáp ứng yêu cầu mã hóa lệnh bằng một số lượng bit nhất định
Vi điều khiển được tổ chức theo kiến trúc Havard còn được gọi là vi điều khiển RISC (Reduced Instruction Set Computer) hay vi điều khiển có tập lệnh rút gọn Vi điều khiển được thiết kế theo kiến trúc Von-Neuman còn được gọi là vi
Trang 27điều khiển CISC (Complex Instruction Set Computer) hay vi điều khiển có tập lệnh phức tạp vì mã lệnh của nó không phải là một số cố định mà luôn là bội số của 8 bit (1 byte) [1]
- PIPELINING
Đây chính là cơ chế xử lí lệnh của các vi điều khiển PIC Một chu kì lệnh của
vi điều khiển sẽ bao gồm 4 xung clock Ví dụ ta sử dụng oscillator có tần số 4 MHZ, thì xung lệnh sẽ có tần số 1 MHz (chu kì lệnh sẽ là 1 us) Giả sử ta có một đoạn chương trình như sau:
1 MOVLW 55h
2 MOVWF PORTB
3 CALL SUB_1
4 BSF PORTA,BIT3
5 instruction @ address SUB_1
Ở đây ta chỉ bàn đến qui trình vi điều khiển xử lí đoạn chương trình trên thông qua từng chu kì lệnh Quá trình trên sẽ được thực thi như sau:
Trang 28chu kì thực thi lệnh này chỉ được dùng để đọc lệnh đầu tiên tạilabel SUB_1 Như vậy có thể xem lênh 3 cần 2 chu kì xung clock để thựcthi
- TCY5: thực thi lệnh đầu tiên của SUB_1 và đọc lệnh tiếp theo của SUB_1.Quá trình này được thực hiện tương tự cho các lệnh tiếp theo của chương trình.Thông thường, để thực thi một lệnh, ta cần một chu kì lệnh để gọi lệnh đó, và mộtchu kì xung clock nữa để giải mã và thực thi lệnh Với cơ chế pipelining được trình bày ở trên, mỗi lệnh xem như chỉ được thực thi trong một chu kì lệnh Đối với các lệnh mà quá trình thực thi nó làm thay đổi giá trị thanh ghi PC (Program Counter) cần hai chu kì lệnh để thực thi vì phải thực hiện việc gọi lệnh ở địa chỉ thanh ghi PC chỉ tới Sau khi đã xác định đúng vị trí lệnh trong thanh ghi PC, mỗi lệnh chỉ cần một chu kì lệnh để thực thi xong
Các dòng PIC và cách lựa chọn vi điều khiển PIC được thể hiện như sau: Các kí hiệu của vi điều khiển PIC:
- PIC12xxxx: độ dài lệnh 12 bit
- PIC16xxxx: độ dài lệnh 14 bit
- PIC18xxxx: độ dài lệnh 16 bit
C: PIC có bộ nhớ EPROM (chỉ có 16C84 là EEPROM)
F: PIC có bộ nhớ flash
LF: PIC có bộ nhớ flash hoạt động ở điện áp thấp
LV: tương tự như LF, đây là kí hiệu cũ
Bên cạnh đó một số vi điệu khiển có kí hiệu xxFxxx là EEPROM, nếu có thêm chữ A ở cuối là flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A là flash) Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC Ở Việt Nam phổ biến nhất là các họ vi điều khiển PIC do hãng Microchip sản xuất
Cách lựa chọn một vi điều khiển PIC phù hợp:
- Trước hết cần chú ý đến số chân của vi điều khiển cần thiết cho ứng dụng
Có nhiều vi điều khiển PIC với số lượng chân khác nhau, thậm chí có vi điều khiển chỉ có 8 chân, ngoài ra còn có các vi điều khiển 28, 40, 44, …chân
Trang 29- Cần chọn vi điều khiển PIC có bộ nhớ flash để có thể nạp xóa chương trình được nhiều lần hơn Tiếp theo cần chú ý đến các khối chức năng được tích hợp sẵn trong vi điều khiển, các chuẩn giao tiếp bên trong
- Sau cùng cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép
- Ngoài ra mọi thông tin về cách lựa chọn vi điều khiển PIC có thể được tìm thấy trong cuốn sách “Select PIC guide” do nhà sản xuất Microchip cung cấp
- Ngôn ngữ lập trình cho PIC
Ngôn ngữ lập trình cho PIC rất đa dạng Ngôn ngữ lập trình cấp thấp có MPLAB (được cung cấp miễn phí bởi nhà sản xuất Microchip), các ngôn ngữ lập trình cấp cao hơn bao gồm C, Basic, Pascal, … Ngoài ra còn có một số ngôn ngữ lập trình được phát triển dành riêng cho PIC như PICBasic, MikroBasic,…
- Mạch nạp PIC : Đây cũng là một dòng sản phẩm rất đa dạng dành cho vi điều khiển PIC Có thể sử dụng các mạch nạp được cung cấp bởi nhà sản xuất là hãng Microchip như: PICSTART plus, MPLAB ICD 2, MPLAB PM 3, PRO MATE II
Có thể dùng các sản phẩm này để nạp cho vi điều khiển khác thông qua chương trình MPLAB Dòng sản phẩm chính thống này có ưu thế là nạp được cho tất cả các
vi điều khiển PIC, tuy nhiên giá thành rất cao và thường gặp rất nhiều khó khăn trong quá trình mua sản phẩm Ngoài ra do tính năng cho phép nhiều chế độ nạp khác nhau, còn có rất nhiều mạch nạp được thiết kế dành cho vi điều khiển PIC Có thể sơ lược một số mạch nạp cho PIC như sau:
- JDM programmer: mạch nạp này dùng chương trình nạp Icprog cho phép nạp các vi điều khiển PIC có hỗ trợ tính năng nạp chương trình điện áp thấp ICSP (In Circuit Serial Programming) Hầu hết các mạch nạp đều hỗ trợ tính năng nạp chương trình này
- WARP-13A và MCP-USB: hai mạch nạp này giống với mạch nạp PICSTART PLUS do nhà sản xuất Microchip cung cấp, tương thích với trình biên dịch MPLAB, nghĩa là ta có thể trực tiếp dùng chương trình MPLAB để nạp cho vi điều khiển PIC mà không cần sử dụng chương trình nạp khác, chẳng hạn ICprog
- P16PRO40: mạch nạp này do Nigel thiết kế và cũng khá nổi tiếng Ông còn thiết kế cả chương trình nạp, tuy nhiên ta cũng có thể sử dụng chương trình nạp Icprog
Trang 30- Mạch nạp Universal của Williem: đây không phải là mạch nạp chuyên dụng dành cho PIC như P16PRO40
Các mạch nạp kể trên có ưu điểm rất lớn là đơn giản, rẻ tiền, hoàn toàn có thể
tự lắp ráp một cách dễ dàng, và mọi thông tin về sơ đồ mạch nạp, cách thiết kế, thi công, kiểm tra và chương trình nạp đều dễ dàng tìm được và download miễn phí thông qua mạng Internet Tuy nhiên các mạch nạp trên có nhược điểm là hạn chế về
số vi điều khiển được hỗ trợ, bên cạnh đó mỗi mạch nạp cần được sử dụng với một chương trình nạp thích hợp
Trang 31Chương 2 TÌM HIỂU VỀ VI ĐIỀU KHIỂN 89S52
2.1 Giới thiệu chương
Trong chương này giới thiệu sơ đồ các khối, sơ đồ chân và chức năng của các chân trong 89S52 Giới thiệu cách thức tổ chức bộ nhớ bên trong 89S52 và cách kết nối vi điều khiển với một số thiết bị ngoại vi đơn giản như vi điều khiển giao tiếp led đơn và phím nhấn, kết nối với rơle, kết nối với LCD, kết nối với ma trận led, kết nối với máy tính bằng chuẩn giao tiếp RS232
2.2 Sơ đồ khối, sơ đồ chân của vi điều khiển 89S52
2.2.1 Giới thiệu sơ lược
Vi điều khiển 8051 được Intel cho ra đời vào năm 1980 thuộc vi điều khiển đầu tiên của họ MCS-51 Hiện tại rất nhiều nhà sản xuất như Siemens, Advanced
Micro Devices, Fusisu tập trung phát triển các sản phẩm trên cơ sở 8051
Atmel là hang đã cho ra đời các chip 89C51, 52, 55 và sau đó cải tiến thêm ,
hãng cho ra đời 89S51, 52, 89S8252…
2.2.2 Cấu hình của 89S52
AT89S52 cung cấp những đặc tính chuẩn như: 8 KByte bộ nhớ chỉ đọc có thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 3 TIMER/COUNTER 16 Bit, 6 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp bán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP
Các đặc điểm của chip AT89S52 được tóm tắt như sau:
-8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xoá -Tần số hoạt động từ: 0Hz đến 24 MHz
-3 mức khóa bộ nhớ lập trình
-3 bộ Timer/counter 16 Bit
-128 Byte RAM nội
-4 Port xuất /nhập I/O 8 bit
-Giao tiếp nối tiếp
Trang 32-64 KB vùng nhớ mã ngoài
2.2.3 Sơ đồ khối 89S52
Sơ đồ khối của vi điều khiển 89S52 được biểu diễn như trong hình 2.1
Hình 2.1 Sơ đồ khối của bộ vi điều khiển AT89S52 [3]
Trang 332.2.4 Sơ đồ chân 89S52
Hình 2.2 Sơ đồ chân của AT89S52 Mặc dù các thành viên của họ 8051(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,dạng vỏ dẹt vuông QPF
và dạng chip không có chân đỡ LLC 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 [1]
2.2.5 Chức năng các chân của AT89S52
- Port 0: từ chân 32 đến chân 39 (P0.0 _P0.7) Port 0 có 2 chức năng: trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO, đối với thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và bus dữ liệu (Hình 2.3.)
- Port 1: từ chân 1 đến chân 9 (P1.0 _ P1.7) Port 1 là port IO dùng cho giao tiếp với thiết bị bên ngoài nếu cần (Hình 2.4.)
- Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7) Port 2 là một port có tác dụng kép dùng như các đường xuất/nhập hoặc là byte cao của bus địa chỉ đối với các thiết
bị dùng bộ nhớ mở rộng (Hình 2.5.)
- Port 3: từ chân 10 đến chân 17 (P3.0 _ P3.7) Port 3 là port có tác dụng kép
Trang 34Các chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên hệ đến các đặc tính đặc biệt của 89S52 như ở bảng sau:
Trang 35được nối đến chân OE của Eprom cho phép đọc các byte mã lệnh PSEN ở mức thấp trong thời gian 89S52 lấy lệnh Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong 89S52 để giải mã lệnh Khi 89S52 thi hành chương trình trong ROM nội, PSEN ở mức cao
Bảng 2.1 Các chức năng của Port 3
Bit Tên Chức năng chuyển đổi
P3.6 WR Tín hiệu ghi dữ liệu lên bộ nhớ ngoài
P3.7 RD Tín hiệu đọc bộ nhớ dữ liệu ngoài
- ALE (Address Latch Enable): chân cho phép chốt địa chỉ Khi 89S52 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa chỉ và 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ối chúng với IC chốt Tín hiệu ở 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
- EA (External Access): chân truy xuất ngoài
Tín hiệu vào EA (chân 31) thường được mắc lên mức 1 hoặc mức 0 Nếu ở mức 1, 89S52 thi hành chương trình từ bộ nhớ ROM nội Nếu ở mức 0, 89S52 thi hành chương trình từ bộ nhớ ROM ngoại Chân EA được lấy làm chân cấp nguồn μ21V khi lập trình cho Eprom trong 89S52
- RST (Reset): Khi ngõ vào tín hiệu này đưa lên mức cao ít nhất 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 phải tự động reset Các giá trị tụ và điện trở được chọn là: R1=10Ώ, R2=220Ώ, C=10 μF
Bộ tạo dao động được tích hợp bên trong 89S52 Khi sử dụng 89S52, người ta chỉ cần nối thêm thạch anh và các tụ Tần số thạch anh tùy thuộc vào mục đích của
Trang 36người sử dụng, giá trị tụ thường được chọn là 33pF
+ - 10uF
Hình 2.6 Mạch reset Các ngõ vào bộ dao động X1, X2
XTAL1
XTAL2 C1
C2 X1
Hình 2.7 Mạch dao động
2.3 Tổ chức bộ nhớ bên trong 89S52
Bộ nhớ trong 89S52 bao gồm ROM và RAM RAM trong 89S52 bao gồm nhiề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 bank
thanh ghi và các thanh ghi chức năng đặc biệt
AT89S52 có bộ nhớ được tổ chức theo cấu trúc Harvard: có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu Chương trình và dữ liệu có thể chứa bên trong 89S52 nhưng 89S52 vẫn có thể kết nối với 64K byte bộ nhớ chương trình và 64K byte dữ liệu bên ngoài [1]
RAM bên trong AT89S52 đượ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ó địa chỉ từ 20H đến 2FH
+ RAM đa dụng từ 30H đến 7FH
Trang 37+ Các thanh ghi chức năng đặc biệt từ 80H đến FFH
+ RAM đa dụng RAM đa dụng có địa chỉ từ 30h – 7Fh có thể truy xuất mỗi lần 8 bit bằng cách dùng chế độ định địa chỉ trực tiếp hay gián tiếp Các vùng địa chỉ thấp từ 00h – 2Fh cũng có thể sử dụng cho mục đích
Hình 2.8 Bản đồ bộ nhớ Data bên trong Chip 89S52