搜索
bottom↓
回复: 19

[原创diy]试验旋转编码器

[复制链接]

出0入0汤圆

发表于 2018-1-23 23:05:17 | 显示全部楼层 |阅读模式
应邀与好友试验带PLL的FM接收机
调电台需要用到增量型旋转编码器
于是找了一个旧的做了试验(型号是EC16-2A)
效果还不错


试验的图里:
A接单片机(AT89S52)的P32(INT0)
B接在P34口

在P0口接8个led做类似流水灯的指示
即可观察到左右旋转时的效果

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2018-1-23 23:07:43 | 显示全部楼层

出0入0汤圆

 楼主| 发表于 2018-1-23 23:08:09 | 显示全部楼层

出0入0汤圆

 楼主| 发表于 2018-1-23 23:08:38 | 显示全部楼层
;这是一个旋转编码器的试验汇编代码2018-1-20
;at89s52,11.0592MHz,
;p32(int0)下降沿做中断判别A,p34(t0)做引脚B判别

ORG 0000H
LJMP mm
ORG 0003H
LJMP pd                          ;中断判别A脚
         
;程序入口*********************************************************      
org 0100h
mm:mov 12h,#0feh       ;循环显示p0口的led
mov p0,12h
mov sp,#4fh            ;设堆栈入口50h
mov tcon,#01h        ;int0下降沿中断
setb ea                     ;开总中断
setb ex0                   ;开int0
mm0:nop
sjmp mm0

;int0中断代码*****************************************************
org 0003h
pd:nop
clr ea
push acc
push pws
push dph
push dpl
mov a,p3
anl a,#00010100b
cjne a,#10h,pd0        ;A=L,B=H时右移           
mov a,12h
rl a
mov 12h,a
mov p0,a
sjmp pd00
pd0:mov a,p3
anl a,#00010100b
cjne a,#00h,pd00       ;A=B=L时左移
mov a,12h
rr a
mov 12h,a
mov p0,a
pd00:setb ea
pop dpl
pop dph
pop pws
pop acc
reti

end

出0入0汤圆

 楼主| 发表于 2018-1-23 23:11:06 | 显示全部楼层
不知为什么不能直接上传图片?
只好用了连接方式

出0入0汤圆

发表于 2018-1-23 23:15:32 | 显示全部楼层
画的挺漂亮!!!!

出0入0汤圆

 楼主| 发表于 2018-1-23 23:46:21 | 显示全部楼层
catvevs 发表于 2018-1-23 23:15
画的挺漂亮!!!!

photoshop画的
谢谢关注!

出0入0汤圆

发表于 2018-1-24 20:26:11 | 显示全部楼层
不知怎的,一看汇编就头晕

出0入0汤圆

发表于 2018-1-24 23:04:14 | 显示全部楼层
不能把隔壁论坛的图转过来吧~

出0入0汤圆

 楼主| 发表于 2018-1-26 00:01:18 | 显示全部楼层
jjj206 发表于 2018-1-24 23:04
不能把隔壁论坛的图转过来吧~

矿坛也是我发的~~~~~~~~~

出0入0汤圆

发表于 2018-1-26 00:04:19 | 显示全部楼层
lxa0 发表于 2018-1-26 00:01
矿坛也是我发的~~~~~~~~~

重新传上来不行吗?

出0入0汤圆

发表于 2018-1-26 01:03:26 | 显示全部楼层

新规定外链图片最严重可封号,把图片保存下来再上传,

出0入0汤圆

 楼主| 发表于 2018-1-26 13:52:21 | 显示全部楼层
ljy99731 发表于 2018-1-26 01:03
新规定外链图片最严重可封号,把图片保存下来再上传,

我上传过
但提示错误啊
没办法了

出0入0汤圆

发表于 2018-1-26 15:49:35 | 显示全部楼层
去掉两边的104 同样木有任何问题.

出0入0汤圆

 楼主| 发表于 2018-1-26 16:16:17 | 显示全部楼层
今天又做了修改加入延时
几乎没有误动作了


;这是一个旋转编码器的试验汇编代码2018-1-20
;最后试验修改2018-1-26,几乎没有了抖动
;at89s52,11.0592MHz,
;p32(int0)下降沿做中断判别A,p34(t0)做引脚B判别

ORG 0000H
LJMP mm
ORG 0003H
LJMP pd                ;中断判别A脚
     
;程序入口*********************************************************      
org 0100h
mm:nop
mov 17h,#0feh          ;循环显示p0口的led
mov 18h,#00h           ;4个做判别缓冲用
mov 19h,#00h
mov 1ah,#00h
mov 1bh,#05h
mov p0,17h
mov sp,#4fh            ;设堆栈入口50h
mov tcon,#01h          ;int0下降沿中断
setb ea                ;开总中断
setb ex0               ;开int0
mm0:nop
sjmp mm0

;int0中断代码*****************************************************
org 0300h
pd:nop
clr ea
push acc
push psw
push dph
push dpl
mov a,p3
anl a,#00010100b        ;保留p32和p34脚屏蔽其余引脚
mov 18h,a               ;暂存在r7
acall ys100             ;延时约1.5ms
mov a,p3
anl a,#00010100b
cjne a,18h,pd0          ;不是正转则判别是否反转
cjne a,#10h,pd0         ;A=L,B=H时右移           
mov a,17h
rl a
mov 17h,a
mov p0,a
sjmp pd00
pd0:mov a,p3
anl a,#00010100b
mov 19h,a
acall ys100             ;延时约1.5ms
mov a,p3
anl a,#00010100b
cjne a,19h,pd00         ;是干扰则返回
cjne a,#00h,pd00        ;A=B=L时左移
mov a,17h
rr a
mov 17h,a
mov p0,a
pd00:setb ea
pop dpl
pop dph
pop psw
pop acc
reti

ys100:nop               ;延时约1.5mS
ys0:djnz 1ah,$
djnz 1bh,ys0
mov 1ah,#00h
mov 1bh,#05h
ret


end

出0入0汤圆

发表于 2018-1-28 09:53:59 | 显示全部楼层
汇编语言不懂。

出0入0汤圆

 楼主| 发表于 2018-1-29 00:00:18 | 显示全部楼层
今天加上1602a继续模拟试验


怎么还是上传不了图 片啊???????????

出0入0汤圆

发表于 2018-1-29 07:23:51 来自手机 | 显示全部楼层
上次一销售推用nxp m0控制,c语言,简单的。汇编看的头大

出0入0汤圆

 楼主| 发表于 2018-1-30 13:59:52 | 显示全部楼层
本帖最后由 lxa0 于 2018-1-30 14:02 编辑

上传不了图
只好借助我前2天发过的了:



出0入0汤圆

 楼主| 发表于 2018-1-30 14:00:35 | 显示全部楼层
模拟调谐电台试验的参考代码:

;1602-LCD模拟调电台汇编代码
;Lxa0最后修改于2018-1-28-V1.0
;本代码晶体为11.0592MHz
;代码中未注明的只占用区0

RS EQU p2.5           ;定义液晶接口
RW EQU p2.6
E  EQU p2.7

org 0000h
ljmp mm

;主程序*********************************************************
org 0100h
mm:nop
acall ys
mov tmod,#90h          ;T0设方式0,T1门控与方式1
mov tcon,#04h          ;T0原始方式,INT1下降沿触发
;mov ie,#84h            ;设中断允许
mov ip,#04h            ;设中断优先级别
mov sp,#7fh            ;设堆栈入口
mov 08h,#30h           ;解码转换用
mov 09h,#07h           ;解码转换用
mov 10h,#30h           ;读红外波头存放首址
mov 11h,#2fh           ;读红外波头48个
mov 20h,#00h           ;读红外、解码、动作,电台最大最小标志位06h和05h
mov 21h,#00h           ;动作指令码占           
mov 22h,#09h           ;电台频率小数位
mov 23h,#07h           ;电台频率个位
mov 24h,#00h           ;电台频率十位
mov 25h,#01h           ;电台频率百位
mov 26h,#00h           ;XX暂存单元
mov 27h,#00h           ;XX暂存单元
mov p0,#01H            ;清屏
acall wcom
MOV p0,#38H            ;使用8Bits汇流排,显示2行5*7字符
acall wcom
MOV p0,#0CH            ;显示开,光标关
acall wcom
MOV p0,#06H            ;字符不动,光标自动右移一格
acall wcom
MOV p0,#80H            ;第一行的开始位置
acall wcom
MOV DPTR,#TAB001       ;到TABLE1取码
acall xsztab           
MOV p0,#0C0H           ;第二行的开始位置
acall wcom
MOV DPTR,#TAB002       ;到TABLE2 取码
acall xsztab           
acall cgwr
m0:nop
acall ys
acall xsz
sjmp m0

;显示tab001和tab002子代码*****************************************
xsztab:nop              
push dph
push dpl
push acc
push psw
clr psw.3               ;进入区0工作寄存器
clr psw.4
mov r1,#00h
A1:mov a,r1
MOVC A,@A+DPTR          ;到table取码
mov p0,a
acall wdat              ;显示到lcd
INC r1
CJNE A,#0,A1            ;是否到00h
pop psw
pop acc
pop dpl
pop dph
RET

;延时0.5mS子代码**************************************************
ys:nop              
push dph
push dpl
push acc
push psw
clr psw.3               ;进入区0工作寄存器
clr psw.4
MOV R7,#04              ;延时0.5mS子程序
ys00:MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,ys00
pop psw
pop acc
pop dpl
pop dph
RET

;以下是字符数据表**************************************************
tab001: db"      Lxa0      ",00h
tab002: db" FM--000.0 MHz  ",00h

;显示xsz子程序<占用区0>********************************************
org 0200h
xsz:nop
push dph              ;保护现场
push dpl
push acc
push psw
mov p0,#0c9h          ;设置小数位地址
lcall wcom
mov a,22h             ;取小数位数据
add a,#30h            ;加上#30h就是去CGROM取数据
mov p0,a
lcall wdat            ;送出显示
mov p0,#0c7h          ;设置频率个位地址
lcall wcom
mov a,23h             ;取频率个位数据
add a,#30h
mov p0,a
lcall wdat            ;送出显示
mov p0,#0c6h          ;设置频率十位地址
lcall wcom
mov a,24h             ;取频率十位数据
add a,#30h
mov p0,a
lcall wdat            ;送出显示
mov p0,#0c5h          ;设置频率百位地址
lcall wcom
mov a,25h             ;取频率百位数据
add a,#30h
mov p0,a
lcall wdat            ;送出显示
mov p0,#80h           ;显示天线符号
lcall wcom
mov p0,#00h
lcall wdat
mov p0,#81h           ;显示信号符号
lcall wcom
mov p0,#01h
lcall wdat
mov p0,#8fh           ;显示电池符号
lcall wcom
mov p0,#02h
lcall wdat
pop psw               ;恢复现场
pop acc
pop dpl
pop dph
ret                   ;返回

;写命令和数据子代码************************************************
org 0280h
wcom:CLR RS           ;送命令
CLR RW
clr E
acall ys
setb E
clr E
RET

wdat:SETB RS          ;送数据
CLR RW
clr E
acall ys
setb E
clr E
RET

;建立自定义CGRAM字符库子程序(占用区0工作寄存器)********************
org 0300h
cgwr:nop
push dph
push dpl
push acc
push psw
mov p0,#40h           ;设置CGRAM首地址
lcall wcom
mov r2,#64            ;设置天线信号电池等共8X8=64个代码
mov r3,#00h
mov dptr,#cgtab1      ;设置字符代码表首地址
cgwr00:mov a,r3
movc a,@a+dptr        ;取字符代码
mov p0,a
lcall wdat
inc r3
djnz r2,cgwr00
pop psw
pop acc
pop dpl
pop dph
ret

;以下是CGRAM数据表*************************************************
cgtab1:
db 15H,15H,15H,0EH,04H,04H,04H,00H         ;"天线"代码=0x08h
db 00H,00H,01H,03H,07H,0fH,1fH,00H         ;"信号"代码=0x09h
db 04H,1FH,11H,15H,15H,11H,1FH,00H         ;"电池"代码=0x10h
db 00h,01h,02h,03h,04h,05h,06h,07h         ;"空"代码=0x05h
db 00h,01h,02h,03h,04h,05h,06h,07h         ;"空"代码=0x00h
db 00h,01h,02h,03h,04h,05h,06h,07h         ;"空"代码=0x01h
db 00h,01h,02h,03h,04h,05h,06h,07h         ;"空"代码=0x02h
db 00h,01h,02h,03h,04h,05h,06h,07h         ;"空"代码=0x03h
;******************************************************************


end


;小屏1602的15脚接H后开背光
;CGRAM的首地址为40h
;DDRAM的首地址为80h
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 05:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表