心率測(cè)試儀設(shè)計(jì)與制作_第1頁(yè)
心率測(cè)試儀設(shè)計(jì)與制作_第2頁(yè)
心率測(cè)試儀設(shè)計(jì)與制作_第3頁(yè)
心率測(cè)試儀設(shè)計(jì)與制作_第4頁(yè)
心率測(cè)試儀設(shè)計(jì)與制作_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

/心率測(cè)試儀設(shè)計(jì)與制作摘要:脈搏波所呈現(xiàn)出來的形態(tài)、強(qiáng)度、速率和節(jié)律等方面的綜合信息,能反映出人體心血管系統(tǒng)中許多生理疾病的血流特征。本系統(tǒng)采用AT89S52單片機(jī)為核心而制作的一種實(shí)用型脈搏測(cè)量?jī)x。采用紅外發(fā)射和接收二極管作為傳感器對(duì)人體的脈搏心率警醒數(shù)據(jù)采集。得到的信號(hào)經(jīng)過整形和放大后送入AT89S52單片機(jī)進(jìn)行處理。單片機(jī)將采集到的脈搏心率在LCD液晶顯示器上實(shí)時(shí)顯示出來,同時(shí)還設(shè)置了脈搏測(cè)量?jī)x的上下限報(bào)警電路。本文首先描述本設(shè)計(jì)的整體思路,然后介紹各個(gè)部分設(shè)計(jì)中的細(xì)節(jié)問題,最后提出一些完善本設(shè)計(jì)的改進(jìn)意見。關(guān)鍵字:脈搏計(jì)單片機(jī)AT89S52人體脈搏信號(hào)實(shí)時(shí)顯示目錄TOC\o”1—3"\h\z\uHYPERLINK\l”_Toc264935538”1。系統(tǒng)方案選擇與論證 31。1任務(wù) 3HYPERLINK\l”_Toc264935540”1。2要求 3HYPERLINK\l”_Toc264935541”1。3系統(tǒng)基本方案 3HYPERLINK\l”_Toc264935542”1.3.1各部分電路的方案選擇及論證 4HYPERLINK\l”_Toc264935543"1.3。2系統(tǒng)各模塊的最終方案 5HYPERLINK\l”_Toc264935544”2.系統(tǒng)硬件設(shè)計(jì) 62。2矩陣鍵盤的設(shè)計(jì) 7HYPERLINK\l”_Toc264935547”2.3液晶顯電路 83.系統(tǒng)軟件設(shè)計(jì) 8HYPERLINK\l”_Toc264935549”3.1系統(tǒng)主程序的設(shè)計(jì) 8HYPERLINK\l”_Toc264935550"3。2脈搏波動(dòng)頻率測(cè)量子程序的設(shè)計(jì) 93.3鍵盤掃描子程序 12HYPERLINK\l”_Toc264935552"4.調(diào)試與分析 13_Toc264935554"附錄1(硬件電路原理圖): 14HYPERLINK\l”_Toc264935555”附錄2(主要程序): 141.系統(tǒng)方案選擇與論證1。1任務(wù)設(shè)計(jì)并制作一個(gè)脈搏檢測(cè)器1。2要求(1)、通過脈搏傳感器采樣脈搏信號(hào),設(shè)計(jì)脈搏波檢測(cè)電路,通過示波器顯示出來(2)、將整形后的脈沖波送入單片機(jī),采用單片機(jī)構(gòu)成脈搏檢測(cè)儀,要求實(shí)時(shí)顯示脈率變化,脈率超限時(shí)用蜂鳴器報(bào)警,報(bào)警范圍可以通過鍵盤設(shè)定。1。3系統(tǒng)基本方案根據(jù)題目的要求系統(tǒng)模塊可以基本劃分為:脈搏傳感器部分、信號(hào)放大整形電路部分、單片機(jī)處理電路部分及顯示電路部分。為實(shí)現(xiàn)各模塊的功能,分別做了幾種不同的設(shè)計(jì)方案病進(jìn)行了論證1。3。1各部分電路的方案選擇及論證(1)脈搏傳感器部分傳感器又稱為換能器、變換器等。脈搏傳感器是脈搏檢測(cè)系統(tǒng)中重要的組成部分,其基本功能是將切脈壓力和橈動(dòng)脈搏動(dòng)壓力這樣一些物理量(非電量)轉(zhuǎn)換成為便于測(cè)量的電量.脈搏傳感器的精度、靈敏度、抗干擾能力及安裝方式?jīng)Q定了脈搏測(cè)量精度,因此其選型對(duì)整個(gè)設(shè)計(jì)具有決定性的作用.目前,脈搏信號(hào)的測(cè)量方式主要有:1、光電脈搏波傳感器。血管不受壓力時(shí),血流均勻,反射光也比較均勻,故傳感器無脈搏信號(hào)輸出;當(dāng)血管受壓血液不流動(dòng)時(shí),傳感器也無輸出信號(hào);只有當(dāng)血管受到擠壓,血管中的血液斷續(xù)流動(dòng)時(shí),反射光也隨之變化,這時(shí)傳感器輸出脈搏信號(hào),達(dá)到了測(cè)量脈搏的作用。這種傳感器的特點(diǎn)是結(jié)構(gòu)簡(jiǎn)單、可靠性高、抗干擾能力強(qiáng),主要用于測(cè)量脈搏的跳動(dòng)次數(shù).人體不同部位的脈搏波波形存在差異,光電脈搏波傳感器不適合用于提取不同部位的脈搏波信號(hào).2、力傳感器測(cè)量。其測(cè)量原理是,將測(cè)力傳感器的受力端壓在人體橈動(dòng)脈處,模仿人的指頭。這種方式通常采用壓阻式傳感器,它具有抗干擾能力強(qiáng)的特點(diǎn),但由于動(dòng)脈血管產(chǎn)生的力很小,故量程小,抗沖擊力不強(qiáng)。3、脈搏信號(hào)還表現(xiàn)為皮膚振動(dòng),因此可以用加速度傳感器進(jìn)行檢測(cè),其特點(diǎn)是結(jié)構(gòu)簡(jiǎn)單、體積小、波形測(cè)量精度較高。本設(shè)計(jì)中,采用第一種脈搏傳感器,即廣電脈搏波傳感器。(2)信號(hào)放大整形電路部分脈搏傳感器出來的電壓信號(hào)較弱,一般在毫伏級(jí),需要對(duì)其進(jìn)行放大.所以,設(shè)計(jì)信號(hào)放大電路,將脈搏傳感器出來的信號(hào)進(jìn)行放大,使之成為一個(gè)幅值適當(dāng)?shù)男盘?hào),便于后續(xù)電路的處理。由于本設(shè)計(jì)對(duì)于脈搏波的整形要求比較低,只需要將每個(gè)脈搏波整形成為一個(gè)標(biāo)準(zhǔn)的方波,送入單片機(jī)中進(jìn)行計(jì)數(shù),即可。所以這部分電路采用了比較簡(jiǎn)單的方法,只需用6個(gè)反向器對(duì)從傳感器得到的信號(hào)進(jìn)行放大和整形就可以的了。(3)單片機(jī)選擇(推薦使用51單片機(jī))本設(shè)計(jì)作為一個(gè)簡(jiǎn)單脈搏測(cè)量?jī)x,最后需給出脈搏波動(dòng)頻率。以單片機(jī)作為信息處理中心,通過對(duì)單片機(jī)進(jìn)行編程,完成信號(hào)輸入檢測(cè)、信息分析處理及信息顯示。1、AVR單片機(jī)AVR單片機(jī)是ATMEL公司生產(chǎn)的單片機(jī)。高速度(50ns)、低功耗,硬件應(yīng)用Harward結(jié)構(gòu),具有預(yù)取指令功能,使得指令可以在一個(gè)時(shí)鐘周期內(nèi)執(zhí)行,而MSC—51要12個(gè)時(shí)鐘周期執(zhí)行一條指令。AVR單片機(jī)如LPC2131等。2、凌陽(yáng)單片機(jī)凌陽(yáng)是臺(tái)灣凌陽(yáng)公司推出的單片機(jī),具有高速度、低價(jià)、可靠、實(shí)用、體積小、功耗低和簡(jiǎn)單易學(xué)等特點(diǎn),如SPCE061等。3、51單片機(jī)51單片機(jī)是INTEL公司生產(chǎn)的。它具有結(jié)構(gòu)簡(jiǎn)單,價(jià)格便宜,易于開發(fā)的特點(diǎn).通用型,有總線擴(kuò)展,有較強(qiáng)的位處理功能,有全雙工異步串行通信口。但是其功能相對(duì)較少,訪問外部數(shù)據(jù)有瓶頸,作電壓范圍窄。本設(shè)計(jì)中,單片機(jī)只需要對(duì)脈搏信號(hào)的波動(dòng)頻率進(jìn)行測(cè)量、計(jì)算和顯示,對(duì)單片機(jī)的要求不是很高。而對(duì)51單片機(jī),本人比較熟悉,所以,本設(shè)計(jì)中選擇51單片機(jī)作為信息處理中心。在51系列單片機(jī)中,AT89系列單片機(jī)是美國(guó)ATMEL公司推出的一種新型高性能低價(jià)位、低電壓低功耗的8位CMOS微型計(jì)算機(jī)。AT89S52就是其中一款,它可以完全滿足本設(shè)計(jì)的設(shè)計(jì)要求,而且,AT89S52的價(jià)格較低。(4)鍵盤與顯示部分根據(jù)題目要求,設(shè)計(jì)出來的系統(tǒng)是可以設(shè)定報(bào)警的范圍的。對(duì)鍵盤和顯示部分采用以下方案:采用液晶顯示屏和通用矩陣鍵盤。液晶顯示屏(LCD)具有功耗小、輕薄短小無輻射危險(xiǎn),平面直角顯示以及影象穩(wěn)定不閃爍,可視面積大,畫面效果好,抗干擾能力強(qiáng),并可靈活的現(xiàn)實(shí)多種狀態(tài)。根據(jù)以上論述,51單片機(jī)資源豐富,根據(jù)需要,我們選用方案一。1。3.2系統(tǒng)各模塊的最終方案根據(jù)以上分析,結(jié)合器件和設(shè)備等因素,確定如下方案:1。采用AT89S52單片機(jī)作為控制器,分別對(duì)輸入、顯示、信號(hào)的處理控制。2.傳感器部分采用光電脈搏傳感器,該器件結(jié)構(gòu)簡(jiǎn)單、可靠性高、抗干擾能力強(qiáng)3.信號(hào)的處理采用六個(gè)反向器對(duì)其進(jìn)行放大和整形4.顯示用LCD液晶顯示實(shí)時(shí)脈搏數(shù)和報(bào)警上下限數(shù)值.脈搏傳感器信號(hào)放大電路鍵盤輸入單片機(jī)處理電路顯示電路脈搏傳感器信號(hào)放大電路鍵盤輸入單片機(jī)處理電路顯示電路報(bào)警電路2.系統(tǒng)硬件設(shè)計(jì)2。1信號(hào)采集整形部分設(shè)計(jì)本部分由傳感器部分和整形電路部分組成.傳感器由紅外線發(fā)射二極管和接收而以機(jī)關(guān)組成,測(cè)量原理如下:由于手指放在光的傳遞路徑中,血管中血液的飽和度的變化將引起光的傳遞強(qiáng)度變化,此變化和心跳的節(jié)拍相對(duì)應(yīng),因此紅外接收二極管的電流也跟著心跳的節(jié)拍改變,使得紅外接收二極管輸出與心跳節(jié)拍相對(duì)應(yīng)的脈沖信號(hào)。該脈沖信號(hào)經(jīng)過U7~U5,R3~R5,C1、C2等組成的低通放大器放大,U4、R6、R7、C3組成的放大器進(jìn)一步放大后,送給由U3、U2、RV1、R8等組成的施密特觸發(fā)器整形后輸出,作為單片機(jī)的外部中斷信號(hào)。電路中的可變電阻RV1用來調(diào)整施密特觸發(fā)器的靈敏度,RV1越小,該觸發(fā)器就會(huì)越靈敏。2。2矩陣鍵盤的設(shè)計(jì)由于控制鍵位較多,方便程序設(shè)計(jì),硬件安全可靠,我們?cè)O(shè)計(jì)4×4矩陣鍵盤,與單片機(jī)P1口相連,電路如圖2.2所示。圖2.2矩陣鍵盤電路2。3液晶顯電路我們用單片機(jī)P0口作為1602的數(shù)據(jù)傳輸口,P2。0為數(shù)據(jù)命令選擇端、P2。1讀寫、P2。2使能端。硬件電路如圖2.3所示。圖2。3液晶硬件電路圖3.系統(tǒng)軟件設(shè)計(jì)3。1系統(tǒng)主程序的設(shè)計(jì)系統(tǒng)主程序控制單片機(jī)系統(tǒng)按預(yù)定的操作方式運(yùn)行,是單片機(jī)系統(tǒng)程序的框架.系統(tǒng)主程序流程圖如圖:開始開始系統(tǒng)初始化系統(tǒng)初始化NP3.2是否為上升沿?NP3.2是否為上升沿?YY脈搏波動(dòng)頻率測(cè)量子程序脈搏波動(dòng)頻率測(cè)量子程序LCD顯示LCD顯示圖系統(tǒng)主程序流程圖上電后,首先進(jìn)行整機(jī)初始化處理.主程序的初始化模塊主要完成儀器硬件、軟件的初態(tài)設(shè)置,單片機(jī)內(nèi)專用寄存器的設(shè)定,單片機(jī)工作方式及各端口的工作狀態(tài)的規(guī)定。整機(jī)初始化結(jié)束后,檢測(cè)P3.2口的狀態(tài),如果檢測(cè)到上升沿,則進(jìn)入脈搏波動(dòng)頻率測(cè)量子程序,測(cè)得脈搏波動(dòng)頻率之后,送到LCD顯示單元進(jìn)行顯示.3。2脈搏波動(dòng)頻率測(cè)量子程序的設(shè)計(jì)本設(shè)計(jì)中對(duì)脈搏頻率的測(cè)量采用周期測(cè)量法??蓪纹瑱C(jī)內(nèi)定時(shí)/計(jì)數(shù)器T0定為16位定時(shí)器,對(duì)內(nèi)部機(jī)器周期計(jì)數(shù),即方式控制字為#01H。定時(shí)器的開關(guān)由程序根據(jù)P3.2口上的狀態(tài)進(jìn)行控制,檢測(cè)到上升沿時(shí)開T0計(jì)數(shù),當(dāng)緊接著的另一個(gè)上升沿被檢測(cè)到時(shí)關(guān)T0計(jì)數(shù)。T0中的計(jì)數(shù)值為nx,則被測(cè)脈搏信號(hào)周期Tx=nx×Ts(對(duì)于12MHz晶振,Ts=1μs),每分鐘跳動(dòng)次數(shù)QUOTEFx=1TxFx=60/Tx考慮到脈搏的頻率很低,大約為1HZ左右,而16位定時(shí)/計(jì)數(shù)器的最高計(jì)數(shù)值為65535,這樣定時(shí)/計(jì)數(shù)器將發(fā)生溢出,且最后脈搏波動(dòng)頻率的計(jì)算涉及到雙字節(jié)除法,編程較復(fù)雜。為此,采用定時(shí)器中斷方式,即在一個(gè)脈搏周期內(nèi),隔一段時(shí)間T1,T1即為中斷周期,且T1〈65535,就將TH0,TL0清零。設(shè)N為每分鐘脈搏跳動(dòng)次數(shù),T為脈搏跳動(dòng)周期,則N=60/T本設(shè)計(jì)中,設(shè)定顯示的每分鐘脈搏跳動(dòng)次數(shù)誤差不超過1次,則dN=若T=2,dN=則定時(shí)器周期⊿T不超過1/15秒。若T=1,dN=則定時(shí)器周期⊿T不超過1/60秒。取T=1,即定時(shí)器周期⊿T不超過1/60秒。設(shè)中斷周期為T1,中斷次數(shù)為n,則:N=為方便計(jì)算,?。?T1=2m。由于定時(shí)器周期⊿T不超過1/60秒,即T1<1/60,1T1>60,故取m脈搏波動(dòng)頻率測(cè)量子程序流程圖如下圖所示。00→R3ECEC→TH0,78→TL0TR0置TR0置1,開始計(jì)數(shù)N是否N是否TH0=0,TL0=0?YYTR0TR0置1,開始計(jì)數(shù)n加1n加1NP3.2NP3.2是否為上跳沿?YYTR0TR0置0,定時(shí)器停止工作計(jì)算1分鐘內(nèi)的脈搏數(shù)計(jì)算1分鐘內(nèi)的脈搏數(shù)結(jié)束結(jié)束脈搏頻率測(cè)量中斷服務(wù)程序流程圖3.3鍵盤掃描子程序設(shè)置上下限脈搏次數(shù)設(shè)置上下限脈搏次數(shù)開始鍵盤掃描功能鍵是否按下?是主函數(shù)否鍵盤子程序流程圖4。調(diào)試與分析經(jīng)過一番的努力和奮斗后,終于在限定的時(shí)間中把程序和硬件部分都完全做出來了。但是做出來了并不代表能夠使用,每一個(gè)作品都需要上千次的調(diào)試。第一次調(diào)試的時(shí)候,接通電源,LCD液晶顯示屏燈亮了,但是并沒有字體顯示。原因:液晶顯示屏的對(duì)比度調(diào)得太高了,以至于全部的字體都無法顯示,經(jīng)過調(diào)整滑動(dòng)變阻器的阻值大小,終于能夠清晰的顯示出來了。第二次調(diào)試,程序的顯示不正常,經(jīng)常發(fā)生程序跑飛的情況。原因:?jiǎn)纹瑱C(jī)主機(jī)部分電路復(fù)位電容沒有接好,以至于出現(xiàn)這樣的問題.經(jīng)過后來重新把電容焊好后,就沒有再出現(xiàn)這樣的情況了。5。收獲與體會(huì)本次實(shí)驗(yàn)由我和隊(duì)員共同完成,在這個(gè)過程中使我受益匪淺。在確定各模塊電路的過程中,不但訓(xùn)練了我們查找資料的能力,更是一次很好考驗(yàn)我們用所學(xué)的模擬電子技術(shù)基礎(chǔ)和數(shù)字電子技術(shù)基礎(chǔ)等相關(guān)知識(shí)來判斷電路正確與否的機(jī)會(huì).通過此次課程設(shè)計(jì)的鍛煉,自己的動(dòng)手能力有了很大的提高,查找問題、解決問題的能力也有了相應(yīng)的進(jìn)步。當(dāng)然,這次試驗(yàn)也讓我看到了我們的很多缺陷。首先就是在畫原理圖的時(shí)候沒有看清反向器的管腳,以致差點(diǎn)出現(xiàn)做出了一塊無用的電路板的情況.還有就是在確定方案之前,沒有在實(shí)驗(yàn)板上認(rèn)真搭建電路,事前摸清放大模塊的工作情況??偟膩碚f,本次設(shè)計(jì)有苦也有甜。設(shè)計(jì)思路是最重要的,只要你的設(shè)計(jì)思路是成功的,那你的設(shè)計(jì)已經(jīng)成功了一半,因此我們應(yīng)該在設(shè)計(jì)前做好充分的準(zhǔn)備。同時(shí)在實(shí)踐的過程中,一定不能半途而廢,或者是中途改設(shè)計(jì)思路。因?yàn)檫@樣不僅會(huì)浪費(fèi)大量的時(shí)間與精力,還會(huì)讓你自己沒有了一往直前的勇氣。因此,在做這些設(shè)計(jì)的時(shí)候一定需要耐心和勇氣去克服在中途遇到的困難和阻力。同時(shí)熟練地掌握課本上的知識(shí),這對(duì)試驗(yàn)中出現(xiàn)的問題進(jìn)行分析解決也是相當(dāng)重要的。這次設(shè)計(jì)留給我們印象最深的是要設(shè)計(jì)一個(gè)成功的電路,必須要有耐心,更要有堅(jiān)持的毅力。附錄1(硬件電路原理圖):附錄2(主要程序):主程序:unsignedcharkey_value;//存放鍵盤返回unsignedcharkey_flag=0;//定義有鍵按下的標(biāo)志unsignedchari,j,t,m,DispBuf[10]={'M','a’,’i','B’,’o’,’:','0’,’0’,'0’,’\0'};unsignedintn,mb,w,f;voiddisplay_times();#include”reg52.h”#include”lcd.c”#include”hardware.c”#include”user1.h”#include”key。c"sbitP3_0=P3^0;voidmain(){EA=0; sys_init(); LCD_Initial(); delay_20ms(10); LCD_Write(0,0x01);//清屏 LCD_Print(5,0,”Welcome!”); delay_20ms(10); LCD_Print(0,0,”MaiBoCeLiang”); LCD_Print(0,1,”eControl!"); delay_20ms(10); LCD_Write(0,0x01);//清屏 LCD_Print(0,0,"LSTC”); LCD_Print(0,1,"byLWL&MZL"); delay_20ms(10); LCD_Write(0,0x01);//清屏LCD_Print(0,0,"XuanZeFanWei:”); LCD_Print(0,1,”MoRenwei:50~120"); while(1) {unsignedintw=0; key_value=kbscan(); if(key_flag==1) { key_command(key_value); w=1; }if(w==1) break;} LCD_Write(0,0x01);//清屏delay_20ms(10); displayHL(); LCD_Print(0,1,”Testing。.。”); delay_20ms(20);LCD_Write(0,0x01);//清屏 displayHL(); TMOD=0x01; //定時(shí)器T0工作于方式1 TH0=0xec; TL0=0x78; //T0定時(shí)時(shí)間為5ms IE=0x83; //開中斷 IT0=1; //外部中斷0為邊沿觸發(fā)方式 TR0=1; //開定時(shí)器T0 for(;;) //脈搏指示燈控制 { if(P3_0==0) { delay_20ms(50); P3_0=1; } }//useralarm();}external0()interrupt0//外部中斷服務(wù)程序{P3_0=0;//點(diǎn)亮指示燈 if(n==0) mb=0; else mb=12000/n;//計(jì)算每分鐘脈搏數(shù) f=mb; DispBuf[8]=mb%10+0x30;//取個(gè)位數(shù) mb=mb/10; DispBuf[7]=mb%10+0x30;//取十位數(shù) DispBuf[6]=mb/10+0x30;//取百位數(shù)LCD_Print(3,1,DispBuf); n=0;}Timer0()interrupt1//定時(shí)中斷服務(wù)程序{ TH0=0xec; TL0=0x78; n++; if(n==2000)//10秒鐘測(cè)不到心率,n復(fù)位 n=0;}鍵盤掃描程序:#include〈string。h〉#include〈reg52。h〉unsignedcharkey_value;unsignedcharkey_flag;charcodetab[4][4]={ {'.’,1,4,7}, //7,8,9,EUP {0,2,5,8}, //4,5,6,Ddown {'F’,3,6,9}, //1,2,3,CSET {’B','C’,’D’,'E’}};//0到F的16個(gè)鍵植 //A.,0,F+/-,BOKvoiddelay(unsignedchara){ unsignedchari; while(a—-) for(i=100;i〉0;i-—);}unsignedcharkbscan()//鍵盤掃描{ unsignedcharhang,lie,key; key_flag=0; P1=0x0f; if(P1!=0x0f) { delay(10); if(P1!=0x0f) { key_flag=1; P1=0x0f; switch(P1&0x0f) { case0x0e:lie=0;break; case0x0d:lie=1;break; case0x0b:lie=2;break; case0x07:lie=3;break; } P1=0xf0; switch(P1&0xf0) { case0xe0:hang=0;break; case0xd0:hang=1;break; case0xb0:hang=2;break; case0x70:hang=3;break; } P1=0x0f; while(P1!=0x0f); key=tab[hang][lie]; return(key); } } elsereturn(key_value);}voidsetmaibo(void){unsignedchari; LCD_Write(0,1); GotoXY(0,0); Print(”H_Maibo:"); for(i=0;i〈3;i++) { key_flag=0; while(key_flag==0) key_value=kbscan(); while(1) { if(key_value!=’B'&&key_value!='C'&&key_value!='D’&&key_value!=’E'&&key_value!='F'&&key_value!=’.')break; elsekey_value=kbscan(); } get_ht[i]=key_value; LCD_Write(1,key_value+0x30); } GotoXY(0,1); Print(”L_Maibo:”); for(i=0;i<2;i++) { key_flag=0; while(key_flag==0) key_value=kbscan(); while(1) { if(key_value!=’B'&&key_value!=’C’&&key_value!='D'&&key_value!=’E’&&key_value!=’F’&&key_value!='.’)break; elsekey_value=kbscan(); } get_lt[i]=key_value; LCD_Write(1,key_value+0x30); } while(1) { key_value=kbscan(); if(key_value==’C')break; } mh=get_ht[0]*100+get_ht[1]*10+get_ht[2]; ml=get_lt[0]*10+get_lt[1]; LCD_Write(0,0x01); GotoXY(0,0); Print(”SetSucess!”); delay_20ms(50); LCD_Write(0,0x01);}voidkey_command(unsignedcharkey_value){switch(key_value){ case'C’:setmaibo();break; default:break;}}液晶顯示程序:#include〈intrins。h〉//PortDefinitions**********************************************************sbitLcdRs =P2^0;sbitLcdRw =P2^1;sbitLcdEn =P2^2;sfrDBPort =0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0。數(shù)據(jù)端口voidlcd_delay(unsignedchart){unsignedchari,j; for(i=0;i〈t;i++) for(j=0;j〈100;j++);}//內(nèi)部等待函數(shù)*************************************************************voidLCD_Wait(void) //讀忙狀態(tài){ LcdRs=0; LcdRw=1;_nop_();LcdEn=1;_nop_();LcdEn=0;}//向LCD寫入命令或數(shù)據(jù)********************************************************#defineLCD_COMMAND 0//Command#defineLCD_DATA 1//Data#defineLCD_CLEAR_SCREEN 0x01//清屏#defineLCD_HOMING 0x02//光標(biāo)返回原點(diǎn)voidLCD_Write(bitstyle,unsignedcharinput) //寫數(shù)據(jù)1/命令0{ LcdEn=0;LcdRs=style; LcdRw=0;_nop_(); DBPort=input;_nop_(); LcdEn=1;_nop_();lcd_delay(10);LcdEn=0;_nop_(); LCD_Wait(); }//設(shè)置顯示模式************************************************************#defineLCD_SHOW 0x04//顯示開#defineLCD_HIDE 0x00//顯示關(guān) #defineLCD_CURSOR 0x02 //顯示光標(biāo)#defineLCD_NO_CURSOR 0x00//無光標(biāo) #defineLCD_FLASH 0x01//光標(biāo)閃動(dòng)#defineLCD_NO_FLASH 0x00//光標(biāo)不閃動(dòng)voidLCD_SetDisplay(unsignedcharDisplayMode){LCD_Write(LCD_COMMAND,0x08|DisplayMode);}//設(shè)置輸入模式************************************************************#defineLCD_AC_UP 0x02#defineLCD_AC_DOWN 0x00//default#defineLCD_MOVE 0x01//畫面可平移#defineLCD_NO_MOVE 0x00//defaultvoidLCD_SetInput(unsignedcharInputMode){LCD_Write(LCD_COMMAND,0x04|InputMode);}//初始化LCD************************************************************voidLCD_Initial(void) //初始化LCD{ LCD_Write(0,0x38);LCD_Write(0,0x38);//8位數(shù)據(jù)端口,2行顯示,5*7

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論