版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章标题XXXVI参考文献[1]刘立国,程继夏.汽车保有量与国民经济GDP及相关产业关系[J].长安大学学报,2005,7(3):35-38[2]周智勇,陈峻.城市停车诱导信息系统发展应用综述[J].交通运输系统工程与信息,2006,4(2):27-30[3]林立,张俊亮.单片机原理及应用[M].北京:电子工业出版社,2012[4]徐爱钧.智能化测量控制仪表原理与设计[M].北京:北京航空航天大学出版社,2007[5]杨博,李伟洲.基于单片机的新型多路数据采集系统[J].仪表及技术与传感器学报,2006,3(7):27-31[6]孙壮志,许娟,邱绪建,等.北京市停车问题及其解决对策初探[J].工程建设与设计,2008,(12):11-14[7]刘妓.智能停车场管理系统的研究[D].长沙:湖南大学硕士学位论文,2011[8]黄永清.基于车联网技术的智能停车信息服务系统[J].人工智能与识别技,2011,(12):95-97[9]张毅刚.单片机原理及接口技术[M].北京:人民邮电出版社,2011[10]张桂珠,刘丽,陈爱国,等.Java面向对象程序设计[M].北京:北京邮电大学出版社,2011[11]毕广吉.Java程序设计实例教程[M].北京:冶金工业出版社,2007[12]王保罗.Java面向对象程序设计[M].北京:清华大学出版社,2003[13]刘腾红.孙细明.信息系统分析与设计[M].北京:科学出版社,2003[14]陈艾.敏感材料与传感器[M].北京:高等教育出版社,2008[15]高晓蓉.传感器技术[M].成都:西安交通大学出版社,2008[16]彭军.传感器与检测技术[M].北京:高等教育出版社,2011[17]王元庆.新型传感器原理及应用[M].北京:机械工业出版社,2003[18]赵茂泰.智能仪器原理及应用[M].北京:电子工业出版社,2009附录1.1LCD1602在本设计的应用本设计在利用超声波采集车位信息是借助了LCD1602液晶显示,1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。1.1.11602LCD主要技术参数1.显示容量:16×2个字符2.芯片工作电压:4.5—5.5V3.工作电流:2.0mA(5.0V)4.模块最佳工作电压:5.0V5.字符尺寸:2.95×4.35(W×H)mm1.1.2引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表1-1所示:表1-1第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。1.1.31602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如表1-2所示:表1-21602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。读写操作时序如图1-3和1-4所示:图1-3读操作时序图1-4写操作时序硬件原理图如图1-5所示。图1-5LCD1602硬件原理图LCD1602在本设计运行时的效果图:图1-6LCD1602运行效果图2.1部分关键源程序短信API源代码:publicclassSendMsg_webchinese{ publicstaticvoidmain(String[]args)throwsException{ HttpClientclient=newHttpClient(); PostMethodpost=newPostMethod("/web_api/"); post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=gbk");//在头文件中设置转码 NameValuePair[]data={newNameValuePair("Uid","洛理小子"),//注册的用户名 newNameValuePair("Key","a47ec7bc4289198f8a4d"), //注册成功后,登录网站使用的密钥,这个密钥要登录到国建网然后有一个API接口,点进去就有一个key,可以改,那个才是密钥 newNameValuePair("smsMob",),//手机号码 newNameValuePair("smsText","车位预定成功,欢迎来到洛阳理工智能停车场!")};//设置短信内容 post.setRequestBody(data); client.executeMethod(post); Header[]headers=post.getResponseHeaders(); intstatusCode=post.getStatusCode(); System.out.println("statusCode:"+statusCode); for(Headerh:headers){ System.out.println(h.toString()); } Stringresult=newString(post.getResponseBodyAsString().getBytes( "gbk")); System.out.println(result); post.releaseConnection(); }}车辆检测源代码:#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitIN1=P1^0; //P10与电机驱动IN1相连sbitIN2=P1^1;sbitinter=P3^2;sbitled=P2^0;sbitENA1=P1^4; voidDelayUs2x(unsignedchart) { while(--t); } voidDelayMs(unsignedintt) { while(t--) {DelayUs2x(245);//大致延时1mS DelayUs2x(245); } //延时函数 } voidGo(void){ ENA1=0; DelayMs(5000); ENA1=1; IN1=1; IN2=0; } voidBack(void){ ENA1=0; DelayMs(5000); ENA1=1; IN1=0; IN2=1; } voidmain(void){ IT0=1; EX0=1; EA=1; while(1){ EX0=1; led=1; } } voiddianji()interrupt0{ led=0; Go(); DelayMs(1000); Back(); DelayMs(1000); EX0=0; ENA1=0; DelayMs(500); ENA1=0; IN1=0; IN2=0; }上位机串口源代码:publicclassSerialReaderextendsObservableimplementsRunnable, SerialPortEventListener,Serializable{ staticCommPortIdentifierportId; intdelayRead=200; intnumBytes;//buffer中的实际数据字节数 privatestaticbyte[]readBuffer=newbyte[4096];//4k的buffer空间,缓存串口读入的数据 staticEnumerationportList; InputStreaminputStream; SerialPortserialPort; HashMapserialParams; //端口读入数据事件触发后,等待n毫秒后再读取,以便让数据一次性读完 publicstaticfinalStringPARAMS_DELAY="delayread";//延时等待端口数据准备的时间 publicstaticfinalStringPARAMS_TIMEOUT="timeout";//超时时间 publicstaticfinalStringPARAMS_PORT="portname";//端口名称 publicstaticfinalStringPARAMS_DATABITS="databits";//数据位 publicstaticfinalStringPARAMS_STOPBITS="stopbits";//停止位 publicstaticfinalStringPARAMS_PARITY="parity";//奇偶校验 publicstaticfinalStringPARAMS_RATE="rate";//波特率 publicSerialReader(HashMapparams){ serialParams=params; init(); } privatevoidinit(){ try{ //参数初始化 inttimeout=Integer.parseInt(serialParams.get(PARAMS_TIMEOUT) .toString()); intrate=Integer.parseInt(serialParams.get(PARAMS_RATE) .toString()); IntdataBits=Integer.parseInt(serialParams.get(PARAMS_DATABITS) .toString()); IntstopBits=Integer.parseInt(serialParams.get(PARAMS_STOPBITS) .toString()); intparity=Integer.parseInt(serialParams.get(PARAMS_PARITY) .toString()); delayRead=Integer.parseInt(serialParams.get(PARAMS_DELAY) .toString()); Stringport=serialParams.get(PARAMS_PORT).toString(); //打开端口 portId=CommPortIdentifier.getPortIdentifier(port); serialPort=(SerialPort)portId.open("SerialReader",timeout); inputStream=serialPort.getInputStream(); serialPort.addEventListener(this); serialPort.notifyOnDataAvailable(true); serialPort.setSerialPortParams(rate,dataBits,stopBits,parity); }catch(PortInUseExceptione){ System.out.println("端口已经被占用!"); e.printStackTrace(); }catch(TooManyListenersExceptione){ System.out.println("端口监听者过多!"); e.printStackTrace(); }catch(UnsupportedCommOperationExceptione){ System.out.println("端口操作命令不支持!"); e.printStackTrace(); }catch(NoSuchPortExceptione){ System.out.println("端口不存在!"); e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } ThreadreadThread=newThread(this); readThread.start(); } publicvoidrun(){ try{ Thread.sleep(100); }catch(InterruptedExceptione){ } } publicvoidserialEvent(SerialPortEventevent){ try{ //等待1秒钟让串口把数据全部接收后在处理 Thread.sleep(delayRead); }catch(InterruptedExceptione){ e.printStackTrace(); } switch(event.getEventType()){ caseSerialPortEvent.BI://10 caseSerialPortEvent.OE://7 caseSerialPortEvent.FE://9 caseSerialPortEvent.PE://8 caseSerialPortEvent.CD://6 caseSerialPortEvent.CTS://3 caseSerialPortEvent.DSR://4 caseSerialPortEvent.RI://5 caseSerialPortEvent.OUTPUT_BUFFER_EMPTY://2 break; caseSerialPortEvent.DATA_AVAILABLE://1 try{ numBytes=inputStream.read(readBuffer);//将所有数据读入 changeMessage(readBuffer,numBytes); }catch(IOExceptione){ e.printStackTrace(); } break; } } //通过observerpattern将收到的数据发送给observer //将buffer中的空字节删除后再发送更新消息,通知观察者 publicvoidchangeMessage(byte[]message,intlength){ setChanged(); byte[]temp=newbyte[length]; System.arraycopy(message,0,temp,0,length); notifyObservers(temp); } staticvoidlistPorts(){ EnumerationportEnum=CommPortIdentifier.getPortIdentifiers(); while(portEnum.hasMoreElements()){ CommPortIdentifierportIdentifier=(CommPortIdentifier)portEnum .nextElement(); System.out.println(portIdentifier.getName()+"-" +getPortTypeName(portIdentifier.getPortType())); } } staticStringgetPortTypeName(intportType){ switch(portType){ caseCommPortIdentifier.PORT_PARALLEL: return"Parallel"; caseCommPortIdentifier.PORT_SERIAL: return"Serial"; default: return"unknowntype"; } } publicstaticHashSet<CommPortIdentifier>getAvailableSerialPorts(){ HashSet<CommPortIdentifier>h=newHashSet<CommPortIdentifier>(); EnumerationthePorts=CommPortIdentifier.getPortIdentifiers(); while(thePorts.hasMoreElements()){ CommPortIdentifiercom=(CommPortIdentifier)thePorts .nextElement(); switch(com.getPortType()){ caseCommPortIdentifier.PORT_SERIAL: try{ CommPortthePort=com.open("CommUtil",50); thePort.close(); h.add(com); }catch(PortInUseExceptione){ System.out.println("Port,"+com.getName() +",isinuse."); }catch(Exceptione){System.out.println("Failedtoopenport"+com.getName()+e); } } } returnh; }}移动应用用户注册源代码:publicclassRegisterActivityextendsActivity{ privateEditTextet_tel,et_psw,et_checkpsw,et_carno; privateEditTextet_pro,et_city; privateStringresult; publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); et_tel=(EditText)findViewById(R.id.et_tel); et_psw=(EditText)findViewById(R.id.et_psw); et_checkpsw=(EditText)findViewById(R.id.et_checkpsw); et_carno=(EditText)findViewById(R.id.et_carno); et_pro=(EditText)findViewById(R.id.et_province); et_city=(EditText)findViewById(R.id.et_city); } publicvoidregister(Viewview){//注册按钮监听 register(); } publicvoidexit(Viewview){//退出按钮监听 System.exit(0); } privatevoidregister(){ //或取注册所需要的各项信息 finalStringnumber=et_tel.getText().toString().trim(); finalStringpassword=et_psw.getText().toString().trim(); StringcheckPwd=et_checkpsw.getText().toString().trim(); finalStringcarNo=et_carno.getText().toString().trim(); finalStringprovince=et_pro.getText().toString().trim(); finalStringcity=et_city.getText().toString().trim(); System.out.println(number); //UsersDaodao=newUsersDao(RegisterActivity.this); if(number!=null&&password!=null&&password.equals(checkPwd) &&carNo!=null){//判断输入是否为空 newThread(){ publicvoidrun(){ //调用注册的方法 result=RegisterService.RegisterByGet(number,password, carNo,province,city); if(result!=null){//检查返回结果 runOnUiThread(newRunnable(){//将UI线程加入主线程 publicvoidrun(){ Toast.makeText(RegisterActivity.this,"注册成功!", Toast.LENGTH_SHORT).show(); startActivity(newIntent().setClass(//成功后跳转到登录页 RegisterActivity.this, LoginActivity.class)); } }); }else{ runOnUiThread(newRunnable(){ publicvoidrun(){ Toast.makeText(RegisterActivity.this,"注册失败!", Toast.LENGTH_SHORT).show(); } }); } } }.start(); }else{ Toast.makeText(RegisterActivity.this,"输入不能为空!", Toast.LENGTH_SHORT).show(); } }}车位信息获取源代码:publicclassShowParkInfoextendsActivity{ //变量声明 protectedstaticfinalintSHOW=0; protectedstaticfinalintERROR=1; privateTextViewtv_show; privateStringtext; protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.showparkinfo); tv_show=(TextView)findViewById(R.id.tv_show); } //消息队列处理 Handlerhandler=newHandler(){ publicvoidhandleMessage(Messagemsg){ super.handleMessage(msg); switch(msg.what){ caseSHOW: tv_show.setText(text); break; case
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学生会副主席个人工作总结
- 如何讲解机动车商业险-中国人寿财产保险公司新人培训课程模板课件
- 家庭金融理财
- 合同签署申请表-外包-V1.0
- 六年级上册道德与法治课件
- 《冬季如何进补》课件
- 《产销资料库》课件
- 地铁公共安全教育课件
- 卷02-备战2023年中考生物【名校地市好题必刷】全真模拟卷(福建专用)·第一辑(解析版)
- 医学生目标规划
- 沉积岩石学论述题总结
- 中国银行中银金融租赁有限公司2023年校园招聘15名人员笔试历年高频考点试题答案详解
- 前庭大腺囊肿
- 厨余垃圾处理器
- 煤矿安全责任清单
- 新高处安装维护拆除作业专题培训课件
- 精神分裂症诊断与治疗课件整理
- 2023年二十中创建现代化学校自查自评报告
- JIS-G4305-2005-中文版-冷轧不锈钢板材、薄板和带材
- 中药学电子版教材
- 北师大四年级数学上册总复习课件
评论
0/150
提交评论