除錯旋轉編碼器成功
為了挑戰杯國賽能取得一個好成績,我們準備重新做一個機器人。機械臂的動力源選的電動推杆。初步方案是用旋轉編碼器做限位開關,簡單的來說就是當主控端角度傳送至從控端微控制器後,勢能電動推杆,此時旋轉編碼器角度變化,通過比較旋轉編碼器旋轉角度與傳送角度相等時關閉電動推杆已達到同步角度的目的。來張草圖吧:
今晚上一直在調旋轉編碼器,已除錯成功。我買的是有AB線的400碼旋轉編碼器。相位差90度的脈衝。簡單的來說,正轉一下A線有1個低電平輸出,反轉即B線有一個低電平輸出,轉一圈會有400個低電平輸出。我用的STC15系列微控制器,利用外部中斷得到點評變化訊號,進入中斷函式後計數,再將記錄的數值乘以360/400即可得到旋轉角度。
//Keil:uVision4
//MCU:STC15F2K60S2
//FOSC:11.0592MHz
#include"reg52.h" //標頭檔案
#define FOSC11059200L //系統頻率
#define BAUD9600 //串列埠波特率
typedef unsigned char BYTE;
typedef unsigned int WORD;
sfr AUXR =0x8e; //輔助暫存器
sfr P_SW1 =0xA2; //外設功能切換暫存器1
sbitrotation=P3^2; //旋轉編碼器A線
sbit anotherbit =P3^3; //旋轉編碼器B線
bitFLAG; //1:上升沿中斷 0:下降沿中斷
bitbusy; //串列埠繁忙標誌位
intCW_count //旋轉計數
,angle //旋轉角度
,a //臨時變數
,b; //臨時變數
void SendData(BYTE dat)
{
while(busy); //等待前面的資料傳送完成
ACC =dat; //獲取校驗位P (PSW.0)
busy =1;
SBUF =ACC; //寫資料到UART資料暫存器
return;
}
void SendString(char *s)
{
while(*s) //檢測字串結束標誌
{
SendData(*s++); //傳送當前字元
}
return;
}
void init(void)
{
SCON =0x50; //8位可變波特率
AUXR =0x40; //定時器1為1T模式
TMOD =0x00; //定時器1為模式0(16位自動過載)
TL1 = (65536-(FOSC/4/BAUD)); //設定波特率重灌值
TH1 = (65536- (FOSC/4/BAUD))>>8;
TR1 =1; //使能定時器1
INT0 =1;
IT0 =0;
相關文章
- Flutter 圖片裁剪旋轉翻轉編輯器Flutter
- # Xcode 編譯器除錯命令(所有)XCode編譯除錯
- 矩陣旋轉-Eigen應用(QTCreator編輯器)矩陣QT
- 編譯除錯Net6原始碼編譯除錯原始碼
- phpstrom編輯器進行PHP程式碼的xdebug除錯PHP除錯
- 彙編環境下的原始碼除錯原始碼除錯
- 主頁上jsp計數器的除錯終於成功~JS除錯
- windows 下使用 mingw編譯器 除錯時 無法跟進原始碼Windows編譯除錯原始碼
- 箭頭旋轉程式碼
- Idea除錯Rocketmq原始碼編譯執行Idea除錯MQ原始碼編譯
- 用GPT-4除錯 用Claude 3編碼GPT除錯
- 乾貨 | 淺析伺服系統應用中的編碼器除錯問題除錯
- Spark原始碼編譯與匯入IDEA除錯Spark原始碼編譯Idea除錯
- cesium原始碼編譯除錯及呼叫全過程原始碼編譯除錯
- 旋轉文字的CSS程式碼CSS
- MATLAB影象旋轉原始碼Matlab原始碼
- Python 程式碼除錯—使用 pdb 除錯Python除錯
- C編譯: 使用gdb除錯編譯除錯
- C 編譯: 使用 gdb 除錯編譯除錯
- 使用gdb編譯除錯mysql編譯除錯MySql
- Java除錯教程--多執行緒除錯(轉)Java除錯執行緒
- GDB 除錯 Mysql 實戰(一)原始碼編譯安裝除錯MySql原始碼編譯
- DLL的除錯 (轉)除錯
- 軟體除錯 (轉)除錯
- 除錯觸發器除錯觸發器
- 編寫優質無錯程式碼(2) (轉)
- 編寫優質無錯程式碼(3) (轉)
- 編寫優質無錯程式碼(1) (轉)
- autodesk-forge 模型旋轉程式碼模型
- 百度旋轉驗證碼
- 除錯時檢視彙編和暫存器資料等除錯
- 【轉知乎回答】一文看懂 LLaMA 中的旋轉式位置編碼(Rotary Position Embedding)
- 旋轉變換(一)旋轉矩陣矩陣
- 視訊播放器全屏旋轉方案播放器
- GDB 除錯程式碼除錯
- 除錯spark原始碼除錯Spark原始碼
- MacOs 下除錯 8086 彙編Mac除錯
- nasm彙編以及bochs除錯ASM除錯