導航:首頁 > 編程語言 > 單片機編碼器程序

單片機編碼器程序

發布時間:2025-02-13 11:17:18

⑴ 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;
}

⑵ 旋轉編碼器怎麼連接51單片機

應該是STC89C52吧??

能不能直接連接第一個要看你的旋轉編碼器的介面電平是否與單片機兼容,第二還要看編碼器的解析度和電動機的最高轉速,如果解析度×最高轉速>程序運算周期,那就要加分頻電路。

閱讀全文

與單片機編碼器程序相關的資料

熱點內容
windowsxp中工具菜單 瀏覽:663
43歲學編程怎麼樣 瀏覽:721
oracle如何清空表數據 瀏覽:856
lifi網路如何 瀏覽:744
如何利用jspwebser 瀏覽:188
在線調試jses6 瀏覽:834
javascript實現指定行列的表格 瀏覽:55
安裝驅動程序下載 瀏覽:660
小米平板共享電腦文件夾在哪裡 瀏覽:977
免費的電腦文件列印軟體 瀏覽:262
pdf文件名長度有限制嗎 瀏覽:813
暗黑破壞神2atma505圖文教程 瀏覽:373
蘋果手機怎麼文件形式重命名 瀏覽:83
沈陽如何用app辦理個人養老 瀏覽:698
ps鍵盤教程 瀏覽:145
四個excel文件怎麼合並 瀏覽:477
如何將手機視頻導入文件管理 瀏覽:381
cfile讀取多個文件 瀏覽:138
存放的文件有哪些 瀏覽:582
機器人編程課推廣文案怎麼寫 瀏覽:950

友情鏈接