Đăng ký Đăng nhập
Trang chủ Công nghệ thông tin Kỹ thuật lập trình Lập trình 8051 sử dụng KEIL C...

Tài liệu Lập trình 8051 sử dụng KEIL C

.PDF
25
1400
113

Mô tả:

Lập trình Vi điều khiển Hệ nhúng BÀI THỰC HÀNH SỐ 1 LẬP TRÌNH 8051 SỬ DỤNG KEIL C Phần 1. Làm theo hướng dẫn 1.Tạo một project mới và lập trình vi điều khiển 8051 sử dụng phần mềm Keil Bước 1. Chọn menu Project -> New Project. Nhập tên của project (Ví dụ: HelloWorld) Bước 2. Chọn vi điều khiển muốn lập trình (Chọn ATMEL->AT89C51) Bước 3. Một cửa sổ hiện ra hỏi xem bạn có sử dụng một số đoạn code mẫu không, hãy chọn No. DCE, SOICT, HUST 1 Lập trình Vi điều khiển Hệ nhúng Bước 4. Tạo ra một file mã nguồn bằng cách chọn menu File->New, lưu file và đặt tên là Hello.asm Bước 5. Viết mã cho file mã nguồn vừa tạo Bước 6. Thêm file mã nguồn vừa tạo vào trong project Chọn file Hello.asm DCE, SOICT, HUST 2 Lập trình Vi điều khiển Hệ nhúng Bước 7. Biên dịch chương trình bằng cách bấm phím F7 hoặc chọn menu Project -> Build Target. 2.Viết chương trình Hello World (nhấp nháy led) Tạo một project mới có tên là BlinkLed (nhấp náy led) với file mã nguồn có nội dung như sau ORG 000 ;Dia chi bat dau cua chuong trinh AGAIN: SETB P1.0 ;Nhap nhay led o chan P1.0 ACALL DELAY CLR P1.0 ACALL DELAY SJMP AGAIN DELAY: ;Tao tre MOV R1,#255 LOOP: DJNZ R1,LOOP RET END Tiến hành biên dịch project. Thực hiện mô phỏng chức năng nháy led theo các bước sau Bước 1. Mở menu Debug ->Start/Stop Debug Session hoặc bấm Ctrl + F5 để chuẩn bị gỡ lỗi cho chương trình Bước 2. Mở cửa sổ mô phỏng cổng 1 của vi điều khiển AT89C51 bằng cách chọn menu Peripheals -> IO Port -> Port 1 Bước 3. Tiến hành mô phỏng bằng cách bấm vào menu Debug -> Run hoặc bấm phím F5. Theo dõi kết quả trên màn hình. Phần 2. Bài tập tự làm Bài 1. Viết chương trình hợp ngữ thực hiện những phép toán sau - R0=0 - R1=1 - R2=2 - R3=3 - R4=4 - A=R0+R1+R2+R3+R4 - Kiểm tra nếu A=10 thì bật sáng led tại chân P1.0 (tương ứng thiết lập P1.0=1). Nếu A<> 10 thì tắt led tại chân P1.0. Bài 2. Viết chương trình điều khiển led tại chân P1.0 nhấp nháy 100 lần. DCE, SOICT, HUST 3 Lập trình Vi điều khiển Hệ nhúng BÀI THỰC HÀNH SỐ 2 THIẾT KẾ HỆ NHÚNG SỬ DỤNG PHẦN MỀM PROTEUS Phần 1. Làm theo hướng dẫn 1. Làm quen cách sử dụng phần mềm Proteus ISIS Xem hướng dẫn sử dụng phần mềm Proteus để tạo và mô phỏng, chú ý quá trình sử dụng gồm 3 bước căn bản Bước 1. Tạo 1 thiết kế mới (Chọn File -> New Design) Bước 2. Chọn các linh kiện để đưa vào thiết kế. Ở đây các bạn phải đánh tên tiếng Anh của linh kiện và tìm kiếm. Dưới đây là một số tên gợi ý: AT89C51: tìm vi điều khiển Capacitor: tìm tụ Resistor: tìm điện trở Crystal: tìm bộ dao động thạch anh Led: tìm đèn led Led 7 seg: tìm đèn led 7 thanh Button: tìm nút bấm Switch: tìm công tắc … Sau khi chọn được linh kiện thì click đúp vào linh kiện đó để thêm linh kiện vào thiết kế. Sau đó có thể tiến hành gõ tên và tìm kiếm linh kiện khác một cách bình thường. Bước 3. Đưa linh kiện vào thiết kế Chọn loại linh kiện trong thiết kế (Ở cửa sổ bên trái), click vào màn hình thiết kế bên phải để đưa linh kiện vào thiết kế DCE, SOICT, HUST 4 Lập trình Vi điều khiển Hệ nhúng Bước 4. Đi dây, kết nối các linh kiện. Ở bước này, bạn sử dụng chuột click vào chân của linh kiện sau đó di chuột và click lên chân của linh kiện muốn kết nối. 2. Xem cách thức tạo ra file .HEX và nạp vào vi điều khiển - Để tạo ra file .HEX, trong phần mềm Keil, chọn Icon Options for Target Tiếp đến, cửa sổ thiết lập tùy chọn hiện ra. Chọn tab Output và tích vào tùy chọn để tạo ra .HEX file. Khi đó, nếu biên dịch chương trình thành công, bạn sẽ nhận được một file .HEX (có tên mặc định trùng với tên file mã nguồn của bạn). File này sẽ được nạp vào bộ nhớ của vi điều khiển để thực thi chương trình. DCE, SOICT, HUST 5 Lập trình Vi điều khiển Hệ nhúng Tiếp đến, để nạp file này vào vi điều khiển, trong phần mềm ISIS (Thuộc bộ phần mềm Proteus), bạn click chuột phải lên vi điều khiển, tiếp đến chọn Edit Properties Tiếp đến, một cửa sổ cho phép chỉnh sửa thuộc tính của vi điều khiển hiện lên, bạn tiến hành tìm tới đường dẫn cua file .HEX chứa mã nguồn muốn mô phỏng DCE, SOICT, HUST 6 Lập trình Vi điều khiển Hệ nhúng Phần 2. Bài tập tự làm Bài 1. Sử dụng phần mềm Proteus ISIS tạo một mạch điện có hình như dưới đây DCE, SOICT, HUST 7 Lập trình Vi điều khiển Hệ nhúng Viết chương trình nhấp nháy led tại chân P1.0 và nạp vào thiết kế, mô phỏng kết quả đạt được. Bài 2. Viết các lệnh hợp ngữ thực hiện các yêu cầu sau sử dụng các lệnh logic và lệnh quay Xóa thanh ghi A Thiết lập thanh ghi A Đảo bit thanh ghi A Đảo dấu thanh ghi A (Bit 7 là bit dấu) Xóa hai bit 0 và bit 1 của thanh ghi A Thiết lập 4 bit cao của thanh ghi A Đảo 4 bit cao của thanh ghi A Bài 3. Hiển thị lần lượt nội dung các bit của thanh ghi A (từ bit D7 -> bit D0) trên led 7 thanh. (Các chân a,b,c,d,e,f,g của led 7 thanh được nối tương ứng với các chân P0.0 -> P0.6 của vi điều khiển 8051) Gợi ý: các bit của thanh ghi A sẽ có dạng 01001…, việc hiển thị ra led 7 thanh ở đây chính là hiện các số 0, 1. DCE, SOICT, HUST 8 Lập trình Vi điều khiển Hệ nhúng BÀI THỰC HÀNH SỐ 3 LẬP TRÌNH VÀO RA CƠ BẢN GIAO TIẾP LED ĐƠN, LED 7 THANH Phần 1. Làm theo hướng dẫn Bài 1. Lập trình xuất dữ liệu điều khiển led đơn Bước 1. Sử dụng phần mềm Proteus ISIS vẽ mạch điện dưới đây Bước 2. Sử dụng phần mềm Keil C viết chương trình điều khiển 8 led lần lượt sáng nhấp nháy, so le nhau #include void delay(int interval){ int i,j; for(i=0;i<255;i++){ for(j=0;j void delay(int interval){ int i,j; for(i=0;i<255;i++){ for(j=0;j void delay(int interval){ int i,j; for(i=0;i<255;i++){ for(j=0;jled 7 thanh 74LS47 và 7446 DCE, SOICT, HUST 12 Lập trình Vi điều khiển Hệ nhúng IC 74LS47 và IC 7446 là các IC giải mã từ mã BCD ra mã 7 thanh. Việc sử dụng IC này cho phép tiết kiệm chân của vi điều khiển. Đọc tài liệu hướng dẫn (datasheet) của IC 74LS47 và IC 7446 và tiến hành thiết kế mạch ghép nối vi điều khiển với IC này để điều khiển led 7 thanh. Chú ý: nên viết chương trình ghép nối module giải mã dưới dạng chương trình con để tiện sử dụng lại Bài 8. Lập trình điều khiển module gồm 4 led 7 thanh Trong nhiều trường hợp, ta cần hiển thị nhiều thông tin. Thay vì phải sử dụng nhiều led 7 thanh đơn lẻ, chúng ta có thể sử dụng các module led 7 thanh cho phép điều khiển hiển thị 2,4…led 7 thanh khác nhau. Hãy tìm hiểu cách sử dụng, lập trình module gồm 4 led 7 thanh như trên hình (Sử dụng từ khóa tìm kiếm linh kiện là “7seg” trong phần mềm Proteus ISIS, tìm đến linh kiện có mã là 7SEG-MPX4-CA, ở đây có nghĩa là module 4 led 7 thanh mắc kiểu Anode chung). DCE, SOICT, HUST 13 Lập trình Vi điều khiển Hệ nhúng BÀI THỰC HÀNH SỐ 4 LẬP TRÌNH XỬ LÝ NGẮT Phần 1. Làm theo hướng dẫn Bài 1. Lập trình xử lý ngắt phần cứng ngoài Bước 1. Thiết kế mạch theo sơ đồ dưới đây Bước 2. Viết chương trình thực hiện xử lý ngắt ngoài 0 tương ứng sự kiện người dùng bấm phím B2. #include //Khai bao bien toan cuc int count=0; //Chuong trinh tao do tre void delay(int interval) { int i,j; for(i=0;i<100;i++) { for(j=0;j>1; } } //Chuong trinh khoi tao he thong void init(){ P3_2=1; //Thiet lap chan P3_2 lam chan vao IE=0x81; //Cho phep ngat ngoai 0 IT0=1; //Ngat theo suon } void main(){ init(); while(1){ display_number(count); } } Bước 3. Quan sát kết quả, nhận xét. Bài 2. Tạo độ trễ chính xác sử dụng bộ định thời Bước 1. Thiết kế mạch theo sơ đồ dưới đây DCE, SOICT, HUST 15 Lập trình Vi điều khiển Hệ nhúng Bước 2. Viết chương trình #include //Chuong trinh tao do tre chinh xac su dung Timer void delay_hardware_50ms(){ TMOD=TMOD & 0xF0; //Xoa phan thiet lap cu cua Timer0 TMOD=TMOD | 0x01; ET0=0; //Khong phat sinh ngat TH0=0x3C; //Thiet lap gia tri khoi dau la 3CB0 (He 16) TL0=0xB0; //Tuong duong 15536 he 10 TF0=0; //Xoa co tran timer 0 TR0=1; //Khoi dong timer 0 while(TF0==0); //Cho den khi tran TR0=0; //Dung timer 0 } //Chuong trinh tao tre chinh xac 1 s void delay_hardware_1s(){ int i; for(i=0;i<20;i++){ delay_hardware_50ms(); } } //Chuong trinh chinh void main(){ while(1){ P0=0xAA; delay_hardware_1s(); P0=0x55; delay_hardware_1s(); } } DCE, SOICT, HUST 16 Lập trình Vi điều khiển Hệ nhúng Phần 2. Bài tập tự làm Bài 4. Viết chương trình tạo trễ 1ms sử dụng bộ định thời Bài 5. Xây dựng mô hình và viết chương trình mô phỏng hệ thống đèn giao thông tại một ngã tư với các yêu cầu sau  Có 2 cột đèn (mỗi cột có 3 đèn xanh, đỏ, vàng)  Mỗi cột đèn có gắn một đồng hồ đếm ngược Dưới đây là thiết kế tham khảo DCE, SOICT, HUST 17 Lập trình Vi điều khiển Hệ nhúng BÀI THỰC HÀNH SỐ 5 LẬP TRÌNH GIAO TIẾP KEYPAD, LCD 16X2 Phần 1. Làm theo hướng dẫn Bài 1. Kiểm tra cơ chế hoạt động của bàn phím Bước 1. Thiết kế mạch theo sơ đồ dưới đây Bước 2. Thử chuyển tất cả các công tắc gạt SW1->SW4 sang nối đất sau đó nhấn các phím, quan sát kết quả. Bước 3. Thử chuyển tất cả các công tắc gạt sang nối dương nguồn VCC sau đó nhấn các phím, quan sát kết quả. Bước 4. Mỗi thời điểm chỉ cho một công tắc gạt nối đất rồi nhấn các phím và quan sát kết quả. Bài 2. Điều khiển hiển thị dữ liệu trên LCD Bước 1. Thiết kế mạch theo sơ đồ dưới đây DCE, SOICT, HUST 18 Lập trình Vi điều khiển Hệ nhúng Bước 2. Viết chương trình điều khiển LCD hiển thị hai dòng chữ LAP TRINH VI DIEU KHIEN **************** #include #include "string.h" //Dinh nghia mot so chan de dieu khien den LCD #define LCD_DATA P2 sbit EN=P0^2; sbit RS=P0^0; sbit RW=P0^1; //Khai bao prototype cho cac ham void Init_System(); void Delay_ms(int interval); void LCD_init(); void Wait_For_LCD(); void LCD_Send_Command(unsigned char x); void LCD_Write_One_Char(unsigned char c); void LCD_Write_String(unsigned char *s); void main() { Init_System(); LCD_init(); DCE, SOICT, HUST 19 Lập trình Vi điều khiển Hệ nhúng LCD_Write_String("LAP TRINH VI DIEU KHIEN"); LCD_Send_Command(0xC0); LCD_Write_String("***************"); while(1){ } } void Init_System() { //Thiet lap LCD o che do ghi RW=1; } void Delay_ms(int interval) { int i,j; for(i=0;i<1000;i++) { for(j=0;j - Xem thêm -