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

正文內(nèi)容

基于stc12c5410ad單片機(jī)的傾角測試系統(tǒng)畢業(yè)設(shè)計(jì)(編輯修改稿)

2025-04-21 12:43 本頁面
 

【文章內(nèi)容簡介】 功能設(shè)計(jì):系統(tǒng)默認(rèn)顯示的是當(dāng)前時間和當(dāng)前角度值,當(dāng)?shù)谝淮伟聪耂1時,顯示切換到角度上下限的顯示,第二次按下調(diào)節(jié)角度下限的小數(shù)位,第三次按下調(diào)節(jié)角度下限的個位,依次按下,依次調(diào)節(jié)各位。S2作為調(diào)節(jié)角度上下限時的加一及角度正負(fù)號的切換用。S3作為調(diào)節(jié)角度上下限時的減一及角度正負(fù)號的切換用。S4作為調(diào)節(jié)完畢后返回當(dāng)前時間和當(dāng)前角度值顯示之用。鍵盤功能程序代碼請見附錄。鍵盤識別程序代碼如下。定時掃描有鍵按下?延時4ms有鍵按下?延時4ms讀取鍵值開始//獲取鍵值void getkey(void) { if(P00==0amp。amp。key_last0==1) { delay_flag=0。 //delay_flag在定時器中4ms到置1 while(delay_flag==0)。 //延時4ms,去抖動 if(P00==0amp。amp。key_last0==1) { key_num=0。 key_last0=0。 delay_flag=0。 //去抖動 while(delay_flag==0)。 //延時4ms,去抖動 } else if(P00==1) key_last0=1。 } else if(P00==1) key_last0=1。 if(P01==0amp。amp。key_last1==1) { delay_flag=0。 while(delay_flag==0)。 //去抖動 if(P01==0amp。amp。key_last1==1) { key_num=1。 key_last1=0。 delay_flag=0。 while(delay_flag==0)。 //延時4ms,去抖動 else if(P01==1) key_last1=1。 } else if(P01==1) key_last1=1。 if(P02==0amp。amp。key_last2==1) { delay_flag=0。 while(delay_flag==0)。 //延時4ms,去抖動 if(P02==0amp。amp。key_last2==1) { key_num=2。 key_last2=0。 delay_flag=0。 //去抖動 while(delay_flag==0)。 //延時4ms,去抖動 } else if(P02==1) key_last2=1。 } else if(P02==1) key_last2=1。 if(P03==0amp。amp。key_last3==1) { delay_flag=0。 while(delay_flag==0)。 //延時4ms,去抖動 if(P03==0amp。amp。key_last3==1) { key_num=3。 key_last3=0。 delay_flag=0。 while(delay_flag==0)。 //延時4ms,去抖動 } //去抖動 else if(P03==1) key_last3=1。 } else if(P03==1) key_last3=1。} 通信部分上位機(jī)與單片機(jī)通信按應(yīng)答方式經(jīng)行。由上位機(jī)給單片機(jī)發(fā)送一組命令數(shù)據(jù),單片機(jī)受到命令經(jīng)過分析后認(rèn)為正常,則按照命令執(zhí)行操作。將操作結(jié)果返回給上位機(jī)。若經(jīng)過分析認(rèn)為不正常,則返回給上位機(jī)出錯信息。單片機(jī)向上位機(jī)發(fā)送的數(shù)據(jù)的方式考慮了兩種,第一種是等數(shù)據(jù)存儲器容量存滿了后在一塊發(fā),這種方式實(shí)時性不夠,為了使角度數(shù)據(jù)的變化能夠及時的傳到上位機(jī),采用定時發(fā)送,定時時間和上傳的次數(shù)由上位機(jī)來定,這樣一來就解決了實(shí)時性問題。由于是定時發(fā)送,通過對數(shù)據(jù)的分析知道上位機(jī)收到的數(shù)據(jù)可能有重復(fù)的,或者是有FF字樣。這可由時間標(biāo)簽,加以區(qū)分,而FF為數(shù)據(jù)存儲器中尚未寫進(jìn)的字節(jié)單元,通過上位機(jī)軟件可以濾除。上位機(jī)用串口調(diào)試助手來進(jìn)行數(shù)據(jù)發(fā)送,為了使數(shù)據(jù)直觀,命令碼全部使用BCD碼,由單片機(jī)傳來的數(shù)據(jù)也使用BCD碼存儲。上位機(jī)給單片機(jī)的指令為:報文開始識別字(STX)命令碼(CMD)報文結(jié)束(ETX)內(nèi)容0XEECC0XFF字節(jié)數(shù)1視命令定11) 0x10:上傳數(shù)據(jù)存儲器中角度數(shù)據(jù)命令格式:0xEE 0x100x01/00 0xXX0xYY/00 0xFF第二字節(jié) 01 表示允許上傳數(shù)據(jù) 00 表示不允許上傳數(shù)據(jù)第三字節(jié) XX表示隔多少時間上傳一次第四字節(jié) 表示上傳多少次數(shù)據(jù)。00表示不受限制,YY表示實(shí)際次數(shù)(不能為00)。2) 0x11:上傳報警次數(shù)命令格式:0xEE 0x11 0xff3) 0x12:上傳角度上下限命令格式:0xEE 0x12 0xff4) 0x13:接收設(shè)定上下限角度命令格式:0xEE 0x13 0xXX0xYY 0xZZ0x 0xWW 0xRR 0xffXX:表示上限正負(fù)號,為1為正,非1為負(fù)YY:表示上限的整數(shù)部分ZZ:表示上限的小數(shù)部分:表示下限正負(fù)號,為1為正,非1為負(fù)WW:表示下限的整數(shù)部分RR:表示下限的小數(shù)部分5) 0x14:接收設(shè)定時間命令格式: 0xEE 0x140xXX 0xXX0xXX0xXX0xXX 0xXX 0xXX 0xFF 從左到右依次為 秒、分、 時、 日、 月 、星期 、年6) 其他 :命令錯誤返回給上位機(jī)的值為:0xEE33 30300xFF 其他部分軟件設(shè)計(jì) 報警部分軟件設(shè)計(jì):報警采用輸出不同占空比的PWM波形,通過音調(diào)高低的變化來實(shí)現(xiàn)高于上限獲低于下限的報警。同時加有LED燈的閃爍。并對上限和下限報警分別計(jì)數(shù),方便向上位機(jī)傳送數(shù)據(jù)。報警計(jì)數(shù)需要注意的是:怎樣區(qū)別相鄰兩次的不同報警及不論一次報警時間的長短,都屬于一次報警。通過設(shè)置標(biāo)志位,很好的解決了這個問題。程序代碼如下://報警程序void Alarm(int temp){ int temp0。 temp0=temp。 if((temp0=HIlimit)amp。amp。(temp0=LOWlimit)) { Stop_alarm()。 stop=0。 } //若在正常范圍內(nèi),則停止報警 else if(temp0=HIlimit) { Start_HIalarm()。 Is_HIalarm=1。 Is_LOWalarm=0。 H_is_add=1。 stop=1。 L_is_add=0。 } //超過上限時,進(jìn)行上限報警 else if (temp0=LOWlimit) { Start_LOWalarm()。 Is_HIalarm=0。 Is_LOWalarm=1。 L_is_add=1。 stop=1。 H_is_add=0。 } //低于下限時,進(jìn)行下限報警if((Is_HIalarm==1)amp。amp。(stop==0)amp。amp。(Is_LOWalarm==0)amp。amp。(H_is_add==1)) { if(h_Alarm_Time==255){h_Alarm_Time=0。} h_Alarm_Time++。 H_is_add=0。 }if((Is_LOWalarm==1)amp。amp。(stop==0)amp。amp。(Is_HIalarm==0)amp。amp。(L_is_add==1)) { if(l_Alarm_Time==255){l_Alarm_Time=0。} l_Alarm_Time++。 L_is_add=0。 }} LED顯示程序設(shè)計(jì)顯示采用動態(tài)掃描的方法,即輪流點(diǎn)亮各數(shù)碼管。顯示的位碼和段碼分別通過單片機(jī)SPI口的MOSI輸出到兩個74HC595來控制。要顯示的數(shù)據(jù)有:當(dāng)前時間,當(dāng)前角度值,角度的上限值和角度的下限值。由鍵盤控制顯示內(nèi)容。+ 最高位有零消隱功能,當(dāng)調(diào)節(jié)角度上下限時,可實(shí)現(xiàn)位閃爍。SPI發(fā)送位碼和段碼程序如下所示:void sendspi(unsigned char spidata,unsigned char isBit){ unsigned char t,spi1_status=0。 SPDAT=spidata。 while(spi1_status==0) //等傳輸完畢 { spi1_status=SPSTAT。 spi1_status=spi1_statusamp。0x80。 } if (isBit==1) { P21=1。 for(t=0。t15。t++)。 P21=0。 //位鎖存信號輸出 } else { P11=1。 for(t=0。t15。t++)。 P11=0。 //段鎖存信號輸出 } SPSTAT=0xC0。 //寫1清SPIF標(biāo)志位 EA=1。 }第四章 實(shí)驗(yàn)測試結(jié)果及傾角測試原理由于測試條件有限,及板子的焊接也存在誤差。直接測量傾角存在困難。于是采用了測試角度差值△U的辦法。AD轉(zhuǎn)化的參考電壓是單片機(jī)的供電電壓,但每次上電后,單片機(jī)的電壓不是恒定不變的值。 Y軸傾角測量結(jié)果真實(shí)角度差值△U1測得實(shí)際角度差△U2誤差(△U2△U1)/△U11018%305%45%60%1015%302%45%60% 傾角測試原理及角度計(jì)算方法1) .傾角測量原理MMA7260Q用于傾角測量是最典型的應(yīng)用之一,它以重力( F =mgn )為輸入矢量來決定物體在空間的姿態(tài)。把加速度傳感器固定在物體的水平面上,當(dāng)物體姿態(tài)改變時,加速度傳感器的敏感軸隨之轉(zhuǎn)動一定角度,由于重力的作用,傳感器敏感軸上的加速度會發(fā)生改變,因此可通過測量加速度的變化來反映物體姿態(tài)的變化。2) .傾角的計(jì)算加速度傳感器在靜止時,可用來測量傾斜角,傾斜角在~+之間變化時,~+。輸出電壓對應(yīng)傾斜角的公式如下所示: ()其中,為加速傳感器的輸出,為零加速度時的輸出,為靈敏度,為傾斜角。,加速度傳感器靈敏度選擇引腳gselectgselect2全部接為低電平。= =800mv/g= ~。給MMA7260Q的12引腳()提供高電平,即不是工作在睡眠模式??? 結(jié)整個系統(tǒng)的設(shè)計(jì)已結(jié)束,由于初次設(shè)計(jì),經(jīng)驗(yàn)不足,系統(tǒng)的硬件LED驅(qū)動部分存在問題。借鑒他人的方法采用7407的驅(qū)動LED,本想驅(qū)動沒有問題,等到焊到板子上的時候,才發(fā)現(xiàn)驅(qū)動能力不行,查了相關(guān)資料,可由9013 (集極電流Ic:Max 500mA 集電極基極電壓Vcbo:40V 工作溫度:55℃ to +150℃ )驅(qū)動,但由于時間限制再加上焊板子的接線比較復(fù)雜,于是決定不換,而采用上拉470歐姆的電阻,增加驅(qū)動電流,可以明顯看到,數(shù)碼管可以正常顯示,但存在問題是7407輸出低電平時電阻有電流通過,時間長了可以感覺到電阻發(fā)熱,造成了電能浪費(fèi)。 單片機(jī)和各個芯片分開供電,使單片機(jī)的供電電壓穩(wěn)定
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1