完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
引言
本应用笔记介绍了一种DS1845或DS1855非易失数字电位器的简单接口方案,利用Microchip?的PIC12F509实现。 硬件设置 图1所示原理图描述了按键与微控制器的连接,也说明了IC接口的实现方案。 三个瞬态按键开关分别用于递增(UP)、递减(DWN)和中间值(MID)设置。按下按键时,开关迫使对应的微控制器通用I/O (GP0、GP1和GP3)口置低。因为微控制器内部有上拉电阻(可选),可以确切选择这些I/O口。如果微控制器工作在低电流休眠模式,IO口的电平变化也能产生唤醒中断信号。另一输入开关为单刀双掷开关,连接到微控制器的GP2引脚,通过软件编程选择POT0和POT1。 SDA、SCL和LED连接到GP5、GP4和GP0。SDA和SCL具有4.7kΩ上拉电阻,直接与数字电位器的通信接口连接。LED和MID瞬态开关共用GP0引脚。大部分时间段,GP0作为输入引脚,按下MID按键时将GP0拉低。然而,如果按下其它开关的任何一个或两个同时按下,PIC?输出低电平,点亮LED。这种情况下,LED将在MID按下时被点亮,其它按键按下时,LED由PIC驱动。R1、R2、R3可选,使用PIC12F509时并不需要这些电阻。 图2给出了估DS1845/DS1855时的特定连接方式。跳线器用来选择地址总线,隔离开所使用的电源VCC (VDD)以及SDA和SCL。 图1.PIC12F509接口电路 图2.DS1845/DS1855数字电位器与PIC控制器的连接 固件说明 这个项目的固件采用汇编语言编写,由MPLAB IDE (7.31版)进行编译。该编译软件可以从Microchip免费获得。整个软件占用的指令空间低于512字节(闪存),数据空间低于14字节(RAM)。 指令分为5个模块:初始化、读操作、递增调节、递减调节、中间值设置。固件简单地以连续轮询检测输入引脚进行循环。因为软件的固有延迟和软件处理逻辑限制,采用了开关去抖,减少噪声引起开关的误操作。 一旦PIC电源上电或从休眠状态唤醒(如果休眠状态使能),将运行初始化模块。初始化模块运行后,为相应的寄存器、标志位及变量赋值。执行这些指令后,从循环中调用读操作或写操作,通过I?C接口与数字电位器通信。 数字电位器的I?C读操作仅发生在RD_FLAG标志置位时。初始化期间标志位被置位,此后,任何按键操作将改写数字电位器的数值。数字电位器的电阻值改变后或器件开启后,执行一次I?C读操作;如果没有按下UP、DWN或MID按键,总线上不会发生通信操作。例如:如果数字电位器用来控制电源校准,这时接通按键控制器可实现在线编程。当前的数字电位器抽头位置将在执行I?C写命令之前读取。I?C写指令完成后,RD_FLAG将重新置位,通过I?C读取新的数字电位器数值。 运行UP、DWN和MID模块后将执行读操作。运行这些模块时,对应的引脚被拉至低电平;一旦检测到引脚的高电平状态,将立即退出相应的程序模块,不会产生任何I?C通信。如果检测到低电平状态,软件将按照逻辑流程执行相应的程序模块。 可以从Maxim的FTP网站下载程序源代码(.asm文件)。 功能说明 该项目固件和硬件提供几种不同操作,对DS1845/DS1855数字电位器的抽头位置进行编程。开关和LED的功能如下: POT0/1 (选择触发开关) 该开关选择下一个循环需要控制的数字电位器。改变开关S4的状态选择POT0或POT1,这将产生I?C读操作,不会影响LED。 点击MID、UP或DWN按键(< 400ms) 按下其中一个按键,所选择的数字电位器的抽头位置将递增(UP)、递减(DWN)或设置为中间值(MID)。执行I?C写操作时,LED将马上点亮;I?C读操作将在下一循环产生。 按下并保持UP或DWN按键(> 400ms) 按下并保持UP或DWN按键时,所选择的数字电位器将进入快速递增或递减模式。数字电位器的抽头位置将连续变化,直到释放按键或达到最大/最小值。执行I?C写操作时,LED将点亮,并在释放按键之前保持点亮状态。释放按键后,将在下一循环执行I?C读操作。 按下并保持UP按键,然后点击DWN按键按下并保持UP按键,所选择的数字电位器的抽头位置将开始递增。然后,在UP按键仍处于按下状态时,点击DWN按键,抽头位置将直接置于最大电阻位置。LED始终处于点亮状态,直到释放按键。释放按键后,将在下一循环执行I?C读操作。 按下并保持DWN按键,然后点击UP按键按下并保持DWN按键,所选择的数字电位器的抽头位置开始递减。在DWN按键按下的同时,点击UP按键,所选择电位器抽头位置将直接置于最小电阻值0x00。LED始终处于点亮状态,直到释放按键。释放按键后,将在下一循环执行I?C读操作。 LED闪烁3次 PIC上电初始化或当看门狗定时器(使能情况下)引起系统复位时,LED将闪烁3次。 LED连续快速闪烁发生I?C通信故障时,LED将连续闪烁。故障解除后,LED将恢复正常状态。通过检测器件地址是否正确、是否连接了I?C总线进行故障排查。 结论 本应用笔记介绍了一种DS1845/DS1855接口方案,利用简单的高性价比控制器实现。按键输入将被转化成I?C命令,无需主机控制,即可实现数字电位器的递增、递减调节,或将其设置在数字电位器的中间值。 |
|
|
|
5193 浏览 0 评论
9337 浏览 3 评论
【开源资料】基于机智云的智能感应灯(原理图+PCB+源程序)
46244 浏览 4 评论
3713 浏览 0 评论
4135 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-8 16:35 , Processed in 0.517769 second(s), Total 35, Slave 27 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号