導航:首頁 > 編程語言 > 編碼器讀取角度程序

編碼器讀取角度程序

發布時間:2023-06-19 03:29:07

❶ 51單片機開發板和絕對式編碼器連接測量角度的程序

#include <reg52.h>
#include "inc/delay.h"
#include "inc/hc595.h"

#define uchar unsigned char
#define uint unsigned int
sbit PIN_ROTARY_A = P2^0; //引腳1介面
sbit PIN_ROTARY_B = P2^1; //引腳2介面
sbit PIN_ROTARY_C = P2^2; //按下的介面

sbit PIN_ROTARY_D = P2^3; //按下的介面

//uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
/* 存儲待發送的數據 */
/* 1->8的段碼表 */
code unsigned char ucDis_Segmentcode[16] = {0x3f,0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
/* 位碼表 */
code unsigned char ucDis_Bitcode[8] = {0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F};
uchar dis_XS[8] = {0x3f,0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d};
uchar count = 0;
uchar flag;
uchar Last_BMB_status;

uchar Current_BMB_status;

void display()
{
uchar i;

dis_XS[0] = ucDis_Segmentcode[count/100]; //百位

dis_XS[1] = ucDis_Segmentcode[count%100/10]; //十位

dis_XS[2] = ucDis_Segmentcode[count%10]; //個位

if(i < 2)
{
i++;
}
else
{
i = 0;
}

// for (i = 0; i < 3; i++ )
{
Send_Data(dis_XS[i], ucDis_Bitcode[i]);
//PIN_ROTARY_D = 0;
// Delay1ms(1);
}
}

//************************************************
void main()
{

TMOD=0x01; //定時器0,工作方式1
TH0=0xD8;
TL0=0xF0; //給定時器裝上初值,10ms中斷一次
ET0=1; //打開定時器中斷
EA =1; //打開總中斷
TR0=1; //啟動定時器0

while(1)
{
//display();
Last_BMB_status=PIN_ROTARY_B;

while(!PIN_ROTARY_A) //BMA為低電平時
{
Current_BMB_status = PIN_ROTARY_B;
flag = 1; //標志位置為1說明編碼開關被旋轉了
}

if(flag == 1)
{
flag = 0; //時刻要注意這一點!給標志位清零
if((Last_BMB_status == 0)&&(Current_BMB_status == 1)) //BMB上升沿表示正轉
{
count++;
if(count == 255)
{
count = 0;
}
}
if((Last_BMB_status == 1)&&(Current_BMB_status == 0)) //BMB下降沿表示反轉
{
count--;
if(count == 0)
{
count = 255;
}
}
}
}
}

//***********************************************
void timer0() interrupt 1//定時器0的中斷服務程序
{
TH0=0xF8; // TH0=0xD8;
TL0=0xF0; //再次裝入初值
display(); //每隔10ms顯示一次
if(!PIN_ROTARY_C) //按下旋轉編碼開關則計數清零
{
count = 0;
}
PIN_ROTARY_D = !PIN_ROTARY_D;
}

❷ 用三菱PLC怎麼接編碼器,怎麼讀取編碼器的值

編碼器接入電源。把一個編碼器的A接入X0,B接入X1;把另一個A接入X3,B接入X4。不可以接入X0,X4,X1和X5,因為有些輸入點不支持高速輸入。

程序直接DMOV C251 D0,然後就可以讀編碼器的值,然後要清零,你就DMOV、K0、D0另外一個類似,DMOV C253 D2,程序用不到X0,X1及X3,X4。

讀取編碼器數據方法:

PLC向編碼器發送、01 03 00 00 00 01 84 0A數據(MODBUS格式);編碼器返回數據。把編碼器返回數據做處理得到角度數據。


(2)編碼器讀取角度程序擴展閱讀:

三菱PLC功能:

【內置時鍾功能】內置了時鍾功能, 可以執行時間的控制。

【支持RUN中寫入】通過計算機用的編程軟體, 可以在可編程式控制制器RUN時更改程序。

【程序內存】內置了64K步的RAM內存。此外, 可以通過使用存儲器盒, 將程序內存變為快閃記憶體。

【運算指令】除了浮點數、字元串處理指令以外, 還具備了定坐標指令等豐富的指令。

【內置RUN/STOP開關】可以通過內置開關進行RUN/STOP的操作。此外, 也可以從通用的輸入端子或外圍設備上發出RUN/STOP的指令。

【最大384點的輸入輸出點數】可編程式控制制器上直接接線的輸入輸出(最大256點)和網路(CC-Link)上的遠程I/O(最大256點)的合計點數可以擴展到384點。

【可以連接的擴展單元/模塊】輸入輸出的擴展設備可以連接FX2N 系列的輸入輸出擴展單元/模塊。此外,FX0N/FX2N/FX3U系列特殊功能單元/模塊最多可以連接8台。(FX0N系列僅可以連接FX0N-3A)。

閱讀全文

與編碼器讀取角度程序相關的資料

熱點內容
蘋果12原裝數據線怎麼感覺有點硬 瀏覽:764
js獲取div中的圖片不顯示不出來 瀏覽:291
什麼網站有首映動漫 瀏覽:461
淘寶網路電話叫什麼 瀏覽:231
編程要讀哪些書 瀏覽:134
如何在手機上新建文件夾里添文件 瀏覽:292
先鋒w10刷安卓系統 瀏覽:787
java設置過期日期 瀏覽:114
新版本抖音怎麼看我的數據比例 瀏覽:946
什麼是3G網路3G的發展史 瀏覽:269
如何使用ps把圖片的文件大小弄小 瀏覽:880
安卓系統根目錄文件夾 瀏覽:900
手錶怎麼設置蜂窩網路 瀏覽:51
舊愛勾搭app還有嗎 瀏覽:141
日外語言編程軟體哪個好 瀏覽:950
小論文發表了但是數據錯誤怎麼辦 瀏覽:952
注冊表禁止啟動程序運行 瀏覽:705
網路優化總體流程圖 瀏覽:735
前端程序員簡歷模板 瀏覽:706
蜂巢積木編程機器人怎麼樣 瀏覽:561

友情鏈接