<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種基于總線的智能型執(zhí)行器系統(tǒng)設(shè)計(jì)

          一種基于總線的智能型執(zhí)行器系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2018-08-30 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/201808/388120.htm

          1、角反饋位置子程序。68HC12片上提供了一個(gè)8路10位的A/D轉(zhuǎn)換器,由于其簡單易用,可靠性高,因此本設(shè)計(jì)中,應(yīng)用該A/D轉(zhuǎn)換器來完成位置信號的反饋。在本設(shè)計(jì)中,ATDCTL2賦值80H,允許A/D功能。正常清除A/D轉(zhuǎn)換標(biāo)志,不允許中斷。ATDCTL3賦值00H,選擇連續(xù)轉(zhuǎn)換模式,不許凍結(jié)。ATDCTL4賦值01H,分頻因子為4,采樣時(shí)間為2個(gè)A/D時(shí)鐘。A/D轉(zhuǎn)換完畢后,就可以得到當(dāng)前角位置反饋,然后將該值存入數(shù)據(jù)緩沖區(qū),供執(zhí)行器驅(qū)動(dòng)子程序、向仲裁器發(fā)送的變量寫子程序和LCD顯示子程序使用。

          2、執(zhí)行器輸出驅(qū)動(dòng)子程序。由于執(zhí)行器的正反轉(zhuǎn)輸出由MCU上的兩個(gè)I/O口進(jìn)行控制,所以對其控制比較簡單,在此不作詳細(xì)敘述。值得一提的是本設(shè)計(jì)中將死區(qū)嵌入了對到達(dá)指定位置判斷的子程序中,執(zhí)行器正轉(zhuǎn)時(shí),反饋值不能大于指定值加1(指定值為0~100%開度),反轉(zhuǎn)時(shí),反饋值不能小于指定值減1。即死區(qū)被定為1%。

          圖5中斷處理程序流程圖

          3、LCD顯示子程序。本設(shè)計(jì)使用的LCD控制器HD44780必須進(jìn)行初始化,否則模塊可能無法正常顯示,一般通過軟件復(fù)位程序來完成其初始化。將LCD設(shè)置為8位數(shù)據(jù)接口,2行顯示,5×7點(diǎn)陣,顯示開,光標(biāo)關(guān),閃爍關(guān),無移位。第一行地址80H,第二行地址C0H。在對LCD初始化結(jié)束后,可以對LCD進(jìn)行讀寫操作。LCD的讀寫操作都是在E管腳的下降沿有效,所以讀寫前要確保數(shù)據(jù)準(zhǔn)備好,先將E置高,再將其置低,完成讀寫操作。

          4、軟件的固化。軟件調(diào)試完畢后需要把程序固化到MCU68HC12的FLASH中,68HC12的FLASH控制寄存器共有4個(gè),它們是:FEELCK,F(xiàn)EEMCR,F(xiàn)EETST和FEECTL。FEELCK等于01H時(shí)將禁止FLASH,F(xiàn)EEMCR等于01H時(shí)將擦除和編程FLASH的啟動(dòng)塊,F(xiàn)EETST主要用來進(jìn)行測試,而FEECTL則具體控制FLASH的讀寫編程。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();