您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于51单片机的停车场车位显示系统(嵌入式)
软件学院停车场车位显示系统课程名称嵌入式设计设计题目停车场车位显示系统专业班级嵌入式08—1班学号0820010109姓名江兆悦指导教师于美娜2010年12月1设计目的在繁华的大城市中,许多大型超市地下停车场,由于客流量大每次路过车场入口时都会有工作人员在停车场入口指挥,告诉车主哪个车位可以停车或提醒车位已满。如今的社会讲究自动化和智能化,这种车场管理方式十分浪费人力资源。如果入口处有一显示屏幕,当有车辆进入时就会显示空的车位,当车位已满时就显示车位已满,这样就可以免去请专人管理车位。本系统就是为了达到此目的而设计的。2设计任务本系统模型主要分成两大模块,一是传感器的控制,二是1602液晶屏的显示。传感器方面,模型采用漫反射式红外光电开关传感器,暂用四个,一个代表入口处开关,三个代表车位。模型实现当入口有车进入时,判断车位传感器,显示空的车位号,若无空车位则显示Nbit。本模型是最简单模型,由于传感器数量有限只设计3个车位,若要设计多个车位可以采用无线传感器采集信号。在现实中用压力传感器更好。3设计内容3.1系统实现原理3.1.1传感器原理本系统采用漫反射式红外壁障传感器,这是集发射与接收为一体的光电传感器,电路图如图1所示。红外线发射被反射回来信号为0,否则为1。工作原理图如图2所示。图1传感器电路图图2传感器原理3.1.21602液晶屏原理字符型LCD1602有16条引脚线的LCD,其中背光电源线VCC(15脚)和地线GND(16脚),引脚定义如下表所示:1602是指显示的内容为16*2,即可以显示两行,每行16个字符,基于HD44780液晶芯片,HD44780内置了DDRAM、CGROM和CGRAM。DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表:3.1.3系统工作原理入口传感器接入51单片机的P3.7引脚。车位传感器接P3.6、P3.5、P3.4引脚。当入口有车进入时,即P3^7为0,判断若无空车位车位即三个车位引脚值为0,显示Nbit,若有空车位即车位引脚中有值为1的引脚显示该车位号。3.2硬件框图图3停车场车位显示系统硬件框图CPU51单片机P3.4P3.5P3.6P3.71602液晶屏车位传感器3入口传感器车位传感器2车位传感器13.3详细设计3.3.1电路图单片机引脚图:如图4所示,本程序中P3.7接入口传感器,P3.6接车位1传感器,P3.5接车位2传感器,P3.4接车位3传感器。用于采集信号,控制1602液晶屏的显示。车位传感器3321入口传感器图2单片机CPU电路图图4单片机引脚图1602液晶屏电路图:如图5所示。液晶屏用于显示车位情况。图51602液晶屏电路图3.3.2分块设计1、主要的宏定义及函数sbits=P3^4;//3车位传感器sbitd=P3^5;//2车位传感器sbitf=P3^6;//1车位传感器sbitentry=P3^7;//入口传感器BYTEcodedis1[]={Emptycarbit:};BYTEcodedis3[]={bit};delay(BYTEms)//延时lcd_pos(BYTEpos)//设置lcd显示位置lcd_wdat(BYTEdat)//单个字符显示lcd_init()//lcd初始化voidinit_play1(BYTEdis[])//字符串显示,传的参数为字符串dis1/dis2voidinit_play(BYTEachar)//显示车位号_bit,传的参数为空车位的号。2、传感器车位采集信号程序:判断车位是否有车,为空车位显示其对应号码。对应程序为:CarEntry(){while(1){if(f==1){init_play('1');break;}//1号车位为空if(d==1){init_play('2');break;}if(s==1){init_play('3');break;}break;}delay(2000);}3、主函数程序:无车进入时,在液晶屏上显示Emptycarbit:若车位已满时,在液晶屏上显示Emptycarbit:Nbit当入口传感器P3^7=0时表示有车进入,掉用上述函数CarEntry()显示车位情况。程序流程图如图6所示。对应程序为:voidmain(){lcd_init();//初始化LCDdelay(10);lcd_pos(0);//设置显示位置init_play1(dis1);//显示Emptycarbit:while(1){while(f==0&&d==0&&s==0)//车位已满{init_play('N');}if(entry==0)//入口有车进入{CarEntry();}elseinit_play('_');//入口无车进入且车场尚有空位时显示“_bit”}while(1);}YNN入口无车Y即入口有车图6主函数流程图3.3.3源程序调用init_play函数,显示无车位即Nbit开始入口传感器P3^7==0?有车调用init_play函数显示车位号初始化在第一行显示Emptycarbit:车位已满?调用init_play函数,显示_bit说明:由于现阶段只有四个传感器,本程序一个用于入口判定,三个用于车位判定。#includereg51.h#includeintrins.h#defineNUM3;//传感器数目,本程序中没有用到。typedefunsignedcharBYTE;typedefunsignedintWORD;typedefbitBOOL;sbits=P3^4;sbitd=P3^5;sbitf=P3^6;//车位传感器sbitentry=P3^7;//入口传感器sbitrs=P2^6;//1602液晶屏与单片机接口sbitrw=P2^5;sbitep=P2^7;BYTEcodedis1[]={Emptycarbit:};BYTEcodedis3[]={bit};/*************************lcd1602**************************/delay(BYTEms){//延时子程序BYTEi;while(ms--){for(i=0;i250;i++){_nop_();_nop_();_nop_();_nop_();}}}BOOLlcd_bz(){//测试LCD忙碌状态BOOLresult;rs=0;rw=1;ep=1;_nop_();_nop_();_nop_();_nop_();result=(BOOL)(P0&0x80);ep=0;returnresult;}lcd_wcmd(BYTEcmd){//写入指令数据到LCDwhile(lcd_bz());rs=0;rw=0;ep=0;_nop_();_nop_();P0=cmd;_nop_();_nop_();_nop_();_nop_();ep=1;_nop_();_nop_();_nop_();_nop_();ep=0;}lcd_pos(BYTEpos){//设定显示位置lcd_wcmd(pos|0x80);}lcd_wdat(BYTEdat){//写入字符显示数据到LCDwhile(lcd_bz());rs=1;rw=0;ep=0;P0=dat;_nop_();_nop_();_nop_();_nop_();ep=1;_nop_();_nop_();_nop_();_nop_();ep=0;}lcd_init(){//LCD初始化设定lcd_wcmd(0x38);//delay(1);lcd_wcmd(0x0c);//delay(1);lcd_wcmd(0x06);//delay(1);lcd_wcmd(0x01);//清除LCD的显示内容delay(1);}/*********************显示******************************/voidinit_play1(BYTEdis[])//字符串显示{BYTEi;while(dis[i]!='\0'){lcd_wdat(dis[i]);i++;}}voidinit_play(BYTEachar)//显示车位号—bit{BYTEi;lcd_pos(0x43);//设置显示位置第二行第三列lcd_wdat(achar);//传参,车位号lcd_pos(0x45);//显示biti=0;while(dis3[i]!='\0'){lcd_wdat(dis3[i]);i++;}delay(2000);}/*********************车位传感器判定********************************/CarEntry(){while(1){if(f==1){init_play('1');break;}//1号车位为空if(d==1){init_play('2');break;}if(s==1){init_play('3');break;}break;}delay(2000);}/********************主***********************************/voidmain(){lcd_init();//初始化LCDdelay(10);lcd_pos(0);//设置显示位置init_play1(dis1);//显示Emptycarbit:while(1){while(f==0&&d==0&&s==0)//车位已满{init_play('N');}if(entry==0)//入口有车进入{CarEntry();}elseinit_play('_');//入口无车进入且车场尚有空位时显示“_bit”}while(1);}3.3.4测试数据车位已满时显示:Emptycarbit:Nbit入口无车进入时显示:Emptycarbit:_bit有空车位时,入口有车进入显示空车位号:Emptycarbit:1bit(2bit/3bit)4总结与展望本系统设计简单实用,有许多特色,有可观的发展前景。1、对于车场管理方,本系统可以节省一部分人力资源,不用请专人来看管停车场。2、可随意更改模块以实现不同要求。对于大型停车场可以更改传感器类型,采用无线传感器采集信号。3、可实现高档停车场智能管理。在此系统基础上增加安全管理模块,在车位上按震动传感器等,检测车辆在停车时间中是否有碰撞,或检测是否有被盗等事故发生,并以短信形式通知用户。参考文献[1]肖洪兵.跟我学用单片机[M].北京:北京航空航天大学出版社,2002.8[2]何立民.单片机高级教程[M].第1版,北京:北京航空航天大学出版社,2001[3]赵晓安.51单片机原理及应用[M].天津:天津大学出版社,2001.3[4]李广第.单片机基础[M].第1版,北京:北京航空航天大学出版社,1999成绩评定成绩教师签字
本文标题:基于51单片机的停车场车位显示系统(嵌入式)
链接地址:https://www.777doc.com/doc-5210884 .html