完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include #defineOPEN_DOOR DOOR = 1 #defineCLOSE_DOOR DOOR = 0 #defineNO_FREE_PARK {RED_LED=1;GREEN_LED=0;} #defineHAVE_FREE_PARK {RED_LED=1;GREEN_LED=0;} #defineSEG P0 ***itbaiw=P2^0; ***itshiw=P2^1; ***itgew=P2^2; ***itEXT_LINE = P3^0; // ***itiNT_LINE = P3^1; // ***itSW1 = P0^3; ***itDOOR = P0^2; //1 打开,0 关闭 ***itRED_LED = P0^0;//空闲指示灯 1 亮表示无空闲车位 ***itGREEN_LED = P0^0;//空闲指示灯 1 亮表示有空闲车位 unsignedchar total_num=255; //最大车位 unsignedchar remain_num=255; //剩余车位 unsignedchar dai,shi,ge; unsignedchar check_car(void); void delay_ms(unsigned int ms); voiddisplay(unsigned char va); unsignedchar seg7code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; voidmain(void) { EX0=1;; EX1=1; EA=1; while(1) { if(1==check_car()) //如果检测到car 出入 { OPEN_DOOR; //启动定时器的程序 TMOD=0X01; TH0=0XFF; TL0=0; EA=1; ET0=1; TR0=1; //end of"启动定时器的程序" } else { ;// do nothing } if(0==remain_num) { NO_FREE_PARK; } else { HAVE_FREE_PARK; } if(0==SW1) { display(remain_num); } else { display(total_num); } } } unsignedchar check_car(void) { unsigned char ext_1=0; unsigned char int_1=0; unsigned char ext_2=0; unsigned char int_2=0; unsigned char return_flag=0; EXT_LINE = 1; INT_LINE = 1; //设置为读 ext_1 = EXT_LINE; int_1 = INT_LINE;//读取状态 if((0==ext_1)&&(0==int_1))//没有车 { ; } else if((1==ext_1)&&(1==int_1))//车在门口,还没有出去 { ; } else if((1==ext_1)&&(0==int_1)) { delay_ms(1000);//延时 ext_2 = EXT_LINE; int_2 = INT_LINE;//读取状态 if((0==ext_1)&&(1==int_1)) //有车进入 { remain_num--; return_flag = 1; } else //异常 { ;//do nothing } } else // if((0==ext_1)&&(1==int_1)) { delay_ms(1000);//延时 ext_2 = EXT_LINE; int_2 = INT_LINE;//读取状态 if((1==ext_1)&&(0==int_1)) //有车出去 { remain_num++; return_flag= 1; } else //异常 { ; } } return return_flag; } void delay_ms(unsigned int ms) // Fosc=11.0592MHz { unsigned char i; for(;ms>0;ms--) { for(i=0;i<124;i++) { ; } } } //中断 用于关门 voidtime_0(void) interrupt 1 { unsigned char ext_1=0; unsigned char int_1=0; EXT_LINE = 1; INT_LINE = 1; //设置为读 ext_1 = EXT_LINE; int_1 = INT_LINE;//读取状态 if((0==ext_1)&&(0==int_1))//没有车 关门 停止计时 { CLOSE_DOOR; //关闭定时器的程序 ET0=0; TR0=0; //end of "关闭定时器的程序" } else //有车 继续定时检查 { TH0=0XFF; TL0=0; } } //增加键中断 voidkey_0(void) interrupt 0 { total_num++; if(total_num
{ remain_num = total_num; } } //减少键中断 voidkey_1(void) interrupt 2 { total_num--; if(total_num
{ remain_num = total_num; } } //显示程序 voiddisplay(unsigned char va) { bai=va/100; //处理数据 shi=va%100/10; ge=va%10; gew=1; //数码管显示车位 shiw=1; baiw=1; SEG=seg7code[bai]; baiw=0; Delay_ms(2); baiw=1; SEG=seg7code[shi]; shiw=0; Delay_ms(2); shiw=1; SEG=seg7code[ge]&0x7f; gew=0; Delay_ms(2); gew=1; } |
|
相关推荐
1个回答
|
|
快回复,赚币下好东东,好了,打开看了,不错,适合我这样的初学者。谢楼主
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
6130 浏览 3 评论
7398 浏览 1 评论
7633 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
9426 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1276 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 23:08 , Processed in 0.542417 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号