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