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 1Bướ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 2Bướ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 3Bướ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 4BÀ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 5Bướ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 7Phầ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 8Viế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 9BÀ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 10Bà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 11Bướ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 123) Đ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 13IC 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 14BÀ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 15void 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 16Bướ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 17Phầ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 18BÀ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 19Bướ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 20LCD_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 21LCD_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 22Phầ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 23BÀ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 24Bà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 25BÀ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