Mạch bố trớ linh kiện X.3 Mạch in.

Một phần của tài liệu Mô hình hệ thống cửa tự động” với vi điều khiển “ P89V51RD2FN” (Trang 107)

DC bỏn dẫn 100 mA ở 48 V; dũng điện rũ: tối đa 0,1 mA Thời gian đỏp ứng Tối đa 30 ms

CHƯƠNG IX: THUYẾT TRèNH NGUYấN Lí HOẠT ĐỘNG

X.2. Mạch bố trớ linh kiện X.3 Mạch in.

/*************************************************************************/

/* Truong Dai hoc Cong nghiep Ha Noi */

/* Lop LT CD DH Dien 2 K2 */

/* Ngay bat dau: 30/3/2010 */

/* Ngay hoan thanh: */

/* MCU: P89V51RD2FN */

/*--- */

/* Cac thanh vien trong nhom: */

/* Le Hung Manh */

/* Bui Thi Diu */

/* Le Quang Tan */

/* Pham Manh Ha */

/* Nguyen Van Luan */

/*************************************************************************//* Last update: 19h 8/5/2010 --- /* Last update: 19h 8/5/2010 ---

version 1: INT0:mo cua; INT1: open/close complete; Counter2 dem encoder version 2: Sua loi digital clock

version 3: INT1: encoder; khong su dung Counter2

version 4: Chinh sua lai chuong trinh con close door, close door, INT0 Su dung cac lenh break va goto de re nhanh dieu khien version 5: Xoa chuong trinh con auto or hand

Them bit TIME_ON dieu khien hien thi thoi gian tren LCD Hoan thien chuong trinh con setup time

Them tinh nang bam giu de dong/mo cua o button 5 & 6 Khong hien thi bien second o dong ho so

Chay thu phan dieu khien LCD va giao tiep nut bam tren mach version 6: Chinh sua lai Encoder

Sua cchuong trinh day_or_night Tinh chinh chuong trinh cho gon nhe

Them chuong trinh con kiem tra cac cam bien test_sensor Thay doi gia tri mac dinh cua thoi gian la 8h30'00" 15/5/2010

/*>>>>>>>>>>>>>>>>>>>>>>>> Chuong trinh dieu khien <<<<<<<<<<<<<<<<<<<<<<<<*/

/*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx khai bao xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/

//Cac thu vien su dung ---

2: VDD 4: RS 6: E 8: DB110:DB3 12:DB5 14:DB7 16:LED K */

sfr LCDdata = 0xA0; //port 2

sbit BF = P2^7; //busy flag - bit 7

sbit RS = P3^5; //Reset sbit RW = P3^6; //Write sbit EN = P3^7; //Enable //Sensor--- sbit SENSOR = P3^2; sbit SW_OPEN = P1^0; sbit SW_CLOSE = P1^1; //Control motor ---

sbit ROLE=P1^2; //p1.0 bit dao chieu dong co

//p1.4 CCAP 1H - PWM dong co //du tru chan PWM P1.5 va role P1.3 //Den chieu sang ---

sbit LIGHT1 = P1^7; //bit dieu khien bat/tat den, khong PWM

sbit LIGHT2 = P1^6;

//Phan biet sang toi ---

sbit DAY_OR_NIGHT = P3^4;

// Bien toan cuc ---

unsigned char FLAG_OPEN=0;// co bao trang thai open complete = 1 ->active

unsigned char FLAG_CLOSE=0;// co bao trang thai close complete = 1 ->active

unsigned char FLAG_INT0=0; // co nho tin hieu ngat INT0

unsigned char TEST_OK; //co kiem tra ngat INT0

unsigned char B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,B13; //bit nho nut bam

unsigned char EXIT,AUTO_HAND;// bit nho nut bam

unsigned char i, TOTAL; //Bien trung gian phuc vu chuong trinh xu ly nut bam

unsigned char ENCODER=0; //Bien luu giu so xung Encoder dem duoc

unsigned int over=0; //Bien phuc vu ngat timer

unsigned char second=0,min=30,hour=8,day=15,month=5; //bien gio, phut, giay

unsigned int year=2010;

unsigned char TIME_ON; //bit cho phep hien thi thoi gian tren LCD

// loi vao xung encoder la chan p1.1

unsigned char TEST_LIGHT=3,ON_OFF;

/*xxxxxxxxxxxxxxxxxxxxxxxxxxx hàm trờ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/

void delay( long time)

{long n; for (n=0; n<time;n++) {;} }

/*xxxxxxxxxxxxxxxxxxxxxxx cac ham bat tat den xxxxxxxxxxxxxxxxxxxxxxxxxxx*/

void turn_on(void)

{ LIGHT1 = 1; LIGHT2 = 1; }

void turn_off(void)

{

{TEST_LIGHT++;}

else

{TEST_LIGHT--;}

switch(TEST_LIGHT)

{

case 0:{TEST_LIGHT=5; ON_OFF=1; turn_on(); break;} case 1:{break;} case 2:{break;} case 3:{break;} case 4:{break;} case 5:{break;} case 6:{break;} case 7:{break;} case 8:{break;} case 9:{break;}

case 10:{TEST_LIGHT=5; ON_OFF=0; turn_off(); break;}

}} }

/*xxxxxxxxxxxxxxxxxxxxxxx cac ham con LCD xxxxxxxxxxxxxxxxxxxxxxxxxx*/

//hàm kiờm tra LCD cú bõn hay khụng ---

void wait(void)

{

long n=0;

EN=1; //dua chan cho phep len 1

RS=0; //chon thanh ghi lờnh

RW=1; // doc tự LCD

LCDdata=0xFF; //gia tri 0xFF

while(BF){n++; if(n>100)break;} //kiờm tra co ban //nờu LCD bõn dờm n den 100 roi thoỏt khoi while

EN=0; //dua xung cao xuong thap de chot

RW=0; //doc tu LCD

}

// hàm dieu khien LCD thuc hien 1 lenh ---

void LCDcontrol(unsigned char x)

{

EN=1; //dua chan cho phộp lờn cao

RS=0; //chon thanh ghi lờnh

LCDcontrol(0x30); //che do 8 bit - su dung 3 lenh de reset mem LCD

LCDcontrol(0x38); //2 dũng và ma trõn 5x7

LCDcontrol(0x0C); // bõt con tro

LCDcontrol(0x06); //tang con tro và sang phai

LCDcontrol(0x01); //xúa màn hỡnh

}

//hàm lờnh cho LCD hiờn thi 1 kớ tu trong bang ASCII---

void LCDwrite(unsigned char c)

{

EN=1; //cho phep

RS=1; //ghi du liờu

RW=0; //ghi lờn LCD

LCDdata=c; //gia tri c

EN=0;// xung cao xuong thap

wait(); //cho

}

//hàm lờnh cho LCD hiờn thi 1 xõu kớ tu (dũng chu) ---

void LCDputs(unsigned char *s, unsigned char row)

{

/* hàm cú 2 biờn dõu vào là: xõu kớ tu cõn hiờn thi & dũng cõn hiờn thi xõu dú(dũng 1,2) *s là con tro - tro túi biờn s */

unsigned char len;

if (row==1){LCDcontrol(0x80);} //dua con tro ve dau dũng 1

else LCDcontrol(0xC0);//dua con tro ve dau dũng 2

len=strlen(s); // lay do dai bien duoc cho boi con tro

while(len!=0) //khi dụ dài võn cũn

{

LCDwrite(*s); //ghi giỏ tri duoc cho boi con tro

s++; //tang con tro

len--; //tru dụ dài

}} }

// hàm hiờn thi sụ integer ---

void LCDwritei(int d)

{

unsigned char i,j,k,l;

i=d%10; //chia lay phan du,duoc chu so hang don vi

d=d/10; //chia lay phan nguyen, duoc nhung chu so da bo hang don vi

j=d%10; //duoc chu so hang chuc

d=d/10; //duoc hang tram

if (d>1){k=d%10;l=d/10;LCDwrite(48+l);LCDwrite(48+k);}

LCDwrite(48+j); LCDwrite(48+i);

LCDputs(" WELCOME! ",1); delay(30000);

LCDcontrol(0x01); //xúa màn hỡnh

LCDputs("DH CONG NGHIEP HN",1); LCDputs("LOP LTCDDH DIEN2 K2",2); delay(40000);

LCDcontrol(0x01); //xúa màn hỡnh

LCDputs("DO AN TOT NGHIEP",1); LCDputs("MO HINH CUA TU DONG",2); delay(40000);

LCDcontrol(0x01); //xúa màn hỡnh

LCDputs("GVHD: ",1);

LCDputs(" HA VAN PHUONG",2); delay(40000);

LCDcontrol(0x01); //xúa màn hỡnh

LCDputs("NHOM AUTO-D2K2",1); LCDputs("CAC THANH VIEN",2); delay(40000);

LCDcontrol(0x01); //xúa màn hỡnh

LCDputs("LE HUNG MANH",1); delay(30000);

LCDcontrol(0x01); //xúa màn hỡnh

LCDputs("BUI THI DIU",1); LCDputs("LE QUANG TAN",2); delay(30000);

LCDcontrol(0x01); //xúa màn hỡnh

LCDputs("PHAM MANH HA",1); LCDputs("NGUYEN VAN LUAN",2); delay(30000);

Một phần của tài liệu Mô hình hệ thống cửa tự động” với vi điều khiển “ P89V51RD2FN” (Trang 107)

Tải bản đầy đủ (DOC)

(139 trang)
w