版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章標題XXXVI參考文獻[1]劉立國,程繼夏.汽車保有量與國民經(jīng)濟GDP及相關產(chǎn)業(yè)關系[J].長安大學學報,2005,7(3):35-38[2]周智勇,陳峻.城市停車誘導信息系統(tǒng)發(fā)展應用綜述[J].交通運輸系統(tǒng)工程與信息,2006,4(2):27-30[3]林立,張俊亮.單片機原理及應用[M].北京:電子工業(yè)出版社,2012[4]徐愛鈞.智能化測量控制儀表原理與設計[M].北京:北京航空航天大學出版社,2007[5]楊博,李偉洲.基于單片機的新型多路數(shù)據(jù)采集系統(tǒng)[J].儀表及技術與傳感器學報,2006,3(7):27-31[6]孫壯志,許娟,邱緒建,等.北京市停車問題及其解決對策初探[J].工程建設與設計,2008,(12):11-14[7]劉妓.智能停車場管理系統(tǒng)的研究[D].長沙:湖南大學碩士學位論文,2011[8]黃永清.基于車聯(lián)網(wǎng)技術的智能停車信息服務系統(tǒng)[J].人工智能與識別技,2011,(12):95-97[9]張毅剛.單片機原理及接口技術[M].北京:人民郵電出版社,2011[10]張桂珠,劉麗,陳愛國,等.Java面向對象程序設計[M].北京:北京郵電大學出版社,2011[11]畢廣吉.Java程序設計實例教程[M].北京:冶金工業(yè)出版社,2007[12]王保羅.Java面向對象程序設計[M].北京:清華大學出版社,2003[13]劉騰紅.孫細明.信息系統(tǒng)分析與設計[M].北京:科學出版社,2003[14]陳艾.敏感材料與傳感器[M].北京:高等教育出版社,2008[15]高曉蓉.傳感器技術[M].成都:西安交通大學出版社,2008[16]彭軍.傳感器與檢測技術[M].北京:高等教育出版社,2011[17]王元慶.新型傳感器原理及應用[M].北京:機械工業(yè)出版社,2003[18]趙茂泰.智能儀器原理及應用[M].北京:電子工業(yè)出版社,2009附錄1.1LCD1602在本設計的應用本設計在利用超聲波采集車位信息是借助了LCD1602液晶顯示,1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。1.1.11602LCD主要技術參數(shù)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為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負極。1.1.31602LCD的指令說明及時序1602液晶模塊內部的控制器共有11條控制指令,如表1-2所示:表1-21602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的。(說明: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:字符發(fā)生器RAM地址設置。指令8:DDRAM地址設置。指令9:讀忙信號和光標地址BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。讀寫操作時序如圖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"), //注冊成功后,登錄網(wǎng)站使用的密鑰,這個密鑰要登錄到國建網(wǎng)然后有一個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); } //延時函數(shù) } 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中的實際數(shù)據(jù)字節(jié)數(shù) privatestaticbyte[]readBuffer=newbyte[4096];//4k的buffer空間,緩存串口讀入的數(shù)據(jù) staticEnumerationportList; InputStreaminputStream; SerialPortserialPort; HashMapserialParams; //端口讀入數(shù)據(jù)事件觸發(fā)后,等待n毫秒后再讀取,以便讓數(shù)據(jù)一次性讀完 publicstaticfinalStringPARAMS_DELAY="delayread";//延時等待端口數(shù)據(jù)準備的時間 publicstaticfinalStringPARAMS_TIMEOUT="timeout";//超時時間 publicstaticfinalStringPARAMS_PORT="portname";//端口名稱 publicstaticfinalStringPARAMS_DATABITS="databits";//數(shù)據(jù)位 publicstaticfinalStringPARAMS_STOPBITS="stopbits";//停止位 publicstaticfinalStringPARAMS_PARITY="parity";//奇偶校驗 publicstaticfinalStringPARAMS_RATE="rate";//波特率 publicSerialReader(HashMapparams){ serialParams=params; init(); } privatevoidinit(){ try{ //參數(shù)初始化 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("端口已經(jīng)被占用!"); e.printStackTrace(); }catch(TooManyListenersExceptione){ System.out.println("端口監(jiān)聽者過多!"); 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秒鐘讓串口把數(shù)據(jù)全部接收后在處理 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);//將所有數(shù)據(jù)讀入 changeMessage(readBuffer,numBytes); }catch(IOExceptione){ e.printStackTrace(); } break; } } //通過observerpattern將收到的數(shù)據(jù)發(fā)送給observer //將buffer中的空字節(jié)刪除后再發(fā)送更新消息,通知觀察者 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){//注冊按鈕監(jiān)聽 register(); } publicvoidexit(Viewview){//退出按鈕監(jiān)聽 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 有兩個孩子的離婚協(xié)議書(2篇)
- 服務結束協(xié)議書(2篇)
- 2025至2031年中國數(shù)控涂膠機行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國定砷器行業(yè)投資前景及策略咨詢研究報告
- 2025年度人工智能研發(fā)聘用合同與錄用協(xié)議
- 二零二五年度博物館物業(yè)服務合同文化傳承補充協(xié)議
- 2025年度資質借用與知識產(chǎn)權保護協(xié)議:高新技術產(chǎn)業(yè)資質借用合同
- 二零二五年度浴室裝修材料供應合同
- 2025年度競業(yè)協(xié)議在旅游行業(yè)的合同簽訂與旅游市場保護
- 2025年度租賃房屋租賃合同租賃價格調整合同
- 2024年北京東城社區(qū)工作者招聘筆試真題
- 黑龍江省哈爾濱市2024屆中考數(shù)學試卷(含答案)
- 高三日語一輪復習助詞「と」的用法課件
- 無子女離婚協(xié)議書范文百度網(wǎng)盤
- 一年級數(shù)學個位數(shù)加減法口算練習題大全(連加法-連減法-連加減法直接打印版)
- 五年級上冊數(shù)學試題試卷(8篇)
- 五年級上冊小數(shù)遞等式計算200道及答案
- 冀教版五年級下冊數(shù)學全冊教學課件
- T-SDASTC 006-2023 眩暈病中西醫(yī)結合基層診療指南
- 安全個人承諾書范文個人承諾書范文
- 遠視儲備培訓課件
評論
0/150
提交評論