/***********************************************************************

名称:main()
功能:主函数,将x9015设置为中间档位(16),则测量出来的值约为实际的电压信号的一半。
***********************************************************************/
 1 int main(void)
 2 {   uint32   data;
 3     x9015_Init();
 4     NumbTube_Init();    //数码管初始化
 5     AD_Init();
 6     x9015_Step(0,31);    //先将数字电位器x9015的档数设为0
 7     x9015_Step(1,16);    //再将数字电位器x9015的档数设为16
 8     while(1)
 9     {
10       data = AD_Read(AIN4);          //AD转换(AIN4)
11       NumbTube_Display(data*2,1);    //数码管显示
12     }
13     return(0);
14 }

单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速运行,测量到的电压信号在数码管上进行显示。

 1 //-----------引脚定义----------------
 2 #define    x9015_INC          (1<<29)        //P2.29
 3 #define    x9015_UpDown       (1<<28)        //P2.28
 4 #define    x9015_CS           (1<<18)        //P1.18
 5 /********************************************************************
 6 * 名称:x9015_Init()
 7 * 功能:初始化x9015的引脚配置
 8 ********************************************************************/
 9 void x9015_Init(void)
10 {
11                 // 设置引脚连接 x9015_CS(P1.18)为GPIO
12     PINSEL2 =  PINSEL2 & 0xfffffff7;
13     IO2DIR = IO2DIR | x9015_INC | x9015_UpDown;
14     IO1DIR = IO1DIR | x9015_CS;
15 }
16 /****************************************************************************
17 * 名称:x9015_Step(uint8 UpDown, uint8 level)
18 * 功能:改变x9015数字电位器的内部档数
19 * 入口参数:UpDown    增加档数或减少档数, level  变化的档数值
20 ****************************************************************************/
21 void x9015_Step(uint8 UpDown, uint8 level)
22 {
23     uint8  i;
24     IO1CLR = x9015_CS;
25     if(UpDown == 1)    IO2SET = x9015_UpDown;        //内部挡数增加
26     else               IO2CLR = x9015_UpDown;        //内部挡数减少
27     for(i=0;i<10;i++)  ;                             //小段延时
28     for(;level>0;level--)
29     {     IO2SET = x9015_INC;
30            for(i=0;i<200;i++)  ;
31            IO2CLR = x9015_INC;
32            for(i=0;i<200;i++)  ;
33     }
34     IO1SET = x9015_CS;
35 }

  1 /*************************************/
  2 /*           X9313W驱动程序            */
  3 /*            版本号:V1.0             */
  4 /*************************************/
  5
  6 /*************************************/
  7 /*          文件包含                  */
  8 /*************************************/
  9 #include <REG51.h>
 10 #include <INTRINS.h>
 11
 12 /*************************************/
 13 /*           IO口地址定义              */
 14 /*************************************/
 15 sbit X9313W_INC   = P3^0;               //计数脉冲输入端,下降沿触发
 16 sbit X9313W_UPDN = P3^1;               //方向,高电平加、低电平减
 17 sbit X9313W_CS    = P3^2;               //片选,低电平有效
 18
 19
 20 /*************************************/
 21 /*   调整电阻到第RNumber阶阻值        */
 22 /*入口:RNumber:阶阻值0~31          */
 23 /*出口:无                            */
 24 /*************************************/
 25 void X9313W_SetVol(unsigned char RNumber)
 26 {
 27      unsigned char i;
 28
 29      X9313W_INC = 1;
 30      _nop_();
 31      _nop_();
 32      X9313W_CS = 0;
 33      _nop_();
 34      _nop_();
 35      X9313W_UPDN = 0;                    //先调到0
 36      for(i=0;i<32;i++){
 37         X9313W_INC = 1;
 38         _nop_();
 39         _nop_();
 40         X9313W_INC = 0;
 41         _nop_();
 42         _nop_();
 43       }
 44
 45      X9313W_UPDN = 1;                   //调到指定值
 46      for(i=0;i<RNumber;i++){
 47          X9313W_INC=1;
 48          _nop_();
 49          _nop_();
 50          X9313W_INC=0;
 51          _nop_();
 52          _nop_();
 53      }
 54
 55      X9313W_INC = 1;                    //电阻值保存
 56      _nop_();
 57      _nop_();
 58      X9313W_CS = 1;
 59      _nop_();
 60      _nop_();
 61      X9313W_UPDN = 1;
 62      _nop_();
 63      _nop_();
 64      X9313W_INC = 1;
 65 }
 66
 67 /*************************************/
 68 /*     调整电阻增加RNumber阶阻值      */
 69 /*入口:RNumber:阶阻值0~31          */
 70 /*出口:无                            */
 71 /*************************************/
 72 /*
 73 void X9313W_IncVol(unsigned char RNumber)
 74 {
 75      unsigned char i;
 76
 77      X9313W_INC = 1;
 78      _nop_();
 79      _nop_();
 80      X9313W_CS = 0;
 81      _nop_();
 82      _nop_();
 83      X9313W_UPDN = 1;                   //加RNumber个指定值
 84      for(i=0;i<RNumber;i++){
 85         X9313W_INC=1;
 86         _nop_();
 87   _nop_();
 88         X9313W_INC=0;
 89         _nop_();
 90         _nop_();
 91      }
 92
 93      X9313W_INC = 1;                    //电阻值保存
 94      _nop_();
 95      _nop_();
 96      X9313W_CS = 1;
 97      _nop_();
 98      _nop_();
 99      X9313W_UPDN = 1;
100      _nop_();
101      _nop_();
102      X9313W_INC = 1;
103 }
104 /*************************************/
105 /*     调整电阻减少RNumber阶阻值      */
106 /*入口:RNumber:阶阻值0~31          */
107 /*出口:无                            */
108 /*************************************/
109 /*
110 void X9313W_DecVol(unsigned char RNumber)
111 {
112      unsigned char i;
113
114      X9313W_INC = 1;
115      _nop_();
116      _nop_();
117      X9313W_CS = 0;
118      _nop_();
119      _nop_();
120      X9313W_UPDN = 0;                    //减RNumber个指定值
121      for(i=0;i<RNumber;i++){
122          X9313W_INC=1;
123          _nop_();
124          _nop_();
125          X9313W_INC=0;
126          _nop_();
127          _nop_();
128      }
129
130      X9313W_INC = 1;                    //电阻值保存
131 _nop_();
132      _nop_();
133      X9313W_CS = 1;
134      _nop_();
135      _nop_();
136      X9313W_UPDN = 1;
137      _nop_();
138      _nop_();
139      X9313W_INC = 1;
140 }

转载于:https://www.cnblogs.com/wangh0802PositiveANDupward/p/3249966.html

x9015数字电位器应用相关推荐

  1. 数字编码电位器c语言,数字电位器——x9c104

    一些传统的电子设备是通过改变电位器的电阻来实现调整,比如灯的亮度.电机的转速等.如果想对这种设备进行智能改造但不大幅度改变设备内部的电器结构,我们需要电位器的电阻可通过单片机或微机进行控制,数字电位器 ...

  2. 外设驱动库开发笔记3:AD527x系列数字电位器驱动

    在一些时候我们需要使用精度更高的数字电位器来实现我们的应用.我们经常使用AD527x系列数字电位器来实现这类应用.在通常情况下,AD527x系列数字电位器完全能够满足要求.为了减少重复工作,在这里我们 ...

  3. 外设驱动库开发笔记2:AD8400系列数字电位器驱动

    一些时候我们需要在系统使用过程中改变某些电路电阻值以达到改变设定的目的,这时候我们就会使用电位器.在我们使用数字控制电路时多选择数字电位器.在这一篇我们就来设计AD8400系列数字电位器的驱动. 1. ...

  4. 数字电位器X9312

    数字电位器X9312的介绍与驱动程序 介绍 X9312是一个包含有99个电阻单元的电阻阵列.在每个单元之间和二个端点都有可以被滑动单元访问的抽头点.滑动单元的位置由CS .U / D 和INC 三个输 ...

  5. 数字电位器程控可调电阻IC

    一.前言 数字电位器又叫可编程电阻器,是一种替代传统机械电位器的新型CMOS数字.模拟混合信号处理集成电路,不需要搭建复杂的电路环境即可简单的通过CPU数字通讯实现电路调节,数字电位器也不能完全替代传 ...

  6. 数字编码电位器c语言,数字电位器x9c103应用电路

    描述 数字电位器x9c103应用电路(一) 基础部分 数字电位器X9c103模块是一款宽电压(3V-5V)供电,10K满量程电位器. 电位器中间抽头在0-10k间滑动共100级(电位器滑动端典型阻抗4 ...

  7. 2022年全球市场数字电位器IC总体规模、主要生产商、主要地区、产品和应用细分研究报告

    本文研究全球市场.主要地区和主要国家数字电位器IC的销量.销售收入等,同时也重点分析全球范围内主要厂商(品牌)竞争态势,数字电位器IC销量.价格.收入和市场份额等. 针对过去五年(2017-2021) ...

  8. 数字电位器IC市场现状研究分析与发展前景预测报告

    2021-2027中国数字电位器IC市场现状研究分析与发展前景预测报告 2021年中国数字电位器IC市场销售收入达到了 万元,预计2028年可以达到 万元,2022-2028期间年复合增长率(CAGR ...

  9. 单片机编码电位器c语言,基于单片机的数字电位器的设计

    分辨率扩展 Ra和Rb同时并联在输入信号Vin的两端,其抽头数均为32.Ra和Rb的输出作Rc端口电压VH和VL设置,Ra始终比Rb高一个位置间隔,这样就可以将1/32Vi-31/32Vi共31种输入 ...

最新文章

  1. centos7 安装jdk7
  2. WCF4.0进阶系列--第四章 保护企业内部的WCF服务(转)
  3. Http / Get 和 Post 区别
  4. PMP每日三题(2022年2月15日)
  5. Vue利用Vue.extend()实现自定义弹出框
  6. 【哲学】罗素《哲学问题》,把我从怀疑派拉回来,本能信仰
  7. 同步服务老是报错_悬而未决:MYSQL配置好主从同步后没有报错,但数据一直没有同步过来是什么原因? | 学步园...
  8. linux 小度 驱动_Linux硬链接和软链接
  9. 5G 十项全能、搭载麒麟 820 芯片,1899 元起的荣耀 X10 来了!
  10. 5G与IoT将成为IPv6强大驱动力
  11. mysql binlog rotate_mysql binlog日志存储格式
  12. JMP二次开发方法研究
  13. 通用数据权限设计方案
  14. 非常好用的节假日查询接口
  15. 颜色空间:RGB,CMY,HSV,HSL,Lab详解
  16. 大学生竞赛管理系统-JAVA【数据库设计、源码、开题报告】
  17. VS2013+Ceres编译教程 Win7系统
  18. 这个开源项目绝绝子,一键生成好玩的矢量风格头像!
  19. [Power Query] 删除重复项
  20. 数据结构-队列-“先进先出”的数据结构

热门文章

  1. 字体教程ndash;用动态笔刷和滤镜…
  2. AsyncQueryHandler
  3. spring.profiles.active配置解析、
  4. AI绘图实战(十一):将纸质儿童画修改为电子照片/3D Openpose插件使用 | Stable Diffusion成为设计师生产力工具
  5. 纵向联邦学习的挑战与展望
  6. 基于单片机的智能空气加湿器设计
  7. 计算机音乐的音乐特征的是什么意思,音乐的特征有那些,请举例说明
  8. preprocess
  9. Ubuntu20.04 (群辉使用VM安装)安装erpnext13
  10. 力扣leetcode 827. 最大人工岛