畢業(yè)設計-基于AT89S52單片機的自行車里程表設計.doc
《畢業(yè)設計-基于AT89S52單片機的自行車里程表設計.doc》由會員分享,可在線閱讀,更多相關《畢業(yè)設計-基于AT89S52單片機的自行車里程表設計.doc(38頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、CHANGZHOU INSTITUTE OF TECHNOLOGY題目:基于單片機的自行車里程表設計二級學院(直屬學部): 延陵學院 專業(yè): 電氣工程及其自動化 班級: 10電Y3 學生姓名: 學號: 10124508 指導教師姓名: 范力旻 職稱: 副教授 2013年12月30日至2014年1月10日目 錄第1章 緒論21.1課題的背景21.2課題的主要任務及設計內容3第2章 總體方案的設計32.1任務分析與實現(xiàn)32.2 自行車里程表硬件方案設計42.3 自行車里程表軟件方案設計4第3章 自行車里程表軟件程序設計53.1 自行車里程表總體程序設計5第4章 自行車里程表軟件子程序設計64.1
2、中斷子程序設計64.2 延時程序84.3 按鍵掃描84.4 數(shù)據(jù)處理子程序設計94.5 顯示子程序的設計114.6 存儲芯片的選擇13第5章 軟件仿真145.1 Keil軟件的使用145.2 Keil軟件仿真14第6章 系統(tǒng)調試與分析166.1 調試故障及原因分析16第7章 總結16附錄17參考文獻17元器件清單18原理圖20程序清單20實物圖33第1章 緒論1.1課題的背景自行車被發(fā)明及使用到現(xiàn)在已有兩百多年的歷史,這兩百年間人類在不斷的嘗試與研發(fā)過程中,將玩具式的木馬車轉換到今日各式新穎休閑運動自行車。我國是自行車大國,隨著人們生活水平的不斷提高,自行車已經(jīng)不僅僅是運輸、代步的工具,其輔助
3、功能也變得越來越重要。因此,人們希望自行車的娛樂、休閑、鍛煉的功能越來越多,能帶來大家更多的健康與快樂。在這個背景下,自行車里程表作為自行車的一大輔助工具迅速發(fā)展起來。本次設計主要闡述一種基于霍爾元件的自行車里程表的設計。以 AT89S52 單片機為核心,A44E 霍爾傳感器測轉數(shù),實現(xiàn)對自行車里程/速度的測量統(tǒng)計,采用 24C02 實現(xiàn)在系統(tǒng)掉電的時候保存里程信息,并能將自行車的里程數(shù)及速度用LCD實時顯示。文章詳細介紹了自行車里程表的硬件電路和軟件設計。硬件部分利用霍爾元件將自行車每轉一圈的脈沖數(shù)傳入單片機系統(tǒng),然后單片機系統(tǒng)將信號經(jīng)過處理送顯示。軟件部分用C語言進行編程,采用模塊化設計思
4、想。1.2課題的主要任務及設計內容本文介紹的自行車里程表是以ATC89S52單片機為核心,用開關型霍爾傳感器將到來的脈沖信號輸入到單片機進行控制與計算,再采用LCD液晶屏進行顯示,直觀的顯示給使用者,方便地實現(xiàn)了智能化、高精度、高可靠性、高效率的自行車里程表的設計,并且使用方便。本文主要介紹了自行車里程表的設計思想、方案論證等內容,整體上分為硬件部分設計和軟件部分設計。首先對該課題進行任務分析,包括硬件和軟件方案的設計,然后具體的介紹里程表的硬件設計(傳感器的選擇、單片機的選擇、顯示電路的設計),軟件設計(單片機的選擇、存儲器的選擇、中斷子程序設計、數(shù)據(jù)處理子程序設計、顯示子程序的設計),最后
5、進行軟件仿真,系統(tǒng)調試,然后分析解決問題,對這次設計進行總結。軟件設計采用C語言編寫,主要思想是自頂向下,模塊化設計。第2章 總體方案的設計2.1任務分析與實現(xiàn)本設計的任務是:以ATC89S52單片機為處理核心,用傳感器將車輪的轉數(shù)轉換為電脈沖,進行處理后送入單片機。里程及速度的測量,是經(jīng)過ATC89S52測出總的脈沖數(shù)和轉一圈所需的時間,再經(jīng)過單片機的計算得出,其結果通過LCD顯示屏顯示出來。本系統(tǒng)總體思路如下:設計時,應綜合考慮測速精度和系統(tǒng)反應時間。本設計采用的脈沖計數(shù)方法,用來計算速度具有較高的測速精度。在計算里程時取了自行車的理想狀態(tài)。里程和速度傳感器采用霍爾元件。自行車里程的測量是
6、通過霍爾元件輸出端的電壓發(fā)生變化產(chǎn)生脈沖,通過計數(shù)器,根據(jù)脈沖數(shù)計算里程。自行車速度的測量是通過定時器測出車輪轉一周所用的時間t,車輪周長L除以時間t就是自行車的速度。本次科研設計要求達到的各項指標和實現(xiàn)方法:1、用霍爾傳感器產(chǎn)生脈沖信號,對脈沖信號進行計數(shù),這個指標的實現(xiàn)是利用單片機自帶的計數(shù)器T0對霍爾傳感器脈沖信號進行計數(shù)的。2、對數(shù)據(jù)進行處理,用LCD顯示里程總數(shù)和速度。這個功能的實現(xiàn)是利用編程軟件,對數(shù)據(jù)進行處理得到需要的數(shù)值。最終本次課題需要實現(xiàn)的目標是:自行車里程表具有里程、速度測試與顯示功能,采用單片機作控制,顯示電路可顯示里程及速度,可以通過按鍵設定報警速度,自行車超速,系統(tǒng)
7、發(fā)出報警提示。通過不同按鍵復位及里程清零的功能,方便地實現(xiàn)了智能化、高精度、高可靠性、高效率的自行車里程表的設計。2.2 自行車里程表硬件方案設計自行車里程表的里程及速度設計,采用的是霍爾傳感器進行檢測。當自行車轉過一圈時產(chǎn)生一個脈沖,根據(jù)脈沖數(shù)計算里程,然后計算自行車車輪轉過一圈所需的時間,用總的里程除以時間即可得到速度。在設計的時候還要設計系統(tǒng)的輸入部分(按鍵電路、存儲電路等),輸出部分(顯示電路、報警等)。2.3 自行車里程表軟件方案設計通過軟件控制單片機的功能是單片機的主要特點和優(yōu)點,程序的設計要考慮合理性和可讀性,遵循模塊化設計的原則,采用自頂向下的設計方法。模塊化設計使程序的可讀性
8、好、修改及完善方便。軟件設計包括主程序、中斷子程序、延時程序、按鍵掃描、存儲芯片的選擇、數(shù)據(jù)處理子程序(分為里程子程序、速度子程序)、顯示子程序。中斷子程序是將傳感器產(chǎn)生的信號接入計數(shù)器的T0口,然后計數(shù)器開始計數(shù),當計數(shù)到一定數(shù)目后,計數(shù)器就產(chǎn)生溢出中斷。數(shù)據(jù)處理子程序是將得到的車輪所轉的圈數(shù)與實際要顯示值之間有一定的對應關系,經(jīng)過軟件編程顯示所需要的值。秒表計時子程序是采用計數(shù)器T0通過編程實現(xiàn)秒表計時工作。脈沖接收子程序是通過編程實現(xiàn)脈沖的計數(shù),即對車輪所轉的圈數(shù)計數(shù)。顯示子程序是通過編程將數(shù)據(jù)處理的結果送給顯示器顯示。系統(tǒng)軟件總體流程圖如圖2.3所示:初始化P3.2檢測到中斷計算速度計
9、算里程顯示里程顯示速度開始YN圖2.3 軟件總體流程圖第3章 自行車里程表軟件程序設計 3.1 自行車里程表總體程序設計在整個設計過程中,軟件設計必須與硬件設計緊密地結合在一起。軟件部分設計是設計中最核心和最為主要的?;诨魻杺鞲衅髯孕熊嚴锍瘫淼能浖O計包括計數(shù)子程序、計時子程序、LED顯示子程序等幾大部分。由于要實現(xiàn)很多功能,所以采用模塊化設計,下面就其主要部分分別加以分析。在主程序模塊中,需要完成對各接口芯片的初始化、自行車里程和速度的初始化、中斷向量的設計以及開中斷、循環(huán)等待等工作。另外,在主程序模塊中還需要設置啟動/清除標志寄存器、里程寄存器、速度寄存器,并對它們進行初始化。然后主程序
10、將根據(jù)各標志寄存器的內容,分別完成啟動、清除、計程和計速等不同的操作。P1.2和P1.3口分別指示報警。主程序流程圖如圖3.5所示。開始LCD、定時器初始化開中斷脈沖接收數(shù)字處理顯示信息結束鍵盤輸入?NY鍵盤掃描NY圖3.5 主程序流程圖第4章 自行車里程表軟件子程序設計4.1 中斷子程序設計定時中斷是為滿足定時或計數(shù)的需要而設置的。為此在單片機內部有兩個定時/計數(shù)器,以對其中的計數(shù)結構進行計數(shù)的方法,來實現(xiàn)定時或計數(shù)功能。當結構發(fā)生計數(shù)溢出時,即表明定時時間或計數(shù)值已滿,這時就以計數(shù)溢出信號作為中斷請求,去置位一個溢出標志,作為單片機接受中斷請求的標志。這種中斷請求是在單片機芯片內部發(fā)生的,
11、因此無須在芯片上設置引入端。定時/計數(shù)器控制寄存器TCON是8位寄存器,地址為88H,可以按位尋址。其高4位用于定時/計數(shù)器中斷控制,低4位借給外部中斷,用做中斷標志和觸發(fā)方式選擇位。TF0/TF1:定時器計數(shù)溢出標志位??捎糜谏暾堉袛嗷蚬〤PU查詢。這里用作中斷請求。(由硬件自動置位)。=0:定時器未溢出; =1:定時器溢出(由全“1”變成全“0”)時由硬件自動置位,申請中斷, 中斷被CPU響應后由硬件自動清零。TR0/TR1:定時器運行啟??刂莆唬捎捎脩敉ㄟ^軟件設置 )。 =0:定時器停止運行; =1:定時器啟動運行。本設計采用定時中斷,對自行車的里程和速度進行計數(shù)。自行車開始運行,定時
12、器0為1,開始計時,當自行車轉過一圈產(chǎn)生一個脈沖時,定時器溢出,外部中斷0響應,此時由脈沖數(shù)和時間可以計算出里程和速度。中斷程序流程圖如圖4.1所示。 圖 4.1 中斷程序流程圖4.2 延時程序自行車里程表的設計中延時有按鍵延時(速度加、減、里程清0)、LCD顯示延時、AT24C02存儲的延時,本次設計的延時全部采用延時5ms。,程序編寫時是采用延時1ms,然后調用5次。延時流程圖如圖4.2所示。4.3 按鍵掃描本次設計中的按鍵分為獨立式按鍵和矩陣式按鍵,這里采用的是獨立式按鍵。主要有速度加按鍵、速度減按鍵、里程清0按鍵,在運用按鍵的時候需要去抖來使系統(tǒng)運行更加穩(wěn)定。去抖的方法有硬件去抖和軟件
13、去抖。這里采用的是軟件去抖。這里去抖是分別在按下和松開后加一小段延時,當按鍵按下后在05ms內出現(xiàn)抖動,所以這里采用的延時時間是5ms。按鍵對應的接口如下:sbit KEY1=P35;/速度加按鍵sbit KEY2=P36;/速度減按鍵sbit KEY3=P37;/里程清0按鍵按鍵具體程序見附錄。開始掃描鍵盤是否有鍵盤按下并判斷鍵號延時去抖動YN再次判斷相應鍵是否被按下加速子程序減速子程序里程清0子程序NY圖4.2 延時流程圖4.4 數(shù)據(jù)處理子程序設計自行車里程表里程、速度子程序設計定時器的初值的計算如下:在定時器模式下,計數(shù)器的計數(shù)脈沖來自于晶振脈沖的12分頻信號,即對機器周期進行計數(shù)。選擇
14、12MHZ晶振,則定時器的計數(shù)頻率為1MHZ。定時時間為1000ms,機器周期為1us,即12/晶振頻率。X為定時器初值。則 X=(2n-T)/T1。方式0,n=13,方式1時,n=16,方式2和方式3,n=8TMOD=0X01;TH0=(65536-1000)/256;TH0=TL0=(65536-1000)%256;外中斷0服務程序用于對單片機輸入的圈脈沖進行計數(shù),為十六進制計數(shù)器。60H為低位,62H為高位。每次計數(shù)一次后,對里程數(shù)據(jù)進行一次存儲操作。當車輪每轉一圈,通過霍爾元件將脈沖數(shù)輸入單片機內,通過計數(shù)器計出脈沖數(shù),再用乘法子程序算出里程數(shù)。設定自行車車輪周長為30mm,脈沖數(shù)為m
15、,則總的里程數(shù)=0.030*m,在速度子程序的設計中,使用單片機的定時器T0,10ms計數(shù)一次,其初值X經(jīng)計算得出,X=D8F0,即應將D8H送入TH0中,F(xiàn)0送入TL0中。具體的設計思路是:定時器T0每10ms中斷一次,當中斷次數(shù)達到100,即時間剛好為1秒的時候,調用脈沖接收子程序中當前的圈數(shù)變量,然后與設置好的自行車車輪周長相乘之后,再除以1s即為瞬時速度,每次計算完之后將此圈數(shù)變量置0。本次設計的報警采用聲光報警。聲音部分采用的是蜂鳴報警器,當自行車的速度超過預設的15km/h,L2燈亮,蜂鳴器報警。蜂鳴器是高電平有效,即當速度超過預設值時,蜂鳴器輸入信號由0變?yōu)?,蜂鳴器開始工作。L
16、ed燈采用的是共陽極接法即低電平有效。當自行車的行駛速度低于15km/h時,此時L1接收到低電平(0),L1常亮,當速度超過預設的值時,L1的信號由低電平調為高電平(由0變?yōu)?),燈熄滅不亮,此時L2由高電平變?yōu)榈碗娖剑ㄓ?變?yōu)?),L2常亮報警,直到解除報警。里程處理子程序流程圖如圖4.3(a)所示,速度處理子程序流程圖如圖4.3(b)所示。 圖4.3(a) 里程處理子程序流程圖速度處理子程序開中斷每10ms中斷次數(shù)加1,計數(shù)為100?計算瞬時速度是否超速?報警關報警顯示速度YY返回圖4.3(b) 速度處理子程序流程圖4.5 顯示子程序的設計DDRAM顯示數(shù)據(jù)RAM地址和屏幕的對應關系如表4
17、.1所示。表4.1 DDRAM地址和顯示位置的對應關系顯示位置12345640DDRAM地址第一行00H01H02H03H04H05H27H第二行40H41H42H43H44H45H67H也就是說想要在LCD1602屏幕的第二行第一列顯示一個M字,就要向DDRAM的40H地址寫入“M”字的代碼就行了。那就是向DDRAM的的40H地址寫入“M”字的代碼4DH。同樣,在LCD模塊上也固化了字模存儲器,這就是CGROM和CGRAM。下圖4.4說明了CGROM和CGRAM與字符的對應關系。圖4.4 CGROM和CGRAM與字符的對應關系從上圖可以看出,“M”字的對應上面高位代碼為0100,對應左邊低位
18、代碼為1101,合起來就是01001101,也就是4DH。LCD屏幕上顯示一個字符的過程:初始化、寫指令、寫函數(shù)、在某個屏幕位置上顯示一個字符、檢查忙函數(shù)、延時函數(shù)。速度的顯示運用程序定位到第一行第十列,找到顯示對應的位置為09H,通過速度調節(jié)鍵設定輸入速度為16km/h,所以要在09H中輸入1,所以1對應的高位代碼為0011,對應的地位代碼為0001H,合起來是00110001,也就是1,然后光標右移一位(用程序實現(xiàn)),用同樣的方法寫出6.簡而言之數(shù)據(jù)顯示就是顯示的時候先送要顯示的地址,然后再送要顯示的數(shù)據(jù)。顯示程序流程圖如圖4.4所示。開始液晶初始化光標定位送顯示數(shù)據(jù)顯示結束圖4.4 顯示
19、子程序流程圖4.6 存儲芯片的選擇本次設計采用的儲存芯片是24C02,AT24C02是一個2K位串行CMOS E2PROM, 內部含有256個8位字節(jié),有一個專門的寫保護功能,可以實現(xiàn)掉電存儲。起始條件起始調教必須在所有操作命令之前發(fā)送。時鐘線保持高電平期間,數(shù)據(jù)線電平從高到低跳變作為I2C總線的啟動信號。CAT24Cxxx一直監(jiān)視SDA和SCL電平信號,直到條件滿足時才響應。停止條件時鐘線保持高電平期間,數(shù)據(jù)線電平從低到高跳變作為I2C總線的停止信號。器件地址的約定主器件在發(fā)送啟動命令后開始傳送數(shù)據(jù),主器件發(fā)送相應的從器件地址,8位從器件地址的高四位固定為1010,接下來的3位用來定義存儲器
20、的地址,最后一位為讀寫控制位,“1”表示對從器件進行讀寫操作,“0”表示寫操作。在主器件發(fā)送啟動命令和一字節(jié)從器件地址后,如果與從器件地址吻合,CAT24C02將發(fā)送一個應答信號,然后再根據(jù)讀/寫控制為進行讀或寫操作。應答信號每次數(shù)據(jù)傳送成功后,接收器件將發(fā)送一個應答信號。當?shù)诰艂€時鐘信號產(chǎn)生時,產(chǎn)生應答型號的器件將SDA下拉為低,通知已經(jīng)接受到8位數(shù)據(jù),接收到起始條件和從器件地址后,CAT24C02發(fā)送一個應答信號,如果為寫操作,每接收到一個字節(jié)數(shù)據(jù),CAT24C02發(fā)送一個應答信號。如果為讀操作,CAT24C02發(fā)送一個字節(jié)數(shù)據(jù)后釋放總線等待應答信號,一旦接收到應答信號,它將繼續(xù)發(fā)發(fā)送數(shù)據(jù)
21、,如果接收到主器件發(fā)送非應答信號,將結束數(shù)據(jù)傳送等待停止條件。寫操作在寫字節(jié)模式下,助器件發(fā)送起始命令和從器件地址信息給從器件,在從器件響應應答信號后,主器件將要寫入的數(shù)據(jù)地址發(fā)送到CAT24C02的地址指針,主器件收到從器件的應答信號后再送數(shù)據(jù)到相應的數(shù)據(jù)存儲區(qū)地址,CAT24C02再響應一個應答信號,主器件產(chǎn)生一個停止信號,然后CAT24C02啟動內部寫周期,在內部寫周期期間,CAT24C02不再響應主器件任何請求。寫操作時序讀如讀操作CAT24C02讀操作的初始化方式和寫操作一樣,僅把R/W位置1,讀操作有三種方式:立即地址讀、選擇地址讀、連續(xù)讀。選擇地址讀操作時序圖第5章 軟件仿真5.
22、1 Keil軟件的使用 在keil中輸入編寫好的c語言程序,在編譯運行沒有的錯誤的情況下,在project中找到options for targettarget1在output選項中勾選create HEX file,即可生成.hex文件。5.2 Keil軟件仿真主程序仿真圖如圖5.1所示圖5.1 主程序仿真圖LCD顯示仿真如圖5.2所示圖5.2 LCD顯示仿真圖AT24C02仿真如圖5.2所示圖5.2 AT24C02仿真圖第6章 系統(tǒng)調試與分析6.1 調試故障及原因分析這次的科研項目實訓中,我主要負責自行車里程表的軟件部分,所以我的調試主要側重在軟件的調試。首先查閱相關資料,在同學的幫助下完
23、成C語言程序的編寫。編寫好程序后我利用keil軟件進行編譯調試。一開始由于平時C語言的書寫習慣會出現(xiàn)很多語法和字符用錯的問題,在軟件的提示下一步步修改程序,直到程序沒有錯誤。在C語言程序完成后,利用proteus仿真軟件開始繪制仿真圖,查找好所有型號的器件,并用線連接起來,然后用keil軟件實現(xiàn)兩者的聯(lián)調。一開始會出現(xiàn)速度調節(jié)按鈕無效的問題,在檢查完線路沒有問題后,開始查找程序的問題,在同學的幫助下終于找出程序問題所在,然后對程序進行修改,重新編譯,重新調試,直到所有功能實現(xiàn)。第7章 總結經(jīng)過這一段時間的努力最終按要求完成本設計,所完成的設計能實現(xiàn)任務要求的各項功能。對總體相應的軟、硬件進行了
24、設計、制作及調試,并貫穿至設計的全過程。本課題的主要任務是開發(fā)一個以AT89S52單片機為核心的自行車的速度里程表,主要由脈沖接收,LCD顯示等模塊組成。本設計主要分為硬件部分和軟件部分,硬件部分著重考慮硬件電路的簡單性,故盡可能簡化硬件電路,節(jié)省線路板的空間,達到硬件電路最優(yōu)化設計。軟件采用C語言編寫,采用模塊化設計思想,程序可讀性強。通過對程序的燒錄、實驗驗證了系統(tǒng)的可行,能滿足設計要求,達到設計的指標,實現(xiàn)對自行車里程/速度的計算功能,并用LCD液晶屏顯示,功能性較強。這次科研實踐讓我對自己以后的畢業(yè)設計方面也有了更深的了解。這次實踐,同學們也幫了我很大的忙,讓我知道一個項目的完成不是一
25、件容易的事情,團隊合作還是比較重要的。附錄參考文獻1 ATMEL新型AT89S52系列單片機及其應用 清華大學出版社2 范力旻.單片機原理及應用技術.電子工業(yè)出版社3 樓然苗, 李光飛. 51系列單片機設計實例. 北京航空航天大學出版社, 20064 李朝青. 單片機原理及接口技術. 北京航空航天大學出版社, 19945張毅剛, 劉杰. MCS-51單片機原理及應用. 哈爾濱工業(yè)大學出版社,20046李勛, 劉源, 李靜東. 單片機實用教程. 北京航空航天大學出版社, 2006元器件清單序號文字標號名稱數(shù)量規(guī)格型號備注1R2、R3、R6電阻4102R1、R9-R10R14-R16、R23電阻7
26、1K3R17電阻14.7K4R13電組110K5Q1三極管185506C6、C8瓷片電容20.01uF103瓷片電容7U3霍爾元件1A44E8磁鐵兩個29D1、D2二極管2IN400710C10瓷片電容10.1uF103瓷片電容11C4瓷片電容1470uf12LS1蜂鳴器1GPC1407YB有源13L1、L2、L3發(fā)光二極管3SL-H302314C6、C8瓷片電容230pf15Y1晶振112M16Q10三極管1S855017B1電機1RF-300CA-0858518K2自鎖按鍵1LCD-37AX537BX519R10電位器11K20K1、K3-K5按鍵4TD-03B21U2定時器1555芯片2
27、2P2插座2DIP23R2電位器11K24U1單片機1AT89S5225插座1DIP4026P1液晶顯示屏1LCD160227U4PROM1AT24C02原理圖程序清單#include#define uchar unsigned char#define uint unsigned intuint num=0; /外部中斷次數(shù)uchar num1=0;uint Speed_dat=0;uint Total_Dis=0;uchar Beep_speed=40;sbit KEY1=P35;/速度加按鍵sbit KEY2=P36;/速度減按鍵sbit KEY3=P37;/里程清0按鍵void dela
28、yms(uint xms)uint i,j;for(i=xms;i0;i-)/xms延時子程序for(j=110;j0;j-);#includeLCD1602.H#includeAT24C02.Hvoid keyscan()if(!KEY1)delayms(5);if(!KEY1)if(Beep_speed0)Beep_speed-;while(!KEY2);else if(!KEY3)delayms(5);if(!KEY3)Write_AT24C02_Byte(0,0);Write_AT24C02_Byte(1,0);/里程清0Total_Dis=0;dis_Mileage();while(
29、!KEY3);void main()uchar dat=0;float M_dat=0.0;init_1602();Init_AT24C02();dat=Read_AT24C02_Random(0);Total_Dis=dat*256+Read_AT24C02_Random(1);dis_Mileage();TMOD=0X01;TH0=(65536-1000)/256;TL0=(65536-1000)%256;ET0=1;TR0=1;IT0=1; /邊沿觸發(fā)中斷EX0=1;EA=1;while(1)if(num199)num1=0;M_dat+=(float)(Cur_Speed/3.60);
30、/每0.1s走的米數(shù)if(M_dat1000.0) /路程每增加100m儲存一次M_dat-=1000.0;Total_Dis+=1;Write_AT24C02_Byte(0,Total_Dis/256);Write_AT24C02_Byte(1,Total_Dis%256);dis_Mileage();display();keyscan();void T0_time() interrupt 1 /定時器0TH0=(65536-1000)/256;TL0=(65536-1000)%256;if(num500)num+;elseSpeed_dat=0;if(num1100)num1+;void
31、ex_0() interrupt 0 /外部中斷0Speed_dat=(500/num); num=0;#define uchar unsigned char#define uint unsigned int sbit EN=P27;sbit RS=P25;sbit RW=P26;sbit BEEP=P20;sbit LED1=P12;/正常顯示sbit LED2=P13;/報警uchar LCD1602_Table=0123456789;/LCD1602顯示標尺 /0123456789abcdefuchar code DIS_TAB1= Speed:-Km/h ;/顯示速度uchar cod
32、e DIS_TAB2=M: Km-Km/h;/顯示里程 uint sum_dat=0;uchar Cur_Speed=0;extern uint Speed_dat;extern uint Total_Dis;extern void delayms(uint xms);void WRITE_LCD1602_DAT(uchar date)EN=0;RS=1;/寫數(shù)據(jù)P0=date;EN=0;delayms(5);EN=1;void WRITE_LCD1602_COM(uchar date)EN=0;RS=0;/寫命令P0=date;EN=0;delayms(5);EN=1;void init_1
33、602() unsigned char i;RW=0; WRITE_LCD1602_COM(0 x38);/設定使用8位總線、2行顯示使用5X7字符,初始化WRITE_LCD1602_COM(0 x0c);/開顯示,不顯示光標WRITE_LCD1602_COM(0 x06); /地址加1,當寫入數(shù)據(jù)的時候光標右移WRITE_LCD1602_COM(0 x01);/清屏WRITE_LCD1602_COM(0 x80); P0口的地址for(i=0;i16;i+)WRITE_LCD1602_DAT(DIS_TAB1i);WRITE_LCD1602_COM(0 x80+0 x40);/第一行、第二行
34、顯示for(i=0;i16;i+)WRITE_LCD1602_DAT(DIS_TAB2i);void display()static uint dat=0;static uchar i=0;if(i0)WRITE_LCD1602_DAT(LCD1602_Tabledat%1000/100);elseWRITE_LCD1602_DAT( );if(dat/100)WRITE_LCD1602_DAT(LCD1602_Tabledat%100/10);elseWRITE_LCD1602_DAT( );WRITE_LCD1602_DAT(LCD1602_Tabledat%10);WRITE_LCD16
35、02_COM(0 x80+9+0 x40);if(Beep_speed/1000)WRITE_LCD1602_DAT(LCD1602_TableBeep_speed%1000/100);elseWRITE_LCD1602_DAT( );if(Beep_speed/100)WRITE_LCD1602_DAT(LCD1602_TableBeep_speed%100/10);elseWRITE_LCD1602_DAT( );WRITE_LCD1602_DAT(LCD1602_TableBeep_speed%10);if(datBeep_speed)if(i0)WRITE_LCD1602_DAT(LC
36、D1602_TableTotal_Dis%10000/1000);elseWRITE_LCD1602_DAT( );if(Total_Dis/1000)WRITE_LCD1602_DAT(LCD1602_TableTotal_Dis%1000/100);elseWRITE_LCD1602_DAT( );WRITE_LCD1602_DAT(LCD1602_TableTotal_Dis%100/10);WRITE_LCD1602_DAT(.);WRITE_LCD1602_DAT(LCD1602_TableTotal_Dis%10);#include#defineAT24C02_OP_READ0 x
37、a1/ AT24C02器件地址以及讀取操作#defineAT24C02_OP_WRITE 0 xa0/ AT24C02器件地址以及寫入操作/#defineAT24C02_MAX_ADDR 0 xff/ AT24C02最大地址/unsigned char code dis_code=0 x7e,0 xbd,0 xdb,0 x7e,0 xdb,0 xbd,0 x7e,0 xff;/ 寫入到AT24C02的數(shù)據(jù)串sbit AT24C02_SDA=P11;sbit AT24C02_SCL=P10;/sbit AT24C02_WP=P33; /寫保護 “=0”讀寫 “=1” 只讀/*延時子程序*/voi
38、d Delay_1ms(unsigned int xms) unsigned int i,j; for(i=xms;i0;i-) for(j=122;j0;j-);/*24C02初始化子程序*/void Init_AT24C02() AT24C02_SDA=1; /總線空閑時,因各設備都是集電極或漏極開路,上拉電阻使SDA和SCL線都保持高電平。/AT24C02_WP=1; AT24C02_SCL=1; _nop_(); _nop_(); _nop_(); _nop_();/*24C02起始信號子程序*/void AT24C02_Start()AT24C02_SDA=1;_nop_();_no
39、p_();AT24C02_SCL=1;_nop_();_nop_();AT24C02_SDA=0;_nop_();_nop_();_nop_();_nop_();AT24C02_SCL=0;/*24C02停止信號子程序*/void AT24C02_Stop()AT24C02_SDA=0;_nop_();_nop_();AT24C02_SCL=1;_nop_();_nop_();_nop_();_nop_();AT24C02_SDA=1;_nop_();_nop_();/*24C02應答子程序*/void AT24C02_ACK()AT24C02_SDA=1;/ 讀取應答_nop_();_nop
40、_();AT24C02_SCL=1;_nop_();_nop_();_nop_();_nop_();while(AT24C02_SDA);/等待應答信號AT24C02_SCL=0;_nop_();_nop_();/*讀出24C02數(shù)據(jù)子程序*/unsigned char Read_AT24C02_DATA()unsigned char i,read_data;for(i=0;i8;i+)AT24C02_SCL=1;_nop_();_nop_();_nop_();_nop_();read_data=1; /從高位到底位read_data|=(unsigned char)AT24C02_SDA;A
41、T24C02_SCL=0;_nop_();_nop_();_nop_();_nop_();return(read_data);/*寫入24C02數(shù)據(jù)子程序*/void Write_AT24C02_DATA(unsigned char write_data)unsigned char i;for(i=0;i8;i+)/ 循環(huán)移入8個位AT24C02_SDA=(bit)(write_data&0 x80);_nop_();AT24C02_SCL=1;_nop_();_nop_();AT24C02_SCL=0;write_data=1;/*字節(jié)寫入24C02數(shù)據(jù)子程序*/void Write_AT2
42、4C02_Byte(unsigned char addr, unsigned char write_data) / 在指定地址addr處寫入數(shù)據(jù)write_dataAT24C02_Start();/發(fā)起始命令Write_AT24C02_DATA(AT24C02_OP_WRITE);/從機地址寫命令AT24C02_ACK();Write_AT24C02_DATA(addr); /發(fā)送AT24C02的字節(jié)地址AT24C02_ACK();Write_AT24C02_DATA(write_data); /發(fā)送數(shù)據(jù)到被尋址的存儲單元AT24C02_ACK();AT24C02_Stop();/停止信號De
43、lay_1ms(10);/延時等待AT24C02內部數(shù)據(jù)的擦寫unsigned char Read_AT24C02_Current()/ 在當前地址讀取unsigned char read_data;AT24C02_Start();Write_AT24C02_DATA(AT24C02_OP_READ);AT24C02_ACK();read_data = Read_AT24C02_DATA();AT24C02_Stop();return read_data;unsigned char Read_AT24C02_Random(unsigned char addr)/ 在指定地址讀取AT24C02_
44、Start();Write_AT24C02_DATA(AT24C02_OP_WRITE);AT24C02_ACK();Write_AT24C02_DATA(addr);AT24C02_ACK();return(Read_AT24C02_Current();實物圖g an employment tribunal claimEmployment tribunals sort out disagreements between employers and employees.You may need to make a claim to an employment tribunal if: you
45、dont agree with the disciplinary action your employer has taken against you your employer dismisses you and you think that you have been dismissed unfairly.For more information about dismissal and unfair dismissal, seeDismissal.You can make a claim to an employment tribunal, even if you haventappeal
46、edagainst the disciplinary action your employer has taken against you. However, if you win your case, the tribunal may reduce any compensation awarded to you as a result of your failure to appeal.Remember that in most cases you must make an application to an employment tribunal within three months o
47、f the date when the event you are complaining about happened. If your application is received after this time limit, the tribunal will not usually accept it.If you are worried about how the time limits apply to you, take advice from one of the organisations listed underFurther help.Employment tribun
48、als are less formal than some other courts, but it is still a legal process and you will need to give evidence under an oath or affirmation.Most people find making a claim to an employment tribunal challenging. If you are thinking about making a claim to an employment tribunal, you should get help s
49、traight away from one of the organisations listed underFurther help.If you are being represented by a solicitor at the tribunal, they may ask you to sign an agreement where you pay their fee out of your compensation if you win the case. This is known as adamages-based agreement. In England and Wales
50、, your solicitor cant charge you more than 35% of your compensation if you win the case.If you are thinking about signing up for a damages-based agreement, you should make sure youre clear about the terms of the agreement. It might be best to get advice from an experienced adviser, for example, at a
51、 Citizens Advice Bureau. To find your nearest CAB, including those that give advice by e-mail, click onnearest CAB.For more information about making a claim to an employment tribunal, seeEmployment tribunals.The (lack of) air up there Watch mCayman Islands-based Webb, the head of Fifas anti-racism t
52、askforce, is in London for the Football Associations 150th anniversary celebrations and will attend Citys Premier League match at Chelsea on Sunday.I am going to be at the match tomorrow and I have asked to meet Yaya Toure, he told BBC Sport.For me its about how he felt and I would like to speak to
53、him first to find out what his experience was.Uefa hasopened disciplinary proceedings against CSKAfor the racist behaviour of their fans duringCitys 2-1 win.Michel Platini, president of European footballs governing body, has also ordered an immediate investigation into the referees actions.CSKA said
54、 they were surprised and disappointed by Toures complaint. In a statement the Russian side added: We found no racist insults from fans of CSKA.Age has reached the end of the beginning of a word. May be guilty in his seems to passing a lot of different life became the appearance of the same day; May
55、be back in the past, to oneself the paranoid weird belief disillusionment, these days, my mind has been very messy, in my mind constantly. Always feel oneself should go to do something, or write something. Twenty years of life trajectory deeply shallow, suddenly feel something, do it.一字開頭的年齡已經(jīng)到了尾聲?;蛟S是愧疚于自己似乎把轉瞬即逝的很多個不同的日子過成了同一天的樣子;或許是追溯過去,對自己那些近乎偏執(zhí)的怪異信念的醒悟,這些天以來,思緒一直很凌亂,在腦海中不斷糾纏??傆X得自己自己似乎應該去做點什么,或者寫點什么。二十年的人生軌跡深深淺淺,突然就感覺到有些事情,非做不可了。The end of our life,
- 溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。