车库门设计系统C源程序清单Word文件下载.docx

上传人:b****3 文档编号:16952163 上传时间:2022-11-27 格式:DOCX 页数:22 大小:18.18KB
下载 相关 举报
车库门设计系统C源程序清单Word文件下载.docx_第1页
第1页 / 共22页
车库门设计系统C源程序清单Word文件下载.docx_第2页
第2页 / 共22页
车库门设计系统C源程序清单Word文件下载.docx_第3页
第3页 / 共22页
车库门设计系统C源程序清单Word文件下载.docx_第4页
第4页 / 共22页
车库门设计系统C源程序清单Word文件下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

车库门设计系统C源程序清单Word文件下载.docx

《车库门设计系统C源程序清单Word文件下载.docx》由会员分享,可在线阅读,更多相关《车库门设计系统C源程序清单Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。

车库门设计系统C源程序清单Word文件下载.docx

uchartemp;

ucharkey;

ucharkeycount;

ucharpslen=5;

uchargetps[6];

bitkeyoverflag;

biterrorflag;

bitrightflag;

uintsecond3;

uintaa,bb;

uintcc;

bitokflag;

bitalarmflag;

ucharoka,okb;

sbitled=P3^6;

sbitkeyhong=P3^2;

sbitkeykong=P3^7;

sbitVT=P3^3;

voiddelay(uintz)//1ms

{

uintx,y;

for(x=z;

x>

0;

x--)

for(y=110;

y>

y--);

}

voidkeyscan()

{

uchari;

P1=0xff;

P1_4=0;

temp=P1;

temp=temp&

0x0f;

if(temp!

=0x0f)

{

delay(5);

switch(temp)

case0x0e:

key=7;

break;

case0x0d:

key=8;

case0x0b:

key=9;

case0x07:

//第一列7,8,9,10

key=10;

}

//P1_1=~P1_1;

if((key>

=0)&

&

(key<

10))//如果键值为一位数字则使该位dispbuf[keycount+2]=19,能否显示还要做一些处理

if(keycount<

6)

getps[keycount]=key;

//keycount共为六,即密码为六位数,将第一个key给getps[0];

然后keycount++,用于后面密码的比较

dispbuf[keycount+2]=19;

//------------------从第二位开始显示,并且是

为了他显示8.做准备

keycount++;

if(keycount==6)

keycount=6;

//当keycount=6时不再允许输数

elseif(keycount>

keyoverflag=1;

//keyoverflow

//当keycount>

6,即超过密码长度时,令keycount=6并且keyoverflag=1,报警标志位

elseif(key==12)//deletekey//若键值为12,则此键是删除键

if(keycount>

0)

keycount--;

//密码长度减一

getps[keycount]=0;

dispbuf[keycount+2]=16;

//----------------相当于关断显示16

else

{//keycnt=0时即当前没有一位密码数据显示时却按下了deletekey则发出警报

elseif(key==15)//enterkey//除了键值小于10,键值=12的情况外的另外一种情况,即enterkey

if(keycount!

=pslen)//当密码长度与设定的值不同时,密码错误标志位置1,密码正确标志位置0,并且second3=0,响警报

errorflag=1;

rightflag=0;

second3=0;

for(i=0;

i<

keycount;

i++)//若得到的密码与设定的不一致时,密码错误标志位置1,密码正确标志位置0,并且second3=0,响警报

if(getps[i]!

=ps[i])

i=keycount;

gotoa;

errorflag=0;

//否则密码正确,密码错误标志位置0,密码正确标志位置1,将keycount给i,例如keycount=5

rightflag=1;

//判断按键是否松开了

while(temp!

temp=P1;

keyoverflag=0;

//?

?

//若按键松开了,则报警标志位置0,即停止报警

P1_5=0;

temp=temp&

key=4;

key=5;

key=6;

//第二列对应4,5,6,11

key=11;

10))

//keyoverflow

elseif(key==12)

//deletekey

keycount--;

dispbuf[keycount+2]=16;

elseif(key==15)

//enterkey

=pslen)

i++)

gotoa4;

a4:

P1_6=0;

key=1;

key=2;

key=3;

//第三列对应1,2,3,12

key=12;

elseif(key==12)//deletekey

elseif(key==15)//enterkey

gotoa3;

a3:

P1_7=0;

key=0;

key=13;

key=14;

//第四列对应0,13,14,15

key=15;

gotoa2;

a2:

voidkaimen()

led=0;

P3_0=0;

P3_1=1;

delay(1000);

P3_0=1;

voidguanmen()

led=1;

P3_1=0;

voidmain()

//VT=0;

//flag=0;

cnt=0;

cnt1=0;

//keyhong=0;

TMOD=0x010;

TH1=(65536-500)/256;

TL1=(65536-500)%256;

ET1=1;

EX0=1;

IT0=1;

EA=1;

TR1=1;

P0=0xff;

//P3_0=0;

//P3_1=0;

while

(1)

if(VT==0)

//解码器PT2272解码输出

if(VT==0)

//马达正转车库门开,灯亮只要解码成功就执行如下动作

kaimen();

}

if(keykong==0)

cnt1++;

switch(cnt1)

case1:

//flag=1;

EX0=0;

break;

case2:

//flag=0;

cnt=0;

guanmen();

while(!

keykong);

keyscan();

if(flag1==1)

flag1=0;

/*if(flag==1)

//P2=0xff;

/*voidhongwai()

//红外对管作用,车进门时不起作用,人出车库门时才起作用,车库内灯熄灭,马达反转门关

if(keyhong==0)

cnt++;

switch(cnt)

led=1;

delay(1000);

P3_0=1;

cnt=0;

break;

//while(keyhong);

//delay(5);

}*/

voidint0()interrupt0

delay(1100);

voidt1()interrupt3

{

flashcount++;

if(flashcount==8)

//每4ms就进行段码和位码的扫瞄显示输出

flashcount=0;

P2=dispcode[dispbuf[dispcount]];

//dispcount从0开始,dispbuf[0]是"

dispbuf[1]熄,从dispbuf[2]开始为按键的值,只不过用8显示

//dispbuf[dispcount]要么为16要么为19,当显示该位密码时为19,当删除该位密码数据时为16

P0=dispbit[dispcount];

dispcount++;

if(dispcount==8)

dispcount=0;

if((errorflag==1)&

(rightflag==0))//两种报警声

bb++;

if(bb==800)

bb=0;

alarmflag=~alarmflag;

if(alarmflag==1)

//soundalarmsignal

P3_4=~P3_4;

second3++;

if(second3==6400)

alarmflag=0;

elseif((errorflag==0)&

(rightflag==1))

cc++;

if(cc<

1000)

okflag=1;

elseif(cc<

2000)

okflag=0;

P3_4=1;

cc=0;

oka=0;

okb=0;

}

if(okflag==1)

oka++;

if(oka==2)

okb++;

if(okb==3)

if(keyoverflag==1)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 图表模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1