|
發(fā)布時間: 2018-5-19 14:13
正文摘要:目的是獲得程序運(yùn)轉(zhuǎn)的時間,因?yàn)橐獙﹄姍C(jī)進(jìn)行測速,外置了一個傳感器; 現(xiàn)在已經(jīng)能夠從傳感器得到了電機(jī)運(yùn)轉(zhuǎn)的圈數(shù) count ,需要把count除以從通電開始到現(xiàn)在的時間才能得到速度。 請問這個時間要怎么做才能得到? ... |
優(yōu)雅的刺猬 發(fā)表于 2018-5-19 14:13 時間time能得到了,計數(shù)count也有了,可是顯示不出來啊 ![]() 我用的是四位共陽數(shù)碼管,buf[]數(shù)組的0~3分別是四個位。顯示其他數(shù)據(jù)的時候例如:buf[1] = 1;display();這樣就能正常顯示,但是速度count/time沒法顯示出來,不知道是不是數(shù)據(jù)類型的問題? ![]() while(!s5) { //TODO 顯示rs?? rs = count/time; buf[3] = rs/1000 ; buf[2] = rs%1000/100; buf[1] = rs%100/10 ; buf[0] = rs%10; display(); } |
優(yōu)雅的刺猬 發(fā)表于 2018-5-22 23:43 按回復(fù)結(jié)合另一個分享的帖子弄好了 ![]() |
| 你可以設(shè)置一個中斷,非常好用 |
| 弄一個標(biāo)志位,開始的時候標(biāo)志位等于0,然后再進(jìn)入main函數(shù)初始化的時候標(biāo)志位置1,然后到定時器判斷標(biāo)志位為1了就開始計時,就好了 |
|
設(shè)置開始到結(jié)束兩個標(biāo)志位 然后計算時間 不過我個人感覺不用算從開始的時間 沒有什么必要 希望對你有幫助 |
| 用DS1302;也只能這樣了……你想,單片機(jī)里面就定時器而已 |
| 需要計時的話,直接對單片機(jī)內(nèi)部脈沖計數(shù)不就好了么,用一個整數(shù)的晶振,然后輸出轉(zhuǎn)換成時間不就是單片機(jī)開始到結(jié)束的時間了么 |
| 電機(jī)開始 設(shè)置一個標(biāo)志位 定時器定時 關(guān)閉標(biāo)志位 。之后計算 |
| 在10ms的中斷服務(wù)程序中,增加一個計數(shù)器,就可以得到時間。那么電機(jī)打開的時候,記下這個起始的時間,用當(dāng)前時間減去起始時間就可以得到運(yùn)行時間 |
| 不用從運(yùn)行開始算時間,你可以計算比如一秒時間內(nèi)的圈數(shù),開啟計數(shù)器,同時開啟計圈傳感器,1秒后定時器溢出,引發(fā)中斷,再關(guān)閉定時器,關(guān)閉計圈傳感器。不就解決了。 |
| 為什么要從開始算哪? |
| 用一個定時器,50毫秒跳一次,二十次加一,主函數(shù)初始化完就開中斷,就能計時了。隨便設(shè)個整數(shù)變量。 |
Powered by 單片機(jī)教程網(wǎng)