自行車簡易數(shù)字里程表設(shè)計(jì)論文_第1頁
自行車簡易數(shù)字里程表設(shè)計(jì)論文_第2頁
自行車簡易數(shù)字里程表設(shè)計(jì)論文_第3頁
自行車簡易數(shù)字里程表設(shè)計(jì)論文_第4頁
自行車簡易數(shù)字里程表設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 畢業(yè)設(shè)計(jì)論文 自行車簡易數(shù)字里程表 班 級 姓 名 學(xué) 號 指導(dǎo)教師 提交日期 2013 年 月 日 摘 要隨著居民生活水平的不斷提高,自行車已經(jīng)不僅僅是普通的代步、運(yùn)輸工具,而是成為人們娛樂、休閑、鍛煉的首選。自行車簡易數(shù)字里程表能夠滿足人們最基本的需求,讓人們能清楚地知道當(dāng)前的速度、里程等物理量。本論文主要闡述一種基于霍爾元件的自行車速度里程表的設(shè)計(jì)。以 STC89C52單片機(jī)為核心,A44E 霍爾傳感器測轉(zhuǎn)數(shù),實(shí)現(xiàn)對自行車?yán)锍?速度的測量,采用1602LCD顯示自行車的里程數(shù)及速度。文章詳細(xì)介紹了自行車的速度里程表的硬件電路。硬件部分利用霍爾元件將自行車每轉(zhuǎn)一圈的脈沖數(shù)傳入單片機(jī)系統(tǒng),

2、然后單片機(jī)系統(tǒng)將信號經(jīng)過處理送顯示。軟件部分用C語言進(jìn)行編程,采用模塊化設(shè)計(jì)思想。該系統(tǒng)硬件電路簡單,子程序具有通用性,完全符合設(shè)計(jì)要求。關(guān)鍵字:里程/速度;霍爾元件;單片機(jī);LCD顯示ABSTRACTWith the developing of peoples life, 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

3、 mileage/speed can fulfill the basic need of peoples life, so that they can 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 st

4、atistic are achieved. (Saved 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 Microcompu

5、ter system. Then the 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

6、element; Single chip microcomputer; LCD 目錄引 言5第一部分 設(shè)計(jì)任務(wù)61.1 設(shè)計(jì)要求61.2 方案設(shè)計(jì)6第二部分 系統(tǒng)硬件平臺的設(shè)計(jì)62.1 總體設(shè)計(jì)方案說明62.2 單片機(jī)最小系統(tǒng)72.2.1 STC89C52單片機(jī)72.2.2 時(shí)鐘電路72.2.3 復(fù)位電路82.3 顯示模塊82.4 霍爾傳感器的測量原理102.5 DS1302時(shí)鐘芯片10第三部分 系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)113.1 主程序流程圖113.2 顯示流程圖113.3 速度處理流程圖123.4 電路仿真133.4.1 仿真軟件簡介133.4.2 仿真結(jié)果13第四部分 安裝調(diào)試與性能測量14

7、第五部分 設(shè)計(jì)總結(jié)14參考文獻(xiàn)14引 言自行車被發(fā)明及使用到現(xiàn)在已有兩百多年的歷史,這兩百年間人類在不斷的嘗試與研發(fā)過程中,將玩具式的木馬車轉(zhuǎn)換到今日各式新穎休閑運(yùn)動自行車,自行車發(fā)展的目的也從最早的交通代步的工具轉(zhuǎn)換成休閑娛樂運(yùn)動的用途。隨著居民生活水平的不斷提高,自行車不再僅僅是普通的運(yùn)輸、代步的工具,而是成為人們娛樂、休閑、鍛煉的首選。因此,人們希望自行車的功用更強(qiáng)大,能給人們帶來更多的方便。自行車簡易數(shù)字里程表作為自行車的一大輔助工具也隨著這個(gè)需求而面世,其功能也逐漸從單一的里程顯示發(fā)展到速度、時(shí)間顯示。本設(shè)計(jì)采用了MCS-51系列單片機(jī)設(shè)計(jì)一種體積小、操作簡單的便攜式自行車的速度里程

8、表,它能自動地顯示當(dāng)前自行車行駛的里程及速度。 本課題主要任務(wù)是利用霍爾元件、單片機(jī)等部件設(shè)計(jì)一個(gè)可用1602液晶顯示里程和速度的自行車速度里程表。本文主要介紹了自行車的速度里程表的設(shè)計(jì)思想、電路原理和元件的選擇等內(nèi)容,整體上分為硬件部分設(shè)計(jì)和軟件部分設(shè)計(jì)。本文首先扼要對該課題的任務(wù)進(jìn)行方案論證,包括硬件方案和軟件方案的設(shè)計(jì);繼而具體介紹了自行車的速度里程表的硬件設(shè)計(jì),包括單片機(jī)的選擇、傳感器的選擇、顯示電路的設(shè)計(jì);然后簡要闡述了自行車的速度里程表的軟件設(shè)計(jì)思路;最后針對仿真過程遇到的問題進(jìn)行了說明與分析,對本次設(shè)計(jì)進(jìn)行了系統(tǒng)的總結(jié)。 具體的硬件電路包括STC89C52單片機(jī)的外圍電路以及液晶

9、顯示電路等。軟件設(shè)計(jì)包括:芯片的初始化程序、定時(shí)中斷子程序、顯示子程序等,軟件采用C語言編寫。 第一部分 設(shè)計(jì)任務(wù) 1.1 設(shè)計(jì)要求(1) 設(shè)計(jì)一個(gè)可以適用各種自行車的數(shù)字里程表,可顯示里程、速度等信息。(2) 學(xué)習(xí)、了解自行車數(shù)字里程表的基本工作原理。1.2 方案設(shè)計(jì) 采用單片機(jī)實(shí)現(xiàn):用霍爾傳感器將所測轉(zhuǎn)速轉(zhuǎn)變?yōu)閿?shù)字脈沖信號,然后再將數(shù)字脈沖信號數(shù)據(jù)傳輸于核心單片機(jī)處理,單片機(jī)將根據(jù)設(shè)計(jì)程序計(jì)算在一定時(shí)間內(nèi)數(shù)字脈沖的頻率,再由計(jì)數(shù)值最終得到里程數(shù)并通過終端顯示設(shè)備顯示出來。且附加報(bào)警功能,在速度超過某一個(gè)固定值后,蜂鳴器響,提示需要減速。第二部分 系統(tǒng)硬件平臺的設(shè)計(jì)2.1 總體設(shè)計(jì)方案說明

10、本設(shè)計(jì)的任務(wù)是:以通用MCS-51單片機(jī)為處理核心,用傳感器將車輪的轉(zhuǎn)數(shù)轉(zhuǎn)換為電脈沖,進(jìn)行處理后送入單片機(jī)。里程及速度的測量,是經(jīng)過MCS-51的定時(shí)/計(jì)數(shù)器測出總的脈沖數(shù)和每轉(zhuǎn)一圈的時(shí)間,再經(jīng)過單片機(jī)的計(jì)算得出,其結(jié)果通過LED顯示器顯示出來。本系統(tǒng)總體思路如下:假定輪圈的周長為L,在輪圈上安裝a個(gè)永久磁鐵,則測得的里程值最大誤差為L/a。經(jīng)綜合分析,本設(shè)計(jì)中取a=1。當(dāng)輪子每轉(zhuǎn)一圈,通過開關(guān)型霍爾元件傳感器采集到一個(gè)脈沖信號,并從引腳P3.2中斷0端輸入,傳感器每獲取一個(gè)脈沖信號即對系統(tǒng)提供一次計(jì)數(shù)中斷。每次中斷代表車輪轉(zhuǎn)動一圈,中斷數(shù)n與輪圈的周長L的乘積為里程值。計(jì)數(shù)器T1計(jì)算每轉(zhuǎn)一圈

11、所用的時(shí)間time,就可以計(jì)算出即時(shí)速度speed。若自行車超過限定速度,系統(tǒng)發(fā)出報(bào)警信號,蜂鳴器響。要求達(dá)到的各項(xiàng)指標(biāo)及實(shí)現(xiàn)方法如下:1. 利用霍爾傳感器產(chǎn)生里程數(shù)的脈沖信號。2. 對脈沖信號進(jìn)行計(jì)數(shù)。實(shí)現(xiàn):利用單片機(jī)自帶的計(jì)數(shù)器T1對霍爾傳感器脈沖信號進(jìn)行計(jì)數(shù)。3. 對數(shù)據(jù)進(jìn)行處理,要求用LED顯示里程總數(shù)和即時(shí)速度。實(shí)現(xiàn):利用軟件編程,對數(shù)據(jù)進(jìn)行處理得到需要的數(shù)值。最終實(shí)現(xiàn)目標(biāo):自行車的速度里程表具有里程、速度測試與顯示功能,采用單片機(jī)作控制,顯示電路可顯示里程及速度。 圖1 系統(tǒng)框圖2.2 單片機(jī)最小系統(tǒng)2.2.1 STC89C52單片機(jī) 圖2 STC89C52單片機(jī)2.2.2 時(shí)鐘電

12、路 STC89C52系列是1T的8051單片機(jī),STC89C52系統(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以上電平信號,只要保證電容的充放電時(shí)間大于2us,即可復(fù)位,所以電路中的電容是可改變的,按鍵按下,電容處于一個(gè)短路電路中,電容釋放所有的電能,電阻兩端電壓升高系統(tǒng)復(fù)位。且振蕩器穩(wěn)定后,如果RST引腳上有一個(gè)高電平并維持

13、2個(gè)機(jī)器周期(24個(gè)振蕩周期)以上,則CPU就可以響應(yīng)并將系統(tǒng)復(fù)位。單片機(jī)系統(tǒng)的復(fù)位方式有:手動按鈕復(fù)位和上電復(fù)位。 圖4 復(fù)位電路2.3 顯示模塊 1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別, 1602LCD及兩者尺寸差別如下圖所示: 圖6 液晶顯示模塊圖 1602引腳說明表格如下:編號符號引腳說明編號符號引腳說明1Vss電源地9D2數(shù)據(jù)口2VDD電源正極10D3數(shù)據(jù)口3VO液晶顯示對比度調(diào)節(jié)端11D4數(shù)據(jù)口4RS數(shù)據(jù)/命令選擇端(H/L)12D5數(shù)據(jù)口5R/W讀寫選擇端(H/L)13D6數(shù)據(jù)口6E使能信號14D

14、7數(shù)據(jù)口7D0數(shù)據(jù)口15BLA背光電源正極8D1數(shù)據(jù)口16BLK背光電源負(fù)極 液晶引腳與單片機(jī)連接:第1腳:VSS接地。第2腳:VDD接5V正電源。第3腳:VO接3K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇。第5腳:R/W為讀寫信號線。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線接單片機(jī)P0口。第15腳:背光源正極接電源。第16腳:背光源負(fù)極接地。2.4 霍爾傳感器的測量原理 圖7 霍爾傳感器 霍爾傳感器是利用霍爾效應(yīng)制成的一種磁敏傳感器。在置于磁場中的導(dǎo)體或半導(dǎo)體通入電流I,若電流垂直磁場B,則在與磁場和電流都垂直的方向上會出

15、現(xiàn)一個(gè)電勢差Uh,這種現(xiàn)象稱為霍爾效應(yīng)。利用霍爾效應(yīng)制成的元件稱為霍爾元件。因?yàn)樗哂薪Y(jié)構(gòu)簡單、頻率響應(yīng)寬、靈敏度高、測量線性范圍大、抗干擾能力強(qiáng)以及體積小、使用壽命長等一系列特點(diǎn),因此被廣泛應(yīng)用于測量、自動控制及信息處理等領(lǐng)域。2.5 DS1302時(shí)鐘芯片 圖8 時(shí)鐘芯片 本設(shè)計(jì)時(shí)間芯片采用的了DS1302,DS1302是由美國DALLAS公司推出的一種具有涓細(xì)電流充電能力的低功耗實(shí)時(shí)時(shí)鐘電路,具有可對年、月、周、日、時(shí)、分、秒進(jìn)行計(jì)時(shí)等的功能,工作電壓為2.5V5.5V。主要的特點(diǎn)是采用串行數(shù)據(jù)傳輸,即使掉電亦不丟失,在DS1302內(nèi)部有一個(gè)318的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1

16、302與STC89C52的連接線有三條線:RST引腳、SCLK串行時(shí)鐘引腳、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í),接著將P2.2口置0,P2.0口置1,寫指令,將P2.2口置1,P2.0口置1,寫數(shù)據(jù),直到要顯示的數(shù)字全部顯示在液晶上。顯示流程圖如圖10所示。 圖10

17、顯示流程圖3.3 速度處理流程圖 圖11 速度處理流程圖3.4 電路仿真3.4.1 仿真軟件簡介Proteus是世界上著名的EDA工具,從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器

18、。3.4.2 仿真結(jié)果仿真結(jié)果如圖12所示。 圖12 仿真結(jié)果第四部分 安裝調(diào)試與性能測量 電路實(shí)物圖如圖13所示。 圖13 電路實(shí)物圖第五部分 設(shè)計(jì)總結(jié) 通過本次設(shè)計(jì),使我對單片機(jī)知識和理解更一步加深了,掌握了簡易數(shù)字里程表的設(shè)計(jì),組裝和調(diào)試方法。并且使我更加熟練的應(yīng)用仿真軟件,讓我學(xué)到了如何運(yùn)用軟件測試電路的可行性,并且對電路的調(diào)試改進(jìn)都有一個(gè)很大的提高。這個(gè)過程中我遇到了很多困難,比如如何運(yùn)用仿真軟件畫圖,如何組織一些比較專業(yè)的語言,以及上網(wǎng)查閱資料。雖說費(fèi)勁,但是樂趣也不少。通過這次設(shè)計(jì),我們了解到平時(shí)知識的積累真的很重要,在遇到困難時(shí)一定要向認(rèn)真思考,查閱相關(guān)資料,不可盲目退縮,努力

19、后就一定會有收獲。這次畢業(yè)設(shè)計(jì)收獲頗豐,不僅是對自己個(gè)人能力的提高,也讓我認(rèn)識到了自己的局限,通過這次的畢業(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 張洪潤, 張亞凡. 傳感器技術(shù)與應(yīng)用教程. 清華大學(xué)出版社, 20056 劉燦軍. 實(shí)用傳感器. 國防工業(yè)出版社, 20047

20、何希才. 傳感器及其應(yīng)用. 國防工業(yè)出版社, 20018 刁文興. 自行車電子里程表的初步設(shè)計(jì). 南京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào), 2004, 6: 25-289 安宗權(quán). 電動電子車速里程表分頻電路設(shè)計(jì). 自動化與儀器儀表, 2001, 5: 39-4410 閻煥忠, 王長濤, 馬斌. 單片機(jī)控制里程轉(zhuǎn)速表的設(shè)計(jì). 沈陽建筑工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2002, 4: 145-14811 謝自美. 電子線路設(shè)計(jì).實(shí)驗(yàn).測試M.武漢:華中科技大學(xué)出版社,2000:212-23012 張福學(xué). 傳感器使用電路150例.中國技術(shù)出版社.1992程序#include /調(diào)用單片機(jī)頭文件#define uc

21、har unsigned char /無符號字符型 宏定義變量范圍0255#define uint unsigned int /無符號整型 宏定義變量范圍065535#include eeprom52.h/*ds1302 內(nèi)部RAM RAM0 1100 000R/W 1讀 0寫 RAM1 1100 001R/W . RAM30 1111 110R/W */sbit clk = P13; /ds1302時(shí)鐘線定義sbit io = P14; /數(shù)據(jù)線sbit rst = P15; /復(fù)位線/秒 分 時(shí) 日 月 年 星期 uchar code write_add=0x80,0x82,0x84,0x

22、86,0x88,0x8c,0x8a; /寫地址uchar code read_add =0x81,0x83,0x85,0x87,0x89,0x8d,0x8b; /讀地址uchar code init_ds =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,spee

23、d_m;uchar TH11,TL11;uchar flag_en; /開始計(jì)算速度使能uchar flag_stop_en; /要確定車子是否停下了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è)引腳參考資料sbit

24、rs=P10; /寄存器選擇信號 H:數(shù)據(jù)寄存器 L:指令寄存器sbit rw=P11; /寄存器選擇信號 H:數(shù)據(jù)寄存器 L:指令寄存器sbit e =P12; /片選信號 下降沿觸發(fā)uchar code table_num=0123456789abcdefg;uchar i;sbit beep = P37; /蜂鳴器IO口定義/*1ms 延時(shí)函數(shù)*/void delay_1ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;j120;j+);/*把數(shù)據(jù)保存到單片機(jī)內(nèi)部eepom中*/void write_eeprom()SectorErase(0x2000);

25、byte_write(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中讀出來*/void read_eeprom()uint value;bj_shudu = byte_read(0x2001);bj_shu

26、du = 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);/*開機(jī)初始化保存的數(shù)據(jù)*/void init_eeprom() /開機(jī)初始化保存的數(shù)據(jù)*read_eeprom();/先讀if(a_a != 1)/新的單片機(jī)初始單片機(jī)內(nèi)問eeprombj_shudu = 50;a_a = 1;write_e

27、eprom(); /保存數(shù)據(jù)/* 名稱 : delay_uint()* 功能 : 小延時(shí)。* 輸入 : 無* 輸出 : 無*/void delay_uint(uint q)while(q-);/* 名稱 : write_com(uchar com)* 功能 : 1602命令函數(shù)* 輸入 : 輸入的命令值* 輸出 : 無*/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寫數(shù)據(jù)函數(shù)* 輸入

28、: 需要寫入1602的數(shù)據(jù)* 輸出 : 無*/void write_data(uchar dat)i =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è)字符開始顯示23 ,調(diào)用該函數(shù)如下 write_sfm1(1,5,23)* 輸入 : 行,列,需要輸入1602的數(shù)據(jù)* 輸出 : 無*/void write_sfm2(uchar hang,uchar add,uint

29、date)if(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è)字符開始顯示23 ,調(diào)用該函數(shù)如下 write_sfm1(1,5,23)* 輸入 : 行,列,需要輸入1602的數(shù)據(jù)* 輸出 : 無*/void write_sfm4(uchar hang,uchar add

30、,uint 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(uchar hang,uchar add,uint da

31、te)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_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_data(k);write_data(m);/*lcd1602上顯示兩

32、位十進(jìn)制數(shù)*/void write_sfm1(uchar hang,uchar add,uchar date)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è)字符開始顯示ab cd ef ,調(diào)用該函數(shù)如下 write_string(1,5,ab cd ef;)* 輸入 : 行,列,需要輸入1602的數(shù)據(jù)* 輸出 :

33、 無*/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 date)if(hang=1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data

34、(table_numdate / 16);write_data(table_numdate % 16);/*控制光標(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)并且閃爍else write_com(0x0c); /關(guān)閉光標(biāo) /* 名稱 : init_1602()* 功能 : 初始化1602液晶 * 輸入 : 無* 輸出 : 無*/void i

35、nit_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/*寫一個(gè)數(shù)據(jù)到對應(yīng)的地址里*/void write_ds1302(uchar add,uchar dat)rst = 1; /把復(fù)位線拿高for(i=0;i= 1; /把地址右移一位clk = 1; /時(shí)鐘線拿高for(i=0;i= 1; /把數(shù)據(jù)右移一位clk = 1; /時(shí)鐘線拿高

36、rst = 0; /復(fù)位線合低clk = 0;io = 0;/*從對應(yīng)的地址讀一個(gè)數(shù)據(jù)出來*/uchar read_ds1302(uchar add)uchar value,i;rst = 1; /把復(fù)位線拿高for(i=0;i= 1; /把地址右移一位clk = 1; /時(shí)鐘線拿高for(i=0;i= 1;if(io = 1)value |= 0x80;clk = 1; /時(shí)鐘線拿高rst = 0; /復(fù)位線合低clk = 0;io = 0;return value; /返回讀出來的數(shù)據(jù)/*把要的時(shí)間 年月日 都讀出來*/void read_time()miao = read_ds1302(

37、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);/讀星期/*把要寫的時(shí)間 年月日 都寫入ds1302里*/void write_time()write_ds1302(0x8e,0x00);/打開寫保護(hù)write_ds1302(write_a

38、dd0,miao);/寫秒write_ds1302(write_add1,fen);/寫分write_ds1302(write_add2,shi);/寫時(shí)write_ds1302(write_add3,ri);/寫日write_ds1302(write_add4,yue);/寫月write_ds1302(write_add5,nian);/寫星期write_ds1302(write_add6,week);/寫年write_ds1302(0x8e,0x80);/關(guān)閉寫保護(hù)/*把數(shù)據(jù)保存到ds1302 RAM中*0-31*/void write_ds1302ram(uchar add,uchar

39、dat)add = 1; /地址是從第二位開始的add &= 0xfe; /把最低位清零 是寫的命令add |= 0xc0; /地址最高兩位為 1 write_ds1302(0x8e,0x00);write_ds1302(add,dat);write_ds1302(0x8e,0x80);/*把數(shù)據(jù)從ds1302 RAM讀出來*0-31*/uchar read_ds1302ram(uchar add)add = 1; /地址是從第二位開始的add |= 0x01; /把最高位置1 是讀命令add |= 0xc0; /地址最高兩位為 1 return(read_ds1302(add);/*初始化ds1302時(shí)間*/void init_ds1302()uchar i;rst = 0;/第一次讀寫數(shù)據(jù)時(shí)要把IO品拿低clk = 0;io = 0;i = read_ds1302ram(30); if(i != 3)i = 3;write_ds1302ram(30,i);write_ds1302(0x8e,0x00); /打開寫保護(hù)for(i=0;i= 3)/2秒speed_km = 0; /速度為0shudu =

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論