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