intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

VI ĐIỀU KHIỂN

Chia sẻ: Nguyễn Đạt | Ngày: | Loại File: PDF | Số trang:38

280
lượt xem
101
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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ướng mớ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í trung tâ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ị....

Chủ đề:
Lưu

Nội dung Text: VI ĐIỀU KHIỂN

  1. ĐỒ ÁN VI ĐIỀU KHIỂN LỜ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ướng mớ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í trung tâ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ác chip 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 được cá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àn h 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 SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 1
  2. ĐỒ ÁN VI ĐIỀU KHIỂN MỤ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………………………………………………………… SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 2
  3. ĐỒ ÁN VI ĐIỀU KHIỂN Chương I GIỚI THIỆU ĐỀ TÀI 1.1 Giới thiệu LCD Trong nh ững năm gần đây màn hình tinh thể lỏng LCD ng ày càng được sử dụng rộng rãi và đang dần thay thế các đèn LED. Đó là vì các nguyên nhân sau: -Màn hình LCD có giá thành hạ. -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 ỏi cô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ều khiể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ụng củ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. Sơ đồ chương trình: Đợ i ấn phím No push xử l ý Đọc phím kết quả Display SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 3
  4. ĐỒ ÁN VI ĐIỀU KHIỂN CHƯƠ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ệnh củ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ông tin, đ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ều khiể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 quan trọ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ói chung. 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át triể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ày càng cao. Năm 1971 xu ất hiện bộ vi xử lí 4 bit lo ại TMS1000 do công ty texas Instruments vừ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ứa trê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ương trì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í trung tâm 8048 còn ch ứa bộ nhớ dữ liệu, bộ nhớ chương tr ình, bộ đếm và phát th ời gian cá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 đơn chip 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ác cô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 ty khá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 Họ ST62 của công ty SGS -THOMSON Họ H8 của công ty Hitachi Họ pic cuả công ty Microchip 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 SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 4
  5. ĐỒ ÁN VI ĐIỀU KHIỂN - 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 Ngàõt Thiãút bë Thiãút bë Nguäön ngoaìi Näúi tiãúp Song song âäöng häöö ngoaìi Âäöng häö näüi Caïc bäü Âiãöu Giao tiãúp Giao tiãúp âënh thåìi khiãøn ngàõt Song song Näúi tiãúp CPU Bus dæî liãûu, âëa chè, âiãöu khiãøn RAM ROM Hçnh 2.1. Så âäö khäúi cuía bäü vi âiãöu khiãøn 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 processing unit ) 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 - Con trỏ ngăn x ếp - Ngoài ra còn có b ộ nhớ chương tr ình, bộ giải mã lệnh, bộ điều khiển thời gian và logic. - Đơn vị xử lí trung tâm nh ận trực tiếp xung t ừ bộ giao động, ngoài ra còn có khả năng đưa m ột tín hiệu giữ nhịp từ bên ngoài. Chương tr ình đang ch ạy có thể cho dừng lại nhờ một khối điều khiển ngắt ở bên trong. Các ngu ồn ngắt có thể là : các bi ến cố ở bên ngoài , s ự tràn bộ đếm định thời hoặc cũng có th ể là giao di ện nối tiếp. 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ên ngoà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. SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 5
  6. ĐỒ ÁN VI ĐIỀU KHIỂN Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đ ồng bộ, là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 ấn định bằng một bộ định thời. Trong vi đi ều khiển 8051 / 8031 có hai thành ph ần quan tr ọng khác đó là b ộ nhớ và các thanh ghi : Bộ nhớ gồm có bộ nhớ Ram và b ộ nhớ Rom (ch ỉ có ở 8031) dùng đ ể lưu trữ dữ liệu và mã l ệnh. Các thanh ghi s ử dụng để lưu trữ thông tin trong quá trình x ử lí. Khi CPU làm việc nó làm thay đổi nội dung cu ả các thanh ghi . 2.3.2.Ch ức năng c ủa các chân vi đi ều khiển VCC U1 40 VCC 1 39 VCC P1.0 P0.0/AD0 2 38 Address & P1.1 P0.1/AD1 3 37 Data Bus P1.2 P0.2/AD2 4 36 P1.3 P0.3/AD3 R2 C3 5 35 P1.4 P0.4/AD4 6 34 P1.5 P0.5/AD5 100 10u 7 33 P1.6 P0.6/AD6 SW1 8 32 P1.7 P0.7/AD7 9 RST 31 EA/VPP SW R1 10u C1 19 XTAL1 30 74573 ALE/PROG 10K 12Mz 29 7408 PSEN 10u C2 18 XTAL2 10 28 P3.0/RXD P2.7/A15 11 27 P3.1/TXD P2.6/A14 12 26 Max232 P3.2/INTO P2.5/A13 13 25 Address Bus P3.3/INT1 P2.4/A12 14 24 P3.4/TO P2.3/A11 15 23 P3.5/T1 P2.2/A10 16 22 8255 & Ram GND P3.6/WR P2.1/A9 17 21 7408 & /RD P3.7/RD P2.0/A8 20 AT89C51 Hình 2.2 : S ơ Đồ Chân 8051 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ác thiế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 ức nă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 đặc biệt của 8051 / 8031 như ở bảng sau : SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 6
  7. ĐỒ ÁN VI ĐIỀU KHIỂN Bit Tên Chức năng chuy ển đổi P3.0 RXD Dữ liệu nhận cho port n ối tiếp P3.1 TXD Dữ liệu phát cho port n ối tiếp P3.2 INTO Ngắt 0 bên ngoài P3.3 INT1 Ngắt 1 bên ngoài P3.4 TO Ngõ vào c ủa timer/counter 0 P3.5 T1 Ngõ vào c ủa timer/counter 1 P3.6 WR Xung ghi b ộ nhớ dữ liệu ngoài P3.7 RD Xung đọ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ột EPROM đ ể 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ênh cá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 đư ờng port 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 c hương tr ình từ ROM nội trong kho ảng địa chỉ 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ên chip. 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ân cấ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ên mú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 XTA L: SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 7
  8. ĐỒ ÁN VI ĐIỀU KHIỂN Cá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. j.Các chân ngu ồn : 8051 vận hành v ới nguồn đơn +5V. Vcc đư ợc nối vào chân 40 và Vss (GND) đư ợc nối vào chân 20. 2.3.3.Hoạt động của bộ định thời 2.3.3.1.Giới thiệu. Một định nghĩa đơn giản của timer là m ột chuỗi các flip -flop chia đôi t ần số nối tiếp với nhau, chúng nh ận tín hiệu vào làm ngu ồn xung nh ịp. Ngõ ra c ủa tần số cuối làm ngu ồn xung nh ịp cho flip -flop báo tràn c ủa timer (flip -flop cờ). Giá trị nhị phân trong các flip -flop của timer có th ể xem như s ố đếm số xung nh ịp (hoặc các sự kiện) từ khi khởi động timer. Ví d ụ timer 16 bit s ẽ đếm lên từ 0000H đ ến FFFFH. C ờ báo tràn s ẽ lên 1 khi s ố đếm tràn từ FFFFH đ ến 0000H. 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ác timer đ ể : a) định khoảng thời gian, b) đ ếm sự kiện hoặc c) tạo tốc độ baud cho port 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ực hiệ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 đặn củ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 ch o port n ối tiếp trong 8051 Truy xu ất timer của 8051 dùng 6 thanh ghi ch ức năng đ ặc biệt cho trong bảng sau: SFR MỤC ĐÍCH ĐỊA CHỈ Địa chỉ hóa từng bít TCON Điều khiển timer 88H có TMOD Chế độ timer 89H không TL0 Byte thấp của timer 0 8AH không TL1 Byte thấp của timer 1 8BH không TH0 Byte cao c ủa timer 0 8CH không TH1 Byte cao c ủa timer 1 8DH 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. SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 8
  9. ĐỒ ÁN VI ĐIỀU KHIỂN Bit Tên Timer Mô t ả 7 GATE 1 Bit (M ở) cổng, khi lên 1 timer ch ỉ chạy khi INT1 ở mức cao. 6 C/T 1 Bit chọn chế độ counter /timer 1=bộ đếm sự kiện 0=bộ định khoảng thời gian 5 M1 1 Bit 1 của chế độ(mode) 4 M0 1 Bit 0 của chế độ 00: chế độ 0 : timer 13 bit 01: chế độ 1 : timer 16 bit 10: chế độ 2 : tự động nạp lại 8255A bit 11: chế độ 3 : tách timer 3 GATE 0 Bit (mở) cổng 2 C/T 0 Bit chọn counter/timer 1 M1 0 Bit 1 của chế độ 0 M0 0 Bit 0 của chế độ 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. 7 6 5 3 0 4 2 1 TF0 TR0 IE0 IT0 TF1 TR1 IE1 IT1 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ần cứ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 khi ngắ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ặc mức). 2.3.3.4Các ch ế độ định th ời và cờ tràn: -Ta chỉ xét đến chế độ định thời loại 0,1,2. Các mode c ủa bộ định thời được thiết lập ở bit 0,1 và 4,5 ở thanh ghi TMODE(đ ã xét ở trên). a)Chế độ định thời 13-bit(chế độ 0): SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 9
  10. ĐỒ ÁN VI ĐIỀU KHIỂN Để 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 Xung clock TLx(5bit) THx(8 bit) TFx 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ầm mềm. Xung clock TLx(8bit) THx(8 bit) TFx 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 ị được nạ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 đ ến FFH xuống 00H và n ạp lại... chế độ này rất thông d ụng vì sự tràn timer x ảy ra trong nh ững khoảng thời gian nh ất định và tuần hoàn một khi đã khởi động TMOD và THx. Xung clock TLx(8bit) TFx Reload THx(8 bit) 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ạch anh 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ông qua chân P3.4 và P3.5. 2.3.4.Hoạt động của ngắt : +Ngắt là sự xảy ra của một điều kiện - một sự kiện - làm cho chương tr ình hiện hành b ị tạm dừng, chương tr ình khác được thực hiện. +Củng chính vì v ậy nên ta có c ảm giác là chip có khã n ăng xử lý nhiều chương tr ình một lúc làm nâng cao tính hi ệu quả của con vi đi ều khiển, nhất là trong kỹ thuật đáp ứng sự kiện với yêu cầu cập nhật một cách tự động. +Chương trình xử lý không có s ử dụng ngắt . Timer CHÆÅNG TRÇNH CHÊNH SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 10
  11. ĐỒ ÁN VI ĐIỀU KHIỂN +Chương tr ình có s ử dụng đến ngắt. ISR MAIN MAIN 2.3.4.1. Tổ chức ngắt của 8051 : +Có 5 nguyên nhân t ạo ra ngắt : 2 ngắt do bên ngoài, hai ng ắt do bộ định thời và một ngắt do port n ối tiếp. +Khi xảy ra 2 hay nhi ều ngắt đồng thời hoặc xảy ra một ngắt trong khi m ột ngắt khác đang tác đ ộng thì lúc đó điều gì sẽ xảy ra : -Nếu có 2 ng ắt cùng mức ưu tiên th ì chuổi vòng c ố định sẽ xác định ngắt nào đư ợc phục vụ trước. Chuổi vòng này s ẽ là: ngắt ngoài 0, ng ắt do bộ định thời 0, ngắt ngoài 1, ng ắt ngoài 1, ng ắt do port n ối tiếp. -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 cao xuấ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 đang thự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 ình ngắ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: Nguyên nhân ng ắt Cờ Địa chỉ Ngắt ngoài 0 IE0 03h Ngắt bộ định thời 0 TF0 0BH Ngắt ngoài 1 IE1 13H 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. 7 6 5 3 0 4 2 1 ES ET0 EX0 EA - - ET1 EX1 SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 11
  12. ĐỒ ÁN VI ĐIỀU KHIỂN +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ẽ được cho phép ho ặc không cho phép tu ỳ thuộc vào bit cho phép ng ắt tương ứng đựơc set hay 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 ch o 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. 7 6 5 3 0 4 2 1 PS PT0 PX0 - - - PT1 PX1 +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 : 7 6 5 3 0 4 2 1 TF0 TR0 IE0 IT0 TF1 TR1 IE1 IT1 IE0:Cờ ngắt ngoài 0 . IE1:Cờ ngắt ngoài 1. TF0:Cờ ngắt do bộ định thời 0. TF1:Cờ ngắt do bộ định thời 1. 2.3.4.3.S ử dụng ngắt ngoài: +Ngắt ngoài x ảy ra khi có m ức thấp hoặc có cạnh âm trên chân , (P3.2 và P3.3) c ủa 8051. +Việc chọn các ng ắt loại tác động cạnh hay tác đ ộng mức được lập trình thông qua các bit IT0 và IT1 c ủa thanh ghi TCON. N ếu 2 bit này ở mức cao thì ngắt thuộc loại tác động cạnh. +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ào nà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ấp tố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ảo rằng sự chuyển trạng thái đư ợc phát hi ện. IE0 va IE1 t ự động được xoá khi CPU trỏ 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 : SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 12
  13. ĐỒ ÁN VI ĐIỀU KHIỂN +Tập lệnh của MCS -51 được tối ưu hóa cho các ứng dụng điều khiển 8 bit. 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ệu hoặc địa chỉ. Tập lệnh có 139 l ệnh 1 byte, 92 l ệnh 2-byte, 24 l ệnh 3 byte. +Một số kiểu định địa chỉ: -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). *.Các loại lệnh : +Các lệnh của 8051 đư ợc chia làm 5 nhóm : -Nhóm lệnh số học. -Nhóm lệnh logic. -Nhóm lệnh di chuy ển dữ liệu. -Nhóm lệnh xử lý bit. -Nhóm lệnh rẽ nhánh. a)Các lệnh số học: +Đặc trưng c ủa các loại này là các phép toán c ộng, trừ, nhân, chia: Vd: ADD A,#25H DIV AB MUL AB DEC R7 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ành các phép toán sau: ANL A,B : Khi đó thanh ghi A s ẽ nhận giá trị mới là:08h ORL A,B : Khi đó thanh ghi A s ẽ nhận giá trị mới là:62h XRL A,B : Khi đó thanh ghi A s ẽ nhận giá trị mới là:54h c)Các nhóm l ệnh di chuy ển dữ liệu : +Cũng giống như h ầu hết các bộ vi xử lý thời gian mà CPU th ực hiện việc di chuyển dữ liệu chiếm hết 2/3 thời gian ho ạt động của nó. + Lệnh điển hình ở đây là : MOV ,. d)Các lệnh xữ lý bit: +Các bit có th ể được set và xoá b ằng 1 lệnh. Điều này rất linh ho ạt mà ta khó tìm th ấy được ở bộ vi xử lý. Nó giúp ta ti ết kiệm được số cổng I/0 và th ực hiện kiểm tra đi ều khiển được dễ dàng hơn nhi ều. +Lệnh thường gặp ở trong trư ờng hợp này đó là: SETB ; CLR e)Các l ệnh rẽ nhánh: SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 13
  14. ĐỒ ÁN VI ĐIỀU KHIỂN +Trong th ực tế không ph ải lúc nào chương tr ình lúc nào c ũng đi theo mộ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ện công việc trên một cách dễ dàng. +Các lệnh thường gặp đó là: JMP, JNB, JB, CJNE , DJNZ .v.v. +Tuỳ theo các tình hu ốn cụ thể mà ta cho chương tr ình đi theo một chiều hướng mong mu ốn. B.GIỚI THIỆU CÁC LINH KI ỆN LIÊN QUAN Đ ẾN MẠCH THI ẾT KẾ: a)Điện trở: đây là lo ại linh kiện thụ động nó được sử dụng với mục đích chính là 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ơn ghi 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 ở trong mạ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á Giá trị tụ : ,2200µF, 470 µF, 10 µF(t ụ hóa);104, 33pF(tụ sứ) d) IC ổn áp :LM7805: LM7805/TO 1 3 GND VIN VOUT 2 Điện áp ngõ vào t ừ 8V -35V Điện áp ngõ ra là 5V e)Diode: + Diode:Dùng đ ể chỉnh lưu ngu ồn AC thanh DC +Photo diode: D1 SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 14
  15. ĐỒ ÁN VI ĐIỀU KHIỂN f) 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 cho trong bảng 12.1. Vị trí của các chân được mô tả trên hình 12.1 cho nhiều LCD khác nhau. 1. Chân VCC, VS S và VE E : Các chân VCC, VS S và VE 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ác thanh ghi này như sau: Nếu RS = 0 thì thanh ghi mà lệnh được chọn để cho phép người dùng gửi một lệnh chẳng hạn như xoá màn hình, đưa con trỏ về đầu dòng v.v… Nếu RS = 1 thì thanh ghi dữ liệu được chọn cho phép người dùng gử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 = 0 hoặ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ống thấ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. Xung này phải rộng tối thiểu là 450ns. 5. Chân D0 - D7. Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên LCD hoặc đọc nội dung của các thanh ghi trong LCD. Để hiển thị các chữ cái và các con số, chúng ta gửi các mã ASCII của các chữ cái từ A đến Z, a đến f và các con số từ 0 - 9 đến các chân này khi bật RS = 1. Cũng có các mã lệnh mà có thể được gửi đến LCD để xoá màn hình hoặc đưa con trỏ về đầu dòng hoặc nhấp nháy con trỏ. Bảng 12.2 liệt kê các mã lênh. Chúng ta cũng sử dụng RS = 0 để kiểm tra bít cờ bận để xem LCD có sẵn sàng nhân thông tin. Cờ bận là D7 và có thể được đọc khi R/W = 1 và RS = 0 như sau: SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 15
  16. ĐỒ ÁN VI ĐIỀU KHIỂN Nế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ên trong và sẽ không nhận bất kỳ thông tin mới nào. Khi D7 = 0 thì LCD sẵn sàng nhậ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 Kí hiệu I/O Mô tả Chân Vss - Đất 1 VCC - Dương nguồn 5V 2 VEE - Cấp nguồn điều khiển phản 3 RS=0 ch ọn thanh ghi RS I 4 lệnh.RS=1 chọn thanh dữ liệu Rw I RW=1 đ ọc dữ liệu.RW=1 ghi 5 E I/O Cho phép 6 DB0 I/O Các bít dữ liệu 7 DB1 I/O Các bít dữ liệu 8 DB2 I/O Các bít dữ liệu 9 DB3 I/O Các bít dữ liệu 10 DB4 I/O Các bít dữ liệu 11 DB5 I/O Các bít dữ liệu 12 DB6 I/O Các bít dữ liệu 13 DB7 I/O Các bít dữ liệu 14 Bảng 12.2: Các mã lệnh LCD. Mã Lệnh đến thanh ghi của LCD (Hex) 1 Xóa màn hình hi ển thị 2 Trở về đầu d òng 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 Tắt8con 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 SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 16
  17. ĐỒ ÁN VI ĐIỀU KHIỂN B Ghép n ối 89c51 với b àn phím: Ở dạng đ ơn giản,bàn phím đư ợc tổ chức theo kiểu ma trận các h àng và các cột.CPU truy cập cả h àng lẫn cột thông qua các cổng.Do vậy,với hai cổng 8 bít th ì có thể nối một b àn phím 64 phím(8x8) t ới bộ vi xử lý. Khi một phím đ ược nhấn thì một hàng và một cột đ ược tiếp xúc ,các hàng và c ột còn lại không có sự tiếp xúc nào .Trong các bàn phím máy tính IBM PC có m ột bộ vi điều khiển(bao gồm một bộ vi xử lý,bộ nhớ RAM,EPROM và m ột số cổng tất cả đ ược bố trí tr ên một chí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ệm qué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ác cột đều đ ược nối tới nguồn Vc c.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 ên cá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 SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 17
  18. ĐỒ ÁN VI ĐIỀU KHIỂN phí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 ến hành đọc các cột.Nếu dữ liệu đọc đ ược có g iá 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ím nhấ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ác cộ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 ột lú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 ình lặ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 êm 20ms 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 đảm việ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ễ 20ms ngăn ng ừa việc coi phím đó đ ược nhiễu nhiều lần. Nếu sau khi giữ phím chậm 20ms 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ỗi lầ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ím nhấn có nghĩa chúng ta có đ ược thông tin cần thiết để xác định vị trí phím thông qua 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 cho phí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ếp theo của bảng m ã quét. SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 18
  19. ĐỒ ÁN VI ĐIỀU KHIỂN Bắt đầu 1 Nối đất tất cả các hàng Nối đất hàng ti ếp theo Đọc tất cả các hàng Đọc tất cả các cột Phím hàng nay được Tất cả các cột dc nhấn Tìm phím nh ấn Xác đ ịnh mã quét Đọc tất cả các cột Trở về 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 SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 19
  20. ĐỒ ÁN VI ĐIỀU KHIỂN Chương III : THIẾT KẾ MẠCH & CH ƯƠNG T RÌNH Sơ đồ mạch thiết kế: SVTH : HO ÀNG PHI LONG -LỚP 05CDT1 TRANG 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2