0
Tải bản đầy đủ (.doc) (139 trang)

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 -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 -107 )

×