在音频功率放大器中,音量控制是必不可少的环节,尤其是现在用微电脑控制的多通道AV

功放,一般都采用一枚多通道音量控制芯片进行音量调节,而且根据标准要求:每个通道音量既需要总调又需要单独微调。因此,对音量控制手段提出了特殊要求。过去常用的普通多联碳膜电位器(手动或马达遥控)已无法适应这种要求,于是脉冲电位器或称数码电位器就应运而生。脉冲电位器能够360

度旋转,音量调节速度可编程控制,它寿命长、不产生噪声、,电路简单,这都是碳膜电位器无法比拟的。但其结构工作原理使用方法与普通电位器截然不同,本文讨论脉冲电位器原理及与单片机接口编程方法,旨在起到抛砖引玉的作用。

脉冲电位器的工作原理

从外观看,脉冲电位器与普通电位器一样都是三个引脚,但在其内部与引脚1、2相连的是两个长短不一的金属静片,与引脚3相连的是一周有12或24个齿的金属动片。当脉冲电位器旋转时可出现四种状态:即引脚3与引脚1相连,引脚3与引脚2及引脚1全相连;引脚3与引脚2相连,引脚3与引脚2及引脚1全断开。

在实际使用中,一般将引脚3接地作为数据输入端。而引脚1、2作为数据输出端与单片机I/O

口相连。如图2中所示,将引脚1与单片机的P1.0相连,引脚2与单片机的P1.1相连。当脉冲电位器左旋或右旋时,P1.0和P1.1就会周期性地产生图1所示的波形,如果是12点的脉冲电位器旋转一圈就会产生12组这样的波形,24点的脉冲电位器就会产生24组这样的波形;一组波形(或一个周期)包含了4个工作状态。因此只要检测出P1.0和P1.1的波形,就能识别脉冲电位器是否旋转是左旋还是右旋。

脉冲电位器接口编程方法

1、脉冲电位器旋转的识别

进一步分析右的波形并按时间轴展开可以看出,虽然脉冲电位器左旋和右旋的波形都相同。但左旋时,在第1状态,脚1先比脚2变为低电平;在第2状态,脚2也变为低电平;在第3状态,脚1先比脚2变为高电平;在第4状态,脚2也变为高电平;脉冲电位器右旋时,脚1和脚2输出波形的变化规律正好与左旋相反。故可根据时间识别法(比较P1.0与P1.1低电平出现和结束的时差)来识别脉冲电位器是左旋还是右旋。

在动态扫描中,因采样频率操作速度等因素的影响,实际上很难测出P1.0和P1.1的波形;也很难测准P1.0与P1.1低电平出现和结束的时差,只能快速地对P1.0和P1.1电平采样。对应图1所示波形按时间轴展开,每当P1.0和P1.1的组合电平依次为01

00 10 11四种状态码组成一个字节即4BH 时,就表示左旋一位音量减1。而每当P1.0和P1.1的组合电平依次为10 00 01

11四种状态码组成一个字节即87H时;就表示右旋一位音量加1。这里将“4BH”称为左旋一位的特征码,“87H”称为右旋一位的特征码。编程的任务就是要在脉冲电位器旋转过程中识别出这两种特征码,并以此为依据,对音量进行增减控制。实际编程时可以用不同的方法识别出这两种特征码。但我们在实践中经过比较,用状态(位置)采样法实现编程是较为理想的一种方法。这种方法对采样频率和操作速度没有特别要求,也可不用定时器和中断资源,只需在主程序里面就能完成,而且具有编程简单抗干扰能力强工作可靠的优点。

由于脉冲电位器在工作过程中有三种情形:一是没有被旋转而停留在某一状态(位置);二是虽然被旋转但没有完成一个周期(4个状态)而停留在某一状态;三是不停地被旋转而超过一个周期。状态(位置)采样法就是要准确地跟踪识别和记录脉冲电位器变化的每一个状态值(包括位置值和它对应的特征码)。程序一开始就要识别出脉冲电位器所处的现态位置和其对应的特征码;随后不断跟踪扫描记录脉冲电位器的每一变化过程。显然,脉冲电位器只有旋转到第4个状态才有一个我们所需要的特征码出现,程序根据这个特征码的性质再对音量进行加减控制。

脉冲电位器接口编程示例

右图是实际运用中的电路图,电路非常简单,这也是最为经典的一种接法源程序清单

MC_STATE EQU 20H ; 脉冲电位器旋转位置寄存器

MC_DATA EQU 21H ; 脉冲电位器特征码寄存器

MCK1 EQU P1.0 ; 脉冲电位器1 脚数据输出端

MCK2 EQU P1.1 ; 脉冲电位器2 脚数据输出端

START:

................

MOV MC_STATE, #00H ; 旋转位置寄存器置初值

MOV MC_DATA, #0FFH ; 特征码寄存器置初值

MAIN:

............................

............................

AJMP MAIN ; 继续跟踪采样

用状态(位置)采样法拟定的程序流程图略,这里没有使用定时器和中断资源,而是将采样处理程序放在主程序里面

编码电位器c语言程序,360°编码电位器原理相关推荐

  1. 编码译码算法c语言程序,LDPC编码C代码 LDPC编译码的C代码程序 - 下载 - 搜珍网

    压缩包 : d29aa0dfee3e50fde4850fb5dc47a57a.rar 列表 LDPC编码C代码/LDPC编码C代码/Debug/ldpc_encode.exe LDPC编码C代码/LD ...

  2. huffman编码压缩c语言,用Huffman编码对文件进行压缩的C语言实现

    本文介绍了采用Huffman编码对ASCII码文件进行压缩的基本原理,并用C语言程序实现了这个压缩过程.文中给出了比较完整的C语言程序代码,可以直接用于调试实验. 福 建电 脑 21 0 2年第 1期 ...

  3. c语言程序-hello world-运行原理简介

    本文从一个最简单C程序(hello)是如何被编译和链接讲起,描述了一个程序运行的原理. 一.程序运行之前 使用IDE(集成开发环境)的朋友们经常会有这样的疑问:代码是怎么从一个文本文件变成可执行程序的 ...

  4. cmi编码用c语言实现,CMI编码与解码

    <CMI编码与解码>由会员分享,可在线阅读,更多相关<CMI编码与解码(2页珍藏版)>请在人人文库网上搜索. 1.CMI编码与解码设计原理CMI编码原理基带传输常用码型CMI编 ...

  5. 单总线和i2c总线结合实现数字温度计的设计c语言程序,1《单片机原理应用》课程设计指导书2010-6-8.doc...

    1<单片机原理应用>课程设计指导书2010-6-8 <单片机原理与应用>课程设计指导书 一.课程设计的基本任务 本课程设计的基本要求是使学生熟悉掌握MCS-51系列单片机的编程 ...

  6. pic16f1787 C语言程序,单片机定时器中断原理图解

    描述 单片机定时器中断是我们经常都需要用的,下面将以51单片机为例子来说明单片机定时器中断原理. 80C51的定时/计数器的结构 定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组 ...

  7. 一个简单地C语言程序展示RSA加密原理

    #include<stdio.h> #include<stdlib.h> #include<time.h> #include<math.h>//质数判定 ...

  8. 曼彻斯特编码 c语言,简单的曼彻斯特编码的C语言实现

    使用C语言,实现基本的曼彻斯特编码 简单的曼彻斯特编码的C语言实现 曼彻斯特编码是减小信号交流分量,实现固定信号占空比的基本方法. 用C语言实现如下: #include #define uint8_t ...

  9. 液晶显示屏的C语言编码,单片机液晶汉字显示c语言程序

    单片机液晶汉字显示c语言程序 单片机液晶汉字显示c语言程序 /*液晶屏分为4行*12列汉字,全部使用模拟接口方式. /* TGLCMLIMIT64A接口程序(模拟方式) ;************** ...

最新文章

  1. 一文深入理解协同过滤
  2. zabbix3.2监控mysql_zabbix3.2监控MYSQL状态
  3. leetcode53. 最大子数组和(动态规划)
  4. 前端学习(3080):vue+element今日头条管理-发布文章功能介绍
  5. 安全和连接是IoT联网设备2大挑战
  6. 那些年我们用过神级的代码注释
  7. 如果能够让出资人了解更多的c++项目进程
  8. UserDetailsService详解
  9. CSDN Markdown编辑器帮助文档
  10. 201671010439-词频统计软件项目报告
  11. 易筋SpringBoot 2.1 | 第三十一篇:SpringBoot Reactor响应式编程实战一
  12. html5实时预览,对决JavaScript HTML5脚本API预览
  13. BlackBerry 9850 应用:CISCO WebEx会议
  14. Capture CIS 软件功能介绍
  15. NVIDIA Studio和Game Ready区别
  16. 一个故事轻松记忆常见252个英语字根(31~80)
  17. Android 解屏代码
  18. 空间相关性----地理探测器--学习记录
  19. 【Matlab路径规划】改进的遗传算法机器人避障路径规划【含GUI源码 703期】
  20. 汇编语言:以GRADE为首地址的10个字的数组中保存有学生成绩。建立一个10个字的RNAK 数组,并根据GRADE中的学生成绩将学生名次填入RANK数组中

热门文章

  1. JAVA的环境变量设置
  2. matplotlib.pyplot.cm结构及用法||参数详解
  3. 《寄居者》 - 严歌苓
  4. 逻辑回归与梯度下降策略之Python实现
  5. Leetcode P44 java一次遍历
  6. StopWatch简单使用
  7. hdu6217 - BBP Formula
  8. 浅析copy和deepcopy
  9. 该微信用户未开启“公众号安全助手”的消息接收功能,请先开启后再绑定
  10. Vuforia SDK---- AR开发vuforia 问题总结