Giáo trình Lập trình vi điều khiển cơ bản cung cấp cho người học những kiến thức như: Tổng quan về vi điều khiển 8051; Hướng dẫn sử dụng Keil C; Lập trình ứng dụng cơ bản; Lập trình ứng dụng nâng cao. Mời các bạn cùng tham khảo!
TRƢỜNG CAO ĐẲNG NGHỀ ĐỒNG THÁP KHOA ĐIỆN – ĐIỆN TỬ GIÁO TRÌNH MƠN HỌC:LẬP TRÌNH VI ĐIỀU KHIỂN CƠ BẢN NGÀNH, NGHỀ: CNKT ĐI N, ĐI N T TRÌNH ĐỘ: CAO ĐẲNG/TRUNG CẤP (Ban hành kèm theo Quyết định Số: /QĐ-CĐNĐT ngày… tháng…năm 2018 Hiệu trưởng Trường Cao đẳng nghề Đồng Tháp) Đồng Tháp, năm 2018 TUYÊN BỐ BẢN QUYỀN Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin đƣợc phép dùng nguyên trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm LỜI GIỚI THIỆU Vi điều khiển mô đun chuyên môn c a nghề Công nghệ kỹ thuật Điện - Điện tử đƣợc biên soạn dựa theo chƣơng trình khung đ x y dựng ban hành n m 2017 c a trƣờng Cao đẳng nghề Đồng Tháp trƣớc đ y dành cho nghề Điện tử công nghiệp hệ Cao đẳng Trung cấp Giáo trình đƣợc biên soạn làm tài liệu học tập, giảng dạy nên giáo trình đ đƣợc x y dựng mức độ đơn giản d hiểu, m i học có thí dụ tập tƣơng ứng để áp dụng làm sáng t ph n l thuyết Khi biên soạn, nhóm biên soạn đ dựa kinh nghiệm thực tế giảng dạy, tham khảo đồng nghiệp, tham khảo giáo trình có cập nhật kiến thức có liên quan để phù hợp với nội dung chƣơng trình đào tạo phù hợp với mục tiêu đào tạo, nội dung đƣợc biên soạn gắn với nhu c u thực tế Nội dung giáo trình đƣợc biên soạn với lƣợng thời gian đào tạo 90 gồm có bốn bài: Bài MĐ21-01: Tổng quan vi điều khiển 8051 Bài MĐ21-02: Hƣớng dẫn sử dụng Keil C Bài MĐ21-03: Lập trình ứng dụng Bài MĐ21-04: Lập trình ứng dụng n ng cao Giáo trình c ng tài liệu giảng dạy tham khảo tốt cho nghề Điện công nghiệp Mặc dù đ cố gắng tổ chức biên soạn để đáp ứng đƣợc mục tiêu đào tạo nhƣng không tránh đƣợc thiếu sót Rất mong nhận đƣợc đóng góp kiến c a th y, cơ, bạn đọc để nhóm biên soạn điều ch nh hoàn thiện Đồng Tháp, ngày tháng n m 2018 Tham gia biên soạn Chủ biên: Lâm Văn Vũ Nguyễn Quốc Thắng MỤC LỤC Trang LỜI GIỚI THI U MỤC LỤC BÀI 01: TỔNG QUAN VI ĐIỀU KHIỂN Giới thiệu vi điều khiển 8051 Khảo sát ph n cứng vi điều khiển họ MSC – 51 Cấu trúc nhớ c a vi điều khiển 18 Tập lệnh vi điều khiển MSC - 51 27 Bộ định thời (Timer) vi điều khiển MSC - 51 69 Hoạt động truyền liệu c a vi điều khiển MCS-51 81 Hoạt động ngắt c a vi điều khiển MCS-51 93 BÀI 02: NGƠN NGỮ C – TRÌNH DỊCH KEIL C 103 Ngôn ngữ C cho vi điều khiển 103 Trình biên dịch Keil C (compiler) 113 BÀI 03: LẬP TRÌNH ỨNG DỤNG CƠ BẢN 124 Lập trình điều khiển led đơn 124 Lập trình điều khiển led đơn kết hợp với phím nhấn 126 Lập trình điều khiển led đoạn 128 Lập trình điều khiển led đoạn kết hợp với phím nhấn 132 Lập trình điều khiển LCD 138 Lập trình điều khiển giao tiếp LCD bàn phím số Hex 141 Lập trình điều khiển động DC 149 Lập trình điều khiển động bƣớc 152 BÀI 04: LẬP TRÌNH ỨNG DỤNG NÂNG CAO 160 Lập trình ứng dụng timer điều khiển đồng hồ số 161 Lập trình ứng dụng timer đếm sản phẩm 165 Lập trình ứng dụng ngắt điều khiển led đơn 168 Lập trình ứng dụng ngắt điều khiển led đoạn 171 TÀI LI U THAM KHẢO 174 BÀI 01: TỔNG QUAN VI ĐIỀU KHIỂN Mã MĐ22-01 Giới thiệu: Một vi điều khiển (microcontroller) đƣợc xem nhƣ “một máy tính chip” – mạch điện tích hợp chip, lập trình đƣợc, dùng để điều khiển hoạt động c a hệ thống Vi điều khiển đƣợc ứng dụng rộng r i Đa số l nh vực ứng dụng vi điều khiển Và khí tự động hố b y có lẽ đ gắn liền với vi xử l Vi điều khiển c u trúc siêu nh , gồm linh kiện điện tử có kích thƣớc micro nano kết hợp với nhau, đƣợc nối với thiết bị bên qua ch n vi điều khiển Vi điều khiển đƣợc x y dựng với ph n cứng dành cho ngƣời sử dụng đơn giản hơn, nhƣng thay vào lợi điểm khả n ng xử l bị giới hạn Vì vi điều khiển có giá thành rẻ nhiều so với vi xử l , việc sử dụng đơn giản nên đƣợc ứng dụng rộng r i vào nhiều ứng dụng có chức n ng đơn giản, khơng địi h i tính tốn phức tạp Do đó, để nắm đƣợc hoạt động c a hệ thống dùng vi điều khiển ta phải tìm hiểu tổng quan họ vi điều khiển 8051 Mục tiêu: - Giúp sinh viên hiểu đƣợc cấu trúc ph n cứng, sơ đồ ch n mạch phụ trợ c a họ vi điều khiển 8051 -Trình bày cấu tạo chế độ làm việc c a định thời 89C51 theo nội dung đ học -Trình bày tác dụng thực tế c a hệ thống đƣợc điều khiển tín hiệu ngắt theo nội dung đ học - Rèn luyện tính tƣ duy, tác phong cơng nghiệp Giới thiệu vi điều khiển 8051 Vi xử l có nhiều loại bắt đ u từ bit 32 bit, vi xử l bit khơng cịn nhƣng vi xử l bit cịn đ có vi xử l 32 bit L tồn c a vi xử l bit phù hợp với số yêu c u điều khiển c a thiết bị điều khiển công nghiệp Các vi xử l 32 bit thƣờng sử dụng cho máy tính khối lƣợng liệu c a máy tính lớn nên c n vi xử l mạnh tốt Các hệ thống điều khiển công nghiệp sử dụng vi xử l bit để điều khiển nhƣ hệ thống điện c a xe hơi, hệ thống điều hòa, hệ thống điều khiển d y chuyền sản xuất,… Khi sử dụng vi xử l c n phải thiết kế hệ thống gồm có: - Vi xử l - Có nhớ - Các IC ngoại vi Bộ nhớ dùng để chứa chƣơng trình cho vi xử l thực chứa liệu xử l , IC ngoại vi dùng để xuất nhập liệu từ bên vào xử l điều khiển trở lại Các khối liên kết với tạo thành hệ thống vi xử l Yêu c u điều khiển cao hệ thống phức tạp yêu c u điều khiển đơn giản, ví dụ ch c n đóng mở đèn led theo thời gian u c u hệ thống vi xử l c ng phải có đ y đ khối Để kết nối khối tạo thành hệ thống vi xử l đòi h i ngƣời thiết kế phải hiểu biết tất thành ph n vi xử l , nhớ, thiết bị ngoại vi Hệ thống tạo phức tạp, chiếm nhiều không gian, mạch in, vấn đề địi h i ngƣời thiết kế, ngƣời sử dụng hiểu thật rõ hệ thống Một l vi xử l thƣờng xử l liệu theo byte word đối tƣợng điều khiển công nghiệp thƣờng điều khiển theo bit Chính phức tạp nên nhà chế tạo đ tích hợp nhớ, số thiết bị số thiết bị ngoại vi với vi xử l tạo thành IC (In tergated-Circuit) gọi vi điều khiển - Microcontroller Khi vi điều khiển đời đ mang lại tiện lợi d dàng sử dụng điều khiển công nghiệp, việc sử dụng vi điều khiển không đòi h i ngƣời sử dụng phải hiểu biết lƣợng kiến thức nhiều nhƣ ngƣời sử dụng vi xử l , d nhiên ngƣời sử dụng hiểu biết nhiều tốt nhƣng ngƣời bắt đ u việc sử dụng vi xử l điều phức tạp mong muốn sử dụng đƣợc Các ph n khảo sát vi điều khiển để thấy rõ tiện lợi vấn đề điều khiển công nghiệp Có nhiều h ng chế tạo đƣợc vi điều khiển, h ng sản xuất tiếng ATMEL H ng Intel nhà thiết kế Có thể truy xuất để lấy tài liệu c a h ng địa ch http://www.atmel.com/ Có nhiều họ vi điều khiển mang m số khác nhau, họ tiếng họ MCS-51 (MCS: Microcontroller System) Trong họ MCS-51 vi điều khiển đ u tiên 80C31 khơng có nhớ bên chƣa tích hợp đƣợc Vi điều khiển 80C51 tích hợp đƣợc kbyte nhớ PROM (PROM: ProgRAM -mable Read Only Memory) Ch lập trình l n khơng thể xóa để lập trình lại đƣợc Vi điều khiển 87C51 tích hợp đƣợc kbyte nhớ EPROM (EPROM: Erasable Programmable Read Only Memory) Cho phép lập trình nhiều l n xóa tia cực tím Vi điều khiển 89C51 tích hợp đƣợc kbyte nhớ FLASH ROM nạp xóa điện cách tiện lợi nhanh chóng Có thể cho phép nạp xóa hàng ngàn l n Song song với họ MCS-51 họ MCS-52 có timer nhiều họ MCS-51 timer dung lƣợng nhớ nội lớn gấp đôi tức 8kbyte Hiện có nhiều vi điều khiển hệ có nhiều đặc tính hay hơn, nhiều ghi hơn, dung lƣợng nhớ lớn Ứng dụng c a vi điều khiển nhiều hệ thống điều khiển công nghiệp, d y chuyền sản xuất, điều khiển lập trình, máy giặt, máy điều hịa nhiệt độ, máy bơm x ng tự động,… nói vi xử l vi điều khiển đƣợc ứng dụng h u hết l nh vực tự động Khảo sát phần cứng vi điều khiển họ MSC – 51 Đến thời điểm có nhiều loại vi điều khiển thuộc họ MCS-51, tài liệu giới thiệu vi điều khiển 89C51 89C52 Các vi điều khiển họ MCS-51 có đặc điểm chung nhƣ sau: - Có Kbyte nhớ FLASH ROM bên dùng để lƣu chƣơng trình điều khiển - Có 128 Byte RAM nội - Port xuất/ nhập (Input/Output) bit - Có khả n ng giao tiếp truyền liệu nối tiếp - Có thể giao tiếp với 64 Kbyte nhớ bên dùng để lƣu chƣơng trình điều khiển - Có thể giao tiếp với 64 Kbyte nhớ bên dùng để lƣu liệu - Có 210 bit truy xuất bit Có lệnh xử l bit Tất vi điều khiển họ MCS-51 MCS-52 có đặc tính giống nhƣ ph n mềm, cịn ph n cứng khác nhau, vi điều khiển sau có nhiều tính n ng hay vi điều khiển hệ trƣớc Ví dụ vi điều khiển 89C51 tiện cho việc sử dụng vi điều khiển 80C51 hay 87C51 Vi điều khiển 89S51 hay 89C51 có nhiều ghi hơn, có thêm chế độ nạp nối tiếp tiện lợi Những hệ sau kế thừa tất c a hệ trƣớc Trong ph n ch đề cập đến vi điều khiển 89C51/89C52 2.1 Sơ đồ cấu trúc bên vi điều khiển: Hình 1-1 Cấu trúc bên c a vi điều khiển Sơ đồ cấu trúc c a vi điều khiển đƣợc trình bày hình 1-1 Các ghi có vi điềukhiển bao gồm: - Khối ALU kèm với ghi temp1, temp2 ghi trạng thái PSW - Bộ điều khiển logic (timing and control) - Vùng nhớ RAM nội vùng nhớ FLASH ROM lƣu trữ chƣơng trình - Mạch tạo dao động nội kết hợp với thạch anh bên để tạo dao động - Khối xử l ngắt, truyền liệu, khối timer/counter - Thanh ghi A, B, DPTR port0, port1, port2, port3 có chốt đệm - Thanh ghi đếm chƣơng trình PC (ProgRAM counter) - Con tr liệu DPTR (Data pointer) - Thanh ghi tr ng n xếp SP (Stack pointer) - Thanh ghi lệnh IR (Instruction register) - Ngồi cịn có số ghi h trợ để quản l địa ch nhớ RAM nội bên c ng nhƣ ghi quản l địa ch truy xuất nhớ bên Tập lệnh cho ngƣời lập trình kết c a liên kết khối bên c a vi điều khiển - tập lệnh cung cấp ph n cứng x y dựng nên 2.2 Khảo sát sơ đồ chân 89C51: Sơ đồ ch n c a vi điều khiển 89C51 đƣợc trình bày hình 1-2 Vi điều khiển 89C51 có tất 40 ch n Trong có 24 ch n có tác dụng kép (có ngh a ch n có chức n ng), m i đƣờng hoạt động nhƣ đƣờng xuất nhập điều khiển I/O (Input/ Output) thành ph n c a bus liệu bus địa ch để tải địa ch liệu giao tiếp với nhớ Chức n ng ch n c a 89C51: a Các Port: Port 0: Port port có chức n ng với số thứ tự ch n 32 - 39 Trong hệ thống điều khiển đơn giản sử dụng nhớ bên không dùng nhớ mở rộng bên ngồi port đƣợc dùng làm đƣờng điều khiển I/O Trong hệ thống điều khiển lớn sử dụng nhớ mở rộng bên ngồi port có chức n ng bus địa ch bus liệu AD7 - AD0 (Address: địa ch , data: liệu) BÀI 04: LẬP TRÌNH ỨNG DỤNG NÂNG CAO Mã MĐ22-04 Giới thiệu: Trong học giới thiệu số tập ứng dụng n ng cao dùng ngơn ngữ C để viết chƣơng trình mơ ph ng chƣơng trình ứng dụng n ng cao ph n mềm Protues, đồng thời kết nối cho vận hành ph n cứng c a thiết bị điều khiển l nh vực điện tử cơng nghiệp Mục tiêu: - Ph n tích đƣợc yêu c u c a tập - Viết chƣơng trình theo u c u tốn đƣa - Mô ph ng đƣợc mạch điện tử ph n mền Protus sửa l i chƣơng trình 160 - Kết nối đƣợc với ph n cứng thiết bị lập trình - Sáng tạo học tập Lập trình ứng dụng timer điều khiển đồng hồ số 1.1 Phân tích sơ đồ nguyên lý D28 19 18 D23 XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 XTAL2 RST CRYSTAL 29 30 31 led1 led2 led3 led4 led5 led6 C7 C8 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 PSEN ALE EA P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 a1 38 a2 37 a3 36 a4 35 a5 34 a6 33 a7 32 a8 21 B1 22 B2 23 B3 24 B4 25 B5 26 B6 27 B7 28 B8 R1 R2 100 R3 100 R4 100 R5 100 R6 100 R7 100 R8 100 100 10 D1 11 D2 12 D3 13 D4 14 D5 15 D6 16 D7 17 D8 R17 Q5 R20 led5 100 PNP 100 AT89C51 R11 R12 R13 100 100 10k R18 R15 100 led1 R9 100 led2 100 Q1 led6 R10 PNP Q2 PNP 100 led3 R14 Q3 PNP led4 100 R16 Q4 R19 Q6 PNP 100 PNP 100 Hình 4.1: Sơ đồ mạch đếm giờ, phút, giây Mạch gồm IC vi điều khiển họ 89xx sáu led đoạn dạng Anod chung Các led đƣợc điều khiển dạng quét Ch n liệu nối với Port 0, ch n điều khiển đƣợc nối với Port 1.2.Viết chương trình điều khiển /* Chƣơng trình đếm giờ, phút , gi y led đoạn */ #include #define LED_PORT P0 sbit LEDG1_PIN = P1^0; // Led gio sbit LEDG2_PIN = P1^1; // Led gio 161 sbit LEDP1_PIN = P1^2; // Led phut sbit LEDP2_PIN = P1^3; // Led phut sbit LEDGY1_PIN = P1^4; // LED giay sbit LEDYG2_PIN = P1^5; // LED giay unsigned char Code7Seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void Delay_ms(unsigned int ms){ unsigned char k; while(ms ){ for(k=0;k