Cũng có thể nhìn nhận rằng, các trung tâm vi xử lý họ này là một máy vi tính thực thụ, nếu nhìn nhận chip này theo quan điểm kiến trúc máy tính của Von Neumann: chip được trang bị thêm
Trang 1MỤC LỤC
LỜI NÓI ĐẦU 6
LỜI NÓI ĐẦU 6
CHƯƠNG 1 .7
CHƯƠNG 1 .7
CƠ SỞ XÂY DỰNG ĐỒ ÁN 7
CƠ SỞ XÂY DỰNG ĐỒ ÁN 7
1.1 Khảo sát công ty Máy tính Bảo Ngọc 7
1.2 Ý tưởng đồ án: 8
1.3 Sơ đồ khối và chức năng các khối: 10
1.3.1 Phân tích mạch điện: 10
1.3.2 Sơ đồ khối: 10
1.3.3 Chức năng từng khối: 11
CHƯƠNG 2 12
CHƯƠNG 2 12
TÌM HIỂU VỀ HỌ VI ĐIỀU KHIỂN 8051 VÀ CÁC LINH KIỆN KHÁC CÓ TRONG MẠCH 12
TÌM HIỂU VỀ HỌ VI ĐIỀU KHIỂN 8051 VÀ CÁC LINH KIỆN KHÁC CÓ TRONG MẠCH 12
2.1 Tóm tắt về họ vi điều khiển 8051: 12
2.2 Kiến trúc vi điều khiển 8051: 12
2.3 Cấu trúc bên trong của vi điều khiển 8051: 18
2.3.1 Tổ chức bộ nhớ: 18
2.3.2 Các thanh ghi đặc biệt: 24
2.3.3 Truy suất địa chỉ: 26
2.4 Hoạt động TIMER của 8051: 30
2.4.1 Giới thiệu: 30
2.4.2 Thanh ghi điều khiển Timer TCON: 32
2.4.3 Thanh ghi mode timer (TMOD): 32
2.4.4 Các mode và cờ tràn: 33
2.4.5 Các nguồn xung clock (CLOCK SOURCES): 35
2.4.6 Sự bắt đầu, dừng và điều khiển các timer: 36
2.4.7 Sự khởi động và truy xuất các thanh ghi timer: 36
Trang 22.5 Ghép nối họ vi điều khiển 8051 với máy tính: 37
CHƯƠNG 3 39
CHƯƠNG 3 39
THIẾT KẾ MẠCH, ỨNG DỤNG LẬP TRÌNH VÀ MÔ PHỎNG MẠCH 39
THIẾT KẾ MẠCH, ỨNG DỤNG LẬP TRÌNH VÀ MÔ PHỎNG MẠCH 39
3.1 Lựa chọn linh kiện: 39
3.1.1 Vi điều khiển AT89C51: 39
3.1.2 IC 74LS595: 40
3.1.3 LED Matrix 8x8: 42
3.1.4 IC ULN2803: 44
3.2 Thiết kế chi tiết các khối: 46
3.3 Thiết kế chương trình cho Vi Điều Khiển: 47
3.3.1 Nguyên lý hoạt động: 47
3.3.2 Sơ đồ mạch nguyên lý: 48
3.3.3 Lưu đồ thuật toán điều khiển: 49
3.3.4 Lập trình C hiển thị chữ trên LED: 50
3.4 Kết quả mô phỏng: 55
3.4.1 Mạch thiết kế trên proteus: 55
3.5 Nguyên lý hoạt động của toàn mạch: 55
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỒ ÁN 57
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỒ ÁN 57
TÀI LIỆU THAM KHẢO 58
TÀI LIỆU THAM KHẢO 58
Trang 3MỤC LỤC HÌNH ẢNH
A.HÌNH ẢNH VỀ CÔNG TY VÀ VỊ TRÍ GẮN MẠCH QUẢNG CÁO LED 7
B.MỘT SẢN PHẨM SỬ DỤNG MA TRẬN LED KIỂU CHỮ CHẠY 9
C.SƠ ĐỒ KHỐI 10
D.SƠ ĐỒ KHỐI MCS-51 13
E.SƠ ĐỒ CHÂN CHIP 8051 14
F.KẾT NỐI XUNG THẠCH ANH VÀ CẤU TRÚC PORT VÀO RA 17
G.CẤU TRÚC VI ĐIỀU KHIỂN 89C51 19
H.CẤU TRÚC BỘ NHỚ CHƯƠNG TRÌNH 20
I.ĐỊA CHỈ CÁC NGẮT TRÊN BỘ NHỚ CHƯƠNG TRÌNH 20
J.CẤU TRÚC BỘ NHỚ DỮ LIỆU 21
K.CẤU TRÚC BỘ NHỚ TRONG 22
L.CẤU TRÚC 128 BYTE THẤP CỦA BỘ NHỚ DỮ LIỆU TRONG 22
M.128 BYTE CAO CỦA BỘ NHỚ DỮ LIỆU 23
N.CÁC THANH GHI ĐẶC BIỆT 24
O.TRUY XUẤT ĐỊA CHỈ THANH GHI 26
P.TRUY XUẤT ĐỊA CHỈ KIỂU TRỰC TIẾP 27
Q.TRUY XUẤT ĐỊA CHỈ KIỂU GIÁN TIẾP 27
R.TRUY XUẤT ĐỊA CHỈ KIỂU TỨC THỜI 28
S.TRUY XUẤT ĐỊA CHỈ KIỂU TUYỆT ĐỐI 29
T.TRUY XUẤT ĐỊA CHỈ KIỂU DÀI 29
U.TRUY XUẤT ĐỊA CHỈ KIỂU SỐ 29
V.BIỂU ĐỒ THỜI GIAN 30
W.MODE TIMER 13 BIT 33
X.MODE TIMER 16 BIT 33
Y.MODE TỰ ĐỘNG NẠP 8 BIT 34
Z.SƠ ĐỒ MODE 3 34
AA.NGUỒN CẤP XUNG NHỊP 35
BB.THỜI GIAN HOẠT ĐỘNG CỦA MODE 1 36
CC.CỔNG NỐI TIẾP CỦA MÁY TÍNH 38
DD.IC 74LS595 40
EE.SƠ ĐỒ CHÂN 74LS595 41
FF.CẤU TẠO MA TRẬN LED 8X8 42
Trang 4GG.LED MATRIX 8X8 44
HH.IC ULN2803 44
II.BIỂU ĐỒ KIỂM TRA ULN2803 46
JJ.SƠ ĐỒ MẠCH NGUYÊN LÝ 48
KK.LƯU ĐỒ THUẬT TOÁN ĐIỀU KHIỂN 49
LL.MẠCH THIẾT KẾ TRÊN PROTEUS 55
MM.MẠCH CHẠY MÔ PHỎNG 55
MỤC LỤC BẢNG I.BẢNG THỂ HIỆN TÊN CHIP VÀ LOẠI BỘ NHỚ NÓ MANG 18
II.BẢNG VỀ BỘ NHỚ CỦA MỘT SỐ LOẠI CHIP THUỘC HỌ 8051 20
III.BẢNG TRUY XUẤT TIMER CỦA 8051 DÙNG 6 THANH GHI ĐẶC BIỆT 31
IV.BẢNG HOẠT ĐỘNG CỦA CÁC BIT TRONG THANH GHI TCON 32
V.BẢNG HOẠT ĐỘNG CÁC BIT TRONG THANH GHI TMOD 33
VI.BẢNG KHUNG TRUYỀN DỮ LIỆU 38
VII.BẢNG CHỨC NĂNG CỦA CÁC CHÂN CỦA CỔNG NỐI TIẾP 38
Trang 5DANH MỤC CÁC TỪ VIẾT TẮT
- MCS: Micro control system
- ROM: Read only memory
- RAM: Random access memory
- EPROM: Erasable programmable read only memory
- CMOS: Complementary metal oxide semiconductor
- PSEN: Program store enable
- ALE: Address latch enable
- RST: Reset
- SRAM: Static random access memory
- EEPROM: Electrically erasable programmable read only memory
- SFR: Special function register
- MSB: Most significant bit
- LSB: Least significant bit
- PEROM: Flash programmable and erasable read only memory
- LED: Light emitting diode
- IC: Integrated circuit
- TTL: Transistor-Transistor logic
Trang 6LỜI NÓI ĐẦU
Ngày nay, những ứng dụng của vi điều khiển đã đi sâu vào đời sống sinh hoạt và sản xuất của con người Thực tế hiện nay hầu hết các thiết bị điện dân dụng đều có sự góp mặt của vi điều khiển và vi xử lí Ứng dụng vi điều khiển trong thiết kế hệ thống làm giảm chi phí thiết kế và hạ giá thành sản phẩm đồng thời nâng cao tính ổn định của thiết bị và hệ thống Trên thị trường có rất nhiều
hệ vi điểu khiển: họ 8051 của Intel, 68HC11 của Motorola, Z80 của hãng Zilog, PIC của hãng Microchip, H8 của Hitachi,vv
Việc phát triển ứng dụng các hệ vi xử lí đòi hỏi nhưng hiểu biết cả về phần cứng cũng như phần mềm, nhưng chính vì vậy mà các hệ vi xử lý được sử dụng để giải quyết những bài toàn rất khác nhau Tính đa dạng của các ứng dụng phụ thuộc vào việc lựa chọn các hệ vi xử lý cụ thể
Ngày nay các bộ vi xử lý có mặt trong rất nhiều thiết bị điện tử hiện đại:
từ đầu đĩa CD, máy thu hình, dàn âm thanh cho đến các thiết bị điều khiển dùng trong công nghiệp Lĩnh vực ứng dụng của các hệ vi xử lí cũng rất rộng lớn: từ nghiên cứu khoa học, truyền dữ liệu, đến công nghiệp, năng lượng, giao thông
và y tế, quảng cáo…
Xuất phát từ mục đích đó em tìm hiểu và nghiên cứu về vi điều khiển
8051(MCS-51) Ứng dụng vào thiết kế bảng quảng cáo cho Công ty máy tính Bảo Ngọc kết nối với máy tính hiển thị thông tin trên LED Matrix Mô phỏng
bằng phần mềm chuyên dụng protues
Trang 7CHƯƠNG 1
CƠ SỞ XÂY DỰNG ĐỒ ÁN1.1 Khảo sát công ty Máy tính Bảo Ngọc
a Hình ảnh về công ty và vị trí gắn mạch quảng cáo Led
Công ty máy tính Bảo Ngọc (Bảo Ngọc Computer) được thành lập ngày 20/05/2011 tại Đường Z115 – Xã Quyết Thắng – TP Thái Nguyên với ngành nghề kinh doanh chính: cung cấp thiết bị công nghệ thông tin, thiết bị văn phòng, các giải pháp công nghệ thông tin và lắp ráp máy tính
Từ lúc thành lập với tổng số nhân viên là 03 người làm việc trong một cửa hàng có diện tích khoảng 30m2, sau gần 1 năm hoạt động hiện nay chúng tôi đã
có tổng số cán bộ lên đến 7 người với địa điểm kinh doanh có diện tích gần 70m2 Không những thế, công ty chúng tôi còn luôn duy trì được tốc độ phát triển toàn diện về mọi mặt một cách rất bền vững và đáng kinh ngạc so với các công ty kinh doanh cùng lĩnh vực
Trang 8Gắn liền với sự hoạt động và phát triển của Bảo Ngọc Computer là những
sự kiện và chính sách kinh doanh mang tính đột phá, tiên phong trong lĩnh vực kinh doanh thiết bị máy vi tính như: chính sách kinh doanh "bán giá bán buôn đến tận tay người tiêu dùng", chính sách bảo hành "1 đổi 1 trong vòng 6 tháng"
và "bảo hành cả trong trường hợp IC bị cháy, nổ"
Hiện nay Bảo Ngọc Computer là 1 trong những công ty còn non trẻ trong lĩnh vực công nghệ thông tin ở tỉnh nhà Chúng tôi luôn duy trì được tốc độ tăng trưởng ở mức rất cao và vững chắc trên mọi mặt Bảo Ngọc Computer luôn chiếm được sự tin tưởng của các khách hàng bởi các chính sách, cam kết, dịch vụ mà rất nhiều công ty máy tính khác không làm được
Bảo Ngọc Computer có một đội ngũ nhân viên nhiệt tình và có trình độ chuyên môn cao (đa số đã tốt nghiệp Đại học, Cao đẳng chuyên ngành kinh tế,
kỹ thuật), đủ khả năng để có thể đáp ứng mọi yêu cầu dù là khắt khe nhất của quý khách hàng
Không những thế, đội ngũ nhân viên của Bảo Ngọc còn là những người đầy lòng nhiệt tình và có thái độ rất niềm nở trong cung cách phục vụ khách hàng Tất cả các cán bộ nhân viên hiện đang công tác tại Bảo Ngọc đều thấu hiểu được một điều đó là:
“Khách hàng mới là người quyết định tương lai, sự tồn tại và phát triển của Bảo Ngọc”
Vì vậy toàn thể nhân viên công ty Bảo Ngọc Computer đều luôn tâm niệm
và làm việc theo suy nghĩ:
“Hãy phục vụ khách hàng như chúng ta đang phục vụ cho chính bản thân chúng ta”
1.2 Ý tưởng đồ án:
Vì mục tiêu phát triển công ty ngày một lớn mạnh, quảng bá thương hiệu
và sản phẩn của Bảo Ngọc Computer cho tất cả mọi người trên địa bàn và các khu vực lân cận Từ đó đặt ra yêu cầu cần phải thiết kế bảng quảng cáo điện tử
Trang 9để hiển thị thông tin “B-N COMPUTER” mạch sử dụng chip AT89C51 (8051), hiển thị bằng 8 led ma trận 8x8 Và dòng chữ chạy từ phải qua trái.
Hiện nay trên thị trường đang thông dụng 1 số các loại biển quảng cáo điện tử, biển hiệu Led ma trận và Led vẫy, màn hình full color, biển chữ nổi, biển mica…
Để phù hợp với một công ty máy tính cần thay đổi được thông tin quảng cáo của mình liên tục theo thời gian để phù hợp với từng thời gian, từng hoàn cảnh thì em quyết định chọn biển hiệu Led ma trận cho công ty Bảo Ngọc Computer Đây là loại biển sử dụng các modul đèn Led hình chữ nhật ghép lại với nhau để tạo thành màn hình hiển thị thông tin và được điều khiển bằng một
bộ điều khiển để tạo các hiệu ứng trực quan khác nhau hết sức sinh động Nội dung hiển thị trên biển dễ dàng được thay đổi bằng cách nạp lại chương trình điều khiển qua dây dẫn nối với máy tính
* Ưu điểm của sản phẩm:
- Bảng Led ma trận hiển thị đầy đủ các nội dung đăng tải, màu sắc sặc sỡ, bắt mắt và gây chú ý
- Bảng Led ma trận dễ dàng thay đổi nội dung và hiệu ứng nên cập nhật
đa dạng các thông tin doanh nghiệp muốn truyền tải đến khách hàng: thay đổi khẩu hiệu, các thông tin, màu sắc led, tốc độ chữ chạy
- Bảng Led ma trận không chỉ hiện thị các thông tin dưới dạng Text mà còn hiện thị về thời gian, nhiệt độ, các hình minh họa theo ý muốn
b Một sản phẩm sử dụng ma trận Led kiểu chữ chạy
Trang 101.3 Sơ đồ khối và chức năng các khối:
1.3.1 Phân tích mạch điện:
Mạch điện hoạt động dưới sự điều khiển của vi điều khiển, trong mạch điện này thì vi điều khiển lấy tín hiệu từ bộ dao động thạch anh với xung nhip 12MHz Thạch anh này tạo ra các dao động xung nhịp chính xác để duy trì những khoảng thời gian xác định cho vi điều khiển hoạt động Sự thay đổi xung nhịp thạch anh này dẫn tới sự thay đổi của 1 chu kỳ thực hiện lệnh hay còn gọi
là chu kỳ máy Với xung nhịp thạch anh càng cao thì chu kỳ máy càng ngắn, tức
là thời gian xử lý lệnh của vi điều khiển càng nhanh, dẫn tới tốc độ làm việc và đáp ứng của vi điều khiển tăng, nhưng với mỗi vi điều khiển có 1 mức giới hạn
và thường nối với 1 xung nhịp thạch anh mặc định của nhà sản xuất
Tín hiệu ra của vi điều khiển là các mức điện áp (được hiểu dưới dạng 0
và 1), tín hiệu này được vi điều khiển điều khiển ở các chân khác nhau trên vi điều khiển là khác nhau Các tín hiệu này được đưa tới các bộ giải mã (ở đây là
IC 74LS595), các bộ giải mã này có nhiệm vụ xử lý thông tin và cho ra tín hiệu
để điều khiển các đèn Led sáng theo 1 trình tự mong muốn
1.3.2 Sơ đồ khối:
c Sơ đồ khối
Trang 111.3.3 Chức năng từng khối:
* Khối vi điều khiển:
Khối điều khiển trung tâm là vi điều khiển AT89C51 thuộc họ 8051 rất thông dụng và dễ tìm kiếm trên thị trường để thi công lắp đặt cũng như thay thế mỗi khi có hư hỏng Chương trình sẽ được lập trình sẵn và được nạp vào VĐK AT89C51 thông qua các bộ nạp sẽ điều khiển các khối xuất dữ liệu hàng và giải
mã các cột thông qua các Port (cổng) của vi điều khiển
* Khối xuất dữ liệu hàng (quét hàng):
Khối này làm nhiệm vụ xuất dữ liệu chứa trong vi điều khiển ra hàng của bảng đèn LED ma trận để điều khiển các bóng đèn của LED ma trận hiển thị dòng thông báo mà người dùng mong muốn Dữ liệu xuất ra ở hàng phải đồng
bộ với hoạt động của khối quét cột
* Khối giải mã cột (quét cột):
Theo nguyên lý hoạt động của mạch, tại mỗi thời điểm chỉ cho phép các đèn ở một cột được sáng Như vậy cần tạo ra một khối quét cột làm nhiệm vụ lựa chọn cột được phép sáng tại mỗi thời điểm Khối này sẽ nhận điều khiển trực tiếp từ vi điều khiển thông qua một Port xuất khác
* B ảng đèn LED ma trận:
Đây là khối hiện thị thông tin mà người dùng mong muốn Bảng đèn Led này được làm từ các Led được đấu nối với nhau thành ma trận Led và thường theo hình vuông hoặc chữ nhật Bảng đèn Led sẽ nhận đồng thời tín hiệu điều khiển từ khối xử lý hàng (xuất dữ liệu hàng và bộ đệm hàng) và khối xử lý cột (khối quét cột và bộ đệm cột) Để từ đó sẽ cho phép đèn nào sáng, đèn nào tắt, nhằm hiện thị ra những thông tin mong muốn
* Khối nguồn
Khối nguồn cung cấp điện áp 5V cho toàn mạch cứng
Trang 12CHƯƠNG 2.
TÌM HIỂU VỀ HỌ VI ĐIỀU KHIỂN 8051 VÀ CÁC LINH KIỆN
KHÁC CÓ TRONG MẠCH2.1 Tóm tắt về họ vi điều khiển 8051:
Chúng ta đã biết Intel sản xuất các trung tâm vi xử lí họ x86 Tuy nhiên ngoài các trung tâm vi xử lý đó, Intel còn thiết kế và sản xuất các trung tâm vi
xử lý chuyên dụng phục vụ các mục đích đo lường và điều khiển tự động, phục
vụ các ứng dụng đơn giản nhưng rất phổ biến khác, đặc biệt là trong các Hệ thống nhúng (Embedded Systems) Các chip vi xử lý loại này đã vượt ra ngoài khuôn khổ của một trung tâm vi xử lý đơn thuần, trở thành một máy vi tính (MicroComputer) Cũng có thể nhìn nhận rằng, các trung tâm vi xử lý họ này là một máy vi tính thực thụ, nếu nhìn nhận chip này theo quan điểm kiến trúc máy
tính của Von Neumann: chip được trang bị thêm bộ nhớ chương trình (ROM hoặc EPROM) và bộ nhớ dữ liệu, cũng như các cổng vào/ra nối tiếp, vào/ra song song, v.v…
MCS - 51 là họ vi điều khiển của Intel Các nhà sản xuất khác như Siemens, AMD-Advanced Micro Device, Fujitsu và Philips được cấp phép làm các nhà cung cấp các chip của họ MCS - 51
Vi mạch chủ yếu của họ MCS - 51 là chip µC8051, linh kiện đầu tiên của
họ này được đưa ra thị trường
2.2 Kiến trúc vi điều khiển 8051:
Chip μC8051 có các đặc trưng được tóm tắt như sau:
4 KB ROM và 128 byte RAM
4 port 8- bít, 32 lối vào/ra
2 bộ định thời (Timmer) 16 bít
Mạch giao tiếp nối tiếp
Không gian nhớ chương trình ngoài (mở rộng) 64K
Không gian nhớ dữ liệu ngoài 64K
Trang 13Bộ xử lý bít (thao tác trên các bít riêng rẽ)
210 vị trí bit nhớ được định địa chỉ
Thực hiện phép toán Nhân, Chia trong thời gian 4µs
Các thành viên khác của họ MCS-51 có các tổ hợp ROM (EPROM), RAM trên chip với dung lượng khác nhau, bộ biến đổi tín hiệu tương tự-số và số-tương tự, và có thể có thêm bộ định thời thứ ba Mỗi một chíp của họ MCS-
51 đều có phiên bản CMOS tiêu thụ công suất thấp
d Sơ đồ khối MCS-51
Trang 14e Sơ đồ chân chip 8051
* Mô tả cấu trúc chức năng:
Hình trên cho ta sơ đồ chân của chip 8051 Chức năng tóm tắt của từng chân như sau: 32 trong số 40 chân của 8051 có công dụng vào/ra, tuy nhiên 24 trong 32 chân này có hai công dụng, mỗi chân có thể hoạt động vào/ra hoặc hoạt động như một chân của tín hiệu điều khiển hoặc như một chân địa chỉ/dữ liệu của bus địa chỉ/dữ liệu dồn kênh
32 chân hình thành 4 port 8-bít Với các thiết kế yêu cầu tối thiểu bộ nhớ ngoài hoặc các thành phần bên ngoài khác ta có thể sử dụng port này làm nhiệm
vụ vào/ra 8 chân của mỗi port có thể được sử dụng như một đơn vị giao tiếp
song song với các thiết bị ngoại vi
Trang 15+ Port 1:
Port 1 chỉ có một công dụng là vào/ra (các chân từ 1 đến 8), và dùng để
giao tiếp vơi các thiết bị ngoại vi hoặc làm chân vào/ra, hoặc làm các chân nhận tín hiệu vào của mạch định thời thứ ba
+ Port 2:
Port 2 (các chân từ 21 đến 28) có hai công dụng, hoặc làm nhiệm vụ
vào/ra, hoặc 8 chân địa chỉ cao của bus địa chỉ 16-bít cho các thiết kế có bộ nhớ chương trình ngoài hoặc các thiết kế có nhiều hơn 256 byte bộ nhớ dữ liệu ngoài
+ Port 3:
Port 3 (các chân từ 10 đến 17) có hai công dụng Khi không sử dụng cho mục đích vào/ra, các chân của port 3 có các chức năng riêng (mỗi chức năng
riêng liên quan đến các đặc trưng cụ thể của 8051)
+ Chân cho phép truy nhập bộ nhớ chương trình PSEN:
- 8051 cung cấp 4 tín hiệu điều khiển bus Tín hiệu PSEN (Program store enable) là tín hiệu ra trên chân 29 Đây là tín hiệu điều khiển cho phép truy xuất
bộ nhớ chương trình ngoài, chân này thường nối với chân cho phép ra OE
(output enable) của EPROM (hoặc ROM), cho phép đọc các byte lệnh.
- Tín hiệu PSEN ở logic 0 trong suốt thời gian tìm nạp lệnh (Instruction
Fetch) Các mã nhị phân của chương trình hay opcode (mã thao tác) được đọc từ
EPROM, qua bus dữ liệu và được chốt vào thanh ghi lệnh IR của 8051 để được giải mã
- Khi thực thi một chương trình chứa ở ROM nội, PSEN được duy trì ở mức logic không tích cực (logic 1)
+ Chân cho phép chốt địa chỉ ALE:
8051 sử dụng chân 30, chân cho phép chốt địa chỉ ALE (address latch enable) để giải dồn kênh (demultiplexing) bus dữ liệu và bus địa chỉ Khi port 0
được sử dụng làm bus địa chỉ/dữ liệu dồn kênh, chân ALE đưa ra tín hiệu để chốt địa chỉ (byte thấp của địa chỉ 16-bít) vào một thanh ghi ngoài trong suốt 1/2
Trang 16đầu của chu kỳ bộ nhớ (memory cycle) Sau khi địa chỉ đã được chốt các chân của port 0 sẽ làm nhiệm vị vào/ra dữ liệu trong 1/2 thứ hai của chu kỳ bộ nhớ.
+ Chân truy xuất ngoài EA:
- Lối vào EA (chân 31) có thể nối với 5V (logic 1) hoặc nối với GND (logic 0) Nếu chân này nối lên 5V, 8051/8052 thực thi chương trình trong ROM nội (Chương trình thường nhỏ hơn 4K/8K) Nếu chân này nối với GND (chân PSEN ở logic 0), CPU thực thi chương trình chứa ở bộ nhớ ngoài Đối với 8031/8032 chân EA phải ở logic 0 vì chúng không có bộ nhớ chương trình trên chip Nếu chân EA ở logic 0 đối với 8051/8052, ROM nội ở bên trong chip được
vô hiệu hoá và chương trình thực thi chứa ở ROM bên ngoài
- Các phiên bản EPROM của 8051 còn sử dụng chân EA làm chân nhận xung điện áp 21V cho việc lập trình EPROM nội
+ Chân RESET (RST):
Lối vào RST (chân 9) là lối vào tái khởi động (master reset) của 8051 dùng để thiết lập trạng thái ban đầu cho toàn hệ thống Khi lối này được treo ở logic 1 tối thiểu hai chu kỳ máy, các thanh ghi bên trong của 8051 được nạp các giá trị thích hợp cho việc khởi động lại hệ thống
+ Các chân XTAL1 và XTAL2:
Mạch dao động bên trong chip 8051 được ghép với thạch anh bên ngoài ở hai chân XTAL1 và XTAL2 (chân 18 và 19) Tần số danh định của thạch anh là 12MHz cho hầu hết các chip của họ MCS-51 (Riêng 80C31BH-1 sử dụng thạch anh 16MHz bên trong, mạch dao động trong chip không cần thạch anh bên ngoài) Một nguồn xung clock TTL có thể được nối với chân XTAL1 và XTAL2
Trang 17f Kết nối xung thạch anh và cấu trúc port vào ra
8051 internal bus: Bus nội của
8051
Read latch: bộ chốt phục vụ đọc
Internal pull up: Mạch pull-up
Read pin: chân port Port latch: Bộ chốt của port
Write to latch: Ghi vào bộ chốt
Sơ đồ mạch điện bên trong của port vào/ra được vẽ đơn giản như hình trên, việc ghi dữ liệu đến 1 chân của Port thực chất là nạp dữ liệu vào bộ chốt của port, lối ra Q của bộ chốt điều khiển một Transistor trường và Transistor
này nối với chân của port Khả năng Fanout của các port 1, 2 và 3 là 4, tải của vi mạch TTL loại Schottky công suất thấp (LS)
Ta thấy có 2 khả năng: "đọc bộ chốt" và “đọc chân port” Các lệnh yêu
cầu thao tác đọc-sửa-ghi đọc bộ chốt để tránh nhầm lẫn mức điện áp do sự kiện
dòng tải tăng Các lệnh nhập 1 bít của port (như MOV C,P1.5) đọc chân port.
Trang 182.3 Cấu trúc bên trong của vi điều khiển 8051:
2.3.1 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 2.7 và hình 2.9 sẽ mô tả điều này Kiến trúc vi xử lý 8 bit của 8051 này cho phé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 2 không gian bộ nhớ chương trình và dữ liệu như trên Tuy nhiên bộ nhớ ngoài được truy nhập bởi hệ thống 16 bit địa chỉ vẫn có thể thực hiện nhờ thanh ghi con trỏ
Vi điều khiển họ 8051 có không gian bộ nhớ chương trình là 64K địa chỉ, đó cũng là dung lượng bộ nhớ chương trình lớn nhất mà mỗi chip thuộc
họ này có thể có được Bộ nhớ chương trình của các chip họ 8051 có thể thuộc một trong cá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 từng chip thể hiện chính loại bộ nhớ chương trình mà nó mang bên trong, cụ thể là vài ví dụ sau:
AT89C52 / AT89S52
Trang 19STT Tên chip Bộ nhớ SRAM Bộ nhớ EEPROM
g Cấu trúc vi điều khiển 89C51
Vi điều khiển họ 8051 có không gian bộ nhớ dữ liệu là 64K địa chỉ, đó cũng là dung lượng bộ nhớ dữ liệu lớn nhất mà mỗi chip thuộc họ này có thể có được (nếu phối ghép một cách chính tắc, sử dụng các đường tín hiệu của bus địa chỉ và dữ liệu) Bộ nhớ dữ liệu của các chip họ 8051 có thể thuộc một hay hai loại: SRAM hoặc EEPROM Bộ nhớ dữ liệu SRAM được tích hợp bên trong mọi chip thuộc họ vi điều khiển này, có dung lượng khác nhau tùy loại chip, nhưng thường 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à giá trị của các biến này cũng bị mất theo Khi có điện trở lại, nội dung của các ô nhớ chứa các biến này cũng là bất kỳ, không thể xác định trước Bên cạnh
bộ nhớ loại SRAM, một số chip thuộc họ 8051 còn có thêm bộ nhớ dữ liệu loại EEPROM với dung lượng tối đa vài Kbyte, tùy từng loại chip cụ thể Dưới đây
là một vài ví dụ về bộ nhớ chương trình của một số loại chip thông dụng thuộc
họ 8051
Trang 20ii Bảng về bộ nhớ của một số loại chip thuộc
họ 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ều khiể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ộng vớ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 ROM trê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
h Cấu trúc bộ nhớ chương trình
i Địa chỉ các ngắt trên bộ nhớ chương trình
Trang 21Hình trên 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 2.9 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 ứng dụ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 đích khác (sử dụng cho bộ nhớ chương trình) Bởi vậy khi lập trình bằng ngôn ngữ Assembly, phần đầu chương trình bao giờ cũng phải cho chương trình nhảy đến địa chỉ cao hơn địa chỉ chứa các ngắt và mã lệnh viết cho các ngắt thì phải viết đúng địa chỉ của các ngắt tương ứng
j Cấu trúc bộ nhớ dữ liệu
Hình trên 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
Trang 22k Cấu trúc bộ nhớ trong
Hình trên 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
l Cấu trúc 128 byte thấp của bộ nhớ dữ liệu trong
Hình trên 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ực thi chương trình
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 đặc biệ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
Trang 23Vù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ào trong vùng RAM đa mục đích đều có thể được truy xuất
tự do bằng cách sử dụng các kiể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ằng cá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ếm phầ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 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉ có 21 địa chỉ được định nghĩa
m 128 byte cao của bộ nhớ dữ liệu.
Trang 242.3.2 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ừ địa chỉ 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 2.13
mô tả các thanh ghi đặc biệt trong vùng nhớ dữ liệu 80H đến FFH
n Các thanh ghi đặc biệt
* Thanh ghi chính:
Thanh ghi tính toán chính của vi điều khiển 8051 ACC (Accumulator)
Là thanh ghi đặc biệt của 8051 dùng để thực hiện các phép toán của CPU, thường kí hiệu là A
* Thanh ghi phụ:
Thanh ghi tính toán phụ của vi điều khiển 8051 là B Thanh ghi B ở địa chỉ F0H được dùng chung với thanh chứa A trong các phép toán nhân, chia Lệnh MUL AB nhân 2 số 8 bit không dấu chứa trong A và B và chứa kết quả
16 bit vào cặp thanh ghi B, A (thanh chứa A cất byte thấp và thanh ghi B cất byte cao)
Trang 25Lệnh chia DIV AB chia A bởi B, thương số cất trong thanh chứa A và dư
số cất trong thanh ghi B Thanh ghi B còn được xử lý như một thanh ghi nháp Các bit được định địa chỉ của thanh ghi B có địa chỉ từ F0H đến F7H
* Thanh ghi trạng thái chương trình (PSW):
Thanh ghi trạng thái chương trình PSW là thanh ghi mô tả toàn bộ trạng thái chương trình đang hoạt động của hệ thống
* 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ệu và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ữ trong RAM 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ọi chương trình con (ACALL, LCALL) và lệnh trở về (RET, RETI) cũng cất và phục hồi nộ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ài hoặc bộ nhớ dữ liệu ngoài DPTR là một thanh ghi 16 bit có địa chỉ là 82H (DPL, byte thấ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 bit nhằ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ển vào bộ đệm truyền dữ liệu và sẽ được lưu giữ ở đó cho đến khi quá trình truyền dữ liệu qua truyền thông nối tiếp kết thúc Khi thực hiện việc
Trang 26chuyể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 (Timer Mode Register) ở địa chỉ 88H Chỉ có TCON được định địa chỉ từng bit
* Các thanh ghi điều khiển:
Các thanh ghi điều khiển đặc biệt như IP, IE, TMOD, TCON, SCON và PCON là các thanh 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ền thông nối tiếp
2.3.3 Truy suất địa chỉ:
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:
o Truy xuất địa chỉ thanh ghi
Trang 278051 cho phép truy xuất 8 thanh ghi “làm việc”, được đánh số từ R0 → R7 Các lệ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ủa opcode( 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:
p 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 ghi trê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ân chia 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ệu theo 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 Tuy nhiê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ên thanh 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
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:
q Truy xuất địa chỉ kiểu gián tiếp
Trang 28Ở 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án hạ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 "@"
* Truy xuất địa chỉ kiểu tức thời:
r 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à đây là 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ước chú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
Tấ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 bit là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:
Hình 2.18: 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 đối là 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ạn trong tầm
Trang 29* Truy xuất địa chỉ kiểu tuyệt đối:
s 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 byte cho 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ằng cá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:
t 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ày chứ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ông gian 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ộc vào vị trí
* Truy xuất địa chỉ kiểu chỉ số:
u Truy xuất địa chỉ kiểu 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ủa bảng trong không gian ROM chương trình của 8051 Lệnh được dùng cho mục đích này là "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
Trang 302.4 Hoạt động TIMER của 8051:
2.4.1 Giới thiệu:
- Bộ định thời của Timer là một chuỗi các Rlip Flop được chia làm 2, nó nhận tín hiệu vào là một nguồn xung clock, xung clock được đưa vào Flip Flop thứ nhất là xung clock của Flip Flop thứ hai mà nó cũng chia tần số clock này cho 2 và cứ tiếp tục
- 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ào cho 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 có 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
- Hoạt động của Timer đơn giản 3 bit được minh họa như sau:
v Biểu đồ thời gian
- 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ờ, đếm cá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