知道光敏電阻的原理吧 有光照 和沒光照在上面 它的電阻值是不一樣的 在碼盤上安裝個紅外對管 自己做輪子的時候在上面 打孔 位置調整好 這些資料你應該都有吧 那么 把輸出腳 接 單片機的 外部中斷 每個低電平的時候 就觸發一次中斷 在中斷程序里 計數變量 count 加1 那么 在主程序中 當 碰到障礙要轉彎時 給電機設置好 脈沖 然后 設置標志位 為 SETB F0 ; F0 為1 再給 count 給初值比如 20 然后就 JB F0 $ ;為1就等待 那么在中斷程序里面 你用個DJNZ COUNT EXIT 判斷碼盤是位檢測到20次中斷 檢測到20次了 然后 清標志位 然后EXIT 這個值只是個假想值 實際你要根據你的電源 機械部分 等 做調整 就可以 實現小車 90度 180度 360 度
當然另外還有種方法 也用中斷 不過 是用定時器T0 或者T1 T0 定時 50MS 時溢出 也要設置一個 計數值 COUNT 在主程序中 當 碰到障礙要轉彎時 給電機設置好 脈沖 然后 設置標志位 為 1 SETB F0 然后 給count 給初值 20 然后就 JB F0 $ ;為1等待 在T0或者T1的中斷程序里面 你用個DJNZ COUNT EXIT 這就是說是否轉了1秒了 轉完了 清標志位 EXIT 但是這個方法有個缺點 由于機械部分 和電源 的影響 并不能保證每次轉的角度是精確的 比如你剛沖滿電 他1秒能轉180度 但是當用了沒有多少電了 它1秒只給你轉90度 推薦還是用第一種 都是些很基礎的知識 資料網上肯定有 我用通俗的解釋了 如果實在還是不懂 去看下書上的 中斷 定時 指令這些
|