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 -