Máy tính cộng trừ nhân chia hiển thị LCD
Trang 1LỜI NÓI ĐẦU
Ngày nay với sự tiến bộ của khoa học kỹ thuật cộng với sự phát triển mạnh mẽcủa công cụ máy tính Đã thay đổi phương thức sản suất đi theo một chiều hướngmới đó là thời kỳ mà các dây chuyền, các máy sản xuất đã chuyển sang bán tựđộng hoặc tự động hoá hoàn toàn
Đối với các thiết bị tự động thì các chip vi điều khiển, các bộ vi xử lí trungtâm đóng vai trò hết sức quan trọng là đầu não điều khiển mọi hoạt động của thiết
bị Tuy nhiên với những thiết bị không đòi hỏi độ phức tạp trong xữ lí cao thì cácchip VĐK như họ 8051, PIC sử dụng rất tiện lợi, giá thành thấp
Với mục đích của đồ án VĐK là nhằm giúp sinh viên làm quen, n ắm đượccách thức điều khiển một thiết bị thực tế bằng vi điều khiển Em chọn chíp VĐK
89C51 cho đề tài của mình là: “Máy tính cộng trừ nhân chia hiển thị LCD”
Qua một thời gian tìm hiểu, thiết kế với sự cố gắng của bản thân và đặc biệt
là sự hướng dẩn của thầy Lê Xứng và các thầy giáo trong bộ môn đến nay em đã
hoàn thành đồ án VĐK này
Em rất chân thành cảm ơn các thầy cô!
Đà Nẵng, ngày 12 tháng 6 năm 2009
Sinh viên thực hiện
Hoàng phi long
Trang 2MỤC LỤC
Chương I: GIỚI THIỆU ĐỀ TÀI
Chương II: GIỚI THIỆU BỘ VI ĐIỀU KHIỂN 89C51 VÀ CÁC LINH KIỆN LIÊN QUAN
A.GIỚI THIỆU BỘ VĐK AT89C51
2.1.Giới thiệu chung
2.2 Lịch sử phát triển của vi điều khiển
2.3 Khảo sát vi điều khiển 8051
2.3.1.Cấu trúc bên trong của IC 8951
2.3.2.Chức năng của các chân vi điều khiển
2.3.3.Hoạt động của bộ định thời
2.3.4.Hoạt động ngắt
2.3.5.Tập lệnh họ 8051
B.CÁC LINH KIỆN LIÊN QUAN ĐẾN MACH THIẾT KẾ
Chương III: THIẾT KẾ MẠCH & CHƯƠNG TRÌNH
3.1.Sơ đồ mạch thiết kế
3.2 Sơ đồ khối chương trình
3.3.Mã nguồn chương trình………
Trang 3-Khả năng hiển thị số ,ký tự và đồ hoạ tốt hơn nhiều so với đèn LED
-Sử dụng thêm một bộ điều khiển làm tươi LCD và như vậy giải phóng CPU khỏicông việc này.còn đối với đèn LED luôn cần CPU để duy trì việc hiển thị dữ liệu.-Dễ dàng lập trình các ký tự và đồ hoạ
1.2Đặt vấn đề:
Ngày nay máy tính điện tử đã trở nên phổ biến và không thể thiếu được đối với
học sinh cũng như sinh viên Chính vì lý do trên nên em chọn đề tài ~Máy tính
điện tử hiển thị LCD~ một trong những ứng dụng đơn giản của LCD Nội dung
chính của đồ án của em là có thể thực hiện các phép toán đơn gi ản như Cộng, trừ, nhân, chia,có thể thực hiện cộng từ 1 số sau đó phát triển thêm cộng được nhiều
số hơn nữa,và có thể giao tiếp với máy tính để hiển thị số lên LCD
Khi nghiên cứu đề tài này em muốn phát huy những ứng dụng của vi điềukhiển nhàm tạo ra sản phẩm của chính mình,trong quá trình phát tri ển đồ án em có
cơ hội nghiên cứu kỹ hơn về vi diều khiển ,phát hiện nhiều về khả năng ứng dụngcủa vi điều khiển, đồng thời phát huy tính sáng tạo ,khả năng giải quyết một vấn đềyêu cầu đặt ra
Trang 4CHƯƠNG II:
GIỚI THIỆU VỀ VI ĐIỀU KHIỂN
VÀ CÁC LINH KIỆN LIÊN QUAN
A.GIỚI THIỆU VỀ HỌ VI ĐIỀU KHIỂN 89C51:
2.1.Giới thiệu chung
Bộ vi điều khiển viết tắt là Micro-controller, là mạch tích hợp trên một chip có thểlập trình được, dùng để điều khiển hoạt động của một hệ thống Theo các tập lệnhcủa người lập trình, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lý thôngtin, đo thời gian và tiến hành đóng mở một cơ cấu nào đó
Trong các thiếh bị điện và điện và điện tử dân dụng, các bộ vi điều khiển, điềukhiển hoạt động của TV, máy giặt, đầu đọc laser, điện thọai, lò vi-ba … Trong hệthống sản xuất tự động, bộ vi điều khiển được sử dụng trong Robot, dây chuy ền tựđộng Các hệ thống càng "thông minh" thì vai trò c ủa hệ vi điều khiển càng quantrọng
2.2 Lịch sử phát triển của vi điều khiển
Bộ vi điều khiển thực ra, là một loại vi xử lí trong tập hợp các bộ vi xử lý nóichung Bộ vi điều khiển được phát triển từ bộ vi xử lí, từ những năm 70 do sự pháttriển và hoàn thiện về công nghệ vi điện tử dựa trên kỹ thuật MOS (Metal-Oxide-Semiconductor) , mức độ tích hợp của các linh kiện bán dẫn trong một chip ngàycàng cao
Năm 1971 xuất hiện bộ vi xử lí 4 bit loại TMS1000 do công ty texas Instrumentsvừa là nơi phát minh vừa là nhà sản xuất Nhìn tổng thể thì bộ vi xử lí chỉ có chứatrên một chip những chức năng cần thiết để xử lí chương trình theo một trình tự,còn tất cả bộ phận phụ trợ khác cần thiết như : bộ nhớ dữ liệu , bộ nhớ chươngtrình , bộ chuển đổi AID, khối điều khiển, khối hiển thị, điều khiển máy in, hốiđồng hồ và lịch là những linh kiện nằm ở bên ngoài được nối vào bộ vi xử lí.Mãi đến năm 1976 công ty INTEL (Interlligen -Elictronics) Mới cho ra đời bộ viđiều khiển đơn chip đầu tiên trên thế giới với tên gọi 8048 Bên cạnh bộ xử lí trungtâm 8048 còn chứa bộ nhớ dữ liệu, bộ nhớ chương trình, bộ đếm và phát thời giancác cổng vào và ra Digital trên m ột chip
Các công ty khác cũng lần lược cho ra đời các bộ vi điều khiển 8bit tương tự như
8048 và hình thành họ vi điều khiển MCS-48 (Microcontroller-sustem-48)
Đến năm 1980 công ty INTEL cho ra đ ời thế hệ thứ hai của bộ vi điều khiển đơnchip với tên gọi 8051 Và sau đó hàng lo ạt các vi điều khiển cùng loại với 8051 rađời và hình thành họ vi điều khiển MCS-51
Đến nay họ vi điều khiển 8 bit MCS51 đã có đến 250 thành viên và hầu hết cáccông ty hàng đầu thế giới chế tạo Đứng đầu là công ty INTEL và rất nhiều công tykhác như : AMD, SIEMENS, PHILIPS, DALLAS, OKI …
Ngoài ra còn có các công ty khác c ũng có những họ vi điều khiển riêng như:
Họ 68HCOS của công ty Motorola
2.3 Khảo sát vi điều khiển 8051
IC vi điều khiển 8051/8031 thuộc họ MCS51 có các đặt điểm sau :
- 4kbyte ROM (được lập trình bởi nhà sản xuất chỉ có ở 8051)
- 128 byte RAM
Trang 5- 4port I10 8bit
- Hai bộ định thời 16bit
- Giao tiếp nối tiếp
- 64KB không gian bộ nhớ chương trình mở rộng
- 64 KB không gian bộ nhớ dữ liệu mở rộng
- một bộ xử lí luận lí (thao tâc trín câc bit đơn)
- 210 bit được địa chỉ hóa
- bộ nhđn / chia 4 s
2.3.1.Cấu trúc bín trong của IC 8951
Phần chính của vi điều khiển 8051 lă bộ xử lí trung tđm (CPU: central processingunit ) bao gồm :
- Thanh ghi tích lũy A
- Thanh ghi tích lũy phụ B, dùng cho phĩp nhđn vă phĩp chia
- Đơn vị logic học (ALU : Arithmetic Logical Unit )
- Từ trạng thâi chương trình (PSW : Prorgam Status Word)
- Bốn băng thanh ghi
Hai bộ định thời 16 bit hoạt động như một bộ đếm
Câc cổng (port0, port1, port2, port3 ) S ử dụng văo mục đích điều khiển
Ở cổng 3 có thím câc đường dẫn điều khiển dùng để trao đổi với một bộ nhớ bínngoăi, hoặc để đầu nối giao diện nối tiếp, cũng như câc đường ngắt dẫn bín ngoăi
Hình 2.1 Sơ đồ khối của bộ vi điều khiển
Điều khiển ngắt
CPU
Thiết bị Nối tiếp
Thiết bị Song song
Nguồnđồng hồöngoài
Ngắt ngoài
Đồng hồ nội
Bus dữ liệu, địa chỉ, điều khiển
Các bộđịnh thời Song song Giao tiếp
Giao tiếp Nối tiếp
Trang 6Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ, làm việcđộc lập với nhau Tốc độ truyền qu ổng nối tiếp có thể đặt trong vảy rộng và được
2.3.2.Chức năng của các chân vi điều khiển
a.Port0 : là port có 2 chức năng ở trên chân từ 32 đến 39 trong các thiết kế cỡ nhỏ
( không dùng bộ nhớ mở rộng ) có hai chức năng như các đường IO Đối với cácthiết kế cỡ lớn ( với bộ nhớ mở rộng ) nó được kết hợp kênh giữ a các bus )
b.Port1 : port1 là một port I/O trên các chân 1 -8 Các chân được ký hiệu P1.0,
P1.1, P1.2 … có thể dùng cho các thiết bị ngoài nếu cần Port1 không có chứcnăng khác, vì vậy chúng ta chỉ được dùng trong giao tiếp với các thiết bị ngoài
c.Port2 : port2 là một port công dụng kép trên các chân 21 - 28 được 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 kế dùng bộ nhớ
mở rộng
d.Port3 : port3 là một port công dụng kép trên các chân 10 - 17 Các chân của port
này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tín đặcbiệt của 8051 / 8031 như ở bảng sau :
29 30 31
1 2 3 4 5 6 7 8
21 22 23 24 25 26 27 28 10
11 12 13 14 15 16 17
39 38 37 36 35 34 33 32
RST
XTAL2 XTAL1
PSEN ALE/PROG EA/VPP
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD
P3.1/TXD P3.2/INTO P3.3/INT1 P3.4/TO P3.5/T1 P3.6/WR P3.7/RD
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
C3 10u
7408 & /RD
Address Bus Max232
SW1
SW
Hình 2.2 : Sơ Đồ Chân 8051
Trang 7Bit Tên Chức năng chuyển đổi
Dữ liệu nhận cho port nối tiếp
Dữ liệu phát cho port nối tiếpNgắt 0 bên ngoài
Ngắt 1 bên ngoàiNgõ vào của timer/counter 0Ngõ vào của timer/counter 1Xung ghi bộ nhớ dữ liệu ngoàiXung đọc bộ nhớ dữ liệu ngoài
Bảng 2.1 : Chức năng của các chân trên port3
e.Chân PSEN (Program Store Enable ) : 8051 / 8031 có 4 tín hi ệu điều khiển
PSEN là tín hiệu ra trên chân 29 Nó là tín hi ệu điều khiển để cho phép bộ nhớchương trình mở rộng và thường được nối đến chân OE (Output Enable) của mộtEPROM để cho phép đọc các bytes mã lệnh
PSEN sẽ ở mức thấp trong thời gian lấy lệnh Các mã nhị phân của chương trìnhđược đọc từ EPROM qua bus và được chốt vào thanh ghi lệnh của 8051 để giải mãlệnh Khi thi hành chương tr ình trong ROM nội (8051) PSEN sẽ ở mức thụ động(mức cao)
f.Chân ALE (Address Latch Enable ) :
Tín hiệu ra ALE trên chân 30 tương h ợp với các thiết bị làm việc với các xử lí
8585, 8088, 8086, 8051 dùng ALE m ột cách tương tự cho làm việc giải các kênhcác bus địa chỉ và dữ liệu khi port 0 được dùng trong chế độ chuyển đổi của nó :vừa là bus dữ liệu vừa là búyt thấp của địa chỉ, ALE là tín hiệu để chốt địa chỉvào một thanh ghi bên ngoài trong n ữa đầu của chu kỳ bộ nhớ Sau đó, các đườngport 0 dùng để xuất hoặc nhập dữ liệu trong nữa sau chu kỳ của bộ nhớ
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thểđược dùng là nguồn xung nhịp cho các hệ thống Nếu xung trên 8051 là 12MHz thìALE có tần số 2MHz Chỉ ngoại trừ khi thi hành lệnh MOVX, một xung ALE sẽ bịmất Chân này cũng được làm ngõ vào cho xung l ập trình cho EPROM trong 8051
g Chân EA (External Access) :
Tín hiệu vào EA trên chân 31 thư ờng được mắc lên mức cao (+5V) hoặc mức thấp(GND) Nếu ở mức cao, 8051 thi hành chương trình từ ROM nội trong khoảng địachỉ thấp (4K) Nếu ở mức thấp, chương trình chỉ được thi hành từ bộ nhớ mở rộng.Khi dùng 8031, EA luôn đư ợc nối mức thấp vì không có bộ nhớ chương trình trênchip Nếu EA được nối mức thấp bộ nhớ bên trong chương trình 8051 sẽ bị cấm vàchương trình thi hành từ EPROM mở rộng Người ta còn dùng chân EA làm châncấp điện áp 21V khi lập trình cho EPROM trong 8051
h.Chân RST(reset)
Ngõ vào RST trên chân 9 là ngõ reset c ủa 8051 Khi tín hiệu này được đưa lênmúc cao (trong ít nhất 2 chu kỳ máy ), các thanh ghi trong 8051 đư ợc tải những giátrị thích hợp để khởi động hệ thống
i.Chân XTAL:
Trang 8Các ngõ vào bộ dao động trên chip :Như đã thấy trong các hình trên , 8051 có m ột
bộ dao động trên chip Nó thường được nối với thạch anh giữa hai chân 18 và 19.Các tụ giữa cũng cần thiết như đã vẽ Tần số thạch anh thông thường là 12MHz
8051 có 2 timer 16 bit, m ỗi timer có bốn cách làm việc Người ta sử dụng cáctimer để : a) định khoảng thời gian, b) đếm sự kiện hoặc c) tạo tốc độ baud choport nối tiếp trong 8051
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở một khoảngđều đặn và đặt cờ tràn timer Cờ được dùng để đồng bộ hóa chương trình để thựchiện một tác động như kiểm tra trạng thái của các cửa ngõ vào hoặc gửi các sựkiện ra các ngõ ra Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặncủa timer để đo thời gian trôi qua giữa hai sự kiện (ví dụ : đo độ rộng xung)
Đếm sự kiện dùng để xác định số lần xẩy ra của một sự kiện Một "sự kiện" là bất
cứ tác động ngoài nào có thể cung cấp một chuyển trạng thái trên một chân của
8051 Các timer cũng có thể cung cấp xung nhịp tốc độ baud cho port nối tiếptrong 8051 Truy xuất timer của 8051 dùng 6 thanh ghi ch ức năng đặc biệt chotrong bảng sau:
88H 89H 8AH 8BH 8CH 8DH
có không không không không không
Bảng 2.2: Thanh ghi chức năng đặc biệt dùng timer
2.3.3.2 Thanh ghi ch ế độ timer (TMOD)
Thanh ghi TMOD chứa hai nhóm 4 bit dùng đ ể đặt chế độ làm việc cho timer 0 vàtimer 1
Trang 9Tên Timer Mô tả
GATE 1 Bit (Mở) cổng, khi lên 1 timer chỉ chạy khi INT1
ở mức cao
1=bộ đếm sự kiện0=bộ định khoảng thời gian
00: chế độ 0 : timer 13 bit01: chế độ 1 : timer 16 bit10: chế độ 2 : tự động nạp lại 8255A bit11: chế độ 3 : tách timer
Bảng 2.3: Tóm tắt thanh ghi TMOD
2.3.3.3 Thanh ghi điều khiển timer (TCON)
Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho timer 0 vàtimer 1
Bảng 2.4: Tóm tắt thanh ghi TCON
+TF1: (địa chỉ 8Fh) cờ tràn bộ định thời 1 Được set bởi phần cứng khi bộđịnh thời/ đếm bị tràn, được xoá bởi phần mềm hoặc bởi phần cứng khi trình phục
vụ ngắt được trỏ đến
+TR1:(địa chỉ byte8Eh) bit điều khiển bộ định thời 1 hoạt động Được set/xoá bởi phần mềm để điều khiển bộ định thời hoạt động hoặc ngưng hoạt động.+TF0(địa chỉ byte8Dh) cờ tràn của bộ định thời 0
+TR0(địa chỉ byte8C) bit điều khiển bộ định thời 0 hoạt động
+IE1:( địa chỉ byte8Bh) cờ ngắt ngoài 1 tác động cạnh Được set bởi phầncứng khi phát hiện có ngắt ngoài 1 tác động cạnh; được xoá bởi phần cứng khingắt được xử lý
+IT1(địa chỉ byte8Ah)bít điều khiển chọn loại ngắt Được set/ xoá để xácđịnh ngắt ngoài thuộc loại tác động cạnh xuống hay tác động mức thấp
+IE0(địa chỉ byte89h) cờ ngắt ngoài 0 tác động cạnh
+IT0(địa chỉ byte88h)bit điều khiển chọn loại ngắt (kích khởi cạnh hoặcmức)
2 3
4 5
6 7
IT0 IE0
IT1 IE1
TR0 TF0
TR1 TF1
Trang 10Để tương thích với 8048 (có trứớc 8051)
Ba bit cao của TLX (TL0 và/hoăc TL1) không dùng
b)Chế độ định thời 16-bit(chế độ1):
Hoạt động như timer 16 bit đầy đủ
Cờ báo tràn là bit TFx trong TCON có th ể đọc hoặc ghi bằng phầm mềm
MSB của giá trị trong các thanh ghi timer là bit 7 c ủa THx và LBS là bit 0 của TLx.Các thanh ghi timer (Tlx/THx) có th ể được đọc hoặc ghi bất cứ lúc nào bằng phầmmềm
c)Chế độ tự nạp lại 8 bit(chế độ 2):
TLx hoạt động như một timer 8 bit, trong khi đó THx v ẫn giữ nguyên giá trị đượcnạp Khi số đếm tràn tứ FFH đến 00H, không những cờ timer được set mà giá trịtrong THx đồng thời được nạp vào TLx Việc đếm tiếp tục từ giá trị này lên đếnFFH xuống 00H và nạp lại chế độ này rất thông dụng vì sự tràn timer xảy ratrong những khoảng thời gian nhất định và tuần hoàn một khi đã khởi động TMOD
và THx
d)Vấn đề xung clock:
+Nguồn xung clock được quết đinh bởi bit C/ ở thanh ghi TMOD nếu nó ởmức logic 0 thì nguồn xung được lấy ở mạch dao động bên trong chip (tần số thạchanh chia cho 12 đó là đầu vào của nguồn xung )
+Nếu bit trên ở mức logic cao thì nguồn xung được lấy ở bên ngoài thôngqua chân P3.4 và P3.5
Xung clock
TFx THx(8 bit)
TLx(8bit)
TLx(8bit)
THx(8 bit)
TFx Xung clock
Reload
CHÆÅNG TRÇNH CHÊNH Timer
Trang 11-Khi có 2 ngắt với mức ưu tiên khác nhau xu ất hiện đồng thời thìngắt có mức ưu tiên cao sẽ được phục vụ trước.
-Khi mức ngắt ưu tiên thấp đang thực hiện nếu có ngắt ở mức caoxuất hiện thì trình thực hiện ngắt ở mức thấp phải tạm dừng Nếu ngắt cao đangthực hiện mà có một ngắt ở mức thấp tác động thì lúc này chương trình không thểdừng ngắt ở mức ưu tiên cao để thực hiện được mà nó phải thực hiện chương trìnhngắt ở mức cao xong rồi mới phục vụ ngắt ở mức thấp
*Vấn đề được xem xét kỹ hơn đó là nếu có ngắt xuất hiện thì điều gì sẽ xãy
ra trong bộ vi điều khiển
+Hoàn tất lệnh hiện hành
+Thanh ghi PC cất vào Stack
+Trạng thái các ngắt hiện thời được lưu giữ lại
+Các ngắt được chận lại ở mức ngắt
+Bộ đếm chương trình PC được nạp địa chỉ chương trình phục vụ ngắt.+Chương trình phục vụ ngắt được thực hiện cho đến khi gặp lệnh RETI trở
về chương trình ở ban đầu
2.3.4.2.Địa chỉ của vecto ngắt:
Ngắt do bộ định thời 1 TF1 1BH
Ngắt do cổng nối tiếp TI hay RI 23H
- Khảo sát thanh ghi liên quang đến ngắt
Trang 12+EA : cho phép hoặ không cho phép tất cả các ngắt Nếu EA =0, không cóngắt nào đựơc nhận biết Nếu EA=1, mỗi một nguyên nhân ngắt riêng rẽ sẽ đượccho phép hoặc không cho phép tuỳ thuộc vào bit cho phép ngắt tương ứng đựơc sethay xoá.
+ES: Cho phép hoặc không cho phép ngắt do Port nối tiếp
+ET1:Cho phép hoặc không cho phép ngắt do tràn bộ định thời 1
+EX1:Cho phép hoặc không cho phép ngắt do ngắt ngoài 1
+ET0: Cho phép hoặc không cho phép ngắt do tràn bộ định thời 0
+EX0:Cho phép hoặc không cho phép ngắt do ngắt ngoài 0
-Thanh ghi mức ưu tiên ngắt
+PS: Mức ưu tiên cho ngắt nối tiếp
+PT1: Mức ưu tiên cho bộ định thời 1
+PX1: Mức ưu tiên cho ngắt ngoài 1
+PT0: Mức ưu tiên cho bộ định thời 0
+PX0: Mức ưu tiên cho ngắt ngoài 0
+Các cờ ngắt được nhận biết ở thanh ghi TCON :
+Các ngắt ngoài được lấy mẫu một lần ở mỗi chu kỳ máy , các ngỏ vàonày phải được duy trì tối thiểu 12 chu kỳ dao động để đảm bảo rằng việc lấy mẫu
là đúng Nếu ngắt ngoài thuộc loại tác động cạnh, nguyên nhân ngắt ngoài phảiđược duy trì tại chân yêu cầu ở mức cao tối thiểu 1 chu kỳ và sau đó ở mức thấptối thiểu một chu kỳ và sau đó ở mức thấp tối thiểu một chu kỳ nữa để đảm bảorằng sự chuyển trạng thái được phát hiện IE0 va IE1 tự động được xoá khi CPUtrỏ tới trình phục vụ ngắt tương ứng
+Nếu ngắt ngoài thuộc loại tác động mức, nguyên nhân ngắt ngoài phảiđược duy trì trạng thái tích cực cho đến khi ngắt theo yêu cầu thực sự được tạo ra.Sau đó nguyên nhân ng ắt phải ở trạng thái thụ động trước khi trình phục vụ ngắtđược thực thi xong hoặc trước khi có một ngắt khác được tạo ra
2.3.5.Tập lệnh của 8051 :
0 1
2 3
4 5
6 7
PX0 PT0
PX1 PT1
PS -
-
-0 1
2 3
4 5
6 7
IT0 IE0
IT1 IE1
TR0 TF0
TR1 TF1
Trang 13+Tập lệnh của MCS-51 được tối ưu hóa cho các ứng dụng điều khiển 8bit Tập lệnh củng hổ trợ các biến 1 bit cho phép quản lý bit trực tiếp trong các hệlogic và điều khiển có yêu cầu xử lý bít.
+Cũng như các bộ vi xử lý 8-bit, các lệnh của 8051 có các ôpcde 8-bit,
do vậy số lệnh có thể lên đến 256 lệnh(thực tế có 255 lệnh, 1 lệnh không đượcđịnh nghĩa) Ngoài opcode, một số lệnh còn có thêm 1 hoặc 2 byte nữa cho dữ liệuhoặc địa chỉ Tập lệnh có 139 lệnh 1 byte, 92 lệnh 2-byte, 24 lệnh 3 byte
b)Các lệnh logic:
+Thực hiệnh các phép toán logic như AND, OR, XOR và NOT:
Vd: giả sử thanh ghi A có giá trị là 30h và B có giá trị là 40 h khi đó ta tiến hànhcác phép toán sau:
ANL A,B : Khi đó thanh ghi A s ẽ nhận giá trị mới là:08hORL A,B : Khi đó thanh ghi A s ẽ nhận giá trị mới là:62hXRL A,B : Khi đó thanh ghi A s ẽ nhận giá trị mới là:54h
+Lệnh thường gặp ở trong trường hợp này đó là:
SETB <đối tượng> ; CLR <đối tượng>
e)Các lệnh rẽ nhánh:
Trang 14+Trong thực tế không phải lúc nào chương trình lúc nào cũng đi theomột đường thẳng nhất định mà đôi khi nó chịu tác động của yếu tố ngoại cảnh tácđộng làm cho chiều hướng chương trình bị rẽ sang một hướng nào đó.
+Với yếu tố trên thì 8051 cung cấp cho ta một số mã lệnh để thực hiệncông việc trên một cách dễ dàng
hạn dòng, hay phân áp cho c ác linh kiện khác có thể hoạt động bình thường
+Các điện trở thường có giá trị được các nhà sản xuất qui định bởi màu sơnghi trên nó :
Các giá trị điện trở như sau:10kΩ,330Ω,4,7kΩ,1,2kΩ,270Ω…
b)Biến trở : là loại linh kiện điện trở mà giá trị của nó có thể thay đổi được một
cách dễ dàng Hình dạng của nó củng có nhiều loại thường là có 3 chân ở trongmạch này em sử dụng loại vi trở điều chỉnh được bằng nút vặn
+Giá trị của biến trở có trong mạch là 10k
c)Tụ điện: Sử dụng để lọc nguồn hay lọc tần số, chống nhiễu
+Thường ta sử dụng các loại tụ sau : tụ sứ, tụ hoá
Trang 15f) LCD
Mô tả các chân của LCD.
LCD được nói trong mục này có 14 chân, chức năng của các chân được chotrong bảng 12.1 Vị trí của các chân được mô tả trên hình 12.1 cho nhiều LCDkhác nhau
1 Chân V CC , V S S và V E E : Các chân V CC , V S S và V E E : Cấp dương nguồn - 5v
và đất tương ứng thì VEEđược dùng để điều khiển độ tương phản của LCD
2 Chân chọn thanh ghi RS (Register Select).
Có hai thanh ghi rất quan trọng bên trong LCD, chân RS được dùng để chọn cácthanh ghi này như sau: Nếu RS = 0 thì thanh ghi mà lệnh được chọn để cho phépngười dùng gửi một lệnh chẳng hạn như xoá màn hình, đưa con trỏ về đầudòng v.v… Nếu RS = 1 thì thanh ghi dữ liệu được chọn cho phép người dùnggửi dữ liệu cần hiển thị trên LCD
3 Chân đọc/ ghi (R/W).
Đầu vào đọc/ ghi cho phép người dùng ghi thông tin lên LCD khi R/W = 0hoặc đọc thông tin từ nó khi R/W = 1
4 Chân cho phép E (Enable).
Chân cho phép E được sử dụng bởi LCD để chốt thông tin hiện hữu trên chân dữliệu của nó Khi dữ liệu được cấp đến chân dữ liệu thì một xung mức cao xuốngthấp phải được áp đến chân này để LCD chốt dữ liệu trên các chân dữ liêu Xungnày phải rộng tối thiểu là 450ns
Chúng ta cũng sử dụng RS = 0 để kiểm tra bít cờ bận để xem LCD có sẵnsàng nhân thông tin Cờ bận là D7 và có thể được đọc khi R/W = 1 và RS = 0như sau:
Trang 16Nếu R/W = 1, RS = 0 khi D7 = 1 (cờ bận 1) thì LCD bận bởi các công việc bêntrong và sẽ không nhận bất kỳ thông tin mới nào Khi D7 = 0 thì LCD sẵn sàngnhận thông tin mới Lưu ý chúng ta nên kiểm tra cờ bận trước khi ghi bất kỳ dữliệu nào lên LCD.
Bảng 12.1 Mô tả các chân của LCD
4 Dịch con trỏ sang trái
6 Dịch con trỏ sang phải
5 Dịch hiển thị sang phải
7 Dịch hiển thị sang trái
8
Tắt con trỏ ,tắt hiển thị
A Tắt hiển thị,bật con trỏ
C Bật hiển thị,tắt con trỏ
E Bật hiển thị,Nhấp nháy con trỏ
F Tắt con trỏ,nhấp nháy con trỏ
10 Dịch vị trí con trỏ sang trái
14 Dịch con trỏ sang phải
18 Dịch toàn bộ hiển thị sang trái
1C Dịch toàn bộ hiển thị sang phải
80 Đưa con trỏ về đầu dòng thứ nhất
C0 Đưa con trỏ về đầu dòng thứ hai
38 Hai dòng và ma trận 5x7
Trang 17bộ vi xử lý,bộ nhớ RAM,EPROM và một số cổng tất cả được bố trí trên mộtchíp)Chịu trách nhiệm nối ghép phần cứng v à phần mền của bàn phím.Ở những hệnhư vậy,chương trình được lưu trong EPROM của bộ vi điều khiển đảm nhiệmquét liên tục các phím,xác định xem phím n ào đã được kích hoạt và gủi thông tinđến bo mạch chính.Trong phần n ày,chúng ta nghiên cứu về cơ cấu 8051 quét vàxác định phím nhấn.
Quét và xác định phím
Nếu không có phím nào được nhấn thì đọc cổng vào sẽ được toàn là 1 vì tất cả cáccột đều được nối tới nguồn Vcc.Nếu tất cả các hàng được nối đất và một phímđược nhấn thì một trong các cột sẽ có giá trị 0 v ì phím được nhấn nối cột xuốngđât.Chức năng của bộ vi điều khiển l à quét liên tục để phát hiện và xác định phímđược nhấn
Để phát hiện phím nhấn bộ vi xử lý nối tất cả các h àng bằng cách đặt giá trị 0 l êncác chốt ra,sau đó đọc các cột.Nếu dữ liệu đọc đ ược ở các cột có giá trị 1111 tức l àkhông có phím nào được nhấn và quá trình cứ tiếp tục cho đến khi phát hiện ra
Trang 18phím được nhấn.Nếu một trong các bít của cột có giá trị bằng 0,điều đó xác nhận
có phím được nhấn.Sau khi một phím nhấn đ ã được phát hiện,bộ vi xử lý sẽchuyển qua quá trình xác định phím nhấn đó.Bắt đầu từ h àng trên,sau đó nó tiếnhành đọc các cột.Nếu dữ liệu đọc được có giá trị toàn là 1 tức là không phím nào ởhàng này được kích hoạt cả thì quá trình sẽ chuyển sang hàng tiếp theo.Bộ vi xử lýlại nối đất hàng tiếp theo,đọc giá trị ở các cột v à kiểm tra xem có giá trị n ào bằng
0 không.Quá trình này ti ếp tục cho đến khi có h àng được xác định.Sau khi xácđịnh xong hàng có phím nhấn nhiệm vụ tiếp theo l à tìm xem cột nào có phímnhấn.Việc này cũng khá đơn giản vì CPU biết được bất cứ thời điểm nào hàng nào
và cột nào được truy cập
Chương trình thực hiện qua 4 giai đoạn chính nh ư sau:
1.Để bảo đảm rằng phím nhấn tr ước đó đã được nhả ra,các giá trị 0 c ùng một lúc
áp đến tất các hàng,và tiến hành đọc nhiều lần giá trị các cột cho đến khi tất cả cáccột có giá trị cao.Khi tất cả các cột đ ã có giá trị cao ,chương trình sẽ đợi trong mộtlúc trước khi chuyển sang bước tiếp theo là một phím được nhấn
2.Để kiểm tra xem có phím n ào được nhấn,các cột được quét theo một chu tr ìnhlặp cho đến khi một trong các cột có giá trị 0.Cần nhớ rằng các chốt lối có nghĩa l àchúng được nối đất.Sau khi phát hiện được phím nhấn,chương trình sẽ chờ thêm20ms rồi mới quét các cột một lần nữa L àm như vậy với 2 mục đích (a) bảo đảmviệc phát hiện ra phím nhấn không phải do lỗi xung nhiễu gây ra v à (b) trễ 20msngăn ngừa việc coi phím đó đ ược nhiễu nhiều lần.Nếu sau khi giữ phím chậm20ms phím đó vẫn cồn bị nhấn thì chương trình sẽ chuyển sang bước tiếp theo làxác định đó thuộc về hàng nào,hay nói cách khác chương tr ình trở về vòng lặp đểxác định phím được nhấn thực sự
3 Để phát hiện phím nhấn thuộc về h àng nào,cần nối đất từng hàng một và mỗilần như vậy phải đọc giá trị các cột.Nếu tất cả các cột đều ở mức cao có nghĩa l àphím được nhấn không thuộc hàng đó,vì vậy cần nối đất hàng tiếp theo và cứ thếtiếp tục cho đến khi tìm được hàng có phím được nhấn.Khi tìm ra hàng có phímnhấn có nghĩa chúng ta có đ ược thông tin cần thiết để xác định vị trí phím thôngqua việc đối chiếu bảng chứa m ã quét bàn phím
4.Để xác định nhấn cần quay từng bít cột v ào cờ nhớ và kiểm tra xem liệu có giátrị thấp hay không.Khi t ìm thấy giá trị 0,có nghĩa l à đã xác định được mã quét chophím nhấn,nếu không thì con trỏ sẽ tiếp tục tăng thêm 1 để trỏ đến phần tử tiếptheo của bảng mã quét
Trang 19Nối đất tất cả các hàng
Đọc tất cả các cột
Tất cả các cột dc nhấn
Đọc tất cả các cột
Có phím nhấn
Chờ phím nhấn xong
Đọc tất cả các cột
Có phím nhấn
1
Nối đất hàng tiếp theo
Đọc tất cả các hàng
Phím hàng nay được
Tìm phím nhấn
Xác định mã quét
Trở về Bắt đầu
1