Tải bản đầy đủ - 0 (trang)
CHƯƠNG 3: LẬP TRÌNH ỨNG DỤNG

CHƯƠNG 3: LẬP TRÌNH ỨNG DỤNG

Tải bản đầy đủ - 0trang

Bài giảng Vi điều khiển và Ứng dụng

Kết nối Port 0 của vi điều khiển với 8 LED đơn.

 Giai đoạn 2: Vẽ lưu đồ giải thuật và code

+ Cách 1: Giải thuật đơn giản và sử dụng lệnh đơn giản.

Code C



Giải thuật



void main() {

while (1) {

p0=0;

delay_1sec();

p0=0b10000000;

delay_1sec();

p0=0b11000000;

delay_1sec();

p0=0b11100000;

delay_1sec();

p0=0b11110000;

delay_1sec();

p0=0b11111000;

delay_1sec();

p0=0b11111100;

delay_1sec();

p0=0b11111110;

delay_1sec();

p0=0b11111111;

delay_1sec();

}

}



Đặng Thành Tựu



Trang 101



Bài giảng Vi điều khiển và Ứng dụng

+ Cách 2: Giải thuật phức tạp và sử dụng lệnh phức tạp.

 Giải thuật:



 Lập trình C:

void main() {

int i,led[]={0b00000000, 0b10000000, 0b11000000,

0b11111000, 0b11111100, 0b11111110, 255} ;



0b11100000,



0b11110000,



while(1)

{ i=0;

while(i<=8)

{ p0=led[i];

i=i+1;

delay_1sec(); } }}

Sau khi viết code, biên dịch sang file HEX, nạp vào phần mềm mô phỏng để xem

kết quả.

Bài tập làm thêm:

Bài tập 3.1.1. Viết code cho 8 LED đơn sáng hình xếp quạt.

Bài tập 3.1.2. Viết code cho 16 LED đơn sáng dạng sâu 3 đốt bò.

Đặng Thành Tựu



Trang 102



Bài giảng Vi điều khiển và Ứng dụng

3.2. Lập trình điều khiển RELAY

Yêu cầu: Viết chương trình điều khiển cho 3 đèn tròn 220Vac/75W sáng tuần tự như sau:

Trình tự

1

2

3

4

5

6

7

8

1

Giải quyết vấn đề:



Đèn 1

Tắt

Sáng

Sáng

Sáng



Đèn 2

Tắt

2 giây

Tắt

2 giây

Sáng

2 giây

Sáng

2 giây

Quay lại trình tự 1



Đèn 3

Tắt

Tắt

Tắt

Sáng



 Giai đoạn 1: Thiết kế phần cứng

Có thể sử dụng bất kỳ port nào của vi điều khiển → Port 2.

L1

RL1

5V



R1



d1



Q1



N



220V



NPN



10k



U1



9



29

30

31



1

2

3

4

5

6

7

8



XTAL2



RST



PSEN

ALE

EA



P1.0/T2

P1.1/T2EX

P1.2

P1.3

P1.4

P1.5

P1.6

P1.7



P0.0/AD0

P0.1/AD1

P0.2/AD2

P0.3/AD3

P0.4/AD4

P0.5/AD5

P0.6/AD6

P0.7/AD7

P2.0/A8

P2.1/A9

P2.2/A10

P2.3/A11

P2.4/A12

P2.5/A13

P2.6/A14

P2.7/A15

P3.0/RXD

P3.1/TXD

P3.2/INT0

P3.3/INT1

P3.4/T0

P3.5/T1

P3.6/WR

P3.7/RD



39

38

37

36

35

34

33

32

21

22

23

24

25

26

27

28



L2

RL2

5V

220V



R2



d2



Q2



V1



NPN



220V



10k

d1

d2

d3



N



18



XTAL1



N



19



10

11

12

13

14

15

16

17



L3

RL3

5V

220V



d3



R3



Q3



N



AT89C52



NPN



10k



Đặng Thành Tựu



Trang 103



Bài giảng Vi điều khiển và Ứng dụng



Hình 3.2. Mạch giao tiếp giữa 89S52 với RELAY

Kết nối P2.5, P2.6 và P2.7 với 3 RELAY bất kỳ.

 Giai đoạn 2: Vẽ lưu đồ giải thuật và code

+ Cách 1: Giải thuật đơn giản và sử dụng lệnh đơn giản.

Giải thuật

Code C



Đặng Thành Tựu



Trang 104



Bài giảng Vi điều khiển và Ứng dụng

#define lamp1 p2.b5

#define lamp2 p2.b6

#define lamp3 p2.b7

void main() {

while (1) {

lamp1=lamp2=lamp3=0;

delay_ms(2000);

lamp1=1;

delay_ms(2000);

lamp2=1;

delay_ms(2000);

lamp3=1;

delay_ms(2000);

}

}

+ Cách 2: Giải thuật và lệnh phức tạp

Giải thuật



Code C



#define lamp p2

int i,den[]={0,0b00100000,0b11000000,0b11100000};

void main() {

while (1) {

for(i=0;i>4;i++)

{

lamp=den[i];

delay_ms(2000);

}

}

}

Một cách viết khác:

Đặng Thành Tựu



Trang 105



Bài giảng Vi điều khiển và Ứng dụng

#define lamp p2

int i,den[]={0,0b00100000,0b11000000,0b11100000};

void main() {while (1) {i=0;

while(i<4) {lamp=den[i]; delay_ms(2000); i++:} }}

Bài tập làm thêm:

Bài tập 3.2.1. Viết code cho 6 đèn tròn sáng kiểu đèn giao thơng tại ngã tư với thời

gian như sau:

Trụ đèn 1



Trụ đèn 2



Đỏ sáng 15 giây



Xanh sáng 12 giây + Vàng sáng 3 giây



Xanh sáng 15 giây + Vàng sáng 5 giây



Đỏ sáng 20 giây



Bài tập 3.2.2. Thực hiện lại bài trên với 8 đèn với 2 đèn còn lại hiển thị đèn cho

người đi bộ ngang đường.

3.3. Lập trình hiển thị LCD

Yêu cầu: Viết chương trình hiển thị lên LCD 2 dòng chữ như sau:

- Dòng 1: Nguyen Van A

- Dòng 2: Quoc gia Lao

Giải quyết vấn đề:

 Giai đoạn 1: Thiết kế phần cứng



Đặng Thành Tựu



Trang 106



Bài giảng Vi điều khiển và Ứng dụng

LCD1



U1



RS

RW

EN



1

2

3

4

5

6

7

8



P1.0/T2

P1.1/T2EX

P1.2

P1.3

P1.4

P1.5

P1.6

P1.7



P3.0/RXD

P3.1/TXD

P3.2/INT0

P3.3/INT1

P3.4/T0

P3.5/T1

P3.6/WR

P3.7/RD



D4

D5

D6

D7



D0

D1

D2

D3

D4

D5

D6

D7



RS

RW

E



D4

D5

D6

D7



21

22

23

24

25

26

27

28



7

8

9

10

11

12

13

14



PSEN

ALE

EA



P2.0/A8

P2.1/A9

P2.2/A10

P2.3/A11

P2.4/A12

P2.5/A13

P2.6/A14

P2.7/A15



4

5

6



29

30

31



RST



39

38

37

36

35

34

33

32



RS

RW

EN



9



XTAL2



LM016L

P0.0/AD0

P0.1/AD1

P0.2/AD2

P0.3/AD3

P0.4/AD4

P0.5/AD5

P0.6/AD6

P0.7/AD7



VSS

VDD

VEE



18



XTAL1



1

2

3



19



10

11

12

13

14

15

16

17



AT89C52



Hình 3.3. Mạch giao tiếp giữa 89S52 với LCD

- Kết nối P1.0 – P1.2 với port LCD-DRI.

- Kết nối P2.4 – P2.7 với port LCD-DATA.

 Giai đoạn 2: Vẽ lưu đồ giải thuật và code

Giải thuật

Code C



Đặng Thành Tựu



Trang 107



Bài giảng Vi điều khiển và Ứng dụng

// Lcd module connections

sbit LCD_RS at P1_0_bit;

sbit LCD_RW at P1_1_bit;

sbit LCD_EN at P1_2_bit;

sbit LCD_D4 at P2_4_bit;

sbit LCD_D5 at P2_5_bit;

sbit LCD_D6 at P2_6_bit;

sbit LCD_D7 at P2_7_bit;

void main()

{

LCD_RW=0;

Lcd_Init();

Lcd_Cmd(_LCD_CURSOR_OFF);

LCD_Out(1,1,"Nguyen Van A");

LCD_Out(2,1,"Quoc gia Lao");

}



Bài tập làm thêm:

Bài tập 3.3.1. Viết chương trình hiển thị lên LCD 2 dòng chữ như sau:

- Mới cấp nguồn, LCD hiển thị 2 dòng:

+ Dòng 1: Nguyen Van A

+ Dòng 2: Quoc gia Lao

- Sau 3 giây. Cho 2 dòng chữ sau đây chớp tắt 3 lần rồi hiển thị luôn khơng tắt.

+ Dòng 1: Truong DHSPKTVL

+ Dòng 2: Lop VDKUD

Bài tập 3.3.2. Viết chương trình hiển thị lên LCD 2 dòng chữ sau:

- Dòng 1: So san pham.

- Dòng 2: Count: 0

Dòng 2 đếm từ 0 đến 24, sau đó quay về 0. Thời gian đếm là 1 giây.



Đặng Thành Tựu



Trang 108



Bài giảng Vi điều khiển và Ứng dụng

3.4. Lập trình điều khiển led 7 đoạn

3.4.1 Giới thiệu về LED 7 đoạn



Hình 3.4. Cấu trúc về LED 7 đoạn Common Anode và Common Cathode

Điều khiển LED 7 đoạn (có dấu chấm_dot point) tương đương với việc điều khiển

8 LED đơn.

3.4.2 Mã LED:

- Để LED 7 đoạn hiển thị ký tự theo ý muốn cần tạo mã để LED 7 đoạn hiển thị.

- Ví dụ: Khi hiển thị số 0, ta cần đưa vào các chân LED 7 đoạn các điện áp (mức

logic) phù hợp như sau: Để sáng số 0 cần sáng các đoạn a,b,c,d,e,f và đoạn g tắt.

+ Đối với LED 7 đoạn A chung: chân COM nối nguồn +5V (mức logic 1),

để sáng đoạn nào ta cần cấp điện áp 0V (mức logic 0).

+ Đối với LED 7 đoạn K chung: chân COM nối GND 0V (mức logic 0), để

sáng đoạn nào ta cần cấp điện áp +5V (mức logic 1).

- Trong lập trình vi điều khiển, người lập trình có nhiều cách để kết nối chân của

vi điều khiển ới LED 7 đoạn. Để thống nhất trong lập trình, tơi sẽ kết nối chân vi điều

khiển ới LED 7 đoạn như bảng 3.1. sau:

Bảng 3.1. Bảng kết nối vi điều khiển ới LED 7 đoạn

89S52

Bit 7

Bit 6

Bit 5

Bit 4

LED 7d

p

g

f

e

A chung

1

0

0

0

K chung

0

1

1

1

- Như vậy, mã LED 7 đoạn của số 0 là:

Đặng Thành Tựu



Bit 3

d

0

1



Bit 2

c

0

1



Bit 1

b

0

1



Bit 0

a

0

1



Trang 109



Bài giảng Vi điều khiển và Ứng dụng

+ Đối với LED 7 đoạn A chung là: 11000000B = C0H

+ Đối với LED 7 đoạn K chung là: 00111111B = 3FH

- Tương tự mã LED 7 đoạn cho các số 1, 2, 3, 4, 5, 6, 7, 8, 9, …

3.4.3 Lập trình điều khiển 1 LED 7 đoạn:

 Yêu cầu: Viết chương trình cho 1 LED 7 đoạn A chung đếm từ 0 đến 9

 Giải quyết vấn đề:

 Giai đoạn 1: Thiết kế phần cứng

U1

19

18



9



29

30

31



1

2

3

4

5

6

7

8



XTAL1

XTAL2



RST



PSEN

ALE

EA



P1.0

P1.1

P1.2

P1.3

P1.4

P1.5

P1.6

P1.7



P0.0/AD0

P0.1/AD1

P0.2/AD2

P0.3/AD3

P0.4/AD4

P0.5/AD5

P0.6/AD6

P0.7/AD7

P2.0/A8

P2.1/A9

P2.2/A10

P2.3/A11

P2.4/A12

P2.5/A13

P2.6/A14

P2.7/A15

P3.0/RXD

P3.1/TXD

P3.2/INT0

P3.3/INT1

P3.4/T0

P3.5/T1

P3.6/WR

P3.7/RD



39

38

37

36

35

34

33

32

21

22

23

24

25

26

27

28



R1



10

11

12

13

14

15

16

17



AT89C51



Hình 3.5. Kết nối phần cứng 89S52 với LED 7 đoạn A chung

Kết nối Port 3 của vi điều khiển với LED-DATA, chân L8 của LED-SCAN với

GND trên KIT.

 Giai đoạn 2: Lưu đồ và code

Đặng Thành Tựu



Trang 110



Bài giảng Vi điều khiển và Ứng dụng

Giải thuật



Code C

void main()

{while (1){

p3=0xC0;

delay_1sec();

p3=0xF9;

delay_1sec();

p3=0xA4;

delay_1sec();

p3=0xB0;

delay_1sec();

p3=0x99;

delay_1sec();

p3=0x92;

delay_1sec();

p3=0x82;

delay_1sec();

p3=0xF8;

delay_1sec();

p3=0x80;

delay_1sec();

p3=0x90;

delay_1sec();}}



Bài tập làm thêm:

Thực hiện lại yêu cầu sao cho LED 7 đoạn hiển thị từng chữ: quoc gia lao.

3.4.4 Lập trình điều khiển LED 7 đoạn bằng phương pháp quét:

- Để điều khiển số lượng LED 7 đoạn nhiều thì số chân của vi điều khiển khơng

đủ. Để giải quyết vấn đề ta có thể sử dụng 1 trong 2 phương pháp sau:

+ Phương pháp quét.

Đặng Thành Tựu



Trang 111



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

CHƯƠNG 3: LẬP TRÌNH ỨNG DỤNG

Tải bản đầy đủ ngay(0 tr)

×