单片机3.3V供电,而编码器是5V供电,怎么让编码器的输出转化为3.3V电平如何给单片机低电平使用合适,力求稳定简单!

查看: 48|回复: 4
3.3V供电单片机,如果IO有5V电,单片机VCC就会有4.5V电平!这是怎么回事?
3.3V供电单片机,如果IO有5V电,单片机VCC就会有4.5V电平!这是怎么回事?
 3.3v供电,io不能直接加5v的
0.png (147.29 KB, 下载次数: 0)
00:34 上传
 当然是外部的那个5V提供的了。
估计是单片机电源供电用了5V,IO口输出高电平就是5V左右
IO电压倒会到芯片了
Powered by基于STM32单片机的增量式编码器模拟装置设计_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于STM32单片机的增量式编码器模拟装置设计
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢5v的单片机与3.3v的芯片进行spi通讯如何连接_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:128,915贴子:
5v的单片机与3.3v的芯片进行spi通讯如何连接收藏
我不是最近要买个模块吗但是我的单片机是5v供电的,可是那个模块是要3.3v供电的这个我会用5v的接4007来降压来得到,但是模块的spi也不能和单片机直接相连的它不像nrf24l01可以直接连接,我在网上看到几种方法,第一种就是用专业的电平转换模块但是贵,第2个是5v到3.3的采用电阻分流或分压,3.3v到5v直接连接。第三种 如果需要管脚不多的话,自己搭个电路。5V到3.3V好说,电阻分压就OK了,3.3V到5V的话,可以用如下电路,R选10K即可,NMOS:Si2302,另该电路为双向导通电路,原理就不多说了。但是这个对于我这个刚刚接触电路没多久很多原件都没用过的来说这个有点难。第四种是我的猜想用三级管来连接会不会好些只是个思路具体还不知道如何连接才能不影响通讯。
单片机就选海同,8天免费试听,[120天]让您0基础到精通,毕业后提供就业机会,具体详情点击咨询.
有3。3伏稳压芯片,自己焊个电源板
有一种一边3只脚一边好大的一只脚 的东西
丝印是1117的
貌似可以稳压3.3V
好像可以用一种三极管
型号忘了-_-#
在I2C总线中,对于 3.3 和 5V的不同电压间的转换,是这样的,供你参考
好惆怅到底是买转换模块还是自己接个电路,5V到3V电阻分压用10K和5.7 K的来实现关键是3.3V到5V到底该咋办,难道直接相连或用别的方法,求大神
18 F/S 模式I2C 总线系统的双向电平转换器现代的集成电路工艺加工的间隙可达0.5μm 而且很少限制数字I/O 信号的最大电源电压和逻辑电平为了将这些低电压电路与已有的5V 器件接口需要一个电平转换器对于双向的总线系统像I2C 总线电平转换器必须也是双向的不需要方向选择信号1 解决这个问题的最简单方法是连接一个分立的MOS-FET管到每条总线线路尽管这个方法非常简单但它不仅能不用方向信号就能满足双向电平转换的要求还能 将掉电的总线部分与剩下的总线系统隔离开来 保护低电压器件防止高电压器件的高电压毛刺波双向电平转换器可以用于标准模式高达100kbit/s 或快速模式高达400kbit/s I2C 总线系统这个转换器并不打算在Hs 模式系统中使用因为Hs 模式系统可能已经有带电平转换的电桥见13.5 节18.1 连接逻辑电平不同的器件第16 章描述了如何将电压不同的器件通过连接到电源电压线的上拉电阻连接到相同的总线尽管这是最简单的解决方法低电压的器件必须能容忍5V 使它们的生产更昂贵但是通过使用双向电平转换器可以将电源电压和逻辑电平不同的两部分I2C 总线连接起来配置入图45 所示左边的低电压部分有上拉电阻而且器件连接到3.3V 的电源电压右边的高电平部分有上拉电阻器件连接到5V 电源电压两部分的器件都有与逻辑输入电平相关的电源电压和开漏输出配置的I/O每条总线线路的电平转换器是相同的而且由一个分立的N通道增强型MOS-FET 管串行数据线SDA的TR1 和串行时钟线SCL 的TR2 组成门极g 要连接到最电源电压VDD1 源极s 连接到低电压部分的总线线路而漏极d 则连接到高电压部分的总线线路很多MOS-FET 管的基底与它的源极内部连接如果内部没有连接就必须建立一个外部连接每个MOS-FET 管在漏极和基底之间都有一个集成的二极管n-p 结
默默的问一句,你的数码管是多少电压供电?我的数码管全烧坏了(共阴,5v,300电阻)   --小尾巴带上十五字送给亲爱你的您!
手机签到经验+6点,回三个贴经验+12点,整个过程不到五分钟,每天可增加经验18点。 理论上来说,你回再多帖子,经验也不会增长了~~ 单纯从捞经验考虑,这是最经济的泡吧方式了。。。我是来水经验的。。。。。
就用三极管吧,利用三极管的开关特性应该挺容易实现的,用光电隔离应该也行
单片机海同强大的师资阵容,因人制定课程内容,分阶段学习.单片机就到正规Java培训机构-海同科技,培训Java面对面教学,免费重读!
啥都不用,接到p0,p0上拉3.3v即可。   --来自天宫一号土豪金客户端
单片机改3.3v供电。。。
am1117就可结局
三极管电路 很简单的看一下就会,电压变换电路而已
后来怎么解决的,我也碰到同样问题
我就是买了3.3v的单片机没有了电平转换的麻烦了,我用的是STC89LE52和STC89C52是一样的就是供电不同。STC的3.3到5v通信直接连,5V到3.3v要上啦电阻到3.3v总线上要串联300欧姆的电阻,stc数据手册上有。
建议这样试试:
接收SPI总线数据可以直连!
我买了个模块
2元钱,升5伏的
不知道。。。小尾巴终于出现啦,你们都给我颤抖吧。。。你干嘛,干嘛跟在我后面,不许拉我小喇叭。。。   --来自助手版贴吧客户端
只需一只300欧母的电阻
至电阻末端接
5v至电阻初端接
把io口调成开漏输出
参考一下电平转换,
楼主,来一斤酱油
我的方法,串联200欧姆电阻,读写无问题
换一个单片机,有3.3伏的单片机低功耗,两节干电池就可以带起,我记得AT89S52,具体忘了,你可以查查,想这种单片机都差不多的,价格也都行
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或一场Pokemon
Go,让全世界的小精灵师都暴露了。因此,在……
2016年初,一场人机大战点燃了人工智能芯片的争夺战,而……
今年,频频爆出摩尔定律将不再是制造工艺界的神话,虽说……
值农历新年佳节之际,很多半导体公司都借机召开了自己的……
21ic 2016年度采访之TE――将无人机与VR连接在一起
演讲人:彭煜歆时间: 10:00:00
演讲人:杜复旦时间: 10:00:00
演讲人:沈凯时间: 10:00:00
预算:¥10,000-¥50,000预算:¥10,000-¥50,000
基于CPLD与绝对式编码器的高精度高速伺服单元
[导读] 本设计已经完成了硬件及软件的全部设计,读取带有绝对式编码器的电动机转子的任何一个位置数据只需31μs,通信速率可达2.5Mb/s,将本设计集成在伺服驱动单元中,驱动和控制电动机转数可达6000转/分,控制电动机转子的位置精度可达μM级。
 目前国内数控机床中的伺服电机一般都是配套增量式编码器,而增量式编码器的精度并不太高且输出的是并行信号,欲提高其精度就必然要增大编码器的设计难度和增多并行信号的输出,这样就不利于伺服单元与编码器的长距离通信,而采用绝对式编码器,除了其精度比增量式编码器高几倍以外,其信号的输入输出都采用高速串行通信,节省了通信线路便于长距离的通信,在编码器的另一端,采用CPLD与绝对式编码器进行高速串行通信,CPLD再把收到的编码器信息转变为并行数据传送给伺服单元中的DSP进行运算控制,本文将给出CPLD与绝对式编码器高速串行通信的软硬件设计方案。
  硬件设计
  硬件主要由电源、CPLD及其外围电路和绝对式编码器接口电路三个模块组成。&
  电源模块
  电源模块由开关电源电路和DC/DC电源芯片组成,如图1所示。&
  图中的开关电源将220V交流电网电压转变成+5V,+15V,-15V,开关电源可滤除电网中存在的各种干扰,并且开关电源中的变压器将220V AC与输出的+5V,+15V,-15V隔离开,内部电路还采用了TL431调节开关管的导通脉冲宽度,因此开关电源的抗干扰、安全性、稳定性及稳压程度都比较好,TPS7333是DC/DC芯片,它将+5V的直流电压转变成+3.3V的稳定直流电压供给CPLD使用,TPS7333转换效率、可靠性和稳压性都比较好,它在输入电压为+3.77V-+10V的电压范围内都能转换出+3.3V,使CPLD不受输入电压过高导致其烧坏。&
  CPLD及其外围电路模块
  CPLD及其外围电路模块主要由CPLD、CPLD编程下载接口电路(JTAG接口),DSP接口电路、有源晶振、电平转换电路和ADM485及其外围电路(负责与编码器通信的接口电路)组成(图2)。
  本设计CPLD采用Altera公司的EPM570T144C5,此芯片属于Altera公司的MAX II,MAX II相对MAX I成本更加低,功耗更加小,而器件的宏单元数更加多,且器件延时控制在6ns以内,具有很高的性价比,EPM570T144C5有570个宏单元数,芯片的引脚数目为144个,其中可用的I/O口有116个,因此此芯片的资源已经足够用。CPLD主要负责与绝对式编码器的高速串行通信,并受控于DSP的命令把接收到编码器数据和其他信息并行的转送给DSP。&
  JTAG接口主要用于下载可执行文件到CPLD,在PC机安装Altera公司的开发环境-QUARTUS II,并在此开发环境中将编写好的VHDL程序进行编译,保证编译不出错并且保证功能已实现后,连接好下载电缆到JTAG接口,通过QUARTUS II提供的编程下载工具,对CPLD电路板进行下载。&
  DSP接口就是由8根数据线,3根地址线和1根控制线组成的,8根数据线负责转送编码器数据及其其他信息,3根地址线负责传送DSP命令,在CPLD终端进行译码,CPLD根据译码得出的命令将编码器数据或其他信息通过8根数据线传送到DSP,控制线主要是完成CPLD与DSP同步控制。&
  20M有源晶振主要是为CPLD提供基准时钟,在时钟信号的驱动下,供CPLD产生2.5Mb/s的波特率与编码器进行通信,和产生10M赫兹时钟供一些逻辑控制信号使用,此晶振提供20M赫兹的时钟频率,需要电源提供3.3V的直流电压。&
  电平转换电路主要负责将3.3V电压转换成5V或将5V电压转换成3.3V,因为CPLD的核和I/O口需要的供电电压都是3.3V,而ADM485和绝对式编码器所需的供电电压和I/O口驱动电路都为5V,所以需要用电平转换芯片LVC4245A将3.3V转换成5V电压或将5V转换成3.3V。&
  ADM485及其外围电路是CPLD与绝对式编码器高速通信的硬件衔接。ADM485工作电压为5V,其最大通信速率为5Mb/s,采用2个ADM485芯片进行对接通信可提高通信线路上的抗干扰能力,最长的传输距离可达1.2km。其外围电路如图3所示,虚线的右半部属于绝对式编码器的外围电路,上拉和下拉电阻都是1K欧姆,限流电阻则是220欧姆,ADM485的SDAT是数据输出引脚,ADM485是SRQ是数据输入引脚,ADM485的DE是外部控制引脚,该脚受CPLD控制,由于RS-485通信协议属于半双工,所以ADM485只能处在发送数据或接收数据的状态,当ADM485得DE为高电平时,ADM485处于数据输出状态(即CPLD接收数据),当ADM485的DE为低电平时,ADM485处于数据输入状态(即CPLD发送数据)。&
  绝对式编码器接口模块
  绝对式编码器接口模块是指绝对式编码器内部的电源及信号输入输出接口电路,其电路与上述的ADM485及其外围电路是一致的,同样是采用ADM485芯片及一些上拉、下拉及限流电阻,如图3所示,虚线的左半部就是绝对式编码器内部接口电路,它负责与外部ADM485(虚线的右半部)衔接,ADM485受编码器内部的控制芯片所控制,当编码器受到CPLD发来的命令之后,控制芯片做出判断后发送出相应的数据,同时控制ADM485的DE为高电平,即使ADM485处于发送状态,当发送完数据之后,控制芯片又使ADM485的DE处于低电平状态,便于随时接收CPLD发来的命令。&
  软件设计&
  软件是指CPLD的VHDL程序,其主要由分频器、接收DSP控制命令、CPLD逻辑控制、波特率发生器、接收及发送数据和串并转换及发送数据六个软件子模块组成(图4)。
  分频器模块&
  分频器模块主要是把20M赫兹的输入时钟频率分频为10M赫兹和2.5M赫兹的时钟频率,其中10M赫兹时钟主要是供给CPLD逻辑控制模块工作,2.5M赫兹时钟主要是供给波特率发生器模块工作。&
  接收DSP控制命令模块&
  接收DSP控制命令模块实际上是实时的采集DSP发来的控制信号并及时的将控制信号进行译码,译码完成后立即转送给CPLD逻辑控制模块。&
  CPLD逻辑控制模块&
  CPLD逻辑控制模块是整个CPLD软件的核心,其接收到译码数据后,立即作出逻辑控制运算,并快速的控制接收及发送数据模块和控制串行转换及发送数据模块。&
  波特率发生器模块&
  波特率发生器模块主要是为接收及发送数据模块提供2.5Mb/s波特率。&
  接收及发送数据模块&
  接收及发送数据模块是整个CPLD软件的重要组成部分,其主要负责与绝对式编码器高速通信,由于其通信方式是异步串行通信方式,因此其波特率、通信的数据格式及RS-485通信协议都要与绝对式编码器相同。&
  串并转换及发送数据模块&
  串并转换及发送数据模块主要是将接收到的编码器串行数据转换成并行数据,并将数据锁存在CPLD锁存器内,当CPLD逻辑控制模块控制其发送数据时,就将锁存在CPLD锁存器内的数据以并行的方式放送给DSP,供DSP进行运算控制用。&
  本设计已经完成了硬件及软件的全部设计,读取带有绝对式编码器的电动机转子的任何一个位置数据只需31&s,通信速率可达2.5Mb/s,将本设计集成在伺服驱动单元中,驱动和控制电动机转数可达6000转/分,控制电动机转子的位置精度可达&M级。
关键词: 高精度RTC 扫地机器人 机器人避障 低功耗RTC 高集成度RTC 市场前景随着科技的发展,越来越多非传统的家电出现了。如今,智能的清洁机器人渐渐走进了我们的家庭。目前,各式各样的扫地机器人、吸尘机器人等......关键字:
8月15日消息,太平洋时间今天早上,有人在著名网站Reddit上贴出了一张汽车着火的照片,照片清晰度不高,但人们推测照片中燃烧的的正是一辆在法国进行试驾的特斯拉电动汽车。根据网友3dkSdkvDskReddit的描述,起火的是......关键字:
iPhone 7将会取消几乎所有消费者设备都存在的3.5毫米耳机接口,而其他智能手机厂商很有可能会有样学样。不过,有一家公司似乎非常确信3.5毫米耳机口将会消亡,以至于它一口气推出了三款没有该标准插孔的Android手机。
......关键字:
我 要 评 论
热门关键词查看: 8058|回复: 25
求一个增量编码器求速度的程序
主题帖子精华
初级会员, 积分 84, 距离下一级还需 116 积分
在线时间0 小时
A接T0,B接T1,希望可判断方向,求的速度,不胜感激
佛法无边啊
主题帖子精华
在线时间557 小时
没用过这东东.帮不了你.
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
金牌会员, 积分 2121, 距离下一级还需 879 积分
在线时间20 小时
我知道编码器可以测脉冲,速度的话,我也不是很清楚
专业制作STM32 GPRS通信模块板,模块交流群:。
主题帖子精华
初级会员, 积分 84, 距离下一级还需 116 积分
在线时间0 小时
回复【3楼】sun1238898:
---------------------------------
就是计量脉冲&计算速度的
佛法无边啊
主题帖子精华
高级会员, 积分 577, 距离下一级还需 423 积分
在线时间104 小时
回复【楼主位】电子苹果:
---------------------------------
给个思路:
进入中断(A相低电平),检测端口(B相)如果是高电平,正转(脉冲加1);否则&反转(脉冲减1)
在退出中断前再次判断B相电平,如果前次和后次相同则脉冲有效加减,否则认为是干扰回复原脉冲值。
主题帖子精华
高级会员, 积分 577, 距离下一级还需 423 积分
在线时间104 小时
回复【5楼】magicoctoy:
---------------------------------
本方案适合任何单片机,如果使用STM32则可以使用其编码器接口。
主题帖子精华
初级会员, 积分 84, 距离下一级还需 116 积分
在线时间0 小时
回复【6楼】magicoctoy:
---------------------------------
A接外部中断吗?
佛法无边啊
主题帖子精华
初级会员, 积分 84, 距离下一级还需 116 积分
在线时间0 小时
回复【6楼】magicoctoy:
---------------------------------
检测B是否为高电平,程序如何实现
佛法无边啊
主题帖子精华
高级会员, 积分 577, 距离下一级还需 423 积分
在线时间104 小时
回复【8楼】电子苹果:
---------------------------------
程序51?AVR?430?STM32?C?汇编?我只有51汇编的
主题帖子精华
初级会员, 积分 84, 距离下一级还需 116 积分
在线时间0 小时
我用stc12c5a60s2芯片,51的。有没有c语言,你的接口怎么设置的
佛法无边啊
主题帖子精华
高级会员, 积分 577, 距离下一级还需 423 积分
在线时间104 小时
回复【10楼】电子苹果:
---------------------------------
没有,A相中断0,B相普通io口。当A相低电平进入中断0,检测当前B相电平,如果是高电平,正转(脉冲加1);否则&反转(脉冲减1)。
主题帖子精华
金牌会员, 积分 1858, 距离下一级还需 1142 积分
在线时间97 小时
这种方法有潜在bug的,必须要使用支持上下边沿中断的机制.
比如,码盘在A0B0和A1B0之间来回跳动,输出值应该是在两个数字之间跳的,但这种方法下数据会不断递增或者递减.而且这种情况在伺服里是经常出现的.
技术讨论请发帖 , 需要我回复请点左下的
让系统通知我 .
本人不通过其他方式返回任何参数.
主题帖子精华
高级会员, 积分 577, 距离下一级还需 423 积分
在线时间104 小时
回复【12楼】shihantu:
---------------------------------
是的,存在这个bug,所以在程序中需要记录本次电平和上次电平作比较,是否存在临界点来回的问题。
主题帖子精华
高级会员, 积分 577, 距离下一级还需 423 积分
在线时间104 小时
51单片机+编码器+ZLG7290显示,完全可以实现功能,但是如还需加入其它功能的模块或程序编写代码过于复杂的话,还存在51单片机无法处理过快的编码器电平,导致显示、处理跟不上实际编码器的运动导致测量不准确。
主题帖子精华
初级会员, 积分 84, 距离下一级还需 116 积分
在线时间0 小时
佛法无边啊
主题帖子精华
初级会员, 积分 84, 距离下一级还需 116 积分
在线时间0 小时
上面是我的程序,电机正反转正常,但是一接编码器测速,就停止工作&求解
佛法无边啊
主题帖子精华
初级会员, 积分 84, 距离下一级还需 116 积分
在线时间0 小时
其中串口显示,ad转换都正常,就是测速一加入板子停止工作
佛法无边啊
主题帖子精华
中级会员, 积分 400, 距离下一级还需 100 积分
在线时间0 小时
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void&Encoder_Init(u16&arr)
{
RCC-&APB1ENR|=1&&1;&&&&&&&//TIM3时钟使能&&&&
RCC-&APB2ENR|=1&&0;&&&&&//开启辅助时钟
AFIO-&MAPR&=0XF8FFFFFF;&//清除MAPR的[26:24]
AFIO-&MAPR|=0X;&//关闭JTAG
GPIOA-&CRL&=0X00FFFFFF;//PA7.PA6输入
GPIOA-&CRL|=0X;//下拉输入& &&
GPIOA-&ODR|=1&&7;//PA7上拉
GPIOA-&ODR|=1&&6;//PA7上拉
Ex_NVIC_Config(GPIO_A,7,FTIR);&//上升沿触发
Ex_NVIC_Config(GPIO_A,6,FTIR);//上升沿触发
TIM3-&ARR=//设定计数器自动重装值&
&&&&TIM3-&CCMR1|=1&&0;&&//CC1S=01
TIM3-&CCMR1|=1&&8;&&//CC2S=01
TIM3-&CCER|=0&&1;&&//CC1P=0
TIM3-&CCER|=0&&5;&&//CC2P=0
&&&&TIM3-&SMCR|=3&&0;&//SMS=011
TIM3-&CR1|=1&&0;;&&&//CEN使能&
TIM3-&CR1|=0x01;&&&&//使能定时器3&
主题帖子精华
高级会员, 积分 577, 距离下一级还需 423 积分
在线时间104 小时
回复【17楼】电子苹果:
---------------------------------
看不懂51的c,你可以接仿真器仿真下程序,应该是程序进入死循环了跳不出那一段子程序了!
主题帖子精华
新手上路, 积分 23, 距离下一级还需 27 积分
在线时间0 小时
回复【18楼】shuilian007:
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void&Encoder_Init(u16&arr)
{
RCC-&APB1ENR|=1&&1;&&&&&&&//TIM3时钟使能&&&&
RCC-&APB2ENR|=1&&0;&&&&&//开启辅助时钟
AFIO-&MAPR&=0XF8FFFFFF;&//清除MAPR的[26:24]
AFIO-&MAPR|=0X;&//关闭JTAG
GPIOA-&CRL&=0X00FFFFFF;//PA7.PA6输入
GPIOA-&CRL|=0X;//下拉输入& &&
GPIOA-&ODR|=1&&7;//PA7上拉
GPIOA-&ODR|=1&&6;//PA7上拉
Ex_NVIC_Config(GPIO_A,7,FTIR);&//上升沿触发
Ex_NVIC_Config(GPIO_A,6,FTIR);//上升沿触发
......
---------------------------------
请问这个程序中“arr”是计数器计到arr个数就溢出中断一次吗??不知道能否做成在lcd上一直显示编码器脉冲数值的形式???谢谢!!!
主题帖子精华
中级会员, 积分 400, 距离下一级还需 100 积分
在线时间0 小时
回复【20楼】南国椰风:
---------------------------------
arr”是计数器计到arr个数就溢出中断一次,可以做成在lcd上显示编码器脉冲计数个数
主题帖子精华
新手上路, 积分 46, 距离下一级还需 4 积分
在线时间0 小时
我前一阵写过一个编码器测距的&&没有测速度&&不过你可以自己加计时就可以&&&我用的是STC12C5A的&&nbspCA上升和下降沿中断
#include&"global.h"
#include&"USBInterface.h"
#include&"Encoder.h"
/***********************************************/
/***********************************************/
/***********************************************/
/***********************************************/
#define&ENCODER_A&nbsp14
#define&ENCODER_B&nbsp13
INT8&&_EncoderVal=0;
UINT8&Encoder_Flag_A=0;
UINT8&Encoder_Flag_B=0;
Encoder_Init()
{
Encoder_Flag_A=ENCODER_A;
Encoder_Flag_B=ENCODER_B;
}
INT8&Encoder_Switch(UINT8&Flag_A,UINT8&Flag_B)
{
static&UINT8&Encoder_Last_A=0;
static&UINT8&Encoder_Last_B=0;
if(Encoder_Last_A^Flag_A)&&&//&A变化
Encoder_Last_A=Flag_A;
if(Encoder_Last_A)
&&//&A为高电平,捕获的A为上升沿
if(Encoder_Last_B) &&//&B为高&则反转
return&-1;
&//&&B为低&则正转
&& // A为低电平,捕获的A为下降沿
if(Encoder_Last_B) //&B为高&则正转
//B为低&则反转
return&-1;
if(Encoder_Last_B^Flag_B)&&&//&B变化
Encoder_Last_B=Flag_B;
if(Encoder_Last_B)
&&//&B为高电平,捕获的A为上升沿
if(Encoder_Last_A) &&//&A为高&则正转
&//&&A为低&则反转
return&-1;
&& // B为低电平,捕获的A为下降沿
if(Encoder_Last_A) //&A为高&则反转
return&-1;
//A为低&则正转
else&return&0;
void&EncoderAp(void)
{
static&UINT8&buf[64]={0};
ENTER_CRITICAL();
SYSPostCurMsg(RUN_TIMER0_DISPOSE_DATA);
// SYSPostCurMsg(SYS_IDLE);&&&//进入下一个任务&空闲
if(_EncoderVal!=0)
buf[63]=_EncoderV
USBCiEP2Send(buf,64);
&&//发送数据到上位机
_EncoderVal=0;
EXIT_CRITICAL();
主题帖子精华
新手上路, 积分 46, 距离下一级还需 4 积分
在线时间0 小时
怎么放图上去啊&&&我不会&我写了个流程图&不过不知道&怎么放上来
主题帖子精华
新手上路, 积分 46, 距离下一级还需 4 积分
在线时间0 小时
先通过A,B二相的上升沿和下降沿产生中断&然后在中断函数里去判断是哪一相产生的中断,再通过检测该脚位的电平是高还是低去判断是上升沿产生的中断还是下降沿的中断&(如是低就说明是下降沿产生的中断,因为从高到低&中断后&检测到的就是低电平&)&知道是哪一相产生的中断&而且&知道了&是上升&沿&还是下降沿&再通过&另一相的电平&就知道&是正转还反转
主题帖子精华
初级会员, 积分 132, 距离下一级还需 68 积分
在线时间20 小时
回复【22楼】hahalz:
---------------------------------
mark
主题帖子精华
初级会员, 积分 84, 距离下一级还需 116 积分
在线时间0 小时
谢谢大家了!
佛法无边啊
Powered by

我要回帖

更多关于 如何给单片机低电平 的文章

 

随机推荐