日韩欧美不卡视频在线观看-国产无线不卡一区二区三区-在线观看中文字幕亚洲精品-日韩亚洲欧美精品一区二区

技術(shù)文章您的位置:網(wǎng)站首頁 >技術(shù)文章>旋轉(zhuǎn)編碼器程序簡介
旋轉(zhuǎn)編碼器程序簡介
更新時間:2013-05-08   點擊次數(shù):4329次
zui近用到旋轉(zhuǎn)編碼器,在網(wǎng)上找了一大堆資料,發(fā)現(xiàn)這篇好文章。供大家參考!
[ME850擴展應用]旋轉(zhuǎn)編碼器計數(shù)程序(飛梭旋鈕功能)-數(shù)碼管顯示
/*******************************************************************
* *
* ME850單片機開發(fā)實驗儀演示程序 - 旋轉(zhuǎn)編碼器計數(shù)程序 *
* *
* 3位數(shù)碼管顯示 *
* *
* MCU: AT89S52 晶振:11.0592MHz *
* *
* 版本:V1.1 (2009/04/29) *
* 作者:gguoqing (: gguoqing@) *
* : (碩飛科技) *
* (偉納單片機世界) *
* :sofitech@ *
* *
*【版權(quán)】Copyright(C) 深圳碩飛科技有限公司 All Rights Reserved *
*【聲明】此程序僅用于學習與參考,引用請注明版權(quán)和作者信息! *
* *
********************************************************************
* *
* 功能簡述: (飛梭旋鈕功能) *
* 當旋鈕順時針旋轉(zhuǎn)時,計數(shù)值增加。達到zui大值255后,不再響應。 *
* 當逆鈕順時針旋轉(zhuǎn)時,計數(shù)值減小。達到zui小值0后,不再響應。 *
* 當按下旋鈕時,將計數(shù)值清零(歸位)。 *
* *
*******************************************************************/
#Include <reg52.h>
sbit PINA = P1^0;
sbit PINB = P1^1;
sbit PIND = P1^2;
unsigned char display[3];
unsigned char code LEDData[ ] =
{
0xC0,0xF9,0xA4,0xB0,0x99,0x92,
0x82,0xF8,0x80,0x90,0xff
};
char code reserve[3]_at_ 0x3b; //保留0x3b開始的3個字節(jié)
unsigned char counter = 0; //編碼器脈沖計數(shù)
unsigned char n,shift;
/**********************************************************
ms延時子函數(shù)
**********************************************************/
void delayms(unsigned int ms)
{
unsigned char k;
while (ms--)
{
for (k = 0; k < 114; k++)
;
}
}
/**********************************************************
掃描編碼器子函數(shù)
在編碼器引腳A為低電平期間:
編碼器引腳B從0到1為正轉(zhuǎn),編碼器引腳B從1到0為反轉(zhuǎn)。
**********************************************************/
void scan_encoder(void)
{
static bit Curr_encoder_b; //定義一個變量來儲存當前B信號
static bit Last_encoder_b; //定義一個變量來儲存上次B腳信號
static bit updata= 0;
if( PINA && PINB) //編碼器無轉(zhuǎn)動退出
{
updata = 0;
return;
}
Last_encoder_b = PINB; //記錄B信號
while(!PINA) //等待A由低變高
{
Curr_encoder_b = PINB; //記錄等待期間的B信號(指當前B信號)
updata = 1;
}
if(updata)
{
updata = 0 ;
if( (Last_encoder_b == 0)&&(Curr_encoder_b== 1) ) //B從0到1為正轉(zhuǎn)
{
if(counter == 255)
return;
counter++; //正轉(zhuǎn)計數(shù)加
}
else if( (Last_encoder_b == 1)&&(Curr_encoder_b == 0) ) //B從1到0為反轉(zhuǎn)
{
if(counter == 0)
return;
counter--; //反轉(zhuǎn)計數(shù)減
}
}
}
/**********************************************************
主函數(shù)
**********************************************************/
void main(void)
{
P0 = 0xff;
P1 = 0xff;
P2 = 0xff;
T2CON = 0x00; //設置T2CON寄存器
TH2 = 0xfc; //1ms定時
TL2 = 0x66;
ET2 = 1; //啟用Timer2中斷
EA = 1; //總中斷允許
TR2 = 1; //啟動定時器2
counter = 0; //計數(shù)單元清零
while(1)
{
scan_encoder();
if(! PIND) //當按下旋鈕時
{
counter = 0; //計數(shù)單元清零(歸位)
delayms(10);
}
}
}
/*********************************************************
Timer2中斷函數(shù)
**********************************************************/
void timer2() interrupt 5
{
TR2 = 0;
TF2 = 0; //手工清中斷標志
TH2 = 0xfc; //1ms定時常數(shù)
TL2 = 0x66;
if(n >= 3) //3位數(shù)碼管顯示
{
n = 0;
shift = 0xfe; //送位碼初值
P2 = 0xff; //關(guān)閉顯示
}
else
{
display[0] = counter%10; //個位數(shù)據(jù)
display[1] = (counter%100)/10; //十位數(shù)據(jù)
display[2] = counter/100; //百位數(shù)據(jù)

if(display[2] == 0)
{
display[2] = 0x0a; //百位為0,不顯示
if(display[1] == 0)
display[1] =0x0a; //十位為0,不顯示
}
P0 = LEDData[display[n++]]; //送段碼
P2 = shift; //送位碼
shift = (shift<<1)|0x01; //調(diào)整位碼
}
TR2 = 1;
}
網(wǎng)站首頁 關(guān)于我們 新聞中心 產(chǎn)品中心 聯(lián)系我們
備案號:滬ICP備09051314號-3   GoogleSitemap   技術(shù)支持:智能制造網(wǎng) 管理登陸
© 2018 上海德晶光電科技有限公司DECHING(www.top-euro-escorts.com) 版權(quán)所有 總訪問量:499828
日韩午夜精品中文字幕| 日韩视频无码日韩视频又2020| 亚洲大尺度无码无码专线一区| 国产欧美一区二区精品久久久| 欧美人与性动交b欧美精品| 久久精精品久久久久噜噜| 色一情一交一乱一区二区 | 少妇勾搭外卖员在线观看| 久久精精品久久久久噜噜| 无码中文字幕免费一区二区三区| 夜色成人免费观看| 精品一区二区av天堂色偷偷| 亚洲午夜av一区二区三区| 国产亚洲精品一区久久| 久久久久久高清无码视频| 国产在线中文字幕一区二区三区| 看看美日韩操逼吧| 日本男人捅女人机机| 留学生美女被大黑屌猛戳| 性爱大鸡吧喷水视频| 亚洲视频免费观看| 国产精品三级一区二区| 无码人妻丰满熟妇区精品| 高清最新操逼吃鸡巴视频| 精品国产自在现线看| 精品一区二区久久久久无码| 男人操女人下面国产剧情| 好想插进去捅一捅| 一区二区国产精品免费视频| 大香蕉操逼小视频| 男人添女人下面免費视頻 | 99草草视频在线精品| 亚洲国产日韩欧美高清片| 精品久久久久中文字幕人| 国产亂倫近親相姦| 精品一区二区三区成人免费视频| 亚洲av无一区二区三区综合| 无码中文字幕免费一区二区三区 | 伊人网在线视频观看| 大逼女人污污视频| 久久无码免费视频|