HƯỚNG DẪN SỬ DỤNG KIT 8051
BKIT HARDWARE CLUB www.bkit4u.com 1
Mục lục
Giới thiệu kit thí nghiệm BK89IT ...................................................................................... 4
Mô hình lập trình C trong vi điều khiển ............................................................................. 5
Bài 1 : Hướng dẫn cài đặt Keil C và Flash Magic.......................................................... 6
1.1 Cài đặt Keil C ........................................................................................................... 6
1.2 Cài đặt Flash Magic ................................................................................................ 11
1.3 Cấu hình cho Flash Magic ...................................................................................... 16
Bài 2 : Truy xuất Port I/O............................................................................................. 22
2.1 Tạo project trên Keil C ........................................................................................... 22
2.2 Viết chương trình đơn giản..................................................................................... 32
2.2.1 Kết nối phần cứng............................................................................................ 32
2.2.2 Viết chương trình............................................................................................. 33
2.2.3 Nạp chương trình ............................................................................................. 34
2.2.4 Các lỗi xảy ra khi nạp chương trình................................................................. 35
Bài 3 : Điều khiển đơn giản Led 7 đoạn....................................................................... 38
3.1 Kết nối phần cứng:.................................................................................................. 38
3.2 Viết chương trình.................................................................................................... 39
3.2.1 Hàm init_main()............................................................................................... 39
3.2.2 Hàm main()...................................................................................................... 39
3.3 Một số lỗi lập trình quan trọng ............................................................................... 41
Bài 4 : Ngắt Timer........................................................................................................ 42
4.1 Khai báo ngắt timer................................................................................................. 42
4.2 Viết chương trình.................................................................................................... 43
4.2.1 Hàm init_timer1() ............................................................................................ 43
4.2.2 Hàm start_timer1()........................................................................................... 43
4.2.3 Hàm timer1_isr().............................................................................................. 43
4.2.4 Hàm delay_ms(unsigned int duration)............................................................. 44
4.2.5 Hàm stop_timer1()........................................................................................... 44
Bài 5 : Dùng ngắt timer viết ứng dụng LED RIVER ................................................... 45
5.1 Kết nối phần cứng................................................................................................... 45
5.2 Viết chương trình.................................................................................................... 45
Bài 6 : Chống rung cho phím ....................................................................................... 47
6.1 Nguyên lý chống rung............................................................................................. 47
6.2 Kết nối phần cứng................................................................................................... 48
6.3 Viết chương trình.................................................................................................... 49
6.3.1 Hàm initKey().................................................................................................. 49
6.3.2 Hàm getKey() .................................................................................................. 49
Bài 7 : Quét led điều khiển Led 7 đoạn........................................................................ 51
7.1 Nguyên lý quét led 7 đoạn ...................................................................................... 51
7.2 Kết nối phần cứng................................................................................................... 52
7.3 Viết chương trình.................................................................................................... 52
7.3.1 Hàm init_led7()................................................................................................ 52
7.3.2 Hàm clear_led7() ............................................................................................. 53
7.3.3 Hàm set_position(unsigned int pos) ................................................................ 53
7.3.4 Hàm get_position() .......................................................................................... 53
HƯỚNG DẪN SỬ DỤNG KIT 8051
BKIT HARDWARE CLUB www.bkit4u.com 2
7.3.5 Hàm put_Number(unsigned int num).............................................................. 54
7.3.6 Hàm put_string(char strNum[]) ....................................................................... 54
7.3.7 Hàm scan_led7................................................................................................. 54
Bài 8 : Điều khiển Ma trận led ..................................................................................... 56
8.1 Nguyên lý điều khiển ma trận led........................................................................... 56
8.2 Kết nối phần cứng................................................................................................... 56
8.3 Viết chương trình.................................................................................................... 56
8.3.1 Hàm init_led_matrix() ..................................................................................... 57
8.3.2 Hàm scan_led_matrix().................................................................................... 57
8.3.3 Hàm update_display_led_matrix() .................................................................. 57
Bài 9 : Chạy chữ trên Ma trận led ................................................................................ 59
9.1 Nguyên lý chạy chữ trên ma trận led...................................................................... 59
9.2 Kết nối phần cứng................................................................................................... 60
9.3 Viết chương trình.................................................................................................... 60
9.3.1 Hàm set_message(char strMsg[]) .................................................................... 60
9.3.2 Hàm main()...................................................................................................... 61
Bài 10 : Ngắt ngoài..................................................................................................... 62
10.1 Nguyên lý điều khiển ngắt ngoài .......................................................................... 62
10.2 Kết nối phần cứng................................................................................................. 62
10.3 Viết chương trình.................................................................................................. 62
10.3.1 Hàm init_ext_int0()........................................................................................ 62
10.3.2 Hàm init_ext_int1()........................................................................................ 62
10.3.3 Hàm ext0_isr() ............................................................................................... 63
10.3.4 Hàm ext1_isr() ............................................................................................... 63
Bài 11 : Điều khiển encoder ....................................................................................... 64
11.1 Nguyên lý điều khiển encoder .............................................................................. 64
11.2 Kết nối phần cứng................................................................................................. 65
11.3 Viết chương trình.................................................................................................. 65
Bài 12 : Giao tiếp UART............................................................................................ 67
12.1 Nguyên lý giao tiếp UART................................................................................... 67
12.2 Giao tiếp UART với máy tính .............................................................................. 68
12.3 Viết chương trình.................................................................................................. 69
12.3.1 Thanh ghi điều khiển truyền nhận nối tiếp .................................................... 69
12.3.2 Dùng Timer1 tạo Baud rate ........................................................................... 71
12.3.3 Chương trình truyền nhận UART trên 8051.................................................. 71
12.4 Kiểm tra truyền nhận UART ................................................................................ 74
12.5 Xây dựng chương trình trên PC............................................................................ 74
12.5.1 Load các cổng COM của PC lên ComboBox ................................................ 78
12.5.2 Kết nối cổng với cổng COM.......................................................................... 79
12.5.3 Gửi dữ liệu ..................................................................................................... 80
12.5.4 Nhận dữ liệu................................................................................................... 81
Bài 13 : Giao tiếp PS2 với bàn phím.......................................................................... 85
13.1 Nguyên lý giao tiếp PS2 ....................................................................................... 85
13.2 Kết nối phần cứng................................................................................................. 86
13.3 Viết chương trình.................................................................................................. 87
Bài 14 : PWM điều khiển motor................................................................................. 88
HƯỚNG DẪN SỬ DỤNG KIT 8051
BKIT HARDWARE CLUB www.bkit4u.com 3
14.1 Khái niệm PWM ................................................................................................... 88
14.2 Lập trình PWM trên 89V51.................................................................................. 89
Bài 15 : Giao tiếp LCD character............................................................................... 90
15.1 Chức năng các chân của LCD............................................................................... 90
15.2 Kết nối màn hình LCD.......................................................................................... 91
15.3 Các vùng nhớ của LCD......................................................................................... 91
15.3.1 Display Data Ram (DDRAM) ....................................................................... 91
15.3.2 Character Generator Ram (CGRAM)............................................................ 91
15.3.3 Bộ nhớ CGROM............................................................................................ 92
15.4 Các lệnh cơ bản của LCD ..................................................................................... 93
15.5 Kết nối LCD với vi điều khiển ............................................................................. 94
15.6 Khởi tạo LCD ....................................................................................................... 95
15.7 Kết nối phần cứng................................................................................................. 97
15.8 Viết chương trình.................................................................................................. 98
15.8.1 Các hàm cơ bản.............................................................................................. 98
15.8.2 Khởi tạo LCD chế độ 4 bit............................................................................. 98
15.8.3 Xoá màn hình................................................................................................. 99
15.8.4 Thiết lập vị trí con trỏ .................................................................................... 99
15.8.5 In kí tự ra màn hình..................................................................................... 100
Bài 16 : Giao tiếp I2C – DS1307.............................................................................. 101
16.1 Các đặc điểm của DS1307.................................................................................. 101
16.2 Nguyên lý hoạt động........................................................................................... 101
16.3 Các tín hiệu Input và Output............................................................................... 102
16.4 RTC và sơ đồ địa chỉ Ram.................................................................................. 103
16.5 Thông tin thời gian và lịch.................................................................................. 103
16.6 Thanh ghi điều khiển (Control Register) ............................................................ 104
16.7 Bus dữ liệu nối tiếp............................................................................................. 104
16.8 Giao thức I2C và RTC DS1307......................................................................... 105
16.8.1 Kết nối phần cứng........................................................................................ 105
16.8.2 Start và Stop truyền dữ liệu ......................................................................... 105
16.8.3 Truyền 1 byte dữ liệu................................................................................... 107
16.8.4 Giao tiếp với DS1307 .................................................................................. 108
HƯỚNG DẪN SỬ DỤNG KIT 8051
BKIT HARDWARE CLUB www.bkit4u.com 4
Giới thiệu kit thí nghiệm BK89IT
Các chức năng của board thí nghiệm BK89IT :
v 8 nút nhấn : nối với P3.
v 8 led 7 đoạn : hỗ trợ quét led, P0 để gửi dữ liệu và P2 để chọn led.
v Led ma trận 2 màu : P0 gửi dữ liệu mà đỏ, P2 gửi dữ liệu xanh, P1 để chọn cột hiển
thị.
v Giao tiếp với bàn phím PS2.
v Giao tiếp COM
v 4 chân dùng để kết nối encoder.
v Cấu hình bằng switch : Switch 1 cho Port 1, 2 cho Port 3, 3 cho led ma trận và 4
cho led 7 đoạn.
v Cấp nguồn ngoài hoặc USB.
v Mạch nạp onboard.
HƯỚNG DẪN SỬ DỤNG KIT 8051
BKIT HARDWARE CLUB www.bkit4u.com 5
Mô hình lập trình C trong vi điều khiển
#include "TIMER\timer.h"
#include "LED7\led7.h"
#include <REG51F.H>
void main()
{
init_main();
init_timer0();
....................
while1(){}
}
main.c
#ifndef __TIMER_H_
#define __TIMER_H_
#include "LED7\led7.h"
extern int counter0;
void init_timer0();
void init_timer1();
...............
#endif
timer.h
#include "timer.h"
int counter0;
int counter1;
void init_timer0();
{
IE |= 0x20;
TR0 = 1;
..........................
}
void init_timer1()
{
..........................
}
void private_function()
{
..........................
}
timer.c
#ifndef __LED7_H_
#define __LED7_H_
void init_led7();
void scan_led7();
...............
#endif
led7.h
#include "led7.h"
unsigned char led7_buff[8];
void init_led7();
{
P0 = 0x00;
T2 = 0x00;
..........................
}
void scan_led7()
{
..........................
}
void private_function()
{
..........................
}
led7.c
Để thể tổ chức tốt chương trình, thông thường mỗi module ta sẽ chia làm 2
file:
v File .h : Khai các hàm và extern các biến toàn cục.
v File .c : Hiện thực các hàm được khai báo trong file .h.
Khi muốn sử dụng module này, ta chcần include file .h là thgọi được các
hàm được khai báo trong file .h.