1. Trang chủ
  2. » Luận Văn - Báo Cáo

LẬP TRÌNH 8051 SỬ DỤNG KEIL C

25 628 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 1,13 MB

Nội dung

Dưới đây là một số tên gợi ý: - AT89C51: tìm vi điều khiển 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ế.. Xem cách thức tạo ra file .HEX và n

Trang 1

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

Trang 2

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

Trang 3

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

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

Trang 4

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

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ế

Trang 5

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

Trang 6

- 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

Trang 7

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

Trang 8

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

Trang 9

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

Trang 10

Bài 2 Lập trình đọc dữ liệu từ chân vào

Bước 1 Chỉnh sửa thiết kế trong bài 1, thêm một nút bấm B2 vào mạch

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 khi người dùng không bấm nút B2 Khi người dùng bấm và giữ nút B2 thì các led giữ nguyên trạng thái

}

Bước 3 Quan sát kết quả, nhận xét

Bài 3 Lập trình điều khiển led 7 thanh

Bước 1 Sử dụng phần mềm Proteus ISIS vẽ mạch điện dưới đây Chú ý trong thiết

kế này chúng ta sử dụng led 7 thanh kiểu Anode chung

Trang 11

Bước 2 Sử dụng phần mềm Keil C viết chương trình điều khiển cho led 7 thanh lần

lượt hiển thị các số 0, 1, 2 và quay lại

P0=0x79; //Hien thi so 1 delay(100);

P0=0x24; //Hien thi so 2 delay(100);

}

}

Bước 3 Quan sát kết quả, nhận xét

Trang 12

3) Điều khiển cho các led sáng từ hai đầu (từ led 1 tới led 4, từ led 8 về led 5) sau

đó quay đầu (từ led 4 về led 1 và led 5 về led 8), quá trình lặp đi lặp lại liên tục hai thao tác đó

∘ ∘ ∘ ∘ ∘ ∘ ∘ ∘ → O ∘ ∘ ∘ ∘ ∘ ∘ O → ∘ O ∘ ∘ ∘ ∘ O ∘ → ∘ ∘ O ∘ ∘ O ∘ ∘ →

∘ ∘ ∘ O O ∘ ∘ ∘ → ∘ ∘ ∘ O O ∘ ∘ ∘ → ∘ ∘ O ∘ ∘ O ∘ ∘ → ∘ O ∘ ∘ ∘ ∘ O ∘ →

O ∘ ∘ ∘ ∘ ∘ ∘ O → ∘ ∘ ∘ ∘ ∘ ∘ ∘ ∘

Bài 5 Sử dụng thiết kế mạch như bài 2, tiến hành lập trình thực hiện công việc

 Khi người dùng bấm nút B2 lần đầu tiên, thực hiện hiệu ứng như bài 4.1

 Khi người dùng bấm nút B2 lần thứ hai, thực hiện hiệu ứng như bài 4.2

 Khi người dùng bấm nút B2 lần thứ ba, thực hiện hiệu ứng như bài 4.3

 Khi người dùng bấm nút B2 lần thứ 4, quay lại thực hiện hiệu ứng như bài 4.1

…quá trình cứ thế tiếp diễn

Bài 6 Viết chương trình con điều khiển hiển thị led 7 thanh

Chỉnh sửa chương trình trong Bài 3, xây dựng chương trình con hiển thị led 7 thanh

có khai báo như sau

void Display_7seg(unsigned char value)

Hàm này có chức năng nhận đầu vào là các số 0,1,…9 và điều khiển led 7 thanh để hiển thị các số đó

Bài 7 Lập trình điều khiển module led 7 thanh sử dụng IC giải mã BCD->led 7 thanh 74LS47 và 7446

Trang 13

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)

Trang 14

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 <at89x51.h>

//Khai bao bien toan cuc

int count=0;

//Chuong trinh tao do tre

void delay(int interval)

//Chuong trinh hien thi den led 7 thanh (khong dieu khien dot)

void output_7seg(unsigned char value)

Trang 15

void EXT0_Process() interrupt 0{

EA=0; //Cam ngat

count++;

EA=1; //Cho phep ngat

}

//Chuong trinh con hien thi so (<9999) ra module led 7 thanh

void display_number(int iNum){

int i;

unsigned char pos=0x08;

unsigned char temp;

P3_2=1; //Thiet lap chan P3_2 lam chan vao

IE=0x81; //Cho phep ngat ngoai 0

IT0=1; //Ngat theo suon

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

Trang 16

Bước 2 Viết chương trình

TH0=0x3C; //Thiet lap gia tri khoi dau la 3CB0 (He 16)

TF0=0; //Xoa co tran timer 0

TR0=1; //Khoi dong timer 0

while(TF0==0); //Cho den khi tran

Trang 17

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

Trang 18

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

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

Trang 19

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

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();

Trang 20

LCD_Write_String("LAP TRINH VI DIEU KHIEN");

//Ham thuc hien gui mot lenh xuong LCD

void LCD_Send_Command(unsigned char x)

{

LCD_DATA=x;

RS=0; //Chon thanh ghi lenh

RW=0; //De ghi du lieu

//Ham khoi tao LCD o che do ghi

//Ham kiem tra va cho den khi LCD san sang

Trang 21

LCD_Send_Command(0x0E); //Bat hien thi, nhap nhay con tro

LCD_Send_Command(0x01); //Xoa man hinh

LCD_Send_Command(0x80); //Ve dau dong

}

//Ham de LCD hien thi mot ky tu

void LCD_Write_One_Char(unsigned char c)

{

LCD_DATA=c; //Dua du lieu vao thanh ghi

RS=1; //Chon thanh ghi du lieu

//Ham de LCD hien thi mot xau

void LCD_Write_String(unsigned char *s)

{

unsigned char length;

length=strlen(s); //Lay do dai xau

while(length!=0)

{

LCD_Write_One_Char(*s); //Ghi ra LCD gia tri duoc tro boi con tro

s++; //Tang con tro

}

}

Bước 3 Quan sát kết quả, nhận xét Chú ý xem các hàm

- Khởi tạo cho LCD

- Gửi mã lệnh tới bộ điều khiển LCD

- Gửi dữ liệu tới hiển thị trên LCD

Trang 22

Phần 2 Bài tập tự làm

Bài 3 Viết chương trình ghép nối bàn phím với vi điều khiển 8051

Dưới đây là sơ đồ mạch Trong sơ đồ này, chúng ta không cần liên tục hỏi vòng các phím bấm mà sử dụng cơ chế ngắt Các cột của ma trận phím được nối với một mạch AND 4 đầu vào Đầu ra của mạch AND này được nối với chân ngắt ngoài 0 (INT0) Khi chưa có phím nào được nhấn, tín hiệu đưa đến chân ngắt ở mức cao Khi có phím được bấm, tín hiệu đưa đến chân ngắt được chuyển xuống mức thấp -> kích hoạt ngắt

Bạn hãy viết chương trình để bắt sự kiện người dùng bấm các phím số (0->9) trên bàn phím và hiển thị số tương ứng lên led 7 thanh

Trang 23

BÀI THỰC HÀNH SỐ 6

LẬP TRÌNH GIAO TIẾP LED MATRIX

Phần 1 Làm theo hướng dẫn

Bài 1 Sử dụng ma trận led để hiển thị hình ảnh đồ họa

Bước 1 Thiết kế mạch theo sơ đồ dưới đây, chú ý tên của link kiện môđun led là

Matrix-8x8-Red

Bước 2 Viết chương trình hiển thị chữ cái A trên ma trận led theo phương pháp

quét led ma trận

#include <at89x51.h>

unsigned char value[8]={0x20, 0x50, 0x88, 0x88, 0xF8, 0x88, 0x88,0x88};

void Delay_ms(int interval)

Trang 24

Bài 2 Viết chương trình ghép nối led ma trận hiển thị chữ số

 Xây dựng bộ font cho các chữ số từ 0 -> 9

 Sử dụng thiết kế như trong bài 1 và hiển thị lần lượt các số từ 0 tới 9 trên led

ma trận

Bài 3 Viết chương trình ghép nối led ma trận hiển thị chữ cái

 Xây dựng bộ font cho các chữ số từ A -> Z

 Sử dụng thiết kế như trong bài 1 và hiển thị lần lượt các chữ cái từ A tới Z trên led ma trận

Bài 4 Tìm hiểu phương án ghép nối và hiển thị thông tin của bảng điện tử (sử dụng

nhiều module ma trận led 8x8)

Trang 25

BÀI THỰC HÀNH SỐ 7 (Bài tập tổng hợp)

Đề bài: Thiết kế và lập trình Calculator

Ngày đăng: 04/03/2016, 05:07

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w