Professional Documents
Culture Documents
2
Tiết 1,2
Chương 1. TỔNG QUAN
3
Tiết 1,2
Chương 1. TỔNG QUAN
6
Tiết 1,2
Chương 1. TỔNG QUAN
7
Tiết 1,2
Chương 1. TỔNG QUAN
8
Tiết 1,2
Chương 1. TỔNG QUAN
9
Tiết 1,2
Chương 1. TỔNG QUAN
10
Tiết 3,4
Chương 1. TỔNG QUAN
11
Tiết 3,4
Chương 1. TỔNG QUAN
12
Tiết 3,4
Chương 1. TỔNG QUAN
13
Tiết 3,4
Chương 1. TỔNG QUAN
14
Tiết 3,4
Chương 1. TỔNG QUAN
Quy tắc:
0+0=0
0+1=1+0=1
1+1=10
15
Tiết 3,4
Chương 1. TỔNG QUAN
0-0=0
0-1=-1(“mượn”, vì trong
phép tính số nhị phân
không được số âm )
1-0=1
1-1=0
-1-1=-10
16
Tiết 3,4
Chương 1. TỔNG QUAN
17
Tiết 3,4
Chương 1. TỔNG QUAN
18
Chương 2
VI ĐIỀU KHIỂN HỌ 8051
3.1. Cấu trúc vi điều khiển
3.2. Tổ chức bộ nhớ
3.3. Chức năng mở rộng
19
Chương 2
VI ĐIỀU KHIỂN HỌ 8051
3.1. Cấu trúc vi điều khiển
20
Tiết 13,14
Chương 3. Vi điều khiển họ 8051
21
Tiết 13,14
Chương 3. Vi điều khiển họ 8051
22
Tiết 13,14
Chương 3. Vi điều khiển họ 8051
23
Tiết 13,14
Chương 3. Vi điều khiển họ 8051
24
Tiết 13,14
Chương 3. Vi điều khiển họ 8051
25
Tiết 13,14
Chương 3. Vi điều khiển họ 8051
26
Tiết 13,14
Chương 3. Vi điều khiển họ 8051
27
Tiết 13,14
Chương 3. Vi điều khiển họ 8051
28
Tiết 13,14
Chương 3. Vi điều khiển họ 8051
29
Tiết 13,14
Chương 3. Vi điều khiển họ 8051
30
Tiết 15,16
Chương 3. Vi điều khiển họ 8051
31
Tiết 15,16
Chương 3. Vi điều khiển họ 8051
32
Tiết 15,16
Chương 3. Vi điều khiển họ 8051
33
Tiết 15,16
Chương 3. Vi điều khiển họ 8051
34
Tiết 15,16
Chương 3. Vi điều khiển họ 8051
35
Tiết 15,16
Chương 3. Vi điều khiển họ 8051
36
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
Trong 8051 có 4 chế độ Timer/counter có 2 bít C/T thanh
ghi TMOD ở địa chỉ byte 89H quyết định chế độ
Timer/counter.
GATE C/T M1 M0 GATE C/T M1 M0
1 0
M1 M0 Modul 1Chế độ hoạt động
Timer/Counter Timer/Counter 0
0 0 0 Bộ định thời 13 bit (8 bitC/T và 5 bit đặt trước)
0 1 1 Bộ dịnh thời 16 bit không đặt trước không tự
nạp lại
1 0 2 Bộ định thời 8 bit tự nạp lại
1 1 3 Chế độ định thời chia tách
37
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
38
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
1 1 1 1 1 1 1 1
x x x x x x x x x x x x x x x x
39
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
1. Hoạt động Timer 0, chế độ 1 (16 bit) → TMOD=01H
2. Hoạt động Counter 0, chế độ 1 (16 bit) → TMOD=05H
3. Hoạt động Counter 1, chế độ 1 (16 bit) → TMOD=xxH
4. Hoạt động Counter 1, chế độ 2 (8 bit) → TMOD=xxH
5. Hoạt động Counter 0, chế độ 2 (8 bit) → TMOD=xxH
6. Hoạt động Timer 0, chế độ 2 (8 bit) → TMOD=xxH
7. Hoạt động Timer 1, chế độ 2 (8 bit) → TMOD=xxH
8. Hoạt động Timer 1, chế độ 1 (16 bit) → TMOD=xxH
9. Hoạt động Timer 1, chế độ 1 (16 bit);Timer 0, chế độ 1 (16 bit); →
TMOD=xxH
10.….
11.…
Nộp qua Email: thietbiquynhon@gmail.com
40
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
thanh ghi TCON ở địa chỉ byte 88H quyết định chế độ
Timer/counter.
TMOD = 0x01;
TH0=0xC350; while (!TF0);
TL0=0xC350; TF0=0;
TR0=1; TR0=0;
41
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
Tạo sóng xung vuông 10kHz trên chân số 1
Chương trình chính
Chương trình con
P1.0 = 1;
TMOD = 0x01;
gọi CT con trễ 100us
TH0=0xFF;
P1.0 = 0;
TL0 =0x9C;
gọi CT con trễ 100us
TR0=1;
lặp lại chương trình
chính while (!TF0)
TR0=0; TF0=0
Kết thúc CT con
42
Chương 2
CẤU TRÚC HỌ 8051
Ví dụ tạo xung vuông trên chân P2.0
//Bài 1: Bat tat LED tao tan so chan P2.0 main()
#include <REGX51.H> {
sbit LED = P2^0 ; while(1)
void delay() {
{ LED=1;
TMOD = 0x01; delay();
TH0=0xC350; LED=0;
TL0=0xC350; delay();
TR0=1; }
while (!TF0); }
TF0=0;
TR0=0;
}
43
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
Chức năng của port nối tiếp là thực hiện việc chuyển đổi dữ liệu
song song thành nối tiếp khi phát và chuyển đổi dữ liệu nối tiếp
thành song song khi thu. Các mạch phần cứng bên ngoài truy xuất
thông qua chân TxD (P3.1 phát dữ liệu) và RxD (P3.0 thu dữ liệu)
44
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
45
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
Thanh ghi chọn chế độ SCON của port nối tiếp ở địa chỉ
98H, trước khi sử dụng port nối tiếp, thanh ghi SCON
Bit Ký hiệu
phải được khởiĐịa Mô tả chế độ yêu cầu
động đúng
chỉ
SCON. SM0 9FH Bit 0 chọn chế độ port nối tiếp
7
SCON. SM1 9EH Bit 1 chọn chế độ port nối tiếp
6
SCON. SM2 9DH Bit này cho phép truyền thông đa xử lý ở
5 chế độ 2 và 3, bit RI sẽ không được tích
cực nếu bit thứ 9 nhận được 0
SCON. REN 9CH Cho phép thu, phải được set để nhận ký tự
4
SCON. TB8 9BH Bit phát 8. bit thứ 9 dược phát ở chế độ 2
3 và 3, set và xóa bởi phần mềm
SCON. RB8 9AH Bit thu 8. bit thứ 9 nhận được
2 46
SCON. TI 99H Cờ ngắt phát, cờ này được set ngay khi kết
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
Bằng cách ghi giá trị 0 vào SM0, SM1. Dữ liệu nối tiếp
được thu và phát thông qua chân RxD, TxD xuất xung
clock dịch bit.
SM0 SM Chế Mô tả Tốc độ baud
1 độ
0 0 0 Thanh ghi Cố định (tần số dao động/12)
dịch
0 1 1 UART 8 - bit Thay đổi (thiết lập bộ định thời)
1 0 2 UART 9 - bit Cố định (tần số dao động/12
hoặc/64)
1 1 3 UART 9 - bit Thay đổi bởi bộ định thời
47
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
Thiết lập truyền dữ liệu UART 8 bit (cố định)
48
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
Để lập trình 8051 truyền các byte ký tự nối tiếp thì cần phải thực
hiện các bước sau đây:
1. Nạp thanh ghi TMOD giá trị 20H: báo rằng sử dụng
Timer1 ở chế độ 2 để thiết lập chế độ baud.
2. Nạp thanh ghi TH1 các giá trị phù hợp để thiết lập chế
độ baud truyền dữ liệu nối tiếp.
3. Nạp thanh ghi SCON giá trị 50H báo chế độ nối tiếp 1 để
đóng khung 8 bit dữ liệu, 1 bit Start và 1 bit Stop.
4. Bật TR1=1 để khởi động Timer1.
5. Xoá bit cờ truyền dữ liệu: TI=0.
6. Byte ký tự cần phải truyền được ghi vào SBUF.
7. Bit cờ truyền TI được kiểm tra bằng một vòng lặp để đợi
đến lúc dữ liệu được truyền xong (cờ TI=1).
8. Để truyền ký tự tiếp theo quay trở về bước 5.
49
Chương 2
CẤU TRÚC HỌ 8051
#include<at89x51.h> //khai báo { send('D'); //Gọi hàm gửi 1 ký tự
thư viện cho 89c51
……………………..
void send(unsigned char a); //khai
}
báo nguyên mẫu hàm
}
main() //Chương trình chính
void send(unsigned char a) //Định
{
nghĩa hàm gửi 1 ký tự
TMOD=0x20; //Chọn Timer1, chế
{
độ 2
SBUF=a;
TH1=0xFA; //Cài đặt tốc độ 4800
//Ghi 1 byte dữ liệu vào thanh ghi
baud
SBUF
SCON=0x50; //0101 0000: Chọn
while(TI==0)
chế độ 1, Cho phép nhận
{} //vòng lặp để đợi cờ
TR1=1; //Khởi động Timer1 truyền TI lên 1
while(1) //Vòng lặp vô TI=0;
hạn //Xóa cờ truyền TI sau khi truyền
xong 50
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
8051 có 5 nguyên nhân ngắt: 2 do bên ngoài, 2 ngắt do
bộ định thời và 1 ngắt do port nối tiếp. 8052 có thêm 1
ngắt do bộ định thời thứ 3. Khi thiết lập trạng thái ban
đầu cho hệ thống (cấp nguồn, Reset) tất cả các ngắt
đều bị vô hiệu hóa và sau đó chúng cho phép riêng rẽ
theo chương trình
51
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
8051 có 5 nguyên nhân ngắt: 2 do bên ngoài, 2 ngắt do
bộ định thời và 1 ngắt do port nối tiếp. 8052 có thêm 1
ngắt do bộ định thời thứ 3. Khi thiết lập trạng thái ban
Bit cho
đầu Ký hệ
hiệuthống
Địa(cấp
chỉ nguồn,
Mô tả Reset)
IE.7 EA AFH Cho phép 1/ không cho phép 0 toàn cục
IE.6 - AEH None
IE.5 ET2 ADH Cho phép ngắt do bộ định thời 2
IE.4 ES ACH Cho phép ngắt do port nối tiếp
IE.3 ET1 ABH Cho phép ngắt do bộ định thời 1
IE.2 EX1 AAH Ngắt ngoài 1 (P3.3)
IE.1 ET0 A9H Cho phép ngắt do bộ định thời 0
IE.0 EX0 A8H Ngắt ngoài 0 (P3.2)
52
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
Ví dụ Kích hoạt ngắt ngoài 1 thì
EA=1
EX1=1
hoặc
IE.7=1
IE.2=1
tương tự thiết lập các ngắt sau
54
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
Mỗi 1 nguyên nhân ngắt được lập trình riêng để có 1
trong 2 mức ưu tiên thông qua thanh ghi ưu tiên ngắt IP
(interrup priority) cóCờ
Ngắt địa chỉ byte 0B8H Thanh ghi SFR và vị trí
bit
Ngắt ngoài 0 IE0 TCON.1
Ngắt ngoài 1 IE1 TCON.3
Ngắt do bộ định thời 1 TF1 TCON.7
Ngắt do bộ định thời 0 TF0 TCON.5
Ngắt do port nối tiếp TI SCON.1
Ngắt do port nối tiếp RI SCON.0
Ngắt do bộ định thời 2 TF2 T2CON.7 (8052)
Ngắt do bộ định thời 2 EXF2 T2CON.6 (8052) 55
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
Vecto reset hệ thống (RST ở địa chỉ 0000H) được chứa
trong bảng này vì vậy cũng được xem như 1 ngắt:
chương trình chính bị ngắt và PC được nạp giá trị mới
Ngắt do Cờ Địa chỉ vecto
Reset hệ thống RST 0000H
Ngắt ngoài 0 IE0 0003H
Bộ định thời 0 TF0 000BH
Ngắt ngoài 1 IE1 0013H
Bộ định thời 1 TF1 001BH
Port nối tiếp RI hoặc TI 0023H
Bộ định thời 2 TF2 hoặc EXF2 002BH
56
Chương 2
CẤU TRÚC HỌ 8051
3.3. Chức năng mở rộng
Vecto reset hệ thống (RST ở địa chỉ 0000H) được chứa
trong bảng này vì vậy cũng được xem như 1 ngắt:
chương trình chính bị ngắt và PC được nạp giá trị mới
57
Chương 2
CẤU TRÚC HỌ 8051
Bài tập
- Thiết lập các ngắt và ưu tiên theo thứ tự: Truyền thông, Timer 0,
Ngoài 1
58
Chương 2
CẤU TRÚC HỌ 8051
#include<at89x51.h>
Trong lập trình C trên Keil c cho 8051, chúng main()
ta khai báo trình phục vụ ngắt theo cấu trúc {
//a)
sau: IE=0x96; //1001 0110: lệnh này
tương đương với 4 lệnh phía dưới
59
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.1. Cấu trúc chương trình
3.2. Kiểu dữ liệu
3.1. Xây dựng chương trình
60
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.1. Cấu trúc chương trình C
Cấu trúc
61
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.1. Cấu trúc chương trình C
Cấu trúc
62
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.1. Cấu trúc chương trình C
Cấu trúc
63
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.2. Kiểu dữ liệu trong C
Tóm tắt các kiểu dữ liệu
64
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.2. Kiểu dữ liệu trong C
Kiểu dữ liệu Bit
65
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.2. Kiểu dữ liệu trong C
Kiểu dữ liệu Char
66
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.2. Kiểu dữ liệu trong C
Kiểu dữ liệu Short
67
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.2. Kiểu dữ liệu trong C
Kiểu dữ liệu int
68
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.2. Kiểu dữ liệu trong C
Kiểu dữ liệu long
69
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.2. Kiểu dữ liệu trong C
Kiểu dữ liệu float
70
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.2. Kiểu dữ liệu trong C
Kiểu dữ liệu Sbit
71
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.2. Kiểu dữ liệu trong C
Kiểu dữ liệu sfr
72
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.2. Kiểu dữ liệu trong C
Kiểu dữ liệu sfr16
73
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.3. Xây dựng chương trình
Chương trình ngắt
74
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.3. Xây dựng chương trình
Chương trình chính
75
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.3. Xây dựng chương trình
Cấu trúc START - END
76
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.3. Xây dựng chương trình
Bật tắt LED
77
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.3. Xây dựng chương trình
Cấu trúc IF- ELSE
78
Chương 3
NGÔN NGỮ LẬP TRÌNH
3.3. Xây dựng chương trình
Cấu trúc DO- ENDDO
79
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.1. Giao tiếp vào ra đơn bít
4.2. Giao tiếp mã quét
4.3. Giao tiếp dữ liệu
4.4. Giao tiếp mở rộng
80
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.1. Giao tiếp vào ra đơn bít
81
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.1. Giao tiếp vào ra đơn bít
82
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.1. Giao tiếp vào ra đơn bít
83
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.1. Giao tiếp vào ra đơn bít
//Bài 1: Bat tat LED, tao tan so chan P2.0
#include <REGX51.H>
#define tat 1;
#define bat 0;
sbit LED = P1^0; void main()
{
void delay() LED = tat;
{ delay();
unsigned char i; LED = bat;
for (i=0;i<20;i++) delay();
{ }
TMOD = 0x01; // timer 0, che do 1 (16 bit)
TH0=0x3C; //tao ra thoi 50ms => 3CB0
TL0=0xB0;
TR0=1; // cho timer chay
while (!TF0); Bài Tập : tương tự viết Timer 1, chế
{ độ 8 bít trễ 1s. Gửi qua Email:
} Thietbiquynhon@gmail.com
TF0=0;
TR0=0;
}
}
84
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.1. Giao tiếp vào ra đơn bít
85
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.1. Giao tiếp vào ra đơn bít
//Bài 1: 8 LED chay port P2 TR0=0; } }
#include <REGX51.H> main()
sbit LED = P2^0 ; {
void delay_1(s) { while(1)
unsigned int f, t; {
for(f=0; f<s; f++) unsigned int y;
for(t=0;t<20;t++) P2=0x01;
{ TMOD = 0x01; delay_1(1);
TH0=0xC350; for(y=0;y<8;y++)
TL0=0xC350; {
TR0=1; P2=P2<<1;
while (!TF0); delay_1(1);
TF0=0; }}}
86
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.1. Giao tiếp vào ra đơn bít
87
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.1. Giao tiếp vào ra đơn bít
//Bài 1: 8 LED chay port TL0=0xC350; while (1)
P2 TR0=1; {
#include <REGX51.H> while (!TF0); DC=1;
sbit START = P1^0 ; TF0=0; delay_1(1);
sbit STOP = P1^1 ; TR0=0; while (!STOP)
sbit DC = P2^0 ; } {DC=0;
void delay_1(s) } delay_1(1);
{ main() while (START)
unsigned int f, t; { {}
for(f=0; f<s; f++) DC=0; }
for(t=0;t<30;t++) while (!START) }
{ { }
TMOD = 0x01; }
88
TH0=0xC350;
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.1. Giao tiếp vào ra đơn bít
//Ngắt {
#include <REGX51.H> EA = 1;
sbit xung = P2^0; ET0 = 1;
void timer0_int(void) interrupt 1 TMOD = 0x01;
{ TF0=0; xung = ! xung = 0;
xung; TH0 = 0xfe;
TH0 = 0xfe;
TL0 = 0x0c;
TL0 = 0x0c;
}
TR0 = 1;
void main(void)
while(1) PCON|=1;
}
89
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.1. Giao tiếp vào ra đơn bít
#include <REGX52.H>
#define bat 1 // Dinh nghia gia tri bat den Led
#define tat 0 // Dinh nghia gia tri tat den Led
sbit Led = P1^0; // Khai bao bien Led kieu bit chan P1.0
void delay(long time)
{
while(time--);
}
void main(void)
{
while(1)
{
led = bat; // bat Led
delay(25000); // tre 1s
Led = tat; // tat Led
delay(25000); //tre 1s
}
} 90
Chương 4
GIAO TIẾP VỚI NGOẠI VI
Bài tập về nhà vào/ra cơ bản
Viết chương trình dạng C tạo sóng xung vuông có tần số ???Hz
trên chân P3.0, có sử dụng ngắt timer x
Trong đó: ??? là 3 chữ số cuối của mã sinh viên
x là 0 nếu số cuối mã SV chẵn và 1 nếu
lẻ
Hạn nộp 13/11 Qua Nhóm Zalo của môn học.
91
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
92
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
// Hien thi 2 so 7 doan
while (!TF0);
#include <AT89x51.h>
TF0=0; delay();
sbit LED1 = P3^0;
TR0=0; P2 = 0xA4; // dua so 9 ra
sbit LED2 = P3^1;
duong du lieu
}
LED1 = 1; // bat
}
void delay()
LED2 = 0; // tat
void main ( void )
{
delay();
{
int t;
}
while (1)
for(t=0;t<2;t++)
}
{
{
P2 = 0xF9; // dua so 9 ra duong
TMOD = 0x01;
du lieu
TH0=0x3C;
LED1 = 0; // bat
TL0=0xB0;
LED2 = 1; // tat
TR0=1;
93
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
Dem so tu 0-9
while (!TF0); P2 = 0xF9; // dua so 1 ra duong
#include <AT89x51.h>
TF0=0; du lieu
sbit LED1 = P3^0;
TR0=0; LED1 = 0; // bat
sbit LED2 = P3^1;
LED2 = 1; // tat
}
delay();
}
void delay()
P2 = 0xA4; // dua so 2 ra
{ duong du lieu
void main ( void )
int t; LED1 = 0; // bat
{
for(t=0;t<10;t++) LED2 = 1; // tat
P2 = 0xC0; // dua so 0 ra
{ delay();
duong du lieu
TMOD = 0x01; …………
LED1 = 0; // bat
TH0=0x3C; }
LED2 = 1; // tat
TL0=0xB0;
delay();
TR0=1;
94
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
Bài tập: Viết đếm số 0 -9 sử dụng vòng FOR
95
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
96
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
97
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
98
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
99
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
#include <REGX51.H> // Hàm chính main
sbit LED1 =P3^0; void main(void)
sbit H1 =P1^0; {
sbit H2 =P1^1; while(1)
sbit H3 =P1^2; {
sbit H4 =P1^3; P1=0xff;
sbit C1 =P1^4; H1=0;
sbit C2 =P1^5; if (C1==0)
sbit C3 =P1^6;
sbit C4 =P1^7; P2=0xC0;
LED1=0;
//unsigned char chuso[10]= if (C2==0)
{0xC0,0xF9,0xA4,0xB0,0x9 P2=0xF9;
9,0x92,0x82,0xF8,0x80,0x9 LED1=0;
0}; //……………
}
}
100
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
101
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
102
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
103
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
104
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
105
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
106
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
107
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.2. Giao tiếp mã quét
108
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
109
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
110
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
111
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
112
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
113
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
114
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
115
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
116
Chương 4
GIAO TIẾP VỚI NGOẠI VI
void LCDcontrol(unsigned char x)
4.3. Giao tiếp dữ liệu {
RS=0;//chon thanh ghi lenh
RW=0;//ghi len LCD.
void LCDinit(void) LCDdata=x ;// gia tri x
EN=1;//cho phep muc cao
{ EN=0;//xung cao xuong thap
LCDcontrol(0x38);//2 wait();//?oi LCD san sang.
}
dong va ma tran 5x7
LCDcontrol(0x0e);//bat void LCDwrite(unsigned char c)
man hinh, bat con tro {
RS=1;//ghi du lieu
LCDcontrol(0x01);// RW=0;//ghi du lieu len LCD
xoa man hinh LCDdata=c;//gia tri C
EN=1;//cho phep muc cao
} EN=0;//xung cao xuong thap
wait();//cho
}
117
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
118
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
119
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
120
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
121
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
122
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
void main(void)
{
LCDinit(); // khoi tao LCD
LCDcontrol(0x82);// dua con tro den vi tri thu 4 dong 1
LCDwrite('V');
LCDwrite('I');
LCDwrite('E');
LCDwrite('T');
LCDwrite(' ');
LCDwrite('N');
LCDwrite('A');
LCDwrite('M');
LCDcontrol(0xC0);
LCDwrites("VI DIEU KHIEN");
while(1); //vong lap vo han
}
123
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
124
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
125
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
126
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
127
Chương 4
GIAO TIẾP VỚI NGOẠI VI
4.3. Giao tiếp dữ liệu
128
129
GIAO TIẾP ADC
130
GIAO TIẾP ADC
131
GIAO TIẾP ADC
132
GIAO TIẾP ADC
133
GIAO TIẾP ADC
134
GIAO TIẾP ADC
135
GIAO TIẾP ADC
136
GIAO TIẾP ADC
137
GIAO TIẾP ADC
138
GIAO TIẾP ADC
139
GIAO TIẾP ADC
140
GIAO TIẾP ADC
141
GIAO TIẾP ADC
142
GIAO TIẾP ADC
143
GIAO TIẾP ADC
144
GIAO TIẾP ADC
145
GIAO TIẾP ADC
146
GIAO TIẾP ADC
147
GIAO TIẾP ADC
148
GIAO TIẾP ADC
149
GIAO TIẾP ADC
150
GIAO TIẾP ADC
151
GIAO TIẾP ADC
152
GIAO TIẾP ADC
153
GIAO TIẾP ADC
154
4.6 Thiết bị ngoại vi -ADC 15
5
ADC
155
Thiết kế card giao tiếp ADC 156
(ADC0804)
168
4.5 Thiết bị ngoại vi -STEP 169
4.5 Thiết bị ngoại vi -STEP 17
0
;********************************
org 00h
DELAY_1S: MOV R0,#2
mov p2, #00h
L3: ACALL DELAY_500MS
Ll: setb p2.0
DJNZ R0,L3
call DELAY_5S
RET
sjmp LL
;********************************
delay: DELAY_2S: MOV R0,#4
DELAY_50MS:MOV TH0,#HIGH(-50000) L4: ACALL DELAY_500MS
DJNZ R0,L4
MOV TL0,#LOW(-50000) RET
SETB TR0 ;*******************************
DELAY_5S: MOV R0,#200
L1:JNB TF0,L1 L5: ACALL DELAY_1S
CLR TF0 DJNZ R0,L5
RET
RET
end
4.6 Thiết bị ngoại vi -PWM 17
1
4.6 Thiết bị ngoại vi -PWM 17
2
172
4.7 Thiết bị ngoại vi ROM/RAM 17
3
4.7 Thiết bị ngoại vi ROM/RAM 17
4
ORG 0 INC DPTR
BD: CJNE A,#10, LL2
MOV 30H,#01H JMP ll2
MOV TRE:
DPTR,#0001H
mov r5,#20
LL1: MOV A,30H
v2:
MOVX @DPTR,A
MOV R3,#20
INC 30H
v1:
INC DPTR
MOV R4,#255
CJNE A,#10, LL1
DJNZ R4,$
MOV DPTR,#0001H
DJNZ R3,v1
LL2: MOVX A,@DPTR
djnz r5, v2
MOV P1,A
RET
4.7 Thiết bị ngoại vi ROM/RAM 17
5
4.7 Thiết bị ngoại vi – RS232 17
6
176
4.7 Thiết bị ngoại vi – RS232 17
7
4.7 Thiết bị ngoại vi – RS232 17
8
178
4.8 Thiết bị ngoại vi – RS485 17
9
180