Tải bản đầy đủ - 0 (trang)
Bài tập làm thêm:

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

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

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

- Mỗi khi ấn phím Start sẽ làm thay đổi hiển thị LCD và đảo chiều quay động cơ

như sau:

- Ấn Start lần 1: Trạng thái 1

+ Dòng 1: DK moto 3 pha

+ Dòng 2 của LCD: Trang thai: T

+ Động cơ quay thuận.

- Ấn Start lần 2: Trạng thái 2

+ Dòng 1: DK moto 3 pha

+ Dòng 2 của LCD: Trang thai: N

+ Động cơ quay ngược.

- Ấn tiếp tục ấn Start sẽ đảo trạng thái động cơ.

- Ấn Stop: Trạng thái dừng

+ Dòng 1: DK moto 3 pha

+ Dòng 2 của LCD: Trang thai: D

+ Động cơ dừng.

- Mỗi khi đảo chiều phải dừng động cơ ít nhất 3 giây và lâu nhất 5 giây sau đó đảo

chiều động cơ.

3.7. Lập trình điều khiển đèn giao thơng hiện số

 u cầu: Lập trình điều khiển hệ thống đèn giao thơng tại ngã tư thỏa

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



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

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



Đặng Thành Tựu



Trang 120



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



U1



9



29

30

31



1

2

3

4

5

6

7

8



XTAL2



RST



PSEN

ALE

EA



P1.0

P1.1

P1.2

P1.3

P1.4

P1.5

P1.6

P1.7

AT89C51



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



A

B

C

D

E

F

G



10

11

12

13

14

15

16

17



1

2



U2

1



U4

3



U3

NOT

3

4



A

B

C

D

E

F

G



18



XTAL1



A

B

C

D

E

F

G



19



U5

4



NOT



2

NOT

NOT



Hình 3.9. Sơ đồ mạch đèn giao thông 2 trụ

Đặng Thành Tựu



Trang 121



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

 Giai đoạn 2: Giải thuật



Đặng Thành Tựu



Trang 122



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

 Giai đoạn 3: Viết code

Để LED 7 đoạn có thời gian hiển thị đúng 1 giây → ngắt Timer (chọn Timer0)

Các bước tạo ngắt Timer:

- Bước 1: Vào Tools chọn Interrupt Assistant



Hình 3.10. Chọn cơng cụ tạo ngắt

- Bước 2: Chọn loại ngắt → ngắt Timer 0 → ET0



Hình 3.11. Chọn loại ngắt

Sau khi OK trên code sẽ có sẵn chương trình ngắt.

Để chạy 1 giây = 20 * 50.000 us = 1.000.000 us = 1s → sử dụng Timer mode 1

(mode 16 bit mới đủ 50.000).

+ Cài đặt TH0 và TL0 đếm 50.000 lần:

Nạp vào TH0-TL0 giá trị = 65.535 – 50.000 = 15.535 = 3CAFH

→ TH0 = 3CH = 0x3C, TL0 = AFH = 0xAF

và cho biến count đếm 20 lần sẽ được 1 giây.

Đặng Thành Tựu



Trang 123



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



Hình 3.12. Chương trình ngắt Timer 0 chạy thời gian 50.000uS

Khi vào đầu chương trình chính phải khai báo cho phép ngắt.

Code:

#define dulieu p2

#define scan p3 // p3.0...P3.3

#define bit_ngan p3.b0

#define bit_tram p3.b1

#define bit_chuc p3.b6

#define bit_donvi p3.b7

#define xanh1 p1.b0

#define vang1 p1.b1

#define do1 p1.b2

#define xanh2 p1.b3

#define vang2 p1.b4

#define do2 p1.b5

int ngan,tram,chuc,donvi;

int led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90};

int time_xanh1=15,time_vang1=5, time_xanh2=12,time_vang2=3,time_tru1,time_tru2,i;

int count=0; // dem 20 x 50.000 = 1.000.000 us = 1s

void ngatT0() iv IVT_ADDR_ET0 ilevel 0 ics ICS_AUTO {

TH0=0x3c;

TL0=0xaf;

count++;

}

Đặng Thành Tựu



Trang 124



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

void hienthi() {

ngan=time_tru1/10;

tram=time_tru1%10;

chuc=time_tru2/10;

donvi=time_tru2%10;

dulieu=led[ngan];

bit_ngan=0;

delay_ms(10);

bit_ngan=1;

dulieu=led[tram];

bit_tram=0;

delay_ms(10);

bit_tram=1;

dulieu=led[chuc];

bit_chuc=0;

delay_ms(10);

bit_chuc=1;

dulieu=led[donvi];

bit_donvi=0;

delay_ms(10);

bit_donvi=1;}

void main() {

// khai bao ngat timer 0

TF0_bit=0; // xoa cow ngat

ET0_bit=1; // cho phep ngat timer0

EA_bit=1; // cho phep ngat toan cuc

GATE0_bit=0;

C_T0_bit=0; // cai dat che do timer

M01_bit=0;

M00_bit=1; // che do dem 16 bit

TH0=0x3c;

TL0=0xaf;

Đặng Thành Tựu



Trang 125



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

TR0_bit=1; // bat dau chay ngat timer

do1=xanh1=vang1=do2=xanh2=vang2=0;

while(1) {

// tru 1: do - tru 2: xanh

time_tru1=time_xanh2+time_vang2;

time_tru2=time_xanh2;

do1=xanh2=1;

vang1=do2=0;

while(time_tru2>0)

{while(count<20) hienthi();

count=0;

time_tru2--;

time_tru1--;}



// tat het den



// tru 1: do - tru 2: vang

time_tru2=time_vang2;

xanh2=0;

vang2=1;

while(time_tru2>0)

{ while(count<20) hienthi();

count=0;

time_tru2--;

time_tru1--; }

// tru 1: xanh - tru 2: do

time_tru2=time_xanh1+time_vang1;

time_tru1=time_xanh1;

do1=vang2=0;

xanh1=do2=1;

while(time_tru1>0)

{ while(count<20) hienthi();

count=0;

time_tru2--;

time_tru1--; }

Đặng Thành Tựu



Trang 126



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

// tru 1: vang - tru 2: do

time_tru1=time_vang1;

xanh1=0;

vang1=1;

while(time_tru1>0)

{ while(count<20) hienthi();

count=0;

time_tru2--;

time_tru1--; }

}

}

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

Bài tập 3.7.1. Thực hiện lại yêu cầu trên có thêm đèn báo người đi bộ.

Bài tập 3.7.2. Thực hiện lại yêu cầu trên có thêm đèn báo làn quẹo trái.

3.8. Lập trình giao tiếp ADC0804

IC ADC0804 là IC chuyển đổi tín hiệu tương tự sang số công nghệ CMOS 8 bit.

Sơ đồ chân:



Hình 28.7. Sơ đồ chân IC ADC0804



Đặng Thành Tựu



Trang 127



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



Hình 28.8. Cấu trúc bên trong của IC ADC0804

Ý nghĩa các chân được chia thành các nhóm sau:

- Nhóm điều khiển dùng để kết nối với vi điều khiển:

Chân 1: CS (Chip Select) chân chọn chip. Nếu CS=1 sẽ khóa IC, nếu CS=0 sẽ

cho phép IC hoạt động.

Chân 2: RD (Read). Nếu RD=1 sẽ khóa ngõ ra của IC (ngõ ra tổng trở cao), nếu

RD=0 sẽ cho phép mở cổng ngõ ra.

Chân 3: WR (Write) có tác dụng chốt dữ liệu. Khi có xung cạnh lên tác động lên

chân WR thì IC cho phép xuất 8 bit, bình thường thì chốt dữ liệu ngõ ra.

Chân 5: INTR (Interrupt) có tác dụng báo cho vi điều khiển biết IC đã thực hiện

chuyển đổi xong, chờ vi điều khiển đọc dữ liệu 8 bit ngõ ra của IC ADC0804.

Đặng Thành Tựu



Trang 128



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

- Nhóm các ngõ ra: bao gồm các chân từ 18 đến 11 tương ứng các bit 0 đến bit 7.

- Nhóm nguồn:

Chân 10: GND

Chân 20: VCC=+5V

Chân 9: VREF/2 là chân cấp điện áp tham chiếu quyết định độ phân giải 8 bit nhị

phân ngõ ra.



Hình 28.9. Cấu trúc bên trong tại chân số 9

Từ hình 28.9 ta có:

Mã nhị phân ngõ ra = (áp vào * 256 / VREF) /2

Chân 8: AGND là chân đồng bộ GND với tín hiệu tương tự cần chuyển đổi.

- Nhóm chân dao động: bao gồm chân 4 và chân 19. Ta có thể mắc tụ và điện trở

vào cặp chân này để lấy xung clock nội bên trong IC ADC0804, cũng có thể lấy xung

clock bên ngồi đưa vào chân 19. Như sơ đồ sau:



Đặng Thành Tựu



Trang 129



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



Hình 28.10. Cách cấp xung clock cho IC ADC0804.

- Nhóm ngõ vào:

Chân 6: VIN(+) ngõ vào khơng đảo của mạch so sánh.

Chân 7: VIN(-) ngõ vào đảo của mạch so sánh.

Nguyên lý hoạt động của IC ADC0804 được chia thành 2 giai đoạn:

Giai đoạn IC 0804 đọc giá trị tương tự vào và thực hiện chuyển đổi:



Hình 28.11. Quá trình đọc và chuyển đổi của IC ADC0804

Giai đoạn xuất dữ liệu ra ngõ ra của IC ADC0804:



Đặng Thành Tựu



Trang 130



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

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

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

×