构建DS1803DS1805数字电位器的按键控制器

构建DS1803DS1805数字电位器的按键控制器,第1张

摘要:本应用笔记介绍了一种通过几个按键和一个微控制器控制数字电位器DS1803或DS1805阻值的简易方法。

概述本应用笔记介绍了一种使用几个按键和一个微控制器控制DS1803或DS1805电位器阻值的简易方法。Microchip PIC12F509微控制器用于连接四个开关数字电位器,仅需极少的元件。

硬件

图1给出了PIC12F509的内部控制原理图,R1 、R2和R3为上拉电阻,使用PIC12F509时无需安装这些电阻。图2是评估DS1803的电路连接,跳线用于选择地址引脚、分离共用的VCC (VDD)以及断开SDA、SCL连接。

3个开关为触摸式按键,用于增(UP)/减(DWN)和中间值(MID)控制。当按键按下时,微控制器通用I/O (GP0、GP1、GP3)中的一路拉低。由于这些I/O均有内部上拉(可选择),在器件已进入低电流SLEEP模式时可以产生中断唤醒,做出正确的I/O识别。另外一路输入开关为双刀双掷配置,用于触发GP2,用来选择POT0或POT1的编程。

SDA、SCL和LED输出信号分别分配由GP5、 GP4和GP0控制。 SDA和SCL具有4.7kΩ上拉电阻,直接连接到数字电位器的通信引脚。LED 和MID瞬时开关均采用GP0引脚控制。GP0引脚在大部分时间内作为输入,MID按键可将其拉至低电平。但如果一个或两个其它触摸式按键被按下,该引脚输出低电平,使LED点亮。通过这种方式,LED在MID按键按下时点亮,或在其它按键按下时由PIC点亮。

构建DS1803DS1805数字电位器的按键控制器,图1. PIC12F509接口电路 ,第2张
图1. PIC12F509接口电路

构建DS1803DS1805数字电位器的按键控制器,图2. DS1803数字电位器与PIC控制器的连接,第3张
图2. DS1803数字电位器与PIC控制器的连接

固件本工程固件用汇编语言编写,在MPLAB IDE (7.31版本)上编译。目前此工具由Microchip免费提供,整个程序包括:程序空间(闪存)低于512个指令,数据空间(RAM)为11位置数据。

程序分为5块:初始化、读数据、UP、DWN和MID。由于这款PIC不提供任何中断,固件简单地循环运行,连续检测输入引脚。程序通过内部延时和逻辑流程自动完成开关去抖。

PIC上电或唤醒后(如果SLEEP使能)执行一次初始化程序。初始化程序执行完毕后,工作寄存器、标志位和变量均被置为已知状态。这些指令执行完毕后,其它几个程序可以连续循环,检测开关状态,通过I²C接口读、写新的电位器值。

只有在RD_FLAG置位后,才能通过I²C读取电位器值。该标志位在初始化时被置位,按键按下时可调用电位器寄存器的写 *** 作,写入一个新的数值。只有在电位器数值发生变化或上电时才进行I²C读 *** 作,所以在增、减控制和中点设置按键均没有按下时,总线不会出现多余的通信。例如,如果数字电位器用于控制电源的参数,连接按键以实现在线编程。执行I²C写 *** 作之前,可读取当前的电位器值。每当I²C写 *** 作完成后,RD_FLAG重新置位,产生I²C读 *** 作读取新的电位器值。

读程序后按顺序执行UP、DWN和MID指令。执行每个子程序时将相应的引脚拉至低电平。如果相应的引脚为高电平,将迅速退出子程序,不产生任何I²C通信。如果检测到低电平,则运行流程图所示程序。

下载固件流程图(PDF)、源代码(ASM)和可执行指令(HEX),获取本工程设计的完整说明。

功能说明本工程的固件和硬件在设置DS1803/DS1805电位器时允许进行多种不同的 *** 作。开关和LED的功能如下:

POT0/1 (选择拨动开关) 此开关选择下一个循环中控制哪个电位器(如果需要)。开关状态的变化改变电位器0或1的选择,产生I²C读 *** 作,对LED无影响。 MID、UP或 DWN按键 *** 作(< 400ms) 按下其中的一个按键,被选中的电位器阻值将上升(UP)、下降(DWN)或直接置为中点0x80 (MID)。LED将在I²C写 *** 作完成时暂时点亮,在下一个循环中进行I²C读 *** 作。 按下并保持UP或DWN按键(> 400ms) 按下并保持UP或DWN按键时,所选择的电位器将进入快速增或减控制模式。这种模式下,电位器的阻值连续改变,直到按键释放或到达最高/最低位置。LED将在进行I²C写 *** 作时点亮,并将一直保持到按键释放。按键释放后,在下一个循环周期进行I²C读 *** 作。 按下并保持UP,然后触发DWN按键 按下并保持UP按键,所选择的电位器阻值开始增大。然后(UP按键仍被按下)触发DWN按键,将使所选择的电位器阻值直接打到最高值0xFF。LED将被点亮直到释放所有按键。释放按键后,下一个循环周期进行I²C读 *** 作。 按下并保持DWN,然后触发UP按键 按下并保持DWN按键,所选择的电位器阻值开始减小,然后(DWN按键仍然按下)触发UP按键,所选择的电位器阻值直接置为最低值0x00。LED将被点亮直到释放所有按钮。释放按钮后,下一个循环周期进行I²C读 *** 作。 LED闪烁三次 每当PIC控制器上电初始化,或者看门狗电路引起系统复位(如果使能看门狗)时,LED将会闪烁3次。 LED连续快闪 每当发生I²C通信故障时,LED将会连续地快速闪烁。错误修正后,LED恢复到正常状态。通过检查器件地址以及I²C总线连接是否正确排除故障。
结论本应用笔记介绍了DS1803或DS1805电位器的使用和控制方法。系统将按键输入转换为I²C指令,完成增、减和中点设置。本设计无需计算机主机,只需要少量的外部元件即可实现电位器阻值控制。

有关该应用笔记的问题/说明/建议,请发送email至 [email protected] (English only)。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2481838.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存