<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • 查看: 1894|回復: 0
    打印 上一主題 下一主題

    【教程6】瘋殼·人形街舞機器人-串口控制舵機

    [復制鏈接]
    跳轉到指定樓層
    樓主
    發表于 2022-8-12 11:34:45 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
    關鍵詞: 人形機器人 , 舞蹈機器人 , 串口控制 , 舵機 , UART
    多自由度人形雙足舞蹈機器人
    ——瘋殼·機器人開發系列
    串口控制舵機





    1 串口簡介

      本章將使用 IAP15W4K61S4 單片機的串口通信來控制舵機的轉動。

      IAP15W4K61S4 單 片 機 有 4 個 采 用 UART ( Universal Asychronous Receiver/Transmitter)工作方式的全雙工異步串行通行接口。每一個串口都有 2 個數據緩沖器、一個移位寄存器、一個串行控制寄存器和一個波特率發生器組成。而每一個串行口的數據緩沖器由 2 個相互獨立的接收、發送緩沖器構成,可以同時發送和接收數據。發送緩沖器只能寫入而不能讀出,接收緩沖器只能讀出而不能寫入,因而兩個緩沖器可以共用一個地址碼。
      IAP15W4K61S4 單片機的串口 1 有 4 種工作方式,其中兩種方式的波特率是可變的,另兩種是固定的。而串口 2、3、4 都只有兩種工作方式,這兩種工作方式的波特率都是可變的。
      用戶可以用軟件設置不同的波特率和選擇不同的工作方式。主機可通過查詢或中斷方式對接收/發送進行程序處理,使用十分靈活。
      IAP15W4K61S4 單片機的串口對應的硬件部分分別為:TXD 和 RXD、TXD2 和RXD2、TXD3 和 RXD3、TXD4 和 RXD4,可以在幾組引腳之間進行切換。


    2 硬件設計

      由于絕大多數筆記本已經沒有串口了,所以我們這里使用了 CH340 這個芯片,
    成功實現 USB 通信協議和標準 UART 串行通信協議的轉換。另外,DEBUG_RX 與DEBUG_TX 連接到 IAP15W4K51S4 單片機的 P3.0 和 P3.1。


    圖 1


    3軟件設計

      在使用串口之前,我們首先介紹幾個與串口 1 相關的主要寄存器,其他串口的寄存器可以查看數據手冊。
    (1)串行控制寄存器 SCON

    串行控制寄存器 SCON 用于選擇串行通信的工作方式和某些控制功能。


    圖 2
      SM0/FE:當 PCON 寄存器中的 SMOD0/PCON.6 位為 1 時,該位用于幀錯誤檢測。當檢測到 一個無效停止位時,通過 UART 接收設置該位。它必須由軟件清零。當 PCON 寄存器中 的 SMOD0/PCON.0 時,該位和 SM1 一起指定串行通信的工作方式,如下表所示:


    圖 3
      SM2:允許方式 2 或方式 3 多級通信控制位。

      REN:允許/禁止串口接收控制位。由軟件置 REN 位 1 為允許串行接收狀態, 可啟動串口接收器 RXD,開始接收信息。軟件復位 REN,即 REN=0,則禁止接收。
      TB8:在方式 2 或方式 3,它為要發送的第 9 位數據,按需要由軟件置位或者清零。在方式0 和方式 1 中,該位不可用。

      RB8:在方式 2 或方式 3,它為要接收到的第 9 位數據,作為奇偶效驗位或者地址幀/數據幀   的標志位。方式 0 中不用 RB8(置 SM2=0)。方式 1 中也不用 RB8(置 SM2=0,RB8 是 接收到的停止位)。
      TI:發送中斷請求標志位。在方式 0,當串行發送數據第 8 位結束時,由內部硬件自動置位TI=1,向主機請求中斷,響應中斷 TI 必須用軟件清零,即 TI=0。在其他方式中,則在停 止位開始發送時由硬件置位,即 TI=1,響應中斷后 TI 必須用軟件清零。
      RI:接收中斷請求標志位。在方式 0,當串行接收到第 8 位結束時,由內部硬件自動置位RI=1,向主機請求中斷,響應中斷 RI 必須用軟件清零,即 RI=0。在其他方式中,串行        接收到停止位的中間時刻由硬件置位,即 RI=1,向 CPU 發中斷申請,響應中斷后 RI 必 須用軟件清零。
    (2)數據緩沖寄存器 SBUF

      串口 1 的數據緩沖寄存器(SBUF)的地址是 99H,實際是 2 個緩沖器,寫 SBUF 的操作完成待發送數據的加載,讀SBUF 的操作可獲得已收到的數據。兩個操作分別對應兩個不同的寄存器,寫寄存器和讀寄存器。
    (3)串口 1 切換寄存器 AUXR1(P_SW1)


    圖 4
      要是用串口通信,首先就是就要對串口進行初始化。


    代碼1

      對串口初始化完成之后,我們就開始寫串口中斷函數uart_int(void) interrupt 4using 1,每當接收到數據,CPU 就會產生中斷,從而進入串口中斷函數。
      在串口中斷函數中,我們設置了一個數據緩沖區,將串口接收到的一個一個字節的數據存儲在 receive_data 中。


    代碼2

      每次將 6 個字節的數據接存儲到 receive_data 中,當第一個字節為 0x05,并且最后一個字節為 0x77 時,那么中間的第 2、3、4、5 字節分別表示P 值的千、百、十、個位。


    4實驗現象

      首先打開下載軟件 STC-ISP。


    圖 5
      (1)點擊 Keil 仿真設置,添加 STC 相關的頭文件。STC 的相關頭文件路徑是我們之前安裝 Keil C51 的路徑,如果之前采用的默認路徑,那么選擇 C 盤 Keil 文件夾。


    圖 6
      (2)添加完 STC 相關的頭文件,點擊彈窗中的確定。

           
    圖 7
      (3)設置單片機的型號、最低波特率、最高波特率如下圖所示,硬件選項等選項默認即可。串口號根據實際情況選擇。


    圖 8
      (4)點擊打開程序文件,選擇我們例程中的.hex 文件。


    圖 9
      (5)點擊下載/編程,下載代碼。

           
    圖 10
      (6)按一下電路板上面的 RST 按鍵,完成下載。


    圖 11
      代碼下載完成之后,打開機器人電源,運行代碼,打開串口調試助手。

      (1)選擇串口號,我們圖中是 COM1,這個根據實際情況選擇。

      (2)配置串口參數,波特率為 9600,數據位 8,停止位 1,沒有校驗位和控制流,與下圖一致。
      (3)點擊打開串口。



    圖 12
      打開串口之后,我們在字符串輸入框中輸入 05 01 02 02 02 77,然后點擊發送,將機器人頭部舵機的高電平時間改為 1222,同時會看到我們機器人的頭轉動到一個位置,繼續發送其他值,機器人的頭會轉向其它位置。



    圖 13



    文件下載請點擊: 5_串口控制舵機.pdf (1.27 MB)

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規則

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷