ch ƯƠ ng 4: Ứng d Ụng ngÔn ng Ữ c cho h Ọ vi ĐiỀu khi …

37
ĐẠI HC LC HNG GIÁO TRÌNH LP TRÌNH C CHO HVI ĐIU KHIN 8051 Biên son: Nguyn Bá Thun Page 1 of 37 CHƯƠNG 4: NG DNG NGÔN NGC CHO HVI ĐIU KHIN 8051 LP TRÌNH ĐIU KHIN I. ĐIU KHIN LED ĐƠN VÀ LED 7 ĐON. 1. Điu khin Led đơn. a. ng 1 led đơn để phát xung vi tn s10hz ti chân P1^0. #include <at89c51xd2.h> sbit led=P1^0; //gán led là bit P1^0. void delay() //chương trình con delay { TMOD=0x01; //khai báo timer 0 chế độ 16 bit. TH0=0xC350; //np giá trcho thanh ghi 50000 php phân TL0=0xC350; TR0=1; //cho phép timer 0 hot động while(!TF0); //kim tra ctràn TF0 mc không TF0=0; //xóa ctràn TR0=0; //không cho phép timer 0 hot động } main() //chương trình chính { while(1) //vòng lp vô tn { led=1; //led lên mc 1 delay(); //trì hoãn 50ms led=0; //led xung mc 0 delay(); //trì hoãn 50ms } }

Upload: others

Post on 28-Feb-2022

0 views

Category:

Documents


0 download

TRANSCRIPT

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 1 of 37

CHƯƠNG 4: ỨNG DỤNG NGÔN NGỮ C CHO HỌ VI ĐIỀU KHIỂN 8051

LẬP TRÌNH ĐIỀU KHIỂN

I. ĐIỀU KHIỂN LED ĐƠN VÀ LED 7 ĐOẠN.

1. Điều khiển Led đơn.

a. Ứng 1 led đơn để phát xung với tần số 10hz tại chân P1^0.

#include <at89c51xd2.h>

sbit led=P1^0; //gán led là bit P1^0.

void delay() //chương trình con delay

{

TMOD=0x01; //khai báo timer 0 chế độ 16 bit.

TH0=0xC350; //nạp giá trị cho thanh ghi 50000 phập phân

TL0=0xC350;

TR0=1; //cho phép timer 0 hoạt động

while(!TF0); //kiểm tra cờ tràn TF0 ở mức không

TF0=0; //xóa cờ tràn

TR0=0; //không cho phép timer 0 hoạt động

}

main() //chương trình chính

{

while(1) //vòng lập vô tận

{

led=1; //led lên mức 1

delay(); //trì hoãn 50ms

led=0; //led xuống mức 0

delay(); //trì hoãn 50ms

}

}

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 2 of 37

Chương trình đã được thực hiện và mô phỏng

Bài tập mở rộng về nhà.

- Xuất tín hiệu phát xung 1Hz trên chân P3.0 - Xuất tín hiệu phát xung 100Hz trên port 1 - Xuất tín hiệu phát xung 1KHz trên 4 port

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 3 of 37

b. Điều khiển 8 led đơn sáng tắt từ phải qua trái ở port 1.

#include <at89c51xd2.h>

void delay_1(s)

{

unsigned int f,t;

for(f=0;f<s;f++)

for(t=0;t<20;t++)

{

TMOD=0x01;

TH0=0xC350;

TL0=0xC350;

TR0=1;

while(!TF0);

TF0=0;

TR0=0;

}

}

main()

{

while(1)

{

unsigned int y;

P1=0x01; //cho bit đầu tiên của port 1 sáng

delay_1(1); //delay 1s

for(y=0;y<8;y++) //vòng lặp for với điều kiện 8 lần

{

P1=P1<<1; //dịch trái port 1 đi 1 bit

delay_1(1);

}

}

}

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 4 of 37

c. Điều khiển 16 led đơn tắt dần từ phải qua trái ở port 1 và 2.

#include <at89c51xd2.h>

void delay_1(s)

{

unsigned int f,t;

for(f=0;f<s;f++)

for(t=0;t<20;t++)

{

TMOD=0x01;

TH0=0xC350;

TL0=0xC350;

TR0=1;

while(!TF0);

TF0=0;

TR0=0;

}

}

main()

{

while(1)

{

unsigned int y,w;

P1=0xff; //cho P1 sáng

P2=0xff;

delay_1(1);

for(y=0;y<8;y++)

{

P1=P1<<1; //làm vòng lặp biến y, P1 xoay đủ 8 bit

delay_1(1);

}

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 5 of 37

for(w=0;w<8;w++)

{

P2=P2<<1; //làm vòng lặp biến w, P2 xoay đủ 8 bit

delay_1(1);

}

}

}

d. Bài tập.

- 8 Led sáng tắt từ trái qua phải với port 3

- 8 Led sáng tắt từ phải qua trái với port 1

- 16 Led sáng tắt từ trái qua phải với port 0, port 1

- 32 Led sáng tắt từ phải qua trái với 4 port.

- Led sáng dần từ trái qua phải với port 3

- 8 Led sáng dần từ phải qua trái với port 0

- 16 Led sáng dần từ trái qua phải với port 0, port 1

- 32 Led sáng dần từ trái qua phải với 4 port

- Led sáng dần từ trái qua phải và tắt dần từ trái qua phải với port 3

- 8 Led sáng dần từ phải qua trái và tắt dần từ trái qua phải với port 0

- 16 Led sáng dần từ trái qua phải và tắt dần từ phải qua trái với port 0, port 1

- 32 Led sáng dần từ trái qua phải và tắt dần từ phải qua trái với 4 port

2. Điều khiển Led 7 đoạn.

Mã của Led 7 đoạn loại cathode chung

Các đoạn của Led 7 đoạn H G F E D C B A

Số Mã hex

0 0 1 1 1 1 1 1 0 3FH 0 0 0 0 0 1 1 0 1 06H 0 1 0 1 1 0 1 1 2 5BH 0 1 0 0 1 1 1 1 3 4FH 0 1 1 0 0 1 1 0 4 66H 0 1 1 0 1 1 0 1 5 6DH 0 1 1 1 1 1 0 1 6 7DH 0 0 0 0 0 1 1 1 7 07H 0 1 1 1 1 1 1 1 8 7FH 0 1 1 0 1 1 1 1 9 6FH

Mã của Led 7 đoạn loại Anode chung

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 6 of 37

Các đoạn của Led 7 đoạn H G F E D C B A

Số Mã hex

1 1 0 0 0 0 0 0 0 C0H 1 1 1 1 1 0 0 1 1 F9H 1 0 1 0 0 1 0 0 2 A4H 1 0 1 1 0 0 0 0 3 B0H 1 0 0 1 1 0 0 1 4 99H 1 0 0 1 0 0 1 0 5 92H 1 0 0 0 0 0 1 0 6 82H 1 1 1 1 1 0 0 0 7 F8H 1 0 0 0 0 0 0 0 8 80H 1 0 0 1 0 0 0 0 9 90H

a. Chương trình điều khiển 1 Led 7 đoạn đếm từ 0 đến 9 với port 1

#include <at89c51xd2.h>

#define data_led7 P1

#define Aled1 P3_0

void delay_1(s)

{

unsigned int f,t;

for(f=0;f<s;f++)

for(t=0;t<20;t++)

{

TMOD=0x01;

TH0=0xC350;

TL0=0xC350;

TR0=1;

while(!TF0);

TF0=0;

TR0=0;

}

}

void main()

{

unsigned char code maled7[] =

{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 7 of 37

int D;

P1 = 0xff;

P3 = 0xff;

D = 0;

while(1)

{

data_led7 = maled7[D];

delay_1(1);

D++;

if (D == 10) D = 0;

}

}

Bài tập mở rộng về nhà.

- Điều khiển 1 Led 7 đoạn đếm từ 0 đến 9 với port 3

- Điều khiển 1 Led 7 đoạn đếm chẵn 0,2,4,6,8 với port 3

- Điều khiển 1 Led 7 đoạn đếm lẻ 1,3,5,7,9 với port 3

- Điều khiển 1 Led 7 đoạn đếm từ 0 đến 9 sau đó đếm lẻ sau đó đếm chẵn,

chương trình đếm bắt đầu bằng nút Start với port 3

b. Chương trình điều khiển 2 Led 7 đoạn đếm từ 0 đến 99 với port 0,1

#include <at89c51xd2.h>

#define data_led7 P1

#define Aled1 P0_0

#define Aled2 P0_1

unsigned char led1,led2;

bit flag;

int count;

void delay_1ms(){

TH1=0xFB;

TL1=0x00;

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 8 of 37

TR1=1;

while(1){

if(TF1==1) break;

}

TR1=0;

TF1=0;

}

void delay(unsigned char t)

{

int i;

for(i=0;i<t;i++)

delay_1ms();

}

void delay_us(int x) {

int i;

for (i=0;i<x;i++) {}

}

void convert_bcd( int x)

{

int temp2;

temp2 = x;

led2 = temp2 / 10;

led1 = temp2 % 10;

}

//-----------HIEN THI LED--------------

void display()

{

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 9 of 37

unsigned char code maled7[] =

{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

data_led7 = maled7[led1]; Aled1 = 0; delay_us(50); flag = 1; Aled1 = 1;

data_led7 = maled7[led2]; Aled2 = 0; delay_us(50); Aled2 = 1;

}

void main()

{

unsigned char dem;

P1 = 0xff;

P0 = 0xff;

count = 0;

convert_bcd(count);

while(1)

{

convert_bcd(dem);

display();

if (flag == 1) {flag = 0;count++;}

if (count == 10) {dem++;count = 0;}

}

}

Bài tập mở rộng về nhà.

- Điều khiển 2 Led 7 đoạn đếm từ 0 đến 80 với port 0,1

- Điều khiển 2 Led 7 đoạn đếm chẵn 0,2,4,6,8…90 với port 0,1

- Điều khiển 2 Led 7 đoạn đếm lẻ 1,3,5,7,9….95 với port 0,1

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 10 of 37

c. Chương trình điều khiển 4 Led 7 đoạn đếm từ 0 đến 9999 với port 0,1

#include <at89c51xd2.h>

#define data_led7 P1

#define Aled1 P0_0

#define Aled2 P0_1

#define Aled3 P0_2

#define Aled4 P0_3

unsigned char led1,led2,led3,led4;

bit flag;

int count;

void delay_1ms(){

TH1=0xFB;

TL1=0x00;

TR1=1;

while(1){

if(TF1==1) break;

}

TR1=0;

TF1=0;

}

void delay(unsigned char t)

{

int i;

for(i=0;i<t;i++)

delay_1ms();

}

void delay_us(int x) {

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 11 of 37

int i;

for (i=0;i<x;i++) {}

}

void convert_bcd( int x)

{

int temp2;

temp2 = x;

led4 = temp2 / 1000;

temp2 = temp2 % 1000;

led3 = temp2 / 100;

temp2 = temp2 % 100;

led2 = temp2 / 10;

led1 = temp2 % 10;

}

//-----------HIEN THI LED--------------

void display()

{

unsigned char code maled7[] =

{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

data_led7 = maled7[led1]; Aled1 = 0; delay_us(50); flag = 1; Aled1 = 1;

data_led7 = maled7[led2]; Aled2 = 0; delay_us(50); Aled2 = 1;

data_led7 = maled7[led3]; Aled3 = 0; delay_us(50); Aled3 = 1;

data_led7 = maled7[led4]; Aled4 = 0; delay_us(50); Aled4 = 1;

}

void main()

{

unsigned char dem;

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 12 of 37

P1 = 0xff;

P0 = 0xff;

count = 0;

convert_bcd(count);

while(1)

{

convert_bcd(dem);

display();

if (flag == 1) {flag = 0;count++;}

if (count == 10) {dem++;count = 0;}

}

}

Bài tập mở rộng về nhà.

- Điều khiển 4 Led 7 đoạn đếm từ 0 đến 9000 với port 0,1

- Điều khiển 4 Led 7 đoạn đếm chẵn 0,2,4,6,8…9000 với port 0,1

- Điều khiển 4 Led 7 đoạn đếm lẻ 1,3,5,7,9….9500 với port 0,1

II. ĐIỀU KHIỂN HỆ THỐNG KHÍ NÉN THỦY LỰC.

1. MÁY DẬP LỖ CHUYÊN DÙNG

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ:

Đầu tiên cơ cấu đưa phôi vào. Khi ta mở công tắc và nhấn nút thì Piston A đẩy phôi tới. Tiếp

tục Piston B đi vào làm công việc kẹp chặt phôi. Sau đó Piston A lùi về, đồng thời Piston C đi

xuống làm công việc dập lỗ, Piston C rút lên. Cuối cùng Piston B lùi về và thực hiện xong một

chu kỳ.

BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH:

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 13 of 37

CHƯƠNG TRÌNH ĐIỀU KHIỂN HỆ THỐNG TRÊN BẰNG VI ĐIỀU KHIỂN

(tín hiệu tác động ngõ vào tác động mức 0 và ngõ ra tác động mức 0, giả sử van 5/2, 2

cuộn coil)

Phân tích: có 7 ngõ vào gồm 1 nút nhấn Start, 6 công tắc hành trình lần lượt S1 đến

S6 của 3 xinh lanh. Có 6 ngõ ra lần lượt A1, A2, B1, B2, C1, C2 của 3 xinh lanh nói

lên trạng thái đóng và mở của xinh.

CHƯƠNG TRÌNH.

#include <at89c51xd2.h>

sbit start=P0^0;

sbit S1=P0^1;

sbit S2=P0^2;

sbit S3=P0^3;

sbit S4=P0^4;

sbit S5=P0^5;

sbit S6=P0^6;

sbit A1=P1^0;

sbit A2=P1^1;

sbit B1=P1^2;

sbit B2=P1^3;

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 14 of 37

sbit C1=P1^4;

sbit C2=P1^5;

main()

{

while(1)

{

P1=0xff;

P0=0xff;

while(start);

A1=0;

while(S2);

B1=0;

A1=1;

while(S4);

A2=0;

C1=0;

B1=1;

while(S6);

while(S1);

A2=1;

C1=1;

C2=0;

while(S5);

B2=0;

C2=1;

while(S3);

B2=1;

}

}

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 15 of 37

2. HỆ THỐNG ĐÓNG BAO BÌ

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ NHƯ HÌNH SAU:

BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH:

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 16 of 37

3. MÁY DẬP TỰ ĐỘNG

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ

Máy dập sẽ dập chi tiết. Trình tự dập sẽ được thực hiện như sau:

Piston A đi ra đẩy chi tiết từ phễu cấp phôi vào vị trí gá đặt chi tiết và thực hiện kẹp chặt.

Piston B đi ra đi ra tiến hành dập chi tiết. Khi lực dập đã đủ thì Piston B quay về.

Sau đó Piston A quay về để tháo chi tiết.

Sau khi chi tiết được tháo ra, Piston C đi ra tiến hành đẩy chi tiết vào máng chứa và quay về.

BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH:

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 17 of 37

4. MÁY MÀI PHẲNG

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ:

Máy mài sẽ thực hiện các chưyển động sau:

Khi khởi động. Pitton A mang chi tiết mài được kẹp chặt trên bàn từ từ tiến đến vị trí mài.

sau đó Piston B thực hiện tiến hành mài chi tiết, với hành trình tiến và lùi. Sau khi thực hiện

một chu kỳ mài, Piston C đi ra để tạo vị trí mài mới. Sau đó Piston B thực hiện tiến hành mài

chi tiết với tiến và lùi của chu kỳ thứ 2. Piston C đi về, hoàn tất qúa trình mài. Piston A mang chi

tiết được mài đi về để chuẩn bị gá chi tiết mới.

BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH:

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 18 of 37

5. HỆ THỐNG LẮP RÁP TỰ ĐỘNG

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ:

Hệ thống sẽ lắp các chi tiết hình trụ tròn vào các lỗ tương ứng trên một chi tiết khác. Trình

tự thực hiện như sau:

1. Pistong A đi ra đẩy một chi tiết hình khối vào vị trí lắp ráp đồng thời kẹp chặt cho

đến khi đủ áp suất

2. Pistong B đi ra, đẩy một chi tiết trụ lắp vào lỗ của mặt thứ nhất.

3. Pistong C đi ra, đẩy một chi tiết trụ lắp vào lỗ của mặt thứ hai.

4. Pistong A và B đồng thời quay về làm chi tiết rơi xuống băng tải và đi ra ngoài.

5. Pistong B quay về, kết thúc một chu kỳ làm việc.

BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH:

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 19 of 37

6. KHOAN VÀ DOA TỰ ĐỘNG

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ:

Trình tự hoạt động như sau:

1. Chi tiết được gá và gẹp chặt trên êtô.

2. Pistong A đi xuống tiến hành khoan.

3. Sau khi khoan xong Pistong A ở cuối hành trình 3s rồi rút lên thì Pistong B đi ra đẩy

êtô va chạm vào cử hành trình B2.

4. Pistong C đi ra tiến hành doa và lui về.

5. Sau khi Pistong C lui về hết hành trình thì Pistong B cũng bắt đầu tiến hành lui về,

kết thúc một chu trình làm việc.

BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH:

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 20 of 37

7. MÁY MÀI PHẲNG BẰNG SIMPLEX

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ:

Piston A dưới tác dụng của khí nén làm cho bàn máy di chuyển đi tới. Sau đó Piston B di

chuyển bàn máy qua lại. Sau một chu kỳ, Piston A lui về, Piston B di chuyển bàn máy qua lại

chu kỳ thứ hai. Sau chu kỳ thứ 2 qui trình kết thúc.

II. BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH:

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 21 of 37

8. HỆ THỐNG VẬN CHUYỂN SẢN PHẨM

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ NHƯ HÌNH SAU:

BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH:

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 22 of 37

9. MÁY MÀI LỖ

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ:

Trình tự mài sẽ được thực hiện như sau:

1. Pistông A đi ra để tạo bề mặt dùng định vị chi tiết.

2. Pistông B đi ra thực hiện kẹp chi tiết.

3. Khi pistong B đủ áp suất thì pistông C đi ra hết hành trình rồi quay về ½ hành trình,

sau đó lại đi ra hết hành trình, cứ như thế đến 18 lần để thực hiện mài lỗ. Cuối cùng quay về

kết thúc qúa trình mài.

4. Pistong A và B đồng thời cùng lui về.

5. Pistông B đi ra đẩy chi tiết sau khi gia công về phía thùng chứa, rồi quay về.

BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH:

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 23 of 37

10. MÁY GẤP TÔN BẰNG KHÍ NÉN

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ:

Đầu tiên cơ cấu đưa phôi vào. Khi ta bật công tắc và nhấn nút thì pittông B đi vào làm

công việc kẹp chặt phôi. Sau đó pittong B đi vào uốn cong phôi làn đầu với góc 90 độ. Sau đó

pittong B lùi về và pittong C đi vào thực hiện uốn cong phôi làn hai với hình dáng với cữ chặn,

sau đó pittong C lùi về. Khi pittong C lùi về thì pittong A cũng lùi về và phôi được lấy ra tiếp

tục một hành trình làm việc mới.

BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH:

7

A

1 2 3 4 5 6

0

1

0

1

0

1

B

C

Nuùt khôûi ñoäng

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 24 of 37

11. MÔ HÌNH CẤP PHÔI TỰ ĐỘNG TRÊN MÁY TIỆN

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ:

Khi đóng cầu dao điện và khí nén. Piston A đi ra đẩy máng cấp phôi về phía mâm cặp, ở

cuối hành trình Piston gặp cảm biến B2 (tạo ra xung), thì Piston B đi ra để đẩy phôi vào mâm

cặp, đồng thời cảm biến B4 thì Piston C rút về để kẹp chi tiết. cuối hành trình Piston C cảm biến

B5, thì cả hai Piston A và B lùi về (cảm biến B1 và B3). Sau đó Piston D đi ra gài chế độ gia

công tự động để gia công chi tiết. Sau khi gia công xong thì piston D đi về, chi tiết được tháo ra

để tiếp tục hành trình mới.

BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH:

A0

1

0

1

0

1

B

C

D

0

1

7 1 2 3 4 5 6 8

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 25 of 37

12. HỆ THỐNG XỬ LÝ BỀ MẶT SẲN PHẨM

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ NHƯ HÌNH SAU

Khi nhấn nút start động cơ băng tải quay mang sản phẩm trên băng tải khi sản phẩm đụng công

tắc hành trình động cơ quay băng tải ngừng Xilanh B đưa sản phẩm xuống bồn hoá chất ngâm

trong vòng 10S Xilanh B đưa sản phẩm lên sau đó xilanh C đưa sản phẩm sang vị trí bồn rửa

nước tiếp đo Xilanh B đem sản phẩm xuống rửa nước trong vòng 3s và đi lên cuối cùng Xilanh

D đẩy chi tiết ra băng tải.

BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH:

Xilanh A

Xilanh C

Xilanh D

Xilanh B

Sản Phẩm

Bồn hoá chất

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 26 of 37

13. HỆ THỐNG NẮN TRÒN NIỀNG XE

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ NHƯ HÌNH SAU

Nguyên lý hoạt động của mạch trên: Khi nhấn start SOL1 điều khiển xilanh

giữa đi về đẩy dàn khuôn trong ra. Khi xilanh giữa đi về chạm phải công tác hành

trình, tiếp điểm thường hở của công tác hành trình đóng lại cấp điện cho TIMER hoạt

động.

Khi TIMER có điện, tiếp điểm thường đóng của TIMER sẽ cấp điện cho SOL2

điều khiển 4 xy lanh ngoài đi vào ép niềng xe.

Sau khoảng thời gian đã đặt cho TIMER, các tiếp điểm của TIMER sẽ đổi trạng

thái ngắt điện R2 đồng thời đóng điện cấp cho R3, do tính chất của van đảo chiều khi

đó SOL2 sẽ bị mất điện và điều khiển 4 xy lanh ngoài đi về. Khi R3 có điện, SOL1 sẽ

mất điện và đi về làm tiếp điểm của công tác hành trình trở về trạng thái thường hở

ban đầu. Lúc này cả phần mạch trên và phần mạch dưới cùng hở ra, muốn mạch hoạt

động trở lại thì cần phải tác động lại START.

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 27 of 37

14. MÁY ÉP NHỰA

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ:

Máy ép nhựa sẽ ép những khối nhựa hình cầu thành những cái đĩa. Trình tự ép sẽ được thực

hiện như sau:

Khối nhựa được cho bằng tay vào khuôn. Pistong A đi ra ép khối nhựa cho đến khi đủ áp

suất (áp suất p = 5 bar), sau khi ép xong thì quay về. Pistong B đi ra, trên đầu xylanh có gắn

Pistong C, đưa Pistong C đến vị trí lấy sản phẩm; Pistong C đi ra, lấy dĩa bằng phương pháp hút

chân không và quay về. Sau đó Pistong B quay về mang dĩa đến vị trí đựng sản phẩm.

BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH:

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 28 of 37

15. HỆ THỐNG GIA CÔNG CẮT GỌT TỰ ĐỘNG

YÊU CẦU CỦA QUI TRÌNH CÔNG NGHỆ:

Hệ thống tự động gia công lỗ bằng phương pháp khoan – khóet và lã lỗ. Quy trình được thực

hiện như sau:

1. Pistông A và C có nhiệm vụ cản chuyển động của phôi cũng như của chi tiết đã gia

công.

2. Pistông B và D có nhiệm vụ đưa phôi cũng như chi tiết đã gia công vào và ra khỏi hệ

thống.

3. Pistông E có nhiệm vụ quay tròn bàn máy chứa chi tiết.

4. Pistông F và G đưa hai đầu khoan 1 và 2 ra khoan chi tiết và quay về.

5. Pistông H và I đưa hai đầu khoét 1 và 2 ra khoét chi tiết và quay về.

6. Pistông J và K đưa hai đầu lã lỗ 1 và 2 đi ra lã miện lỗ và quay về.

BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH:

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 29 of 37

III. ĐIỀU KHIỂN LED MA TRẬN

Giao tiếp Led ma trận

Sơ đồ nguyên lý:

Q13A

H2

M5

VCC

D5

VCC

Q10A

D1

X3

R9

12

Q12A

H6

X4

M4

D7

D1

VCC

Q15A

H1

GND

R8

12

H7

H2

GND

D6

M7

X4

D2

R3

R

12

Q11A

H5

X5

M5

U4 ULN2804

109

12345678

1817161514131211

COMGND

IN1IN2IN3IN4IN5IN6IN7IN8

OUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT8

M3

D2

D8

GND

VCC_12V

J4

COLUMN DO

12345678

H8

H3

J2

COLUMN XANH

12345678

D7

R4

12

D3

X5

Q14A

M1

M1

X6

X1

VCC

M6

R6

12

X1

H4

H4

U1

MATRAN 8X8

2421181514710

2320171425811

22191613369

12

X1X2X3X4X5X6X7X8

D1D2D3D4D5D6D7D8

H1H2H3H4H5H6H7H8

D8

D3

M8

X6

D4

M4

J3

ROW

12345678

Q16A

U3

ULN2804

109

12345678

1817161514131211

COMGND

IN1IN2IN3IN4IN5IN6IN7IN8

OUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT8

M7

M2

H3X7

H8

X2

H5

GND

D4

D5

X7

X8

X2

Q17A

D468

U2

ULN2804

109

12345678

1817161514131211

COMGND

IN1IN2IN3IN4IN5IN6IN7IN8

OUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT8

R7

12

VCC

R5

12

R2

1K

12

M8

M3M6

H7

X3

H6

M2

H1

J5

12VDC

12

X8

D6

Các hàng và được đưa qua IC đệm 2803. Led ma trận có hai màu xanh và đỏ.

Có 8 đường điều khiển hàng, 8 đường điều khiển cột màu xanh và 8 đường điều khiển

cột màu đỏ. Tổng cộng có 24 đường được kết nối với vi điều khiển.

Với phần cứng đã thiết ở trên sử dụng led ma trận 8x8 có 2 màu xanh và đỏ, để

điều khiển led ma trận sáng ta tiến hành gửi dữ liệu ra cột và mã quét ra hàng. Trong 4

port của vi điều khiển ta sử dụng 1 port để quét hàng và 2 port để điều khiển màu xanh

và đỏ.

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 30 of 37

Mã các ký tự của Led ma trận.

7 6 X 5 X X 4 X X 3 X X 2 X X X X X 1 X X 0 X X E0 DB BB DB E0Mẫu chữ A:

7 6 X X X X 5 X X 4 X X 3 X X X X 2 X X 1 X X 0 X X X X 80 B6 B6 B6 C9 Mẫu chữ B:

7 6 X X X 5 X X 4 X 3 X 2 X 1 X X 0 X X X C1 BE BE BE DDMẫu chữ C:

7 6 X X X X 5 X X 4 X X 3 X X 2 X X 1 X X 0 X X X X 80 BE BE BE C1 Mẫu chữ D:

7 6 X X X X X 5 X 4 X 3 X X X X 2 X 1 X 0 X X X X X 80 B6 B6 B6 BE Mẫu chữ E:

7 6 X X X X X 5 X 4 X 3 X X X X 2 X 1 X 0 X 80 B7 B7 B7 BF Mẫu chữ F:

7 6 X X X 5 X X 4 X 3 X X X X 2 X X 1 X X 0 X X X C1 BE B6 B6 D1 Mẫu chữ G:

7 6 X X 5 X X 4 X X 3 X X X X X 2 X X 1 X X 0 X X 80 F7 F7 F7 80 Mẫu chữ H:

7 6 X X X X X 5 X 4 X 3 X 2 X 1 X 0 X X X X X BE BE 80 BE BE Mẫu chữ I:

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 31 of 37

7 6 X X 5 X X 4 X X 3 X X 2 X X 1 X X 0 X X 80 E7 DB BD FE Mẫu chữ K:

7 6 X 5 X 4 X 3 X 2 X 1 X X 0 X X X X 80 FE FE FE FD Mẫu chữ L:

7 6 X X 5 X X X X 4 X X X 3 X X 2 X X 1 X X 0 X X 80 DF EF DF 80 Mẫu chữ M:

7 6 X X 5 X X X 4 X X X 3 X X X 2 X X 1 X X 0 X X 80 DF EF F7 80 Mẫu chữ N:

7 6 X X X 5 X X 4 X X 3 X X 2 X X 1 X X 0 X X X C1 BE BE BE C1 Mẫu chữ O:

7 6 X X X X 5 X X 4 X X 3 X X X X 2 X 1 X 0 X 80 B7 B7 B7 CF Mẫu chữ P:

7 6 X X X 5 X X 4 X X 3 X X 2 X X X 1 X X X 0 X X X X C1 BE BA BC C0Mẫu chữ Q:

7 6 X X X X 5 X X 4 X X 3 X X X X 2 X X 1 X X 0 X X 80 B7 B3 B5 CE Mẫu chữ R:

7 6 X X X 5 X X 4 X 3 X X X 2 X 1 X X 0 X X X CD B6 B6 B6 D9 Mẫu chữ S:

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 32 of 37

7 6 X X X X X 5 X 4 X 3 X 2 X 1 X 0 X BF BF 80 BF BF Mẫu chữ T:

7 6 X X 5 X X 4 X X 3 X X 2 X X 1 X X 0 X X X 81 FE FE FE 81 Mẫu chữ U:

7 6 X X 5 X X 4 X X 3 X X 2 X X 1 X X 0 X 83 FD FE FD 83 Mẫu chữ V:

7 6 X X 5 X X 4 X 3 X 2 X 1 X X 0 X X BE DD E3 DD BE Mẫu chữ X:

7 6 X X 5 X X 4 X X 3 X X X 2 X 1 X 0 X 8F F7 F0 F7 8F Mẫu chữ Y:

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 33 of 37

Chương trình hiển thị ký tự A trên led ma trận #include <at89x52.h> #define Hang P0 #define Cot P1 void delay() { TMOD=0x01; TH0=0xFB; TL0=0x00; TR0=1; while(1){ if(TF0==1) break; } TR0=0; TF0=0; } main() { while(1) { Hang=0xE0; Cot=0x02; delay(); Hang=0xDB; Cot=0x04; delay(); Hang=0xBB; Cot=0x08; delay(); Hang=0xDB; Cot=0x10; delay(); Hang=0xE0; Cot=0x20; delay(); } } Bài tập ứng dụng về nhà

- Chương trình chớp tắt ký tự A trên Led ma trận

- Chương trình chớp tắt ký tự A hiển thị hai màu xanh và đỏ trên Led ma trận

- Chương trình chạy chuỗi ABCD từ trái sang phải trên Led ma trận

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 34 of 37

IV. ĐIỀU KHIỂN LCD.

Giao tiếp với LCD

Sơ đồ nguyên lý.

D1

A2

C2

CAP

A2

C3CAP

R3R

12

D3

VCC_CIRCLE

D6D6

Q1

CRYSTAL

R1

RESISTOR VAR

1 3

2

D7

D4

J1

CON2

12

D3

C1CAP

12

VCC_CIRCLE

VCC_CIRCLE

SW1

SW PUSHBUTTON

12

D5

D0

D4

A3

D7

VCC_CIRCLE

U1

AT89C51

9

18

19

20

2930

3140

123

45678

2122232425262728

10

11121314151617

3938373635343332

RST

XT

AL

2

XT

AL

1

GND

PSENALE/PROG

EA/VPPV

CC

P1.0P1.1P1.2

P1.3P1.4P1.5P1.6P1.7

P2.0/A8P2.1/A9

P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

P3.0/RXD

P3.1/TXDP3.2/INT0P3.3/INT1

P3.4/T0P3.5/T1

P3.6/WRP3.7/RD

P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7

D5

A3

D2

D0

A1

U2

LCD 5X7

1

2

3

456789

1011121314

15

16

GND

VCC

VR

RSR/WENDB0DB1DB2DB3DB4DB5DB6DB7

A

K

D1D2

A1

DIỄN GIẢI CHI TIẾT.

Mô tả chân LCD:

Chân Ký hiệu I/O Mô tả 1 GND - Đất 2 VCC - Nguồn 5V 3 VR - Nguồn điều khiển tương phản

4 RS I RS=0 chọn thanh ghi lệnh

RS=1 chọn thanh ghi dữ liệu

5 R/W I RW=1 đọc dữ liệu RW=0 ghi dữ liệu

6 EN I Cho phép hoạt động 7 DB0 I/O Bus dữ liệu 8 bit 8 DB1 I/O Bus dữ liệu 8 bit 9 DB2 I/O Bus dữ liệu 8 bit

10 DB3 I/O Bus dữ liệu 8 bit 11 DB4 I/O Bus dữ liệu 8 bit 12 DB5 I/O Bus dữ liệu 8 bit

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 35 of 37

13 DB6 I/O Bus dữ liệu 8 bit 14 DB7 I/O Bus dữ liệu 8 bit 15 A - Nguồn 5V 16 K - Đất

Mã lệnh LCD:

Mã (Hex) Lệnh thanh ghi LCD 1 Xóa màn hình hiển thị 2 Trở về đầu dòng 4 Dịch con trỏ sang trái 6 Dịch con trỏ sang phải 5 Dịch hiển thị sang phải 7 Dịch hiển thị sang trái 8 Tắt con trỏ, tắt hiển thị A Tắt hiển thị, bật con trỏ C Bật hiển thị, tắt con trỏ E Bật hiển thị, nhấp nháy con trỏ F Tắt con trỏ, nhấp nháy con trỏ 10 Dịch vị trí con trỏ sang trái 14 Dịch vị trí con trỏ sang phải 18 Dịch toàn bộ hiển thị sang trái 1C Dịch toàn bộ hiển thị sang phải 80 Đưa con trỏ về đầu dòng thứ nhất C0 Đưa con trỏ về đầu dòng thứ hai 38 Hai dòng ma trận 5x7

Bài tập ứng dụng.

Viết chương trình cho Vi Điều Khiển điều khiển LCD hiển thị dòng chữ thứ nhất “A, B, C, D” và dòng chữ thứ hai “BAI TAP UNG DUNG LCD”.

#include <at89x52.h> #define RS P3_0 #define RW P3_1 //RW=0 => ghi #define EN P3_2 //RW=1 => doc //RS=0 => code //RS=1 => data #define LCD_PORT P1 void delay_5ms() {

int i,j; for(i=0;i<250;i++)

for(j=0;j<4;j++){} } void delay_15ms() {

int i,j; for(i=0;i<250;i++)

for(j=0;j<100;j++){}

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 36 of 37

} void LCDWriteCmd(unsigned char c) { RS=0; RW=0; LCD_PORT=c; EN=1; EN=0; delay_5ms(); } void LCDWriteData(unsigned char c) { RS=1; RW=0; LCD_PORT=c; EN=1; EN=0; delay_5ms(); } void LCD_init() { delay_15ms(); LCDWriteCmd(0x30); LCDWriteCmd(0x30); LCDWriteCmd(0x30); LCDWriteCmd(0x38); LCDWriteCmd(0x0C); // LCDWriteCmd(0x06); LCDWriteCmd(0x01); // Xoa man hinh LCD } void LCD_clear() { LCDWriteCmd(0x01); } void LCD_home() { LCDWriteCmd(0x80); } void LCD_putstr(unsigned char *s) { while (*s) { LCDWriteData(*s); s++; } }

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Biên soạn: Nguyễn Bá Thuận Page 37 of 37

void main() { LCD_init(); LCDWriteCmd(0x01); LCDWriteCmd(0x80); LCDWriteData('A'); LCDWriteData('B'); LCDWriteData('C'); LCDWriteData('D'); LCDWriteCmd(0xC0); LCD_putstr("BAI TAP UNG DUNG LCD "); while (1) {} }

Bài tập ứng dụng về nhà. - Viết chương trình cho Vi Điều Khiển điều khiển LCD hiển thị dòng chữ thứ

nhất “DAI HOC LAC HONG” và dòng chữ thứ hai “KHOA CO DIEN”. Dịch qua trái