【正文】
電源功率不足和負載能力差等通過計數(shù)外部中斷的脈沖數(shù),每經(jīng)過1s進行一次監(jiān)測,從而得出速度,并計算出路程,再通過液晶1602顯示該鍵盤掃描引擎探測按鍵動作。假定輪圈的周長為L,在輪圈上安裝m個永久磁鐵,則測得的里程值最大誤差為L/m。通過計數(shù)外部中斷的脈沖數(shù),每經(jīng)過1s進行一次監(jiān)測,從而得出速度,并計算出路程,再通過液晶1602顯示。計數(shù)器是用來計數(shù)1s鐘輪子的圈數(shù)。系統(tǒng)在上電復位后,先對定時器0和定時器1進行設置和賦值,再進行系統(tǒng)各參數(shù)初始化設置,開啟用于顯示模塊的定時器0,再進行按鍵掃描,通過鍵處理函數(shù)對各模塊進行控制。 第4章 系統(tǒng)軟件設計 系統(tǒng)軟件流程圖根據(jù)自行車里程器的設計功能要求,系統(tǒng)程序必需實現(xiàn)以下任務:LCD掃描;按鍵掃描處理;時鐘信號產(chǎn)生。(2)電磁式蜂鳴器驅(qū)動原理蜂鳴器發(fā)聲原理是電流通過電磁線圈,使電磁線圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)聲的,因此需要一定的電流才能驅(qū)動它,單片機IO引腳輸出的電流較小,單片機輸出的TTL電平基本上驅(qū)動不了蜂鳴器,因此需要增加一個電流放大的電路。通過發(fā)光二極管來提示系統(tǒng)處于運行狀態(tài)還是等待狀態(tài)。VL是對比控制引腳,電壓在0~5V之間,BLA和指令10:寫數(shù)據(jù)。指令5:光標或顯示移位高電平表示有效,低電平則無效。(說明:1為高電平、0為低電平)第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。 漢字的顯示一般采用圖形的方式,事先從微機中提取要顯示的漢字的點陣碼(一般用字模提取軟件),每個漢字占32B,分左右兩半,各占16B,左邊為5??右邊為6??根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)可找出顯示RAM對應的地址,設立光標,送上要顯示的漢字的第一字節(jié),光標位置加1,送第二個字節(jié),換行按列對齊,送第三個字節(jié)??直到32B顯示完LCD就可以得到一個完整的漢字.(4)顯示容量16*2個字符芯片工作電壓工作電流20mA()模塊最佳電壓字符尺寸*(WXH)/mm(續(xù))(5)編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負極第1腳:VSS為地電源第2腳:VDD接5V電源這就是LCD顯示的基本原理。 液晶顯示的分類方法有很多種,通??砂雌滹@示方式分為段式、字符式、點陣式等。相對而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動IC上,因而耗電量比其它顯示器要少得多該計價系統(tǒng)的顯示電路采用LCD1602液晶顯示,分別顯示時間、里程、速度和溫度。因此,液晶顯示器畫質(zhì)高且不會閃爍。在“斷線報警器”的制作中,也會用到干簧管。當車輪每轉(zhuǎn)動一周, 便發(fā)出一個脈沖給傳感器, 傳感器輸出信號接在單片機的TCAP端(輸入捕捉端),輸入捕捉寄存器(ICR)記錄TCAP端的脈沖次數(shù), 再通過程序折合成行車里程及速度?!?2MHz之間選擇,電容值在5~30pF之間選擇,電容值的大小可對頻率起微調(diào)的作用EA/VPP(Pin31):程序存儲器的內(nèi)外部選通。②外接晶振引腳(2根)空閑模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。單片機廣泛應用于儀器儀表、家用電器、醫(yī)用設備、航空航天、專用設備的智能化管理及過程控制等領域。它的體積小、質(zhì)量輕、價格便宜、為學習、應用和開發(fā)提供了便利條件。、 、 。 本里程表選用干簧管傳感器,穩(wěn)定、安裝簡易。霍爾傳感器是利用霍爾效應把磁輸入信號轉(zhuǎn)換成電信號的器件。把單片機的串行口設置為方式0(同步移位寄存器),輸出顯示信息LED數(shù)碼的靜態(tài)顯示其亮度令人滿意,74HC164/74LS164串并轉(zhuǎn)換芯片驅(qū)動LED數(shù)碼管,因此會帶來體積大、成本高、功耗高等缺點。EEPROM,MAX810復位電路,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口。52系列的單片機計數(shù)器為三個16位計數(shù)器,斷源為8個。而且容易實現(xiàn)。可行性很高,而且電路簡單,可以用軟件完全仿真,但設計實現(xiàn)比較困難,對設計者的要求很高。按鍵部分:有客無客模擬按鍵,當按下時表示有客,彈開時表示無客;待行使模擬按鍵,無客狀態(tài)下,無論按下或彈起都無效,及等待行使指示燈都處于亮狀態(tài)。只要轉(zhuǎn)軸每旋轉(zhuǎn)一周,產(chǎn)生一個或固定的多個脈沖,將脈沖送入單片機中進行計算,即可獲得轉(zhuǎn)速的信息。 本文首先要對該課題的任務進行方案論證,包括硬件方案和軟件方案的設計;繼而具體介紹了自行車的速度里程表的硬件設計,包括傳感器的選擇、單片機的選擇、顯示電路的設計;然后闡述了該自行車的速度里程表的軟件設計,包括數(shù)據(jù)處理子程序的設計、顯示子程序的設計;最后對本次設計進行了系統(tǒng)的總結(jié)。單片機以及外圍芯片的不斷發(fā)展也進一步促進了里程計的發(fā)展。The design of this multifunction window will be in line with the principles of safe, convenient, energy saving, userfriendly, and it will make modern life significantly improved.Keywords: Bicycle。畢業(yè)設計(論文)基于單片機的自行車里程速度計設計摘要 隨著自行車行業(yè)和電子技術的發(fā)展,自行車里程速度計技術也在不斷進步和提高,用戶對自行車里程速度計的要求也越來越高,因此設計了自行車里程速度計。s structure and realizes.The mileage log system with STC89C52 as control core, using sensors to detect signals, by a certain time interval signal collection, in bination with itself, bicycle wheel parameters through single chip microputer for the analysis of the collected signal, finally displayed on the LCD screen LCD vehicle mileage and speed, overspeed alarm。隨著社會的不斷發(fā)展,單片機應用技術飛速發(fā)展,現(xiàn)代自行車里程計的模型也就基本具備了,它可以完成計程,顯示等基本工作,同時還具備了LED顯示、永久時鐘、存儲等其他一些附加功能。使用單片機進行測速,可以使用簡單的脈沖計數(shù)法。根據(jù)需求分析的結(jié)果設計自行車里程器,:主要解決的問題指示燈2個:一個指示控制板是否正常上電工作,另一個指示燈指示當前速度是否超過設定的報警速度,當超過設定的速度時,燈光亮起提示車主。方案三: 利用CPLD/FPGA來實現(xiàn)——電子EDA技術,實現(xiàn)自行車里程計。比較以上五個方案的優(yōu)缺點,我們決定使用方案五,能夠完成所有要求的功能。而總里程L除以總時間t得到平均速度。 ,而8080C32片內(nèi)是沒有ROM的, 而 89C51內(nèi)部含有4K字節(jié)的FLASH的ROM。具有以下標準功能:8k字節(jié)Flash,512字節(jié)RAM,32位I/O口線,看門狗定時器,內(nèi)置4KB 、便于擴展。 串行靜態(tài)LED數(shù)碼管顯示。 開關型霍爾傳感器。P0口和P2口用于七段LED顯示器的段碼及掃描輸出,在顯示里程時。所以就稱為單片(單芯片)機,而且有一些單片機中除了上述部份外,還集成了其它部份如A/D,D/A等。更不用說自動控制領域的機器人、智能儀表、醫(yī)療器械了。另外,AT89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。GND(Pin20):接地線PSEN(Pin29):外部存儲器讀選通信號P1口(Pin1~Pin8):8位準雙向I/O口線,~定時元件通常采用石英晶體和電容組成的并聯(lián)諧振回路。工作原理:通電瞬間,RC電路充電,RST引腳出現(xiàn)高電平,只要RST端保持10ms以上高電平,就能使單片機有效地復位復位電路 復位電路圖 按鍵電路圖里程計數(shù)模擬脈沖按鍵通常里程器有一個傳感器輸入信號, 傳感器接在自行車的軟軸上, 信號以脈沖方式輸出。裝在門上,可作為開門時的報警、問候等。由于液晶顯示器每一個點在收到信號后就一直保持那種色彩和亮度,恒定發(fā)光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點。(4)功耗低(2)液晶顯示器的分類例如屏的第一行的亮暗由RAM區(qū)的000H——00FH的16字節(jié)的內(nèi)容決定,當(000H)=FFH時,則屏幕的左上角顯示一條短亮線,長度為8個點;當(3FFH)=FFH時,則屏幕的右下角顯示一條短亮線;當(000H)=FFH,(001H)=00H,(002H)=00H,??(00EH)=00H,(00FH)=00H時,則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。③漢字的顯示3所示 LCD寄存器的分類ER/WRS功能說明100寫入命令寄存器101寫入數(shù)據(jù)寄存器110讀取忙碌標志及RAM地址111讀取RAM數(shù)據(jù)0X不動作(續(xù))1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的。S:屏幕上所有文字是否左移或者右移。低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。本設計中LCD1602的數(shù)據(jù)總線接STC89C52單片機的P0口,R/。常用的是發(fā)紅光、綠光或黃光的二極管。多諧振蕩器由晶體管或集成電路構(gòu)成,當接通電源后(~15V直流工作電壓),多諧振蕩器起振,~,阻抗匹配器推動壓電蜂鳴片發(fā)聲。 報警電路,通過調(diào)節(jié)這兩個開關,可以改變輪圈的半徑。當輪子每轉(zhuǎn)一圈,通過傳感器采集到一個脈沖信號,可以采用兩種定時器,一個定時器定位1s,一個是計數(shù)器。 A44E輸出端OUT連到單片機外部中斷T0上,用磁鐵靠近A44E,輸出端產(chǎn)生一個低電平信號,使CPU產(chǎn)生一次中斷計一次數(shù)。(3)性差:若樣機中存在電源故障,則加電后將造成器件損壞。本文采用了KEIL uVISION2軟件對程序進行編寫和調(diào)試。(2)Keil環(huán)境要求我們?yōu)?Test 工程選擇一個單片機型號;我們選擇 Atmel 公司的 89C51(雖然我們使用的是89C52,但由于89S51與89C51內(nèi)、外部結(jié)構(gòu)完全一樣,所以這里依然選擇“89C51”)。(7)最后,從菜單的“工程”中執(zhí)行“R重新構(gòu)造所有目標”,匯編、連接、創(chuàng)建Hex文件一氣呵成;在工程文件的目錄下就會生成與工程名相同的一些文件,其中大部分文件我們并不必關心,而生成的 Hex 文件是我們需要的!它是要燒寫到單片機中的最終代碼,也就是單片機可以執(zhí)行的程序。,半徑的顯示,半徑的變化 在這個界面的第二行依次分別表示設置的最高速度,半徑,運行時間。小時和分鐘之間的冒號在不停的閃爍表示當前秒在不停的計時。第二行的第三個數(shù)字表示自行車的運行時間,所表示的是小時和分鐘,如果時間顯示小于一分鐘將不會顯示。通過此次設計,本人學到了很多老師課上沒教的知識,如干簧管元件,液晶顯示器等的管腳及其功能,了解了它們的用法、原理、接口電路及其應用程序,進一步加強了本人的專業(yè)基礎知識和相關專業(yè)課程知識,提高了本人的動手能力,能將所學知識運用在實際生活中;培養(yǎng)獨立自主、綜合分析的思維與創(chuàng)新能力。FarmFarm同時感謝本院、系領導對學生們的教導和關注;感謝大學四年傳授學子專業(yè)知識的所有老師。在整個課題的進展及論文的撰寫過程中,專業(yè)的各位同學提出了許多寶貴的意見和建議,使我受益匪淺,給予了我很大的幫助,在此我向他們表達真誠的謝意。unsigned char IsSet=0。//運動千里、運動(米)float total_distance。// 最大速度、瞬時速度、平均速度float k,l。//外部輸入標志float work_time_t1。 //溫度數(shù)值存放uchar code ditab[16]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9}。 break。 break。 break。 seconds_bike++。 else monthend = 28。 case 6: monthend = 30。 case 10: monthend = 31。 } if(months12) { months=1。 } if(seconds==60) { seconds=0。 Init_date()。)。 DisplaySinglByte(1,10,39。 } if(timer_10ms50) { DisplaySinglByte(1,13,39。 } else { DisplaySinglByte(2,0,39。 DisplaySinglByte(2,3,39。 DisplaySinglByte(2,6,a[1]+0x30)。 //DisplaySinglByte(2,10,kilometer/100+0x30)。 DisplaySinglByte(2,15,meter_int%10+0x30)。)