智能人體秤的系統(tǒng)設(shè)計_第1頁
智能人體秤的系統(tǒng)設(shè)計_第2頁
智能人體秤的系統(tǒng)設(shè)計_第3頁
智能人體秤的系統(tǒng)設(shè)計_第4頁
智能人體秤的系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、本科生畢業(yè)論文(設(shè)計)本科生畢業(yè)論文(設(shè)計)題目 基于單片機的智能人體電子秤的系統(tǒng)設(shè)計 姓名 學號 院系電氣信息與自動化專業(yè)測控技術(shù)與儀器指導(dǎo)教師 職稱 講師 2011 年 月 日教務(wù)處制基于單片機的人體智能秤摘 要隨著微電子技術(shù)的應(yīng)用,市場上使用的傳統(tǒng)稱重工具已經(jīng)滿足不了人們的要求。為了改變傳統(tǒng)稱重工具在使用上存在的問題,在本設(shè)計中將智能化、自動化、人性化用在了電子秤重的控制系統(tǒng)中。本系統(tǒng)主要由單片機來控制,測量物體重量部分由稱重傳感器及 a/d 轉(zhuǎn)換器組成,加上顯示單元,此電子秤俱備了功能多、性能價格比高、功耗低、系統(tǒng)設(shè)計簡單、使用方便直觀、速度快、測量準確、自動化程度高等特點。本系統(tǒng)以

2、at89c52 單片機為主控芯片,外圍附以稱重電路、顯示電路、a/d 轉(zhuǎn)換電路、鍵盤電路等構(gòu)成智能稱重系統(tǒng)電路板,從而實現(xiàn)自動稱重系統(tǒng)的各種控制功能。主要通過 lcd 顯示人體的體重,經(jīng)鍵盤輸入身高,結(jié)合身高與體重的關(guān)系來判別并顯示人體的身材??梢哉f,此設(shè)計集稱重、判別身材和時間顯示一體,功能齊全可進行推廣應(yīng)用,所完成的電子秤很大程度上滿足了應(yīng)用需求。關(guān)鍵詞:液晶顯示;傳感器;單片機ii目目 錄錄1 緒 論.12 系統(tǒng)設(shè)計.22.1 設(shè)計任務(wù)及要求.22.1.1 任務(wù).22.1.2 要求.22.1.3 說明.22.2 總體設(shè)計方案.22.2.1 設(shè)計思路.22.2.2 方案論證與比較.22.2

3、.3 系統(tǒng)組成.83 硬件電路的設(shè)計.93.1 外部電路的設(shè)計.93.1.1 單片機控制系統(tǒng).93.1.2 單片機與轉(zhuǎn)換器的接口電路.93.1.3 液晶顯示接口電路.113.1.4 電源電路.133.1.5 鍵盤與單片機接口電路.134 軟件設(shè)計.154.1 主程序的設(shè)計.154.1.1 系統(tǒng)主程序.154.1.2 歡迎模塊.164.1.3 測量模塊.174.1.4 身材模塊.184.1.5 時間模塊.194.1.6 鍵盤模塊.205 系統(tǒng)測試.215.1 測試使用的仿真軟件.215.2 測試.215.3 顯示時間仿真.215.4 顯示體重和身材的仿真.226 總結(jié).23致 謝.24參考文獻.

4、25附錄 1 主電路圖.26附錄 2 源程序清單.2701 緒緒 論論目前,隨著社會的發(fā)展、生活水平不斷提高,人們越來越關(guān)注自己的身體健康。許多人由于工作的壓力和不良的飲食習慣,使得身體健康每況愈下,疾病也隨之而來,而在這些人群中,患有肥胖和營養(yǎng)不良的病人居多。為方便人們及時了解自己的體重是否超出或低于標準的體重,在許多公共場合都擺放了人體秤,商場、藥店、馬路旁等隨處可見,給那些由于工作緊張沒有時間到醫(yī)院做定期體驗的人們帶來了方便。人體秤已不再是醫(yī)院的專用醫(yī)療器械,已成為人們生活中不可缺少的一部分。普通人體秤測量身高和體重的結(jié)果都是直接用眼睛觀看指針讀取的,由于讀數(shù)的方法各不相同、讀數(shù)時光線有

5、明有暗等多種原因,使得讀取數(shù)據(jù)的誤差過大。由于人體秤的使用非常普遍,解決這一問題顯得尤為重要。近年來,隨著科技不斷進步,計算機已滲透到各個領(lǐng)域,單片機已逐漸成為科學技術(shù)現(xiàn)代化的重要工具,正在不斷地走向深入。單片機的應(yīng)用已深入到人類的生活、生產(chǎn)等各種領(lǐng)域。在此基礎(chǔ)上發(fā)展起來的由單片機控制的人體稱,比普通人體稱在耐用性、適用環(huán)境、讀數(shù)的準確度等方面有了很大的提高。智能人體秤經(jīng)濟、實用,適合在廣大工薪階層推廣。因此,以單片機為控制核心的人體秤,不但提高了讀數(shù)的精確度,給人們以直觀的效果,將身材標準與否一并顯示,與普通人體秤的價格相差無幾,逐漸取代傳統(tǒng)的人體秤。12 系統(tǒng)設(shè)計系統(tǒng)設(shè)計2.12.1 設(shè)計

6、任務(wù)及要求設(shè)計任務(wù)及要求2.1.12.1.1 任務(wù)任務(wù) 設(shè)計一個人體智能秤,要求顯示人體體重、顯示時間、顯示身材。2.1.22.1.2 要求要求 顯示人體體重、身材以及顯示時間。2.1.32.1.3 說明說明(1)人體稱重的范圍定為 10kg100kg,身高的范圍為 90cm190cm。(2)tjh-2c 型稱重傳感器,額定負載為 100kg,傳感器電路采用的是單臂電橋,只有一個電阻應(yīng)變片,與其它型號的相比而言價格便宜。2.22.2 總體設(shè)計方案總體設(shè)計方案2.2.12.2.1 設(shè)計思路設(shè)計思路通過 tjh-2c 重力傳感器對稱重信號進行采集,經(jīng) ina126 將稱重模擬信號進行放大,通過 8

7、 位的 a/d 轉(zhuǎn)換器完成數(shù)據(jù)采集,再把模擬信號轉(zhuǎn)換為數(shù)字信號輸入 mcu,由 mcu 完成一系列的運算,最后由 lcd 顯示身材、體重和時間。2.2.22.2.2 方案論證與比較方案論證與比較 (1)傳感器模塊方案一:本設(shè)計中需要測量的是人體的體重,沒有具體的測量的范圍,所以本系統(tǒng)中我采用 tjh-2c 型稱重傳感器,它的測量范圍是(0100kg),適合大多數(shù)的人群,如圖 2-1為傳感器的原理圖。圖 2-1 tjh-2c 傳感器原理圖稱重傳感器主要由彈性體、電阻應(yīng)變片電纜線等組成,內(nèi)部線路采用惠更斯電橋,當彈性體承受載荷產(chǎn)生變形時,輸出信號電壓由公式 1。eout=r2*r4/(r2+r4)

8、*(r1/r1+r2/r2+r3/r3+r4/r4)*ein (公式 1)稱重傳感器是影響人體稱測量精度的關(guān)鍵部分。選用適當?shù)膫鞲衅?,用來感知被測量,當人體站到稱盤上時,重力傳給傳感器,該傳感器發(fā)生行變,從而使阻抗發(fā)生變化,電橋失去平衡,傳感器輸出一個變化的模擬信號。本系統(tǒng)中采用 tjh-2c 型稱重傳感器,額定負載為 200kg,傳感器電路采用的是單臂電橋電路,只有一個電阻應(yīng)變片,理想情況下,傳感器輸出信號、放大器輸出信號、a/d 轉(zhuǎn)換輸出信號、人體體重之間的關(guān)系基本成線性,放大器的理想放大倍數(shù)為 327。 方案二:采用應(yīng)變片式壓力傳感器壓力傳感器是現(xiàn)實中采用并使用的比較多的一種傳感器,我們

9、使用的壓力傳感器主要利用壓電效應(yīng)制造而成的,這種的傳感器也稱為壓電傳感器。應(yīng)變片壓力傳感器原理如圖 2-2: 圖 2-2 應(yīng)變片壓力傳感器原理圖 電阻應(yīng)變片受力產(chǎn)生形變,使加在應(yīng)變片電阻上的電壓發(fā)生變化。這種應(yīng)變片在受力時產(chǎn)生的阻值變化通常較小,一般這種應(yīng)變片都組成應(yīng)變片電橋,并通過后續(xù)的儀表放大器進行放大,在傳輸給處理電路(通常是 a/d 轉(zhuǎn)換和 cpu)顯示或執(zhí)行機構(gòu)。因為應(yīng)變片產(chǎn)生的阻值變化小,所以在測量時,一旦超過量程的上限值就會損壞儀器,而測量人體體重的變化范圍很光。顯然,采用此方案不適合。方案選擇:通過比較,認為本設(shè)計相對需要較穩(wěn)定相對電路簡單的傳感器,這樣可以省下一些時間,因此,

10、選擇了方案一。 3(2)前端放大器的選擇方案一:利用普通低溫漂運算放大器構(gòu)成多級放大器。普通低溫漂運算放大器構(gòu)成多級放大器會引入大量噪聲。由于 a/d 轉(zhuǎn)換器需要很高的精度,所以幾毫伏的干擾信號就會直接影響最后的測量精度。所以,此中方案不宜采用。方案二:由高精度低漂移運算放大器構(gòu)成差動放大器。差動放大器具有高輸入阻抗,增益高的特點,可以利用普通運放做成一個差放大器 ,如圖 2-3(op07) 。圖 2- 3 差動放大器原理圖電阻 r1 、 r2 電容 c1 、 c2 、 c3 、 c4 用于濾除前級的噪聲, c1 、 c2 為普通小電容,可以濾除高頻干擾, c3 、 c4 為大的電解電容,主要

11、用于濾除低頻噪聲。優(yōu)點:輸入級加入放大器,增大了輸入阻抗,中間級為差動放大電路,滑動變阻器 r6 可以調(diào)節(jié)輸出零點,最后一級可以用于微調(diào)放大倍數(shù),使輸出滿足滿量程要求。輸出級為反向放大器,所以輸出電阻不是很大,比較符合應(yīng)用要求。 缺點:此電路要求 r3 、r4 相等,誤差將會影響輸出精度,難度較大。實際測量,每一級運放都會引入較大噪聲。對精度影響較大。方案 三 :采用專用儀表放大器,如: ina126,ina121 等。以 ina126 為例如圖 2- 4。圖 2- 4 ina126 放大器原理圖此類芯片內(nèi)部采用差動輸入,共模抑制比高,差模輸入阻抗大,增益高,精度也非常好,且外部接口簡單。放大

12、器增益 g=5+80k/rg ,通過改變 rg 的大小來改變放大器的增益。 方案選擇:綜上所述,選擇方案三比較適合本系統(tǒng)的要求。 (3)a/d 模塊方案一:雙積分型 a/d 轉(zhuǎn)換器:如:icl7135、icl7109 等。 雙積分型 a/d 轉(zhuǎn)換器精度高,具有精確的差分輸入,輸入阻抗高,可自動調(diào)零,超量程信號,全部輸出于 ttl 電平兼容。雙積分型 a/d 轉(zhuǎn)換器具有很強的抗干擾能力。對正負對稱的工頻干擾信號積分為零,所以對 50hz 的工頻干擾抑制能力較強,對高于工頻干擾(例如噪聲電壓)已有良好的濾波作用。只要干擾電壓的平均值為零,對輸出就不產(chǎn)生影響。但是,雙積分型 a/d 的轉(zhuǎn)換速度太緩慢

13、了,這樣就無法滿足要低功耗的要求,顯然雙積分型的 a/d 不適合于本系統(tǒng)的設(shè)計。方案二:逐次逼近型 a/d 轉(zhuǎn)換器,如:ads7805、ads7804 等。 逐次逼近型 a/d 轉(zhuǎn)換,一般具有采樣/保持功能。采樣頻率高, 功耗比較低,是理想的高速、高精度、省電型 a/d 轉(zhuǎn)換器件。高精度逐次逼近型 a/d 轉(zhuǎn)換器一般都帶有內(nèi)部基準源和內(nèi)部時鐘,基于 89c52 構(gòu)成的系統(tǒng)設(shè)計時僅需要外接幾個電阻、電容。方案選擇:作為人體秤,系統(tǒng)對 a/d 的轉(zhuǎn)換速度要求適中,精度上 8 位的 a/d 足以滿足要求。另外逐次逼近行型 a/d 轉(zhuǎn)換器,具有低廉的價格。綜合的分析其優(yōu)點和缺點,選擇方案二。 (4)控

14、制模塊方案一:采用可編程邏輯器件 cpld 作為控制器。cpld 可以實現(xiàn)各種復(fù)雜的邏輯功能、規(guī)模大、密度高、體積小、穩(wěn)定性高、io 資源豐富、易于進行功能擴展。采用并行的輸入輸出方式,提高了系統(tǒng)的處理速度,適合作為大規(guī)??刂葡到y(tǒng)的控制核心。但本系統(tǒng)不需要復(fù)雜的邏輯功能,對數(shù)據(jù)的處理速度的要求也不是非常高,而且從使用及經(jīng)濟的角度考慮放棄此方案。方案二:采用凌陽公司的 16 位單片機,它是 16 位控制器,具有體積小、驅(qū)動能力高、集成度高、易擴展、可靠性高、功耗低、結(jié)構(gòu)簡單、中斷能力強等特點。處理速度高,尤其用于語音處理和識別等領(lǐng)域。但是當凌陽單片機應(yīng)用語音處理和辨識時,由于其占用的 cpu 資

15、源較多而使得凌陽單片機同時處理其他任務(wù)的速度和能力降低。方案三:采用使用 atmel 公司的 at89c52 作為系統(tǒng)的的主控制器,at89c52 是一種低功耗、高性能 cmos8 位微控制器,具有 8k 在系統(tǒng)可編程 flash 存儲器。與工業(yè) 80c51 產(chǎn)品指令和引腳完全兼容。片上 flash 允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的 8 位 cpu 和在系統(tǒng)可編程 flash,使得at89c52 為嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。方案選擇:由于本設(shè)計要求不高,采用一般的 at89c52 即可完成,所以選擇方案三。 (5) 鍵盤模塊方案一:采用

16、獨立式鍵盤,它是各鍵盤相互獨立地接到單片機的 i/o 引腳,每一個按鍵需要占用單片機的一個 i/o 引腳,這是最簡單的鍵盤結(jié)構(gòu)。但有任何一個鍵按下時,與之相連的輸入數(shù)據(jù)線即被置為邏輯 0(低電平) ,而平時該數(shù)據(jù)線上保持為邏輯 1(高電平) ,單片機程序中只要通過查詢與鍵盤相連的 i/o 腳位即可方便地實現(xiàn)按鍵處理。不過,這種按鍵的缺點是按鍵多時,占用單片機的 i/o 口線資源。本系統(tǒng)是設(shè)計通過人體體重與身高的關(guān)系來判別人體健康的程度,所以只需 09 個數(shù)字鍵和一個復(fù)位鍵,顯然占用的 i/o 線資源太多了,在本系統(tǒng)中不適用。方案二:采用并列式鍵盤可以減少占用單片機 i/o 口的線資源,而在本系

17、統(tǒng)的設(shè)計中采用并列式鍵盤 4*4,只需要 8 根 i/o 口線,并且在鍵盤上分配很合理,可以設(shè)置09 個鍵、一個復(fù)位鍵、小數(shù)點。雖然在軟件上完成行列式鍵盤的掃描,編程相對而言很復(fù)雜,但這種行列式鍵盤的掃描程序已經(jīng)有現(xiàn)成的程序可以借鑒,只需修改就可以使用。方案選擇:綜上分析,選擇方案 二。 (6)顯示模塊方案一:采用 led 示顯示器在單片機應(yīng)用系統(tǒng)中,通常使用 led 數(shù)碼管顯示器來顯示各種數(shù)字和字符,由于它有顯示清晰、亮度高、使用電壓低、壽命長的特點,所以使用非常廣泛,但是本為要求顯示中文,用 led 使電路復(fù)雜,所以不適合本系統(tǒng)。方案二:采用 lcd 液晶顯示器液晶顯示器有微功耗、體積小、

18、顯示內(nèi)容豐富、模塊化、接口電路簡單等諸多優(yōu)點,適合推廣應(yīng)用,而且有許多自帶中文字庫的芯片,適合本系統(tǒng)的設(shè)計。方案選擇:綜上分析,選用方案二。62.2.32.2.3 系統(tǒng)組成系統(tǒng)組成本系統(tǒng)主要采用稱重傳感器模塊、濾波放大電路模塊、模數(shù)轉(zhuǎn)換電路???、顯示模塊、鍵盤模塊等部分組成。人體的體重信息由稱重傳感器轉(zhuǎn)換成電信號,并通過測量電路進行濾波放大,由單片機控制 a/d 轉(zhuǎn)換器完成數(shù)據(jù)采集,并由單片機完成運算、顯示,人體智能秤系統(tǒng)框圖如圖 2-5 所示。 圖 2-5 人體智能秤系統(tǒng)框圖73 硬件電路的設(shè)計硬件電路的設(shè)計3.13.1 外部電路的設(shè)計外部電路的設(shè)計3.1.13.1.1 單片機控制系統(tǒng)單片機

19、控制系統(tǒng)at89c52 最小系統(tǒng)圖,它是整個電路正常工作不可缺少的部分,其中引腳 18 和19 接晶整電路,cry=12mhz;9 引腳接復(fù)位電路,即可手動復(fù)位也可以上電復(fù)位;31 引腳接電源,低電平輸入為真,如圖 3-1 所示。圖 3-1 單片機最小系統(tǒng)圖3.1.2 單片機與轉(zhuǎn)換器的接口電路單片機與轉(zhuǎn)換器的接口電路a/d 轉(zhuǎn)換器是將模擬量轉(zhuǎn)換為數(shù)字量的器件,它是模擬量與計算機之間的接口部分。逐次逼近法型 a/d 轉(zhuǎn)換器的結(jié)構(gòu)如圖 2,由 n 位逐次逼近寄存器、n 位 d/a 轉(zhuǎn)換器、比較器、n 位輸出緩沖器及邏輯控制電路構(gòu)成。其工作原理為:把輸入的模擬電壓 vin 作為目標值,用對分搜索的方

20、法來逼近該值。當啟動信號 start 有效后,時鐘信號 clk 通過控制邏輯電路使 n 位寄存器的最高位置 1,其余各位為 0,此二進制代碼經(jīng) d/a 轉(zhuǎn)換器轉(zhuǎn)換為電壓 v0,該值為滿量程的一半。將 v0 與輸入電壓 vin 作比較,如 vinv0,則保留這一位;否則該位請 0。然后,clk 再對次高位置 1,并連同上一次轉(zhuǎn)換結(jié)果進行 d/a 轉(zhuǎn)換和比較,保留結(jié)果,重復(fù)以上過程直到比較完畢,發(fā)出轉(zhuǎn)換結(jié)果信號 eoc,并將 n 位寄存器中的轉(zhuǎn)換結(jié)果送至輸出緩沖器,如圖 3-2。 圖 3-2 逐次逼近型 a/d 轉(zhuǎn)換器的結(jié)構(gòu)adc0809 與單片機接口電路圖如圖 3-3 所示。單片機的低 8 位的

21、地址信號在 ale作用下鎖存在 74ls373 中。74ls373 輸出的低 3 位信號分別加到 adc0809 的通道選擇端 a、b、c,作為通道編碼。單片機的 p2.7 作為片選信號,與/wr 進行或非操作得到一個正脈沖,加到 adc0809 的 ale 和 start 的引腳上。由于 ale 和 start 連接在一起,因此 adc0809 在鎖存信道地址的同時也啟動轉(zhuǎn)換。在讀取轉(zhuǎn)換結(jié)果時,用單片機的讀信號 p2.4 和 p2.7 引腳經(jīng)或非門后產(chǎn)生的正脈沖作為 oe 信號,用以打開三態(tài)輸出鎖存器。顯然,上訴操作時,p2.7 應(yīng)為低電平。adc0809 的 eoc 端經(jīng)反相器連接到單片機

22、的 p2.5 引腳,作為查詢或中斷信號。圖 3-3 單片機與 adc0809 接口電路3.1.3 液晶顯示接口電路液晶顯示接口電路lcd 是利用晶體材料的電光效應(yīng)制作的一種被動式顯示器。液晶本身并不發(fā)光,依靠電信號的控制使周圍環(huán)境光在顯示部位反射或透射而得以顯示。液晶顯示器是一種體積小、重量輕、功耗低、被廣泛應(yīng)用的顯示設(shè)備。在本系統(tǒng)中用 lcd 來顯示稱重人的身材,主要顯示漢字。lcd 顯示的掃描方式是按行列式掃描,顯示一個漢字是按左上、右上、左下、右下的順序按列顯示的。顯示漢字前,首先要提取漢字的字模。一個漢字共 32 字節(jié),為1616 點陣,提取字模采用 aedk51 機軟件系統(tǒng)自帶的字模

23、提取軟件,以 a51 的取模格式,并將其參數(shù)設(shè)定為:逆向取模、字節(jié)正序。將要顯示的漢字字模存放在程序區(qū)內(nèi),需要顯示時,給定特定的數(shù)據(jù)表地址即可。lcd 復(fù)位信號通過反相器接到單片機的 reset 上,上電或手動復(fù)位時將隨單片機同時復(fù)位。由于復(fù)位后并行口輸出高電平,lcd 處于選中狀態(tài),此時 lcd 將輸出內(nèi)部狀態(tài)字,將會影響數(shù)據(jù)總線上的數(shù)據(jù)傳輸。所以外接一個反相器,如圖 3-4。圖 3-4 lcd 顯示接口電路圖113.1.4 電源電源電路電路電源采用的是 9v 交流電壓電源輸入,5v 直流電壓輸出,穩(wěn)壓二極管 vd2 串接在7805 的 2 引腳與地之間,可使輸出電壓得到提高,輸出電壓為穩(wěn)壓

24、管輸出電壓與 vd2輸出電壓之和。vd1 是輸出保護二極管,一旦輸出電壓低于 vd2 穩(wěn)壓值時,vd1 導(dǎo)通,將輸出電流旁路,保護 7805 穩(wěn)壓管輸出級不被損壞,如圖 3-5 所示。圖 3-5 電源電路圖3.1.5 鍵盤與單片機接口電路鍵盤與單片機接口電路矩陣式鍵盤采用并列式結(jié)構(gòu),按鍵設(shè)置在行列的交點上如圖 3-6。矩陣式鍵盤的行線通過電阻接+5v,當鍵盤上沒有鍵閉合時,所有的行線與列線是斷開的,行線均呈高電平。當鍵盤上某一鍵閉合時,該鍵所對應(yīng)的行線與列線短接。此時該行線的電平將由被短接的行線電平所決定。將行線接至單片機的輸入接口,列線接至單片機的輸出接口。首先使所有的列線為低電平,然后讀行

25、線狀態(tài),若行線均為高電平,則沒有鍵按下;若讀出的行線狀態(tài)不全為高電平,則可以斷定有鍵按下。 先讓 y0 這一列為低電平,其余行線為高電平,讀行線狀態(tài),如行線狀態(tài)不全為“1” ,則說明所按鍵在該列,否則不在該列。然后讓 y1 列為低電平,其他列為高電平,判斷 y1 列有無鍵盤按下。圖 3-6 鍵盤原理圖采用 4*4 的鍵盤進行控制的,當相應(yīng)的按鍵被按下時,哪個鍵的就會被接通,通過數(shù)據(jù)線輸入 mcu 進行計算,控制等,如圖 3-7。圖 3-7 鍵盤與單片機的接口圖134 軟件設(shè)計軟件設(shè)計4.14.1 主程序的設(shè)計主程序的設(shè)計4.1.14.1.1 系統(tǒng)主程序系統(tǒng)主程序 智能稱的開發(fā)和設(shè)計中的主要包括

26、主程序的設(shè)計,顯示程序設(shè)計和鍵盤程序的設(shè)計,a/d 轉(zhuǎn)換程序的設(shè)計和數(shù)據(jù)處理的設(shè)計。通過對程序進行初始化后,進入操作系統(tǒng)顯示“歡迎” ,判斷是否有人稱重,如果沒有人使用返回等待,有人稱重就進行測量并在 lcd 上顯示人體的重量,并判斷出人的身材,結(jié)束后進返回初始程序再次等待,如圖 4-1。圖 4-1 主程序流程圖144.1.24.1.2 歡迎模塊歡迎模塊本模塊主要是通過對 lcd 的初始化設(shè)置后,通過提取固定字的字模,將相應(yīng)的字顯示在 lcd 上。然后,啟動 adc0809 對重力傳感器進行數(shù)據(jù)采樣,當采樣值小于10kg 時,低于人體秤的下限值,說明無人站上,返回到繼續(xù)等待狀態(tài);當采樣值大于1

27、0kg,說明有人站上,進入下測量模塊,如圖 4-2。圖 4-2 人體秤重流程圖判斷是否有人稱重子程序:zhongli:yali:movdptr,#adcs;重力入口地址movx dptr,ajb p2.0,$movx a,dptr ;采集重力值clr csubb a,#0ah ;將測量值與 10 比較,小于 10 則繼續(xù)jcyali ;測量,大于 10 則返回,說明有人稱重ret154.1.34.1.3 測量模塊測量模塊有人站上后,啟動 adc0809 進行模數(shù)轉(zhuǎn)換。模數(shù)轉(zhuǎn)換有中斷和查詢兩種轉(zhuǎn)換方法,本系統(tǒng)采用查詢方法。壓力傳感器接 in0 通道,位移傳感接 in1 通道,啟動 a/d 程序如

28、下:movdptr,#adcs ;通道口地址movx dptr,a首先采集重力傳感器的值,將 16 次采集數(shù)據(jù)去掉一個最大數(shù)、一個最小數(shù)求得平均值存入 adval 單中,并在 lcd 第 0 位至第 2 位按從低位到高位的順序顯示重力值。然后采集位移傳感器的值,采集數(shù)據(jù)、求平均值與重力傳感器的方法都相同,唯一不同的是顯示部分,在 lcd 的第 5 位至第 7 位按從低位到高位的順序顯示身高值。子程序流程圖如圖 4-3,圖 4-4 示。最后將測得的體重值存入 adval1 中,身高值存入surm 中,以便在判斷身材子程序中使用。 圖 4-3 數(shù)據(jù)采樣子程序 圖 4-4 顯示子程序164.1.44

29、.1.4 身材模塊身材模塊身高、體重測量完畢后,進入判斷身材模塊。本模塊的設(shè)計思想如下:將身高和體重分別存入程序中,high 為身高表,weigh 為體重表,身高表與體重表中數(shù)據(jù)是一一對應(yīng)的關(guān)系。首先在身高表中查找與測量身高值(surm)相等的數(shù)值,記錄下測量的身高值在表中的地址。然后根據(jù)記錄的地址到體重表查找對應(yīng)的體重,找到后與測量體重值(adval1)相比較。若測量的體重值與表內(nèi)的標準值相等,則顯示“正常” ,若小于標準值,則顯示“偏胖” ,若大于標準值,顯示“偏瘦” ,顯示身材結(jié)果由 lcd 液晶顯示,如圖 4-5。圖 4-5 判斷身材流程圖174.1.54.1.5 時間模塊時間模塊在人

30、體秤上設(shè)計顯示時間的程序,通過計時器計時秒鐘的,當秒鐘累加到 59 時,會通過 mcu 來判斷,從而確定秒鐘的溢出到分鐘還是繼續(xù)累加秒鐘的工作。分鐘與時鐘的工作原理和秒鐘的原理一樣,只是溢出到的目的不同如圖 4-6。圖 4-6 顯示時間流程圖184.1.64.1.6 鍵盤模塊鍵盤模塊掃描鍵盤并初始化,讀取鍵盤上按下的鍵并判斷是數(shù)字鍵還是功能鍵,如果按下的是數(shù)字鍵轉(zhuǎn)到數(shù)字處理程序并顯示相應(yīng)的數(shù)字,如果按下的是功能鍵轉(zhuǎn)到功能處理程序并顯示最終的處理結(jié)果,然后返回鍵盤讀取,如圖 4-7。圖 4-7 鍵盤掃描流程圖196 總結(jié)總結(jié)在基于單片機的人體智能秤的設(shè)計當中,基本完成了設(shè)計任務(wù)書中的基本要求。在

31、調(diào)試的實驗中能夠在允許的誤差范圍內(nèi)顯示人體的體重。通過此次設(shè)計對單片機有了深刻的認識,能夠?qū)λM行一些基本的控制,在設(shè)計當中,對一些芯片也有了深刻的認識,能夠運用這些芯片設(shè)計電路。畢業(yè)設(shè)計是??茖W習階段一次非常難得的理論與實際相結(jié)合的機會,通過這次比較完整的人體智能秤的設(shè)計,我擺脫了單純的理論知識學習狀態(tài),和實際設(shè)計的結(jié)合鍛煉了我的綜合運用所學的專業(yè)基礎(chǔ)知識,解決實際工程問題的能力,同時也提高我查閱文獻資料、集成手冊以及電腦制圖等其他專業(yè)能力水平,而且通過對整體的掌控,對局部的取舍,以及對細節(jié)的斟酌處理,都使我的能力得到了鍛煉,經(jīng)驗得到了豐富,并且意志品質(zhì)力,抗壓能力及耐力也都得到了不同程度的

32、提升。雖然畢業(yè)設(shè)計內(nèi)容繁多,過程繁瑣,但我的收獲卻更加豐富。各種系統(tǒng)的適用條件,各種芯片的選擇,各種電路的設(shè)計,我都是隨著設(shè)計的不斷深入而不斷學習并學會應(yīng)用的,和老師的溝通交流更使我茅塞頓開。20致致 謝謝本論文是在導(dǎo)師凌澤明老師的悉心指導(dǎo)下完成的沒有導(dǎo)師的指引,沒有父母和朋友的幫助和支持,我在大學的學術(shù)成長肯定會大打折扣。當我打完畢業(yè)論文的最后一個字符,涌上心頭的不是長途跋涉后抵達終點的欣喜,而是源自心底的誠摯謝意。論文工作的每一步工作都得到了凌老師的無微不至的關(guān)懷,在關(guān)鍵的時候?qū)煘槲抑更c迷津在此,我以這樸素的語言來表達我對凌老師衷心的感謝和崇高的敬意。21參考文獻參考文獻1鄭歡.單片機原

33、理與應(yīng)用技術(shù).北京:高等教育出版社,2004.112張瑋,馬樂惠.電子技術(shù)基礎(chǔ).西安:西安電子科技大學出版社,2006.93單片機實訓.北京:高等教育出版社,2003.44許海平.微機原理與接口.北京:高等教育出版社,2004.75孫涵芳.單片機原理及應(yīng)用(修訂版).北京:北京航空航天大學出版社,1996 年6何立民. 單片機應(yīng)用技術(shù)選編(1)-(8).北京:北京航空航天大學出版社,20027 維普期刊: 超星圖書館:22附錄附錄 1 主電路圖主電路圖23附錄附錄 2 源程序清單源程序清單 鍵盤掃描程序 dbuf equ 30h temp equ 40h yj equ 50h ;結(jié)果存放 yj

34、1 equ 51h ;中間結(jié)果存放 gong equ 52h ;功能鍵存放 din bit 0b0h clk bit 0b1h org 00hstart: mov r3, #0 ;初始化顯示為空 mov gong, #0 mov 30h, #10h mov 31h, #10h mov 32h, #10h mov 33h, #10h mov 34h, #10hmloop: call disp ;pan 調(diào)顯示子程序wait: call testkey ;判斷有無按鍵 j z wait call getkey ;讀鍵 inc r3 ;按鍵個數(shù) cjne a, #0, next1 ;判斷是否數(shù)字鍵

35、ljmp e1 ;轉(zhuǎn)數(shù)字鍵處理next1: cjne a, #1, next2 ljmp e1next2: cjne a, #2, next3 ljmp e1next3: cjne a, #3, next4 ljmp e1next4: cjne a, #4, next5 ljmp e1next5: cjne a, #5, next6 ljmp e1next6: cjne a, #6, next7 ljmp e1next7: cjne a, #7, next8 ljmp e1next8: cjne a, #8, next9 ljmp e1next9: cjne a, #9, next10 ljm

36、p e1next10: cjne a, #10, next11 ;判斷是否功能鍵 ljmp e2 ;轉(zhuǎn)功能鍵處理next11: cjne a, #11, next12 ljmp e2next12: cjne a, #12, next13 ljmp e2next13: cjne a, #13, next14 ljmp e2next14: cjne a, #14, next15 ljmp e2next15: cjne a, #15, next16 ljmp e2next16 cjne a, #16, next1 ljmp e2e2: cjne a, #10, n21 ;判斷功能鍵 ljmp jia

37、 ;“”n21: cjne a, #11, n22 ljmp jian ;“”n22: cjne a, #12, n23 ljmp cheng ;“*”n23: cjne a, #13, n24 ljmp chu ;“/”n24: cjne a, #0, n25 ljmp first ;首次按功能鍵n25: ljmp den ;“=”n4: ljmp e2first: mov yj, r4 ;輸入值送結(jié)果 mov r3, #0 ;按鍵次數(shù)清零 ljmp disp1 ;結(jié)果處理jia: mov a, yj ;上次結(jié)果送累加器 add a, r4 ;上次結(jié)果加輸入值 jb cy, n4 ;溢出 m

38、ov yj, a ;存本次結(jié)果 mov r3, #0 ;按鍵次數(shù)清零 ljmp disp1jian: mov a, yj subb a, r4 ;上次結(jié)果減輸入值 jb cy, n4 ;負數(shù)溢出 mov yj, a mov r3,#0 ljmp disp1cheng: mov a, yj mov b, a mov a, r4 mul ab ;上次結(jié)果乘輸入值 jb ov, n4 ;溢出 mov yj, a ljmp disp1chu: mov a, r4 mov b, a mov a, yj div ab ;上次結(jié)果除輸入值 mov yj, a mov r3, #0 ljmp disp1den

39、: mov r3, #0 ljmp disp1disp1: mov b, #10 mov a, yj ;結(jié)果送累加器 div ab ;結(jié)果除 10 mov yj1, a ;暫存“商” mov a, b ;取個位數(shù) mov 34h, a ;個位數(shù)送顯示緩存 mov a, yj1 jz disp11 ;結(jié)果是否為一位數(shù) mov b, #10 mov a, yj1 div ab mov yj1, a mov a, b mov 33h, a ;十位送顯示緩存 mov a, yj1 jz disp11 ;結(jié)果是否為二位數(shù) mov 32h, a ;百位數(shù)送顯示緩存disp11: ljmp mloopdis

40、p: mov r0, #dbuf ;顯示子程序 mov r1, #temp+4 mov r2, #5dp10: mov dptr, #segtab mov a, r0 movc a, a+dptr mov r1, a inc r0 dec r1 djnz r2, dp10 mov r0, #temp mov r1 , #5dp12: mov r2, #8 mov a, r0dp13: rlc a mov din, c clr clk setb clk djnz r2, dp13 inc r0 djnz r1, dp12 retsegtab: db 3fh,06h,5bh,4fh,66h,6dh

41、 ;段碼定義 db 7dh,07h,7fh,6fh,77h,7ch db 39h,5eh,79h,71h,00h,40htestkey: mov p1, #0fh ;讀入鍵狀態(tài) mov a, p1 cpl a anl a, #0fh ;高四位不用 retkeytable:db 0deh,0edh,0ddh,0bdh ;鍵碼定義 db 0ebh,0dbh,0bbh,0e7h db 0d7h,0b7h,07eh,07dh db 07bh,077h,0beh,0eehgetkey: ;讀鍵子程序 mov r6, #10 acall delay mov p1, #0fh mov a, p1 cjne

42、a, 0fh,k12 ljmp mloopk12: mov b, a mov p1, #0efh mov a, p1 cjne a, #0efh,k13 mov p1, #0dfh mov a, p1 cjne a, #0dfh,k13 mov p1, #0bfh mov a, p1 cjne a, #0bfh,k13 mov p1, #07fh mov a, p1 cjne a, #07fh,k13 ljmp mloopk13: anl a, #0f0h orl a, b mov b, a mov r1, #16 mov r2, #0 mov dptr, #keytablek14: mov

43、a , r2 movc a, a+dptr cjne a, b, k16 mov p1, #0fhk15: mov a , p1 cjne a, #0fh,k15 mov r6, #10 acall delay mov a, r2 retk16: inc r2 djnz r1, k14 ajmp mloopa/d 轉(zhuǎn)換程序: org 0000h ljmp ad org 0030had: mov sp,#30h mov r0,#50h mov r6,#08h mov dptr,#78ffh ;指向第一路loop: movx dptr ,a ;啟動 0809 進行轉(zhuǎn)換 lcall delay ;調(diào)

44、用延時子程序 movx a,dptr ;讀轉(zhuǎn)換結(jié)果 mov r0,a ;存轉(zhuǎn)換結(jié)果 inc dph ;指向下一路 inc r0 ;調(diào)整存結(jié)果地址指針 djnz r6,loop ;8 路未采集完繼續(xù)here: sjmp heredelay: mov r7,#10h ;軟件延時子程序delay: mov r7, #80 ;延時子程序dloop: djnz r7, dloop djnz r6, dloop ret時間程序: org 0000h;- lcd 顯示器設(shè)置 -rs bit p2.0rw bit p2.1lcde bit p2.2;- 時鐘電路設(shè)置 -bicnt data 30hbycnt

45、data 31hcomand data 32hrcvdat data 40hxmtdat data 50hiodat bit p3.2sclk bit p3.1rst bit p3.0start: mov sp,#60h ;開機初始化mov p0,#0ffhmov p1,#0ffhmov p2,#0ffhmov p3,#0ffhmain: lcall ini_time;初始化 ds1302時鐘runi:lcall get_time ;調(diào)用讀時間子程序lcall disp;調(diào)用數(shù)碼管顯示子程序ajmp runi;重復(fù)循環(huán);- 顯示子程序 -disp:lcall b2t_ch;數(shù)據(jù)轉(zhuǎn)換clrlcd

46、emova,#01lcall wcmdmova,#02lcall wcmdmova,#06lcall wcmdmova,#0chlcall wcmdmova,#38hlcall wcmdmova,#0c0h;lcd 顯示第二行l(wèi)call wcmdmova,#20h; lcall wdatlcall wdatmova,#54hlcall wdat;tmova,#49lcall wdat;imova,#4dhlcall wdat;mmova,#45hlcall wdat;emova,#3ahlcall wdat;:mova,42h;取小時anla,#0f0hrr arr arr arr aadda

47、,#48lcall wdatmova,42hanla,#0fhadda,#48lcall wdatmova,#0b0hlcall wdatnopmova,41h;取分鐘anla,#0f0hrr arr arr arr aadda,#48lcall wdatmova,41hanla,#0fhadda,#48lcall wdatmova,#0b0hlcall wdatnopmova,40h;取小時anla,#0f0hrr arr arr arr aadda,#48lcall wdatmova,40hanla,#0fhadda,#48lcall wdat ret;- 數(shù)據(jù)轉(zhuǎn)換成十進制數(shù)存儲 -b2t

48、_ch:mov38h,#1jnb77h,pos;溫度高于零度,則轉(zhuǎn)移mova,2fhcplaincamov2fh,amova,2ehcplamov2eh,amov38h,#0pos:mova,2fhanla,#0fh;小數(shù)點后保留四位movr1,#04movr0,#3chdig:movb,#10mulabmovb,#16divabmovr0,amova,bincr0djnzr1,dig;整數(shù)位操作mova,2fhanla,#0f0hrr arr arr arr amov2dh,amova,2ehanla,#0fhrl arl arl arl aorla,2dhmov2dh,a;整數(shù)位存在2dh

49、 地址中mova,2dhmovb,#10divabmov3bh,bmovb,#10divabmov3ah,bmov39h,aret;- lcd 寫命令 -wcmd:lcall ys4722ulcall rcmdjnb01h,wcajmpwcmd;忙等待wc:clrrsclrrwmovp0,asetblcdeclrlcderet;- lcd 讀命令 -rcmd: clr01hclr rssetbrwmovp0,#0ffhsetblcdenopmovc,p0.7jncrcsetb01hrc: clr lcderet;- lcd 寫數(shù)據(jù) -wdat: lcall ys4722ulcall rcmdj

50、nb01h,wtajmpwdat;忙等待wt:setbrsclrrwmovp0,asetblcdeclrlcderet;- lcd 讀數(shù)據(jù) -rdat: lcall rcmdlcall ys4722ujnb01h,rtajmprdat;忙等待rt: movp0,#0ffhsetbrssetbrwsetblcdenopmova,p0clrlcderet;- 下面是 ds1302時間控制初始化 -ini_time:movcomand,#8eh;命令字節(jié)為8emovbycnt,#1 ;單字節(jié)傳送模式movr0,#xmtdat;數(shù)據(jù)地址賦給 r0movxmtdat,#00h ;數(shù)據(jù)內(nèi)容為0(寫入允許)

51、lcall sedbyt;調(diào)用寫入數(shù)據(jù)子程序nopmovcomand,#0behmovbycnt,#8movr0,#xmtdatmovxmtdat,#59hmovxmtdat+1,#47hmovxmtdat+2,#16hmovxmtdat+3,#15hmovxmtdat+4,#08hmovxmtdat+5,#03hmovxmtdat+6,#09hmovxmtdat+7,#00hlcall sedbytnopmovcomand,#80h;啟動時鐘工作movbycnt,#1movr0,#xmtdatmovxmtdat,#00hlcall sedbytnopret;- 下面是 ds1302時間讀取

52、-get_time:movcomand,#0bfhmovbycnt,#8movr1,#rcvdatlcall revbytnopret;- 下面是 ds1302發(fā)送數(shù)據(jù)控制 -;發(fā)送數(shù)據(jù)程序;名稱:send_byte;描述:發(fā)送 bytecnt 個字節(jié)給被控器 ds1302;命令字節(jié)地址在 command 中;所發(fā)送數(shù)據(jù)的字節(jié)數(shù)在 bytecnt 中發(fā)送的數(shù)據(jù)在 xmtdat 緩沖區(qū)中 sedbyt:clrrst;復(fù)位引腳,所有數(shù)據(jù)傳輸停止nopclrsclk;清時鐘總線setbrstnopmova,comand;準備發(fā)送命令字節(jié)movbicnt,#08h;傳送位數(shù)為8sbyt0:rrca;將

53、最低位傳送給進位位 cmoviodat,c;位傳送至數(shù)據(jù)總線nopsetbsclk;時鐘上升沿,發(fā)送數(shù)據(jù)有效nopclrsclk;清時鐘總線djnzbicnt,sbyt0 ;位傳送未完畢則繼續(xù)nopsbyt1:mova,r0;準備發(fā)送數(shù)據(jù)movbicnt,#08hsbyt2:rrcamoviodat,cnopsetbsclknopclr sclkdjnzbicnt,sbyt2incr0djnzbycnt,sbyt1nopclrrst;邏輯操作完畢,清 rstret;- 下面是 ds1302接收數(shù)據(jù)控制 -;接收數(shù)據(jù)程序;名稱:receive_byte;描述:從被控器 ds1302 接收 byt

54、ecnt 個字節(jié)數(shù)據(jù);命令字節(jié)地址在 command 中;所接收數(shù)據(jù)的字節(jié)數(shù)在 bytecnt 中接收的數(shù)據(jù)在 rcvdat 緩沖區(qū)中revbyt:clr rstnopclrsclknopsetbrstmova,comandmovbicnt,#08hrbyt0:rrcamoviodat,cnopsetbsclknopclrsclkdjnzbicnt,rbyt0noprbyt1:clraclrcmovbicnt,#08hrbyt2:nopmovc,iodatrrcasetbsclknopclrsclkdjnzbicnt,rbyt2movr1,aincr1djnzbycnt,rbyt1nopclrrstret;* 8位共陽數(shù)碼管顯示器字型碼表 *sgtb: db 54h,45h,4dh,50h,45h,52h,3ahys4722u: mov r4,#2 ;延時子程序y3: mov r5,#216 d

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論