freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)字身高體重測量儀畢業(yè)設(shè)計論文-閱讀頁

2024-12-13 16:25本頁面
  

【正文】 脈沖寬度與所測得距離成正比。 在本設(shè)計中單片機的 腳提供一個 16us的高電平給 TRIG口,通過模塊自動測距接受 ECHO的回響高電平信號給 ,因此用 ECHO高電平持 續(xù)時間 t/58 就是超聲波測得的距離 S( cm)。其 測量原理如圖 所示。電橋失去平衡,產(chǎn)生不平衡電壓,不平衡電壓與作用在傳感器 上的載菏 P 成正比,從而將非電量轉(zhuǎn)化成電量輸出 [5]。 11 圖 測量電橋原理 傳感器實物圖如下圖所示: 圖 稱重傳感器 稱重 AD 轉(zhuǎn)換芯片 HX711 是一款專為高精度稱重傳感器而設(shè)計的 24 位 A/D 轉(zhuǎn)換器 12 芯片。該芯片與后端 MCU 芯片的接口和編程非常簡單,所有控制信號由管腳驅(qū)動,無需對芯片內(nèi)部的寄存器編程。通道 A 的可編程增益為 128 或 64,對應(yīng)的滿額度差分輸入信號幅值分別為177。 40mV。芯片內(nèi)提供的穩(wěn)壓電源可以直接向外部傳感器和芯片內(nèi)的A/D轉(zhuǎn)換器提供電源,系統(tǒng)板上無需另外的模擬電源。上電自動復(fù)位功能簡化了開機的初始化過程。該方案使用內(nèi)部時鐘振蕩器 (XI=0), 10Hz 的輸出數(shù)據(jù)速率 (RATE=0)。通道 A 與傳感器相連,通道 B通過片外分壓電阻與電池相連,用于檢測電池電壓。 13 表 HX711電氣參數(shù)表 參數(shù) 條件及說明 最小值典型值最大值 單位 滿額度差分輸入范圍 V( inp) V(inn) 177。 7 nV/℃ 增益漂移(增益 =128) 177。該電壓通過 VAVDD=VBG(R1+R2)/R2計算。 在 的供電電壓下 200Kg 的傳感器最大輸出電壓是*2mV/V= , 經(jīng) 過 128 倍 放 大 后 , 最 大 電 壓 為*128=。 14 假設(shè)重力為 AKg,( A200Kg) ,測量出來的 AD值為 器輸出,發(fā)送給 AD 模塊的電壓為 AKg*,經(jīng)過128 倍增益后為 128*= mV, 轉(zhuǎn)換為 24bit 數(shù)信號為 mV*2^24/ ≈ ,所以 y=≈ ,得出 A=y/。用不同重量的砝碼置于稱重傳感器上,觀察測量出來的數(shù)據(jù)并進行記錄,制成圖 的曲線圖,以及表 所示實際重量與測量顯示值得對比表格。因為人體正常體重都是位于這一段內(nèi),所以稱重傳感器能基本滿足適用要求。每位之間有一個點距的間隔 , 每行之間也有間隔起到了字符間距和行間距的作用 。目前市面上字符液晶絕大多數(shù)是基于 HD44780液晶芯片的,控制原理是完全相同的,因此基于 HD44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶 [10]。 第 2 腳: VDD接 5V正電源。 18 第 4 腳: RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器 ,在單片機中連接 腳。當(dāng) RS和 R/W共同為低電平時可以寫 入指令或者顯示地址,當(dāng)RS為低電平 R/W為高電平時可以讀忙信號,當(dāng) RS 為高電平 R/W 為低電平時可以寫入數(shù)據(jù) ,在單片機中連接 腳。 第 7~ 14 腳: D0~ D7 為 8位雙向數(shù)據(jù)線 ,在單片機中連接 P0 口。 第 16 腳:背光源負(fù)極。編譯的模塊包括單片機初始化模塊,超聲波測高 模塊,測體重模塊,液晶顯示模塊。定時器使用單片機內(nèi)部定時器 0,設(shè)置定時器 0 為方式 1,初值低 8 位 TL0=0x00,高 8位 TH0=0x00,啟動定時器 0和開啟定時器 0 中斷。 超聲波測高模塊程序設(shè)計 超聲波測高部分先初始化定時器和中斷,外設(shè)置一個中斷溢出標(biāo)志 flag,根據(jù) flag 標(biāo)志位和回響信號 ECHO 的狀態(tài)來開啟或關(guān)閉定時器中斷并計數(shù),由此算出距離值。 20 圖 超聲波測高部分程序流程圖 開始 定時器和中斷初始化 ( ECHO==0) amp。溢出? Flag=0并 且開啟定時器 0中斷 ( ECHO==1) amp。溢出? 關(guān)閉定時器 0 計算距離S=(TH0*256+TL0)/58 不顯示數(shù)值 S250 ? 顯示距離值 S 結(jié) 束 Flag=0? Flag=1 21 測體重程序設(shè)計 壓力傳感器稱體重模塊核心部分是 AD轉(zhuǎn)換,在 AD 轉(zhuǎn)換編程中,當(dāng)數(shù)據(jù)輸出管腳 ADDO為高電平時,表明 AD 轉(zhuǎn)換器還未準(zhǔn)備好輸出數(shù)據(jù),此時串口時鐘輸入信號 ADSK 應(yīng)為低電平。第一個時鐘脈沖的上升沿將讀出輸入 24 位數(shù)據(jù)的最高位,直到第 24 個時鐘脈沖完成, 24 位輸出數(shù)據(jù)從最高位至最低位逐位輸出完成。 圖 測體重部分程序流程圖 液晶顯示模塊程序設(shè)計 液晶顯示部分是整個實驗可以讀取結(jié)果的必要部分,因此也是整個程序的 中心部分。 開 始 獲取 AD值 AD值轉(zhuǎn)換為重量 顯示稱重數(shù)值 結(jié) 束 22 圖 液晶顯示模塊程序流程圖 開 始 判忙函數(shù)(忙則等待) 寫入命令函數(shù) 寫入數(shù)據(jù)函數(shù) 清屏函數(shù) 寫入字符串函數(shù) 寫入字符函數(shù) 初始化函數(shù) 結(jié) 束 23 結(jié) 論 本次設(shè)計基本上達(dá)到了設(shè)計要求,使用非接觸式的超聲波測量距離,通過壓力傳感器稱重輸出電壓經(jīng)過 AD 轉(zhuǎn)換可以實現(xiàn)人體重量的測量,使用 1602液晶可以完整顯示身高體重測量值。不過本設(shè)計依然存在不足之處 ,比如說超聲波測距太靈敏,人體只要稍微動一下就會引起測量高度的微小變化,無法得出穩(wěn)定數(shù)值;稱重部分稱重精度要求達(dá)到 ,實際上為了稱出來的數(shù)據(jù)精準(zhǔn),精度只有 1kg。希望在今后的學(xué)習(xí)中進一步完善,使系統(tǒng)功能更加可靠。 //控制端口 sbit RW = P2^4。 sbit TRIG=P3^3。 sbit ADDO = P3^5。 define DataPort P0 //數(shù)據(jù)端口 define RS_CLR RS=0 define RS_SET RS=1 define RW_CLR RW=0 define RW_SET RW=1 define EN_CLR EN=0 define EN_SET EN=1 bit flag。 unsigned char frq。 void delay() { unsigned int i。i10。 } /* uS 延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的范圍是 0~255 這里使用晶振 12M,精確延時請使用匯編 ,大致延時 長度如下 T=tx2+5 uS */ void DelayUs2x(unsigned char t) { while(t)。 DelayUs2x(245)。 RS_CLR。 EN_CLR。 EN_SET。 0x80)。 //忙則等待 RS_CLR。 EN_SET。 _nop_()。 } /* 寫入數(shù)據(jù)函數(shù) */ void LCD_Write_Data(unsigned char Data) { while(LCD_Check_Busy())。 RW_CLR。 DataPort= Data。 EN_CLR。 DelayMs(5)。 //表示第一行 } else { LCD_Write_Com(0xC0 + x)。 s ++。 } else { LCD_Write_Com(0xC0 + x)。 } /* 初始化函數(shù) */ void LCD_Init(void) { LCD_Write_Com(0x38)。 LCD_Write_Com(0x38)。 LCD_Write_Com(0x38)。 LCD_Write_Com(0x38)。 /*顯示關(guān)閉 */ LCD_Write_Com(0x01)。 /*顯示光標(biāo)移動設(shè)置 */ DelayMs(5)。 /*顯示開及光標(biāo)設(shè)置 */ } void Timer0(void) interrupt 1 { flag=1。 unsigned int i。 i=2。 TRIG=0。 TL0=0。 Timeout=0。amp。 flag=0。 Timeout=0。amp。 TR0=0。 if(flag==1||S400) { LCD_Write_Char(0,0,39。)。i39。 LCD_Write_Char(2,0,39。)。h39。*/ LCD_Write_Char(1,0,39。)。39。 //在第 1 行的第 1 列顯示百位 LCD_Write_Char(3,0,39。)。39。 //在第 1 行的第 3 列顯示個位 LCD_Write_Char(5,0,39。)。m39。 } else { //**給 1602 顯示寄存器賦值(0255)** //***1602 液晶顯示 0255*** LCD_Write_Char(0,0,39。)。i39。 LCD_Write_Char(2,0,39。)。h39。*/ 30 LCD_Write_Char(1,0,39。)。039。 //在第 1 行的第 1 列顯示百位 LCD_Write_Char(3,0,(S%100)/10+39。)。039。 //在第 1 行的第 3 列顯示個位 LCD_Write_Char(5,0,39。)。m39。 } i=9000。 } /************************************* WEIGHT **************************************/ unsigned long get_ADValue(void) { uchar i。 ADDO=1。//enable AD while (ADDO)。//delay T1 for (i=0。i++) { ADSK=1。//delay T3 if (ADDO) value++。 ADSK=0。//delay T4 } ADSK=1。//delay T3 ADSK=0。//delay T4 value=valueamp。 return (value)。 float num_f。 LCD_Clear()。=0xF0。 //設(shè)置定時器 0 為方式 1 TL0=0x47。 //設(shè)置 31 定時器 0 初值高 8 位 TR0=0。 //Timer0 中斷 EA=1。 num=get_ADValue()。 num=(num_f/380)。 LCD_Write_Char(0,1,39。)。e39。 LCD_Write_Char(2,1,39。)。g39。 LCD_Write_Char(4,1,39。)。t39。 LCD_Write_Char(6,1,39。)。039。 LCD_Write_Char(8,1,39。)。039。 LCD_Write_Char(10,1,39。)。g39。 } else {LCD_Write_Char(0,1,39。)。e39。 LCD_Write_Char(2,1,39。)。g39。 LCD_Write_Char(4,1,39。)。t39。 LCD_Write_Char(6,1,39。)。039。 LCD_Write_Char(8,1,(num%100)/10+39。)。039。 LCD_Write_Char(10,1,39。)。g39。 } DelayMs(1000
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1