基于51单片机的停车场车位显示系统嵌入式.docx
- 文档编号:10218711
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:19
- 大小:229.85KB
基于51单片机的停车场车位显示系统嵌入式.docx
《基于51单片机的停车场车位显示系统嵌入式.docx》由会员分享,可在线阅读,更多相关《基于51单片机的停车场车位显示系统嵌入式.docx(19页珍藏版)》请在冰点文库上搜索。
基于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停车场车位显示系统硬件框图
3.3详细设计
3.3.1电路图
单片机引脚图:
如图4所示,本程序中P3.7接入口传感器,P3.6接车位1传感器,P3.5接车位2传感器,P3.4接车位3传感器。
用于采集信号,控制1602液晶屏的显示。
车位传感器33
2
1
入口传感器
图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/dis2
voidinit_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();//初始化LCD
delay(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);
}
Y
N
N入口无车
Y即入口有车
图6主函数流程图
3.3.3源程序
说明:
由于现阶段只有四个传感器,本程序一个用于入口判定,三个用于车位判定。
#include
#include
#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;i<250;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)
{//写入指令数据到LCD
while(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)
{//写入字符显示数据到LCD
while(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);//显示bit
i=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();//初始化LCD
delay(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
成绩评定
成绩教师签字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 停车场 车位 显示 系统 嵌入式