版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畢業(yè)設(shè)計(jì)論文行車(chē)簡(jiǎn)易數(shù)字里程表班級(jí)姓名學(xué)號(hào)指導(dǎo)教師提交日期 2013年 月 日隨著居民生活水平的不斷提高,自行車(chē)已經(jīng)不僅僅是普通的代步、運(yùn)輸工具,而 是成為人們娛樂(lè)、休閑、鍛煉的首選。自行車(chē)簡(jiǎn)易數(shù)字里程表能夠滿足人們最基本的 需求,讓人們能清楚地知道當(dāng)前的速度、里程等物理量。本論文主要闡述一種基于霍 爾元件的自行車(chē)速度里程表的設(shè)計(jì)。 以STC89C52單片機(jī)為核心,A44E霍爾傳感器測(cè) 轉(zhuǎn)數(shù),實(shí)現(xiàn)對(duì)自行車(chē)?yán)锍?速度的測(cè)量,采用1602LCD顯示自行車(chē)的里程數(shù)及速度。 文章詳細(xì)介紹了自行車(chē)的速度里程表的硬件電路。硬件部分利用霍爾元件將自行車(chē)每轉(zhuǎn)一圈的脈沖數(shù)傳入單片機(jī)系統(tǒng),然后單片機(jī)系統(tǒng)將信號(hào)經(jīng)過(guò)
2、處理送顯示。軟件部分 用C語(yǔ)言進(jìn)行編程,采用模塊化設(shè)計(jì)思想。該系統(tǒng)硬件電路簡(jiǎn)單,子程序具有通用性, 完全符合設(shè)計(jì)要求。關(guān)鍵字:里程/速度;霍爾元件;單片機(jī);LCD顯示ABSTRACTWith the developing of people liSe, the bicycle is not only the universal tool of transportation and substitute for walking, but becomes the first choice of entertainment and exercising. The bicycle mileage/sp
3、eed can fulfill the basic need of people' s life, sccan learn the speed and the mileage of the bicycle. In this paper, the bicycle mileage/speed design based on the Hall element is elaborated. By STC89C52as kernel, using A44E Hall element to measure revolution, the measure and statistic are achi
4、eveSaved by 1602LCD , the bicycle speed can be displayed on LED. )In this article, the hardware circuit design of bicycle mileage/speed instrument are introduced in detail. About the hardware, the pulse number is transmitted of one cycle of the bicycle into Single Chip Microcomputer system.Then the
5、signal processed by Single Chip Microcomputer system is sent to display scream. About the software, in C language; the program is designed in the mode of modules. The system has simple hardware, common sub-program, and meets the demand of design.KEY WORDS: Mileage / speed; Hall element; Single chip
6、microcomputer; LCD目錄引言5第一部分設(shè)計(jì)任務(wù)61.1 設(shè)計(jì)要求61.2 方案設(shè)計(jì)61.3 分系統(tǒng)硬件平臺(tái)的設(shè)計(jì) 62.1 總體設(shè)計(jì)方案說(shuō)明 62.2 單片機(jī)最小系統(tǒng)72.2.1 STC89C52 單片機(jī)72.2.2 時(shí)鐘電路72.2.3 復(fù)位電路82.3 顯示模塊82.4 霍爾傳感器的測(cè)量原理 102.5 DS1302時(shí)鐘芯片 10第三部分系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn) 113.1 主程序流程圖113.2 顯示流程圖113.3 速度處理流程圖 123.4 電路仿真133.4.1 仿真軟件簡(jiǎn)介 133.4.2 仿真結(jié)果13第四部分 安裝調(diào)試與性能測(cè)量 14第五部分設(shè)計(jì)總結(jié)14參考文獻(xiàn)14
7、自行車(chē)被發(fā)明及使用到現(xiàn)在已有兩百多年的歷史, 這兩百年間人類在不斷的 嘗試與研發(fā)過(guò)程中,將玩具式的木馬車(chē)轉(zhuǎn)換到今日各式新穎休閑運(yùn)動(dòng)自行車(chē),自行車(chē)發(fā)展的目的也從最早的交通代步的工具轉(zhuǎn)換成休閑娛樂(lè)運(yùn)動(dòng)的用途。隨著居民生活水平的不斷提高,自行車(chē)不再僅僅是普通的運(yùn)輸、代步的工具, 而是成為人們娛樂(lè)、休閑、鍛煉的首選。因此,人們希望自行車(chē)的功用更強(qiáng)大, 能給人們帶來(lái)更多的方便。自行車(chē)簡(jiǎn)易數(shù)字里程表作為自行車(chē)的一大輔助工具也 隨著這個(gè)需求而面世,其功能也逐漸從單一的里程顯示發(fā)展到速度、時(shí)間顯示。 本設(shè)計(jì)采用了 MCS-51系列單片機(jī)設(shè)計(jì)一種體積小、操作簡(jiǎn)單的便攜式自行車(chē)的 速度里程表,它能自動(dòng)地顯示當(dāng)前自
8、行車(chē)行駛的里程及速度。本課題主要任務(wù)是利用霍爾元件、單片機(jī)等部件設(shè)計(jì)一個(gè)可用1602液晶顯示里程和速度的自行車(chē)速度里程表。本文主要介紹了自行車(chē)的速度里程表的設(shè)計(jì) 思想、電路原理和元件的選擇等內(nèi)容,整體上分為硬件部分設(shè)計(jì)和軟件部分設(shè)計(jì)。本文首先扼要對(duì)該課題的任務(wù)進(jìn)行方案論證,包括硬件方案和軟件方案的設(shè) 計(jì);繼而具體介紹了自行車(chē)的速度里程表的硬件設(shè)計(jì),包括單片機(jī)的選擇、傳感器的選擇、顯示電路的設(shè)計(jì);然后簡(jiǎn)要闡述了自行車(chē)的速度里程表的軟件設(shè)計(jì)思 路;最后針對(duì)仿真過(guò)程遇到的問(wèn)題進(jìn)行了說(shuō)明與分析,對(duì)本次設(shè)計(jì)進(jìn)行了系統(tǒng)的總結(jié)。具體的硬件電路包括STC89C52單片機(jī)的外圍電路以及液晶顯示電路等。軟件設(shè)計(jì)包
9、括:芯片的初始化程序、定時(shí)中斷子程序、顯示子程序等,軟件米用C語(yǔ)百編寫(xiě)第一部分設(shè)計(jì)任務(wù)1.1 設(shè)計(jì)要求(1)設(shè)計(jì)一個(gè)可以適用各種自行車(chē)的數(shù)字里程表,可顯示里程、速度等信息。(2)學(xué)習(xí)、了解自行車(chē)數(shù)字里程表的基本工作原理。1.2 方案設(shè)計(jì)采用單片機(jī)實(shí)現(xiàn):用霍爾傳感器將所測(cè)轉(zhuǎn)速轉(zhuǎn)變?yōu)閿?shù)字脈沖信號(hào),然后再將數(shù)字脈沖信號(hào)數(shù)據(jù)傳輸于核心單片機(jī)處理,單片機(jī)將根據(jù)設(shè)計(jì)程序計(jì)算在一定時(shí) 間內(nèi)數(shù)字脈沖的頻率,再由計(jì)數(shù)值最終得到里程數(shù)并通過(guò)終端顯示設(shè)備顯示出 來(lái)。且附加報(bào)警功能,在速度超過(guò)某一個(gè)固定值后,蜂鳴器響,提示需要減速。第二部分系統(tǒng)硬件平臺(tái)的設(shè)計(jì)2.1 總體設(shè)計(jì)方案說(shuō)明本設(shè)計(jì)的任務(wù)是:以通用 MCS-51
10、單片機(jī)為處理核心,用傳感器將車(chē)輪的轉(zhuǎn) 數(shù)轉(zhuǎn)換為電脈沖,進(jìn)行處理后送入單片機(jī)。里程及速度的測(cè)量,是經(jīng)過(guò) MCS-51 的定時(shí)/計(jì)數(shù)器測(cè)出總的脈沖數(shù)和每轉(zhuǎn)一圈的時(shí)間,再經(jīng)過(guò)單片機(jī)的計(jì)算得出, 其結(jié)果通過(guò)LED顯示器顯示出來(lái)。本系統(tǒng)總體思路如下:假定輪圈的周長(zhǎng)為 L,在輪圈上安裝a個(gè)永久磁鐵, 則測(cè)得的里程值最大誤差為L(zhǎng)/a。經(jīng)綜合分析,本設(shè)計(jì)中取a=1。當(dāng)輪子每轉(zhuǎn)一 圈,通過(guò)開(kāi)關(guān)型霍爾元件傳感器采集到一個(gè)脈沖信號(hào),并從引腳P3.2中斷0端輸入,傳感器每獲取一個(gè)脈沖信號(hào)即對(duì)系統(tǒng)提供一次計(jì)數(shù)中斷。每次中斷代表車(chē)輪轉(zhuǎn)動(dòng)一圈,中斷數(shù)n與輪圈的周長(zhǎng)L的乘積為里程值。計(jì)數(shù)器T1計(jì)算每轉(zhuǎn)一 圈所用的時(shí)間time
11、,就可以計(jì)算出即時(shí)速度speed。若自行車(chē)超過(guò)限定速度,系 統(tǒng)發(fā)出報(bào)警信號(hào),蜂鳴器響。要求達(dá)到的各項(xiàng)指標(biāo)及實(shí)現(xiàn)方法如下:1 .利用霍爾傳感器產(chǎn)生里程數(shù)的脈沖信號(hào)。2 .對(duì)脈沖信號(hào)進(jìn)行計(jì)數(shù)。實(shí)現(xiàn):利用單片機(jī)自帶的計(jì)數(shù)器 T1對(duì)霍爾傳感器脈沖信號(hào)進(jìn)行計(jì)數(shù)。3 .對(duì)數(shù)據(jù)進(jìn)行處理,要求用LED顯示里程總數(shù)和即時(shí)速度。實(shí)現(xiàn):利用軟件編程,對(duì)數(shù)據(jù)進(jìn)行處理得到需要的數(shù)值。最終實(shí)現(xiàn)目標(biāo):自行車(chē)的速度里程表具有里程、 速度測(cè)試與顯示功能,采用 單片機(jī)作控制,顯示電路可顯示里程及速度。圖1系統(tǒng)框圖2.2 單片機(jī)最小系統(tǒng)2.2.1 STC89C52 單片機(jī)U1d0d1 d2d3d4d5d6d7RS GNE1918&
12、gt;XTAL1P0.0/AD0P0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A1039383736935343332212223292430ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A1525zn2612728102_34P1.1P3.1/TXDP1.2P3.2/INT011,12113P1.3P3.3/INT15146 . .,P1.5P3.5/T1P1.6P3.6/WRP1.7P3.7/RD15716817AT89C51圖2 STC89C52單
13、片機(jī)2.2.2 時(shí)鐘電路STC89C5系歹U是1T的8051單片機(jī),STC89C52I統(tǒng)時(shí)鐘兼容傳統(tǒng)8051。系 列單片機(jī)有兩個(gè)時(shí)鐘源:內(nèi)部 R/C振蕩時(shí)鐘和外部晶體時(shí)鐘。在單片機(jī)內(nèi)有一個(gè)高增益反相放大器,反相放大器的輸入端為XTAL輸出端為XTAL2,由該放大器、晶振和兩個(gè)33PF的電容構(gòu)成的振蕩電路做單片機(jī)的時(shí) 鐘電路。圖3 時(shí)鐘電路2.2.3 復(fù)位電路復(fù)位電路原理是單片機(jī)RST引腳接收到2us以上電平信號(hào),只要保證電容的 充放電時(shí)間大于2us,即可復(fù)位,所以電路中的電容是可改變的,按鍵按下,電 容處于一個(gè)短路電路中,電容釋放所有的電能,電阻兩端電壓升高系統(tǒng)復(fù)位。且 振蕩器穩(wěn)定后,如果RS
14、T引腳上有一個(gè)高電平并維持2個(gè)機(jī)器周期(24個(gè)振蕩周 期)以上,則CPLM可以響應(yīng)并將系統(tǒng)復(fù)位。單片機(jī)系統(tǒng)的復(fù)位方式有:手動(dòng)按 鈕復(fù)位和上電復(fù)位。圖4復(fù)位電路2.3 顯示模塊1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無(wú)差別,1602LCD及兩者尺寸差別如下圖所示:丸 2支 .a astEDh xJC二oL64 5= i M圖6液晶顯示模塊圖1602引腳說(shuō)明表格如下:編號(hào)符號(hào)引腳說(shuō)明編號(hào)符號(hào)引腳說(shuō)明1Vss電源地9D2數(shù)據(jù)口2Vdd電源止極10D3數(shù)據(jù)口3VO液晶顯示對(duì)比度調(diào)節(jié)端11D4數(shù)據(jù)口4RS數(shù)據(jù)/命令選擇端(H/L)
15、12D5數(shù)據(jù)口5R/W讀寫(xiě)選擇端(H/L)13D6數(shù)據(jù)口6E使能信號(hào)14D7數(shù)據(jù)口7D0數(shù)據(jù)口15BLA背光電源正極8D1數(shù)據(jù)口16BLK背光電源負(fù)極液晶引腳與單片機(jī)連接:第1腳:VSS接地。第2腳:VDD接5V正電源。第3腳:VO接3K的電位器調(diào)整對(duì)比度。第4腳:RS為寄存器選擇。第5腳:R/W為讀寫(xiě)信號(hào)線。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線接單片機(jī) P0 口。第15腳:背光源正極接電源。第16腳:背光源負(fù)極接地。2.4 霍爾傳感器的測(cè)量原理l-YCC 2-CND 3-0UT圖7霍爾傳感器霍爾傳感器是利用霍爾效應(yīng)制成的一
16、種磁敏傳感器。在置于磁場(chǎng)中的導(dǎo)體或 半導(dǎo)體通入電流I ,若電流垂直磁場(chǎng)B,則在與磁場(chǎng)和電流都垂直的方向上會(huì)出 現(xiàn)一個(gè)電勢(shì)差Uh,這種現(xiàn)象稱為霍爾效應(yīng)。利用霍爾效應(yīng)制成的元件稱為霍爾 元件。因?yàn)樗哂薪Y(jié)構(gòu)簡(jiǎn)單、頻率響應(yīng)寬、靈敏度高、測(cè)量線性范圍大、抗干擾 能力強(qiáng)以及體積小、使用壽命長(zhǎng)等一系列特點(diǎn),因此被廣泛應(yīng)用于測(cè)量、自動(dòng)控 制及信息處理等領(lǐng)域。2.5 DS1302時(shí)鐘芯片RESPACK-8圖8時(shí)鐘芯片本設(shè)計(jì)時(shí)間芯片采用的了 DS1302 DS1302是由美國(guó)DALLAS司推出的一種 具有涓細(xì)電流充電能力的低功耗實(shí)時(shí)時(shí)鐘電路,具有可對(duì)年、月、周、日、時(shí)、 分、秒進(jìn)行計(jì)時(shí)等的功能,工作電壓為 2.
17、5V5.5V。主要的特點(diǎn)是采用串行數(shù) 據(jù)傳輸,即使掉電亦不丟失,在 DS1302內(nèi)部有一個(gè)31X8的用于臨時(shí)性存放數(shù) 據(jù)的RAMU存器。DS1302與STC89C52勺連接線有三條線:RST弓I腳、SCLK串行時(shí)鐘弓I腳、I/O用行數(shù)據(jù)引腳,Vcc2作為備用電源,芯片外接晶振 X2,為芯片提供計(jì)時(shí)脈沖。第三部分系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)3.1 主程序流程圖圖9主程序流程圖3.2 顯示流程圖該子程序用LCD態(tài)掃描顯示方式。先將單片機(jī)的P2.2 口連接使能端口 E。 接著將單片機(jī)的P2.0 口連接數(shù)據(jù)/命令選擇端RS P0 口連接數(shù)據(jù)端D0D7然 后將要顯示的數(shù)字的值發(fā)送給 P0 口。然后調(diào)用延時(shí),接著
18、將P2.2 口置0, P2.0 口置1,寫(xiě)指令,將P2.2 口置1, P2.0 口置1,寫(xiě)數(shù)據(jù),直到要顯示的數(shù)字全部 顯示在液晶上。顯示流程圖如圖10所示。圖10顯示流程圖3.3速度處理流程圖圖11速度處理流程圖3.4電路仿真3.4.1 仿真軟件簡(jiǎn)介Proteus是世界上著名的EDA工具,從原理圖布圖、代碼調(diào)試到單片機(jī)與外 圍電路協(xié)同仿真,一鍵切換到 PCBS計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。 是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一 的設(shè)計(jì)平臺(tái),其處理器模型支持 8051、HC11、PIC10/12/16/18/24/30/ DsPIC33、 AVR、ARM
19、、8086和MSP430等,2010年又增加了 Cortex和DSP系歹1處理器, 并持續(xù)增加其他系列處理器模型。在編譯方面, 它也支持IAR、Keil和MPLAB等多種編譯器。3.4.2 仿真結(jié)果仿真結(jié)果如圖12所示LCD1LM016LdislanceiC1百20PlC21k10UFDES W 0 1 2 3 4 5 6 7V VR R E DDDDDDDDX112MR1U119XTAL118XTAL2RST29 30 31 PSENALE EAP0.4/AD4P0.7/AD7U22- 3P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.5/AD5P0.6/AD6P2.0
20、/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15VCC1VCC2SCLK I/O.3/ d2 10THT12 23 e-24I 27 28 34 d533d632d7 36d335 dRESPACK-821 RSX2CRYSTAL 2 3 4 56 7 8P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD 1314丁15 1617R2U310kVCC IP+GNDVIOUTLS
21、1案SPEAKERACS755XCB-050_L圖12仿真結(jié)果第四部分安裝調(diào)試與性能測(cè)量電路實(shí)物圖如圖13所示。圖13 電路實(shí)物圖第五部分設(shè)計(jì)總結(jié)通過(guò)本次設(shè)計(jì),使我對(duì)單片機(jī)知識(shí)和理解更一步加深了, 掌握了簡(jiǎn)易數(shù)字里 程表的設(shè)計(jì),組裝和調(diào)試方法。并且使我更加熟練的應(yīng)用仿真軟件,讓我學(xué)到了 如何運(yùn)用軟件測(cè)試電路的可行性,并且對(duì)電路的調(diào)試改進(jìn)都有一個(gè)很大的提高。這個(gè)過(guò)程中我遇到了很多困難,比如如何運(yùn)用仿真軟件畫(huà)圖,如何組織一些 比較專業(yè)的語(yǔ)言,以及上網(wǎng)查閱資料。雖說(shuō)費(fèi)勁,但是樂(lè)趣也不少。通過(guò)這次設(shè) 計(jì),我們了解到平時(shí)知識(shí)的積累真的很重要,在遇到困難時(shí)一定要向認(rèn)真思考, 查閱相關(guān)資料,不可盲目退縮,努
22、力后就一定會(huì)有收獲。這次畢業(yè)設(shè)計(jì)收獲頗豐,不僅是對(duì)自己個(gè)人能力的提高,也讓我認(rèn)識(shí)到了自 己的局限,通過(guò)這次的畢業(yè)設(shè)計(jì)為以后的學(xué)習(xí)奠定了一個(gè)更好的基礎(chǔ)。參考文獻(xiàn)1李朝青.單片機(jī)原理及接口技術(shù).北京航空航天大學(xué)出版社,19942 張毅剛,劉杰.MCS-51單片機(jī)原理及應(yīng)用.哈爾濱工業(yè)大學(xué)出版社,20043 樓然苗,李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例.北京航空航天大學(xué)出版社,20064 松井邦彥,梁瑞林.傳感器應(yīng)用技術(shù)141例.科學(xué)出版社,20065 張洪潤(rùn),張亞凡.傳感器技術(shù)與應(yīng)用教程.清華大學(xué)出版社,20056劉燦軍.實(shí)用傳感器.國(guó)防工業(yè)出版社,20047何希才.傳感器及其應(yīng)用.國(guó)防工業(yè)出版社,20
23、018 刁文興.自行車(chē)電子里程表的初步設(shè)計(jì).南京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào) ,2004, 6: 25-289安宗權(quán).電動(dòng)電子車(chē)速里程表分頻電路設(shè)計(jì).自動(dòng)化與儀器儀表,2001,5: 39-4410閻煥忠,王長(zhǎng)濤,馬斌.單片機(jī)控制里程轉(zhuǎn)速表的設(shè)計(jì).沈陽(yáng)建筑工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2002, 4: 145-14811謝自美.電子線路設(shè)計(jì).實(shí)驗(yàn).測(cè)試M.武漢:華中科技大學(xué)出版社,2000: 212-23012張福學(xué).傳感器使用電路150例.中國(guó)技術(shù)出版社.1992程序#include <reg52.h>/#define uchar unsigned char /范圍0255#define
24、uint unsigned int范圍065535#include "eeprom52.h"調(diào)用單片機(jī)頭文件無(wú)符號(hào)字符型宏定義變量/無(wú)符號(hào)整型宏定義變量/*ds1302 內(nèi)部 RAM RAM0 1100 000R/W 1 讀 0 寫(xiě)RAM1 1100 001R/WRAM30 1111 110R/W*/sbit clk = P1八3;/ds1302 時(shí)鐘線定義sbit io = P1八4;/ 數(shù)據(jù)線sbit rst = P1八5;/ 復(fù)位線秒分 時(shí) 日 月年 星期ucharcodewrite_add尸0x80,0x82,0x84,0x86,0x88,0x8c,0x8a;/寫(xiě)地
25、址ucharcoderead_add讀地址=0x81,0x83,0x85,0x87,0x89,0x8d,0x8b; /init_ds口ucharcode=0x55,0x17,0x15,0x01,0x01,0x13,0x13;uchar miao,fen,shi,ri,yue,week,nian;uchar i;uchar t1_num,t2_num; /計(jì)時(shí)間中斷的次數(shù)unsigned long speed1,juli,time2;float f_hz ,speed_km,speed_m;/dlaout time1 ,speed_km,speed_m;uchar TH11,TL11;uchar
26、 flag_en; / 開(kāi)始計(jì)算速度使能uchar flag_stop_en; /要確定車(chē)子是否停下了uint juli_s;/ 每秒走的距離uint juli_z; /總路程float zhijing = 0.55; /直徑 0.55Mbit flag_1s = 1;/1suchar menu_1;/菜單設(shè)置變量uchar menu_2;/菜單設(shè)置變量long zong_lc;/總量程uchar flag_200ms;uint shudu; /定義速度的變量uint bj_shudu = 80;/ 報(bào)警速度/這三個(gè)引腳參考資料L:指令L:指令sbit rs=P1八0; 寄存器選擇信號(hào) H:數(shù)
27、據(jù)寄存器寄存器sbit rw=P1八1; 寄存器選擇信號(hào) H:數(shù)據(jù)寄存器寄存器sbit e =P1八2; / 片選信號(hào)下降沿觸發(fā)uchar code table_num="0123456789abcdefg"uchar i;sbit beep = P3八7; /蜂鳴器IO 口定義/*1ms延時(shí)函數(shù)*/void delay_1ms(uint q)uint i,j;for(i=0;i<q;i+)for(j=0;j<120;j+);/* 把數(shù)據(jù)保存到單片機(jī)內(nèi)部 eepom中*/void write_eeprom()SectorErase(0x2000);byte_wr
28、ite(0x2000, bj_shudu % 256);byte_write(0x2001, bj_shudu / 256);byte_write(0x2002, zong_lc % 256);byte_write(0x2003, zong_lc / 256 % 256);byte_write(0x2004, zong_lc / 256 / 256 % 256);byte_write(0x2055, a_a);/*把數(shù)據(jù)從單片機(jī)內(nèi)部eepom中讀出來(lái)*void read_eeprom()uint value;bj_shudu = byte_read(0x2001);bj_shudu <&
29、lt;= 8;bj_shudu |= byte_read(0x2000);zong_lc = byte_read(0x2004);zong_lc <<= 16;value = byte_read(0x2003);zong_lc |= (value << 8);zong_lc |= byte_read(0x2002);a_a = byte_read(0x2055);/*開(kāi)機(jī)初始化保存的數(shù)據(jù)*/void init_eeprom()/開(kāi)機(jī)初始化保存的數(shù)據(jù)*read_eeprom(); /先讀if(a_a != 1)新的單片機(jī)初始單片機(jī)內(nèi)問(wèn)eeprombj_shudu = 50
30、;a_a = 1;write_eeprom();/保存數(shù)據(jù)/* 名稱:delay_uint()* 功能:小延時(shí)。* 輸入:無(wú)* 輸出:無(wú)*/void delay_uint(uint q)while(q-);/* 名稱:write_com(uchar com)* 功能:1602命令函數(shù)* 輸入:輸入的命令值* 輸出:無(wú)* */void write_com(uchar com)i =0;e=0;rs=0;rw=0;P0=com;delay_uint(3);e=1;delay_uint(25);e=0;/* 名稱:write_data(uchar dat)* 功能:1602寫(xiě)數(shù)據(jù)函數(shù)* 輸入:需要寫(xiě)
31、入1602的數(shù)據(jù)* 輸出:無(wú)*void write_data(uchar dat)1 =0;e=0;rs=1;rw=0;P0=dat;delay_uint(3);e=1;delay_uint(25);e=0;/* 名稱:write_sfm2(uchar hang,uchar add,uchar date)* 功能:顯示2位十進(jìn)制數(shù),如果要讓第一行,第五個(gè)字符開(kāi)始顯示"23",調(diào)用該函數(shù)如下write_sfm1(1,5,23)* 輸入:行,歹U,需要輸入1602的數(shù)據(jù)*輸出:無(wú)*/void write_sfm2(uchar hang,uchar add,uint date)i
32、f(hang=1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(0x30+date/10%10);write_data(0x30+date%10);/* 名稱:write_sfm4(uchar hang,uchar add,uchar date)* 功能:顯示2位十進(jìn)制數(shù),如果要讓第一行,第五個(gè)字符開(kāi)始顯示"23",調(diào)用該函數(shù)如下write_sfm1(1,5,23)* 輸入:行,歹U,需要輸入1602的數(shù)據(jù)* 輸出:無(wú)*void write_sfm4(uchar hang,uchar add,uint
33、 date)if(hang=1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(0x30+date/10000%10);write_data(0x30+date/1000%10);write_data('.');write_data(0x30+date/100%10);write_data(0x30+date/10%10);write_data(0x30+date%10);write_data('k');write_data('m');void write_sfm7(ucha
34、r hang,uchar add,uint date)if(hang=1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);wHte_data(0x30+date/100000%10);write_data(0x30+date/100000%10);write_data(0x30+date/10000%10);write_data(0x30+date/1000%10);write_data('.');write_data(0x30+date/100%10);write_data(0x30+date/10%10);write_dat
35、a('k');write_data('m'); void write_sfm1(uchar hang,uchar add,uchar date)/*lcd1602上顯示兩位十進(jìn)制數(shù)*/if(hang=1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(0x30+date % 10);* 名稱:write_string(uchar hang,uchar add,uchar *p)* 功能:改變液晶中某位的值,如果要讓第一行,第五個(gè)字符開(kāi)始顯示"ab cd ef",調(diào)用該函數(shù)
36、如下write_string(1,5,"ab cd ef;")* 輸入:行,歹U,需要輸入1602的數(shù)據(jù)*輸出:無(wú)*/void write_string(uchar hang,uchar add,uchar *p)if(hang=1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);while(1)if(*p = '0') break;write_data(*p);p+;/*lcd1602上顯示兩位十進(jìn)制數(shù)*/void write_sfm2_ds1302(uchar hang,uchar add,uchar d
37、ate)if(hang=1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(table_numdate / 16);write_data(table_numdate % 16);I*控制光標(biāo)函數(shù) */void write_guanbiao(uchar hang,uchar add,uchar date)if(hang=1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);if(date = 1)write_com(0x0f); /顯示光標(biāo)并且閃爍elsewrite_com(0
38、x0c); / 關(guān)閉光標(biāo)/* 名稱:init_1602()* 功能:初始化1602液晶* 輸入:無(wú)* 輸出:無(wú)* */void init_1602()/1602初始化write_com(0x38);write_com(0x0c);write_com(0x06);delay_uint(1000);write_string(1,0,"sd:00km/h 00:00");write_string(2,0,"lc:00.00km ");/E309R/*寫(xiě)一個(gè)數(shù)據(jù)到對(duì)應(yīng)的地址里*/void write_ds1302(uchar add,uchar dat)rst
39、= 1;/把復(fù)位線拿高for(i=0;i<8;i+)/低位在前clk = 0;/時(shí)鐘線拿低開(kāi)始寫(xiě)數(shù)據(jù)io = add & 0x01;add >>= 1;/把地址右移一位clk = 1;/時(shí)鐘線拿高for(i=0;i<8;i+)clk = 0;/時(shí)鐘線拿低開(kāi)始寫(xiě)數(shù)據(jù)io = dat & 0x01;dat >>= 1;/把數(shù)據(jù)右移一位clk = 1;/時(shí)鐘線拿高rst = 0;/復(fù)位線合低clk = 0;io = 0;/* 從對(duì)應(yīng)的地址讀一個(gè)數(shù)據(jù)出來(lái)*/uchar read_ds1302(uchar add)uchar value,i;rst =
40、 1;/把復(fù)位線拿高for(i=0;i<8;i+)/ 低位在前clk = 0;/時(shí)鐘線拿低開(kāi)始寫(xiě)數(shù)據(jù)io = add & 0x01;add >>= 1;/把地址右移一位clk = 1;/時(shí)鐘線拿高for(i=0;i<8;i+)clk = 0;/時(shí)鐘線拿低開(kāi)始讀數(shù)據(jù)value >>= 1;if(io = 1)value |= 0x80;clk = 1;/時(shí)鐘線拿高rst = 0;/復(fù)位線合低clk = 0;io = 0;return value; /返回讀出來(lái)的數(shù)據(jù)/*把要的時(shí)間 年 月日 都讀出來(lái)*/讀秒void read_time()miao =
41、read_ds1302(read_add0);fen = read_ds1302(read_add1);/讀分shi = read_ds1302(read_add2);/讀時(shí)ri = read_ds1302(read_add3); 讀日yue = read_ds1302(read_add4);/讀月nian = read_ds1302(read_add5);/讀年week = read_ds1302(read_add6);/讀星期/*把要寫(xiě) 的時(shí)間 年月日 都寫(xiě)入ds1302里*/void write_time()write_ds1302(0x8e,0x00);/ 打開(kāi)寫(xiě)保護(hù)write_ds1
42、302(write_add0,miao);/寫(xiě)秒write_ds1302(write_add1,fen);/ 寫(xiě)分write_ds1302(write_add2,shi);/ 寫(xiě)時(shí)write_ds1302(write_add3,ri);寫(xiě)日write_ds1302(write_add4,yue);寫(xiě)月write_ds1302(write_add5,nian);/寫(xiě)星期write_ds1302(write_add6,week);/寫(xiě)年write_ds1302(0x8e,0x80);關(guān)閉寫(xiě)保護(hù)*把數(shù)據(jù)保存到 ds1302 RAM中*0-31*/ void write_ds1302ram(uchar
43、 add,uchar dat)add <<= 1;/地址是從第二位開(kāi)始的add &= 0xfe; /把最低位清零是寫(xiě)的命令add |= 0xc0; /地址最高兩位為 1write_ds1302(0x8e,0x00);write_ds1302(add,dat);write_ds1302(0x8e,0x80);/* 把數(shù)據(jù)從 ds1302 RAM 讀出來(lái)*03i*/ uchar read_ds1302ram(uchar add)add <<= 1;/地址是從第二位開(kāi)始的add |= 0x01;/把最高位置1 是讀命令add |= 0xc0;/地址最高兩位為 1ret
44、urn(read_ds1302(add);初始化ds1302時(shí)間*/*void init_ds1302()uchar i;rst = 0;/第一次讀寫(xiě)數(shù)據(jù)時(shí)要把IO品拿低clk = 0;io = 0;i = read_ds1302ram(30);if(i != 3)1 = 3;write_ds1302ram(30,i);打開(kāi)寫(xiě)保護(hù)把最write_ds1302(0x8e,0x00);/for(i=0;i<7;i+)write_ds1302(write_addi,init_dsi); /高位值0允許ds1302工作write_ds1302(0x8e,0x80); /關(guān)寫(xiě)保護(hù)write_sfm
45、2(1,0,i);void init_ds1302_io()rst = 0;/第一次讀寫(xiě)數(shù)據(jù)時(shí)要把IO品拿低clk = 0;io = 0;/*定時(shí)器0初始化程序*1void init_1602_ds1302()/ write_sfm2_ds1302(2,3,nian);/ write_sfm2_ds1302(2,6,yue);/ write_sfm2_ds1302(2,9,ri);write_sfm2_ds1302(1,11,shi);write_sfm2_ds1302(1,14,fen);/ write_sfm2_ds1302(1,14,miao);/ write_sfm1(1,14,wee
46、k);*外部中斷0初始化程序*/void init_int0()EX0=1;/允許外部中斷0中斷EA=1;/開(kāi)總中斷IT0 = 1;/外部中斷0負(fù)跳變中斷/*定時(shí)器0初始化程序*1void time_init()/定時(shí)器0初始化程序EA = 1;/開(kāi)總中斷TMOD = 0X11;/定時(shí)器0、工作方式1ET0 = 1;/開(kāi)定時(shí)器0中斷TR0 = 1;/允許定時(shí)器0定時(shí)ET1 = 1;/開(kāi)定時(shí)器1中斷TR1 = 1;/允許定時(shí)器1定時(shí)/*計(jì)算速度函數(shù)*1void menu_dis() /計(jì)算速度函數(shù)static uchar value;if(menu_1 = 0)if(flag_1s = 1)fl
47、ag_1s = 0;if(flag_en = 0)value +;if(value >= 3)/2 秒speed_km = 0; / 速度為 0 shudu = (uint)speed_km;value = 0;if(flag_en = 1)value = 0;flag_en = 0;/1s = 1 / 1000000US;/ 1m/s=0.001km 除以* 256 + TL11)算出/(帶個(gè)小數(shù)點(diǎn))1/3600h=3.6km/hf_hz = (t2_num * 65536.0 + TH11/ 1000000 ; /算出來(lái)就是秒t2_num = 0; /把變量清零TH11 = 0;TL11
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版高端住宅獨(dú)立產(chǎn)權(quán)二手房買(mǎi)賣(mài)協(xié)議
- 二零二五年度智慧路燈系統(tǒng)集成服務(wù)協(xié)議4篇
- 二零二四年度專業(yè)培訓(xùn)教室租賃服務(wù)協(xié)議6篇
- 2025年度智能家電產(chǎn)品區(qū)域獨(dú)家代理協(xié)議書(shū)4篇
- 二零二五年度城市景觀路牙改造勞務(wù)分包協(xié)議4篇
- 二零二五年度股權(quán)轉(zhuǎn)讓及創(chuàng)始人退出協(xié)議(含競(jìng)業(yè)禁止條款)3篇
- 二零二四年委托貸款項(xiàng)目融資安排與展期還款協(xié)議3篇
- 2025年度城市綜合體拆遷補(bǔ)償與商業(yè)布局承包合同模板4篇
- 二零二四年度上海二手車(chē)交易車(chē)輛交易培訓(xùn)服務(wù)合同范本53篇
- 惠州2025年法務(wù)專員招聘與知識(shí)產(chǎn)權(quán)保護(hù)服務(wù)合同
- 大數(shù)據(jù)管理與考核制度大全
- 大學(xué)面試后感謝信
- 2022屆上海高考語(yǔ)文調(diào)研試測(cè)卷詳解(有《畏齋記》“《江表傳》曰…”譯文)
- SBT11229-2021互聯(lián)網(wǎng)舊貨交易平臺(tái)建設(shè)和管理規(guī)范
- 如何打造頂尖理財(cái)顧問(wèn)團(tuán)隊(duì)
- 土壤農(nóng)化分析課件
- 小區(qū)大型團(tuán)購(gòu)活動(dòng)策劃
- NEC(新生兒壞死性小腸結(jié)腸炎)92273
- 2023年租賃風(fēng)控主管年度總結(jié)及下一年展望
- 開(kāi)關(guān)插座必看的七個(gè)安全隱患范文
- 高分子成型加工課件
評(píng)論
0/150
提交評(píng)論