本应用笔记说明了使用Microchip PIC1845F1855微控制器实现DS12或DS509非易失数字电位器按钮接口的方法。
硬件设置
图1中的原理图说明了如何将按钮连接到微控制器。它还显示了IC接口是如何实现的。
其中三个开关为瞬时按钮型,用于递增 (UP)、递减 (DWN) 和设置中间电位值 (MID)。按下时,这些开关会强制微控制器的三个通用I/O(GP0、GP1和GP3)为低电平。之所以明确选择这些I/O,是因为它们具有内部(可选)上拉电阻,如果启用低电流SLEEP模式,它们会产生唤醒中断。另一个输入开关是分配给GP2的DPDT开关。此开关可用于选择 POT0 或 POT1 进行编程。
SDA、SCL 和 LED 上的输出信号分配给 GP5、GP4 和 GP0。SDA和SCL具有4.7kΩ上拉电阻,并直接连接到数字电位器的通信引脚。LED 和 MID 瞬时开关均使用 GP0 引脚作为资源。GP0引脚大部分时间用作输入,轮询由MID按钮引起的低电平。但是,如果按下一个或两个其他瞬时按钮,则PIC输出低电平,导致LED被驱动。这样,只要按下 MID 按钮,LED 就会被驱动,每当按下另一个按钮开关时,PIC 就会驱动 LED。R1、R2 和 R3 是可选的上拉电阻,使用 PIC12F509 时无需填充。
图2给出了DS1845/DS1855用于评估的特定连接。提供跳线用于选择地址引脚,分隔共享的V抄送(五DD),以及隔离 SDA 和 SCL。
图1.PIC12F509接口电路。
图2.DS1845/DS1855数字电位器连接到PIC控制器。
固件说明
该项目的固件是用MPLAB IDE(版本7.31)编译的汇编语言编写的。该工具目前可从Microchip免费获得。整个程序由程序空间(闪存)中的不到512条指令和数据空间(RAM)中的14个位置组成。
指令分为五个块:初始化、读取、UP、DWN 和 MID。固件只是在循环中连续轮询输入引脚。由于程序的固有延迟和逻辑流程,开关去波化会自动合并到软件中。
初始化模块在 PIC 上电时或唤醒后运行一次(如果启用了 SLEEP)。运行 Initialize 块中的指令后,操作寄存器、标志和变量将加载到已知状态。执行这些指令后,其余模块串行形成无限循环,以轮询开关,通过IC读取或写入新的电位器值。
电位器值的IC读取仅在设置RD_FLAG时发生。此标志在初始化期间设置一次,然后在按钮调用将电位器寄存器写入新值时设置一次。通过在电位值变化期间和启动时仅执行IC READ,当UP、DWN或MID按钮未按下时,总线上不会发生多余的通信突发。例如,如果电位器已经在使用中控制电源微调参数,则连接按钮控制器以执行在线编程。在对电位器值执行IC写入之前,将读取当前的电位器值。IC写入完成后,再次设置RD_FLAG以生成新电位器值的最终IC读取。
UP、DWN 和 MID 块在读取块之后按顺序运行。在每个模块中,相应的引脚被轮询为低状态。如果找到HIGH状态,则程序将快速退出该块,而不会导致发生任何IC通信。如果检测到 LOW,则程序按照逻辑框图中的说明进行。
功能说明
该项目的固件和硬件允许在DS1845/DS1855上对电位器值进行编程时执行多种不同的操作。开关和 LED 功能包括:
POT0/1(选择拨动开关) | 此开关选择在下一次循环迭代中控制哪个电位器(如有必要)。此开关上的状态更改会选择 POT0 或 POT1,导致 IC 读取,并且对 LED 没有影响。² |
点击 MID、UP或 DWN 按钮(< 400 毫秒) | 通过轻触其中一个开关,所选电位器将递增 (UP)、递减 (DWN) 或直接加载中间位置 (MID)。执行IC写入时,LED将短暂亮起;IC读取将在下一次循环迭代中进行。²² |
按住 UP 或 DWN 按钮(> 400 毫秒) | 通过按住UP或DWN按钮,所选电位器将进入快速递增或递减模式。现在,电位器值将继续变化,直到松开按钮或达到最大/最小位置。执行 IC 写入时,LED 将亮起;它将保持亮起,直到松开按钮。按钮释放后,IC读取将在下一次循环迭代中进行。²² |
按住 UP,然后点击 DWN 按钮 | 通过按住UP按钮,所选的电位器将开始递增。然后,在仍然按下UP按钮的同时,点击DWN按钮,使所选电位器直接加载到最大位置。LED 将亮起,直到松开开关。释放按钮后,IC读取将在下一次循环迭代中发生。² |
按住 DWN,然后点击向上按钮 | 通过按住DWN按钮,所选电位器将开始递减。然后,在仍然按下DWN按钮的同时,点击UP按钮,使所选电位器直接加载到最小位置0x00。LED 将亮起,直到松开开关。释放按钮后,IC读取将在下一次循环迭代中发生。² |
指示灯闪烁三次 | 每当上电期间初始化PIC或看门狗定时器导致系统复位(如果启用)时,LED将闪烁三次。 |
LED 持续快速闪烁 | 每当发生IC错误时,LED将持续快速闪烁。纠正错误后,指示灯将恢复正常功能。通过检查设备地址是否正确以及IC总线是否已连接来进行故障排除。²² |
结论
本应用笔记介绍如何为DS1845/DS1855非易失数字电位器使用和构建简单、高性价比的控制器。按钮输入转换为IC命令,以递增、递减或设置中间位置,而无需主机。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !