ec11编码器c语言程序,EC11旋转编码器电路和程序
現在手里的項目使用到了旋轉編碼器,目前只使用了旋轉功能,按鈕功能沒用到,電路圖如下:
說一下為什么這么畫,原因很簡單,旋鈕并不需要供電,它做的工作是把原來的高電平拉低,或者不改變高電平狀態,這就是為什么旋鈕有接地接線柱。所以旋鈕的輸出引腳需要一直輸出高電平就好了,我是用的是Mega8單片機,所以PORTD = 0xC3 DDRD = 0xFF,這樣就完成了電平的設置。我按鍵功能暫時并沒有用到。如果直接就把旋鈕接到單片機,當使用的時候,用示波器會看到很大的噪聲。在網上看到,有使用軟件濾波的,我是求助了一個前輩,得到了RC濾波電路,前輩告訴我說,這是很經典的電路。(我是才疏學淺了!!)于是配上0.1uF電容,和10K電阻后,波形非常完美。就算旋轉的很快,也沒有問題。
以上是硬件部分,接下來是軟件部分。軟件部分,之前在網上找的例程,抄一下,稍微改改就可以了。今天在找這個程序,發現丟了
!都怪自己沒有備份,因為知道網上可以找到,所以犯了依賴癥,一直找啊找,結果還是徒勞。后來還是自己寫的,(難道程序丟了,是因為我剽竊了??罪過罪過)。程序如下:
ISR(INT1_vect)//INT0中斷服務程序
{
cli();
CodingsWitchPolling2();//(這個名字也是剽竊的,抱歉抱歉)
sei();
}
nt CodingsWitchPolling1(void){
if (PIND & 0x04)//檢測中斷引腳電平
{
if (PIND & 0x10)//檢測另一引腳電平
USART_Transmit('C');
else
USART_Transmit('D');
}
else
{
if( !(PIND & 0x10))
USART_Transmit('C');
else
USART_Transmit('D');
}
return 0;
}
看到這個程序,你又沒有感覺很驚訝,其實沒那么復雜?,F在說一下為什么是這個樣子的:
看原理時,都知道,旋轉編碼器是輸出兩種波形的,順時針和逆時針的,如圖:
我的硬件電路里面,連接的是PD3(INT0)引腳,另一腳在PD4上面,中斷出發方式是任意電平變化都觸發,所以就是,觸發中斷->檢測中斷引腳電平->檢測另外一腳電平->判斷是順時針還是逆時針。OK就這么簡單。
總結
以上是生活随笔為你收集整理的ec11编码器c语言程序,EC11旋转编码器电路和程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 管道过滤器和批处理方式
- 下一篇: 【区块链实战】什么是 P2P 网络,区块