|
發布時間: 2020-8-25 10:58
正文摘要:大一,和師兄做了一個風壓自動控制系統,當風壓達到一定程度,電機自轉,帶動窗簾的關閉,但是程序不管怎么改,電機一直轉,根本停不下來,沒風的時候本來該停下來,但是還是在轉,大佬們,救救孩子們吧! 單片機 ... |
| 風壓的量應該成為電機是否運轉的條件 |
|
編碼的風格還可以,邏輯有些混亂,問題較明顯,是不是沒仔細檢查自己代碼 1 // disp[0]=smgduan[temp/1000];//千位 disp[0]=1;//千位 disp[1]=smgduan[temp%1000/100];//百位 disp[2]=smgduan[temp%1000%100/10];//個位 disp[3]=smgduan[temp%1000%100%10]; 這個下標需要這樣計算嗎 temp%1000%100 和 temp%100 的結果相等 2 main函數中開始的run()是多余的 3 datapros()函數中disp[0]=1;//千位 每次都把disp[0]賦值為1了,后面的if(disp[0]>=3)有可能為真嗎,編譯時候難道沒有警告說有不可能進入的分支? 4 text、text1做什么用的你知道嗎,應該是用來保存上一次切換的時候的AD值,只有在狀態有變化時候才操作風扇開關,而你根本沒用到 5 電機開關是一個開關量,不理解為什么要循環操作100次,只要你的電路設計沒問題,不要懷疑IO操作會失效。 綜上,推測你這是參考別人程序改的,但沒真正看懂別人程序,所以改的亂七八糟 |
932585241 發表于 2020-8-26 15:39 這跟結構沒什么關系,我只是說你寫的程序有些地方不是很合理,至于輸入信號為3到4V時電機轉動,這就用到AD轉換了,因為單片機只能識別數字量,還有給你一個忠告,盡量別用delay,多用定時器。 |
666的付同學 發表于 2020-8-26 13:26 大佬,我請教一下,我不知道用什么樣的C語言結構,比如當輸入信號為3-4v時,我們想讓電機run,信號1-2frun時,但只轉一次,除非信號范圍變換,電機不轉,什么樣的結構可以達成這個效果 |
666的付同學 發表于 2020-8-26 13:26 新手,剛開始學習 |
|
本帖最后由 666的付同學 于 2020-8-26 16:01 編輯 你這程序我瞄了一下,寫的很不規范啊,瘋狂調用死循環延時,數碼管顯示處理的也很不好,白白占用了許多ROM,更關鍵的是if語句都有問題,這里需要的是邏輯等==,而不是=,所以你主函數里的if語句出了問題。 |
xianfajushi 發表于 2020-8-25 12:48 如果我去掉的話,也是這樣,我設置if語句沒什么用 |
| 主函數內不受限制地運行run();當然電機一直轉動 |
|
這是我那塊板子的原理圖 |
227.86 KB, 下載次數: 13