Mục lục
Trang
Mục lục....................................................................................................................1
Lời nói đầu..................................................................................................................2
phần I : hớng dẫn cài đặt, sử dụng phần mềm keil c và
proload v4.2
1. Hớng dẫn cài đặt Keil C........................................................................................3
2. Tạo một project trong Keil C................................................................................4
3. Cài đặt và sử dụng AT89 USB Programmer.........................................................8
phần I I : Các bài thực hành cơ bản ...................................................11
Bài thực hành số 1: Nháy led.....................................................................................11
Bài thực hành số 2: Điều khiển vào ra.......................................................................14
Bài thực hành số 3: Điều khiển động cơ DC ............................................................17
Bài thực hành số 4: Điều khiển động cơ bớc ............................................................21
Bài thực hành số 5: Hiển thị Led 7 thanh..................................................................26
Bài thực hành số 6: Giải mã bàn phím.......................................................................30
Bài thực hành số 7: Hiển thị LCD..............................................................................34
Bài thực hành số 8: Lập trình điều khiển mô đun ADC-DAC..................................39
Bài thực hành số 9: Lập trình đo nhiệt độ phòng bằng LM35..................................43
Bài thực hành số 10: Lập trình với ngắt của bộ định thời.........................................48
Bài thực hành số 11: Lập trình với ngắt ngoài...........................................................52
Bài thực hành số 12: Lập trình hiển thị matrix 8x8...................................................58
VĐK AT89C51 với phần mềm Keil C
Phần I
Hớng dẫn cài đặt, sử dụng phần mền keil C và
ProLoad V4.2
1. Hớng dẫn cài đặt Keil C. Sử dụng Keil.Professional.for.C51.v8.08a.
Mở Forder cài đặt Keil.Professional.for.C51.v8.08a, nháy đúp vào file
c51v808a.exe.
Nhấn next để tiếp tục.
Nhấn next để tiếp tục.
Chọn nguồn trên ổ C. Nhấn next để tiếp tục.
2
VĐK AT89C51 với phần mềm Keil C
Khai báo một vài thông số, nhấn next để tiếp tục.
Chờ cho window cài đặt xong thì nhấn Finish để kết thúc quá trình cài đặt.
Sau khi cài đặt xong thì copy file Keygen.exe vào trong C:/Program files/Keil.
2. Tạo một Project trong Keil C.
Có nhiều cách để tạo một Project trong Keil, có thể dùng àvision Project hay đơn
giản là tạo một file mới và thêm vào đó các khai báo ban đầu.
Dới đây sẽ trình bày cách tạo một Project mới bằng cách dùng àvision Project.
Ta cần chú ý khi tạo một Project mới thì ta nên tạo một th mục mới có tên liên quan
đến dự án định làm, rồi lu tất cả các file liên quan vao trong th mục đó. Khi biên dịch,
3
VĐK AT89C51 với phần mềm Keil C
Keil C sẽ tạo ra rất nhiều file liên quan khác nhau các file này sẽ tự động lu trong th
mục chung đó. Đây cũng là quy tắc chung khi làm việc cho tất cả các phần mềm lập
trình.
2.1 Tạo một Project mới sử dụng à vision Project.
Khởi động chơng trình làm việc Keil C. Từ giao diện chơng trình chọn Project
Newàvision Project. Hình 2.1.1
Sau khi chọn một cửa sổ mới hiện ra yêu cầu nhập tên file cần tạo, Tạo một th
mục mới và lu file này vào trong th mục đó. Hình 2.1.2
Sau khi Save một cửa sổ Select device hiện ra. Hình 2.1.2. Trong cửa sổ này bao
gồm rất nhiều các chíp của các hãng khác nhau, ta dùng chip của hãng nào thì cọn
hãng đó. ở đây ta chọn Amelt và chíp sử dụng là 89C81. Hình 2.1.3.
Hình 2.1.1
Hình 2.1.2
4
VĐK AT89C51 với phần mềm Keil C
Hình 2.1.3
Nhấn OK để hoàn tất.
Trở lại với giao diện chính của Keil C trên thanh công cụ chọn file/new lu file này dới dạng text1.c. vào trong th mục test vừa tạo ra.
Trê cửa sổ Project Workspace nhấn phải chuột vào Source chọn Add File to ..
Hình 2.1.4
Một cửa sổ khác hiện ra, chọn text1.c và nhấn Add. Hình 2.1.5
5
VĐK AT89C51 với phần mềm Keil C
Bây giờ quay trở lại với giao diện chính của Keil C mở file text1.c và bắt đầu viết
chơng trình.
Click vào đây để
dịch chơng trình ra
file hex
Hình 2.1.5
Để chạy mô phỏng chơng trình ta click chuột vào debug. Hình 2.1.6
Click vào đây để
chạy mô phỏng
Nhấn phím F10 để chạy từng dòng lệnh mà không chạy các chơng trình con. Nhấn
phím F11 để chạy từng dòng lệnh kể cả các câu lệnh trong chơng trình con.
6
VĐK AT89C51 với phần mềm Keil C
3. Cài đặt và sử dụng AT89 USB Programmer.
AT89 USB Programmer dùng để nạp chơng trình sau khi đã dịch ra file hex xuống
89CXX, sử dụng kết nối USB 2.0 và Proload 4.2. AT89 USB Programmer có thể nạp
cho hầu hết các chíp họ 89 các loại 20 và 40 chân.
3.1 Cài đặt.
Kết nối mạch nạp với máy tính thông qua cổng USB máy sẽ có thông báo sau:
Nhấn Next
Tìm đờng dẫn trong file cài đặt trên đĩa CD.
Nhấn Next.
7
VĐK AT89C51 với phần mềm Keil C
Chờ cho Window tìm kiếm và cài đặt .
Chọn Finish để kết thúc cài đặt.
Để kiểm tra lại quá trình cài đặt ta làm nh sau: Quay trở về Desktop nhấn phải
chuột vào biểu tợng My Computer chọn Magane, chọn Device Magane.
8
V§K AT89C51 víi phÇn mÒm Keil C
3.2. Sö dông
Dïng Proload 4.2 ®Ó lµm viÖc víi AT 89Programmer.
9
VĐK AT89C51 với phần mềm Keil C
Phần II
Các bài thực hành cơ bản
Bài thực hành số 1
Nháy Led
I. Mục đích
Học xong bài này học sinh cần nắm đợc các nội dung sau:
- Hiểu đợc cách tạo một Project mới trong Keil C.
- Hiểu đợc cách khai báo các biến, hiểu cấu trúc và hoạt động của vòng for.
- Hiểu đợc cách xuất dữ liệu ra tại các chân của VĐK bằng Keil C.
- Biên dịch, nạp và chạy thử một chơng trình đơn giản điều khiển một con LED
sáng/tắt.
II. Tóm tắt lí thuyết
- Nháy Led là một bài thực hành đơn giản và dễ thực hiện nhất vì vậy nó thờng là sự
lựa chọn đầu tiên cho tất cả những ai mới làm quen với lập trình vi điều khiển.
- Các bớc của chơng trình nháy Led nh sau:
B1: Chuyển chân P0_0 lên mức 1
B2: Gọi hàm delay.
B3: Chuyển chân P0_0 xuống mức 0.
B3: Gọi hàm delay.
Lặp lại quá trình.
1. Sơ đồ kết nối:
Kết nối modul led đơn với Main chính qua P0. Sơ đồ nguyên lý nh sau:
10
VĐK AT89C51 với phần mềm Keil C
1
2
3
4
5
6
7
8
+5v
R3
10K
9
SW3
SW
+ C15
Tu hoa
CRYSTAL
X2
C13
104
10
11
12
13
14
15
16
17
18
19
20
C16
104
+5v
U?
P1.0/T2
P1.1/T2X
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
VCC
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
RESET
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
EA/VP
ALE/P
PSEN
XTAL2
XTAL1
GND
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
+5v
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
R1
10K
R2
330
DS1
LED0
8952
Hình 1.1
III. Các bớc tiến hành
1. Khởi động phần mềm lập trình Keil C
- Tạo một file nhayled.c lu vào trong th mục nhayled.
- Tạo một file AT89C51.h lu trong th mục nháy led, file này là file định nghĩa cho
các chân, các thanh ghi của 89C51. Ta có thể tự tạo file này hoặc copy file này ở các
dự án khác sang. File này là một file rất quan trọng, hầu nh trong tất cả các project
đều có file này nếu không thì ta phải định nghĩa các chân ngay trong chơng trình.
- Add file nháyled vào project nhayled. (Nh hớng dẫn ở phần trên)
2. Soạn thảo chơng trình.
#include <AT89X52.H>
void delay_5ms(){
//Chơng trình con delay.
int i,j;
for(i=0;i<250;i++)
for(j=0;j<400;j++){}
}
void main (void) {
//Chơng trình chính
while(1){
//Vong while
P0_0=1;
delay_5ms();
P0_0=0;
11
VĐK AT89C51 với phần mềm Keil C
delay_5ms();
}}
3. Biên dịch chơng trình nguồn sang File nhayled.hex.
- Trên thanh công cụ
- Nếu quá trình dịch thành công thì window sẽ có thông báo nh sau. ở góc dới bên
phải của màn hình.
4. Nạp chơng trình cho vi điều khiển
- Lắp vi điều khiển 89C51 vào AT89 USB Programmer.
- Khởi động Proload.
- Mở file nhay_led.hex trong th mục nhay_led và tiến hành nạp.
- Nếu nạp thành công thì Window sẽ thông báo nh sau:
5. Hoạt động thử.
- Sử dụng Switch nối các mô đun sẵn trên Main hoặc dùng mô đun Led đơn với
Main chính qua P0, (chú ý các địa chỉ vào ra)
- Chuyển chíp sang main chính và cho chạy thử.
- Theo dõi sự hoạt động của mạch.
IV. Báo cáo thí nghiệm:
1.
2.
3.
4.
5.
Số thứ tự và tên bài.
Mục đích thí nghiệm.
Chơng trình đã soạn thảo để thí nghiệm .
Kết quả thí nghiệm.
Nhận xét và kết luận.
12
VĐK AT89C51 với phần mềm Keil C
V. Câu hỏi kiểm tra
1. Vẽ lu đồ thuật toán của chơng trình và giải thích.
2. Nếu muốn thay đổi tốc độ nháy của Led thì ta phải làm nh thế nào?
13
VĐK AT89C51 với phần mềm Keil C
Bài thực hành số 2
điều khiển vào ra
Bài tập ứng dụng:
Lập trình kiểm tra một tín hiệu vào và bật tắt một con Led. Ví dụ P1_0 nối với nút
Start, P1_1 nối với nút Stop, điều khiển bật tắt một con LED ở P0_0.
I. Mục đích
Học xong bài này học sinh cần nắm đợc các nội dung sau:
- Biết cách thiết lập và kiểm tra tín hiệu vào tại các chân.
- Hiểu đợc cấu trúc và hoạt động của lệnh if.
- Cách gọi các chơng trình con.
II. Tóm tắt lí thuyết
- Sơ đồ nguyên lý.
Mô tả: Bình thờng các chân P1_0, P1_1 ở mức cao, khi nhấn nút thì điện áp tại
các chân này chuyển xuống mức thấp. Và nhiệm vụ của chơng trình là kiểm tra
xem lúc nào thì điện áp tại hai chân này xuống mức 0.
+5v
+5v
R3
10K
RERET
SW
+ C15
10uF
12000000
X2
C13
104
C16
104
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
U?
P1.0/T2
P1.1/T2X
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RESET
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
XTAL2
XTAL1
GND
8952
III. Các bớc tiến hành
1. Khởi động phần mềm lập trình Keil C.
2. Tạo một dự án mới và đặt tên cho dự án.
- Soạn thảo chơng trình theo nội dung sau:
#include <AT89X52.H>
void delay_ms(x){
int i,j;
14
VCC
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
EA/VP
ALE/P
PSEN
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
R2
330
DS1
LED0
VĐK AT89C51 với phần mềm Keil C
for(i=0;i
for(j=0;j<100;j++){}
}
void main (void){
P1=0xff;
while(1){
if (P1_0 == 0)P0_0=1;
if (P1_1 == 0)P0_0=0;
delay_ms(1);
}}
3. Biên dịch chơng trình nguồn sang File DKVR.hex
4. Hoạt động thử.
- Tắt công tắc nguồn.
- Bật các Switch kết nối với các mô đun sẵn có trên Main hoặc dùng mô đun bàn
phím với Main chính qua P1, mô đun Led đơn qua P0, (chú ý địa chỉ các chân
vào ra).
- Chuyển vi điều khiển 89C51 lắp sang Main chính.
- Bật công tắc nguồn.
- Nhấn nút Start nối với P1_0.
- Nhấn nút Stop nối với P1_1.
- Theo dõi sự hoạt động của Led.
IV. Báo cáo thí nghiệm:
1.
2.
3.
4.
5.
Số thứ tự và tên bài.
Mục đích thí nghiệm
Chơng trình đã soạn thảo để thí nghiệm
Kết quả thí nghiệm:
Nhận xét và kết luận.
V. Câu hỏi kiểm tra
1. Giải thích hoạt động của đoạn code sau: So sánh sự hoạt động của nó với chơng trình vừa soạn thảo ở trên.
#include <AT89X52.H>
void delay_ms(x){
int i,j;
for(i=0;i
for(j=0;j<100;j++){}
}
15
V§K AT89C51 víi phÇn mÒm Keil C
void start (){
P0_0=1;
}
void stop (){
P0_0=0;
}
void main (void){
P1=0xff;
while(1){
if (P1_0 == 0) start();
if (P1_1 == 0) stop();
delay_ms(1);
}}.
16
VĐK AT89C51 với phần mềm Keil C
Bài thực hành số 3
điều khiển động cơ một chiều
Bài tập ứng dụng:
Lập trình điều khiển độngc cơ hoạt động nh sau: Nhấn nút P1_0, động cơ chạy
thuận, nhấn nút P1_1 thì động cơ chạy ngợc, nhấn nút P1_2 thì động cơ chạy
nhanh, nhấn nút P1_3 thì động cơ chạy chậm, nhấn nút P1_4 thì động cơ dừng.
I. Mục đích
Học xong bài này học sinh cần nắm đợc các nội dung sau:
- Hiểu đợc cách điều khiển động cơ trên mô đun động cơ DC.
- Hiểu cách điều khiển động cơ bằng tín hiệu PWM (độ rộng xung).
- Hiểu đợc cấu trúc và cách hoạt động của lệnh SWITCH.
- Hiểu đợc cách dùng các lệnh toán học trong chơng trình.
II. Tóm tắt lí thuyết
- Sơ đồ nguyên lý. Hình 2-1.
Mô tả: Các tín hiệu điều khiển đợc cách li với mạch động lực qua các IC quang
IC1, IC2. Động cơ đợc điều khiển qua bộ Tranzitor mắc Darlington dùng nguồn
12VDC. RL1 dùng để đảo chiều động cơ đợc điều khiển bởi Q3. Khi kết nối với
Main chính thì J1 nối với PORTD sao cho PD0 qua IC1, PD1 qua IC2.
0V
J1
1
2
3
4
5
6
7
8
9
10
R2
+12V
IC1
Q1
Q2
R1
RL1
D1
R3
IC2
+88.8
Q3
R4
Hình 2-1
III. Các bớc tiến hành
5. Khởi động phần mềm lập trình Keil C.
6. Tạo một dự án mới và đặt tên cho dự án dkdcdc.
- Soạn thảo chơng trình theo nội dung sau:
#include <AT89X52.H>
void delay_ms(k){
17
V§K AT89C51 víi phÇn mÒm Keil C
int i,j;
for(i=0;i
for(j=0;j<100;j++){}
}
unsigned char i=0,j=3,k=3;
void right();
void left();
void main(void) {
P2 = 0xff;
P1 = 0xff;
while (1){
if (P1_0 ==0) i=1;
if (P1_1 ==0) i=2;
switch(i) {
case 1: right(); break;
case 2: left(); break;}
if (P1_2 ==0)
{ j=5;
k=1;
}
if (P1_3 ==0)
{j=1;
k=5;
}
if (P1_4==0)
{P2_0=1;
i=0;
}}}
void right(){
P2_1=0;//output_low(pin_d1);
P2_0=0;//output_low(pin_d0);
delay_ms(j);
P2_0=1;//output_high(pin_d0);
delay_ms(k);
}
void left(){
P2_1=1;//output_high(pin_d1);
P2_0=0;//output_low(pin_d0);
18
VĐK AT89C51 với phần mềm Keil C
delay_ms(j);
P2_0=1;//output_high(pin_d0);
delay_ms(k);
}
7. Hoạt động thử.
- Tắt công tắc nguồn.
- Lắp ghép mô đun ghép nối bàn phím với P1 và mô đun đông cơ một chiều với
P2, (chú ý địa chỉ các chân vào ra).
- Nạp chơng trình cho chíp.
- Bật công tắc nguồn.
- ấn nút Lefl động cơ chạy thuận
- ấn nút Right động cơ chạy ngợc
- ấn nút Fast động cơ chạy nhanh
- ấn nút Slow động cơ chạy chậm
- ấn nút Stop động cơ dừng
- Theo dõi sự hoạt động của động cơ.
IV. Báo cáo thí nghiệm:
6. Số thứ tự và tên bài.
7. Mục đích thí nghiệm
8. Chơng trình đã soạn thảo để thí nghiệm
9. Kết quả thí nghiệm:
10.Nhận xét và kết luận.
V. Câu hỏi kiểm tra
1. Giải thích hoạt động của chơng trình. Viết lu đồ thuật toán của chơng trình.
19
VĐK AT89C51 với phần mềm Keil C
Bài thực hành số 4
Điều khiển động cơ bớc
Bài tập ứng dụng:
Lập trình đảo chiều quay và thay đổi tốc độ động cơ bớc.
I. Mục đích
Hoc xong bài này học sinh cần nắm đợc các nội dung sau:
- Hiểu đợc cấu tạo, nguyên lí hoạt động của động cơ bớc .
- Hiểu cách khai báo và sử dụng các biến, các hàm.
- Hiểu cấu trúc và hoạt động của lệnh Switch()
- Hiểu đợc phơng pháp tạo xung điều khiển động cơ bớc bằng phần mềm
- Xây dựng đợc chơng trình đảo chiều quay và thay đổi tốc độ động cơ bớc.
II. Tóm tắt lí thuyết
Hiện nay trong một số hệ thống điều khiển tự động có sử dụng một loại động cơ
đặc biệt chạy bằng xung điện. Khác với động cơ thông thờng là động cơ này không
quay liên tục mà nó chỉ dịch chuyển từng bớc vì vậy còn gọi là động cơ bớc. Ưu
điểm nổi bật của nó là có thể điều khiển, khống chế để trục đông cơ bớc quay một
góc nào đó.
Sơ lợc cấu tạo:
Động cơ bớc rất có cấu tạo giống
động cơ điện một chiều nhng có điểm
khác biệt là không có cổ góp và chổi
than, rô to không có cuộn kích từ.
Thông thờng, động cơ bớc gồm một
rô to sắt mềm trên đó xẻ nhiều rãnh
tạo thành các răng. Stato cũng đợc xẻ
rãnh tạo thành các cực từ. Trên các
cực từ có quấn dây. Xem hình 4-1
Hình 4-1
Nguyên lí làm việc của động cơ bớc:
Xét một động cơ bớc 2 pha đơn giản stato có 2 cực, rô to kiểu nam châm vĩnh cửu
gồm 6 cực đặt xen kẽ lẫn nhau. Góc hợp bởi 2 cực từ kề nhau trên rô to là 60 0. Dòng
điện 2 pha đợc tạo ra bằng cách đóng mở không đồng thời các công tắc K 1 và K2
Xung dòng điện chạy trong 2 cuộn dây (2 pha) đợc minh hoạ trên hình 4-2.
Xét tại thời điểm t1, khoá K1 đóng , K2 mở; dòng điện pha A đặt giá trị cực đại còn
dòng điện pha B bằng không. Từ trờng stato là từ trờng của pha A (có phơng thẳng
đứng. Từ trờng này sẽ hút các cực trái dấu về vị trí trùng phơng với nó. Hình 4-3a
20
VĐK AT89C51 với phần mềm Keil C
Xét tại thời điểm t2, khoá K1
mở, K2 đóng; dòng điện pha A
đặt giá trị không còn dòng điện
pha B đạt giá trị cực đại. Từ trờng stato là từ trờng của pha B
(có phơng nằm ngang). Từ trờng này sẽ hút các cực trái dấu
về vị trí trùng phơng với nó.
Hình 4-3b
ia
t
t2
t1
ib
t
Hình 4-2
+
iA =Imax
+
a
= 30
0
iA = 0
a
ib = 0
B
U-
ib = Imax
S
N
S
S
N
N
S
B
B'
N
S
N
U-
B'
N
S
N
a'
a'
K1
N
S
S
K2
K1
K2
-
Hình 4-3a
Hình 4-3b
Nhận xét:
Sau một xung điện, rô to đã quay đựơc một góc là 300. Góc này bằng một nửa góc
hợp bởi 2 cực từ trái dấu kề nhau trên rô to.
Xét ở các thời điểm trên các xung điện tiếp theo ta cũng có kết quả tơng tự.
Nếu gọi số cặp cực trên stato là a, số cực trên rô to là n thì để quay hết một vòng
rô to cần dịch chuyển k bớc. Với k = n x a (bớc) - k còn đợc gọi là độ phân giải của
động cơ bớc
Góc quay của một bớc chuyển là =
3600
k
Ví dụ. Trong động cơ trên ta có:
Độ phân giải k =6 x 2 = 12.
3600
Góc quay của một bớc chuyển là:
=300
12
21
VĐK AT89C51 với phần mềm Keil C
Đặc điểm của động cơ bớc:
- Sử dụng nguồn điện áp xung, tốc độ quay phụ thuộc vào tần số xung điện nên việc
thay đổi và kiểm soát tốc độ đơn giản
- Động cơ này hoạt động ổn định, sau mỗi bớc động cơ tự hãm và dừng lại để dịch
chuyển bớc tiếp theo vì vậy điểm dừng có độ chính xác cao, thích hợp với hệ thống tự
động điều khiển
- Tính năng u điểm nh động cơ một chiều nhng lại không có chổi than, không phát
sinh tia lửa điện.
Tuy nhiên, nguồn cung cấp cho động cơ bớc là nguồn xung, không sẵn có ở
lới điện công nghiệp nên cần phải trang bị thiết bị tạo nguồn xung.
Sơ đồ kết nối phần cứng:
- Các nút ấn chức năng đợc nối vào các chân P2.0, P2.1, P2.2, P2.3, P2.4 tín hiệu đợc tạo ra là mức lô gíc 0V.
- Động cơ bớc M đợc điều khiển bằng các chân P1.0, P1.1, P1.2, P1.3 thông qua
mạch công suất. Có hai cách điều khiển mô tơ đó là: Cả bớc (Full step) và nửa bớc
(Hafl step)
LEFT
P2.0
RIGHT
P2.1
P2.
FAST
0
P2.2
SLOW
P2.3
STOP
P1.0
VI
P1.1
ĐIềU
KHểN P1.2
CÔNG
SUấT
M
P1.3
P2.4
Mã điều khiển
Xung thứ
1
2
3
4
5
6
7
8
9
1
1
1
0
1
1
1
0
1
Biểu diễn số nhị
1
1
0
1
1
1
0
1
1
phân ra portC
1
0
1
1
1
0
1
1
1
0
1
1
1
0
1
1
1
0
Biểu diễn số HEX 07H 0BH 0DH 0EH 07H 0BH 0DH 0EH 07H
III. Các bớc tiến hành
1. Khởi động phần mềm lập trình Keil C
- Tạo file dongcobuoc.c và lu trong th mục dongcobuoc.
22
V§K AT89C51 víi phÇn mÒm Keil C
2. So¹n th¶o ch¬ng tr×nh nguån.
- So¹n th¶o ch¬ng tr×nh theo néi dung sau:
#include <AT89X52.H>
unsigned char mode=0,k=10;
void delay_ms(k){
int i,j;
for(i=0;i
for(j=0;j<100;j++){}
}
void run_right(){
P0=0x07;
delay_ms(k);
P0=0x0B;
delay_ms(k);
P0=0x0D;
delay_ms(k);
P0=0x0E;
delay_ms(k);
}
void run_lefl(){
P0=0x0E;
delay_ms(k);
P0=0x0D;
delay_ms(k);
P0=0x0B;
delay_ms(k);
P0=0x07;
delay_ms(k);
}
void Stop(){
P0=0xff;
}
void main(){
P1 = 0xff;
while(1){
if(P1_0 == 0){ mode=1; }
if(P1_1 == 0){ mode=2; }
if(P1_2 == 0){ mode=3; }
23
VĐK AT89C51 với phần mềm Keil C
if(P1_3 == 0){ k=k+2; }
if(P1_4 == 0){ k=k-2; }
switch(mode) {
case 1: run_right(); break;
case 2: run_lefl(); break;
case 3: Stop(); break;
P0=0xff;
}}}
3. Biên dịch chơng trình nguồn sang File dongcobuoc.hex
4. Hoạt động thử.
- Tắt công tắc nguồn.
- Ghếp nối mô đun động cơ bớc với Main chính qua P0, mô đun nút ấn qua P1.
- Nạp chơng trình cho chíp.
- Bật công tắc nguồn.
- ấn nút Lefl động cơ chạy thuận
- ấn nút Right động cơ chạy ngợc
- ấn nút Fast động cơ chạy nhanh
- ấn nút Slow động cơ chạy chậm
- ấn nút Stop động cơ dừng
- Theo dõi sự hoạt động của động cơ.
IV. Báo cáo thí nghiệm:
1.
2.
3.
4.
5.
Số thứ tự và tên bài.
Mục đích thí nghiệm.
Chơng trình đã soạn thảo để thí nghiệm.
Kết quả thí nghiệm.
Nhận xét và kết luận.
V. Câu hỏi kiểm tra
1. Vẽ lu đồ và giải thích hoạt động của chơng trình điều khiển động cơ bớc.
2. Viết lại chơng trình để khởi động động cơ bớc, sau một thời gian động cơ tự
động tăng tốc.
3. Viết chơng trình điều khiển động cơ bớc quay 10 vòng thì dừng.
24
VĐK AT89C51 với phần mềm Keil C
Bài thực hành số 5
Hiển thị LED 7 thanh
Bài tập ứng dụng:
Lập trình hiển thị số đếm từ 0 đến 9999.
I. Mục đích
-
Hiểu đợc cấu tạo và phần cứng và cách hiển thị các Led 7 thanh.
Hiểu đợc cách định nghĩa các chân out: VD #define L0 PORTC.5
Hiểu đợc cách khai báo và gọi các giá trị trong một mảng.
Hiểu và sử dụng các lệnh toán học nh chia lấy phần nguyên, phần d
Hiểu đợc cách đổi kiểu bằng phơng pháp gán trong lập trình C.
Xây dựng đợc chơng trình hiển thị số đếm bằng LED 7 thanh.
II. Tóm tắt lí thuyết
Phơng quét dữ liệu:
Xem sơ đồ kết nối phần cứng để hiển thị 6 số bằng phơng pháp quét nh hình 5.1
PORTC
P2
PORTD
P1
1
2
3
4
5
6
7
8
+5v
+5v
+5v
+5v
+5v
+5v
R1
R2
R3
R4
R5
R6
3k
3k
3k
3k
3k
3k
Q1
Q2
Q3
Q4
Q5
Q6
2N3703
2N3703
2N3703
2N3703
2N3703
2N3703
1
2
3
4
5
6
7
8
Hình 5.1
Mạch điện dùng 6 Tranzitor đợc điều khiển bằng P2 để xác địch địa chỉ. Dữ liệu
xuất ra tại P1 đã đợc mã hoá thành các số hệ 10. Khi quét dữ liệu đợc xuất ra đồng
thời trên tất cả các chân của Led 7 thanh nhng chỉ có Led đợc chọn mới có thể hiển
thị đợc giá trị xuất ra. Nh vậy tại một thời điểm chỉ có một con Led sáng.
Phơng pháp quét:
Phơng pháp này dựa trên hiện tợng lu ảnh của mắt, nếu tần số sáng tắt của đèn
LED lớn hơn 25Hz thì ta cảm thấy là đèn sáng liên tục.
Phơng pháp quét đợc mô tả nh sau:
Các LED 7 thanh đợc sử dụng trong mạch là loại anốt chung. Vì vậy để LED sáng
thì các chân điều khiển (chân dữ liệu a,b,c,d...phải ở mức thấp còn chân COM của
LED phải đợc nối lên mức 1(nối qua Transistor). Các Transistor sử dụng trong mạch
là loại PNP, vì vậy mức tín hiệu đầu ra của PortD phải là mức 0 thì LED mới sáng.
25