zoukankan      html  css  js  c++  java
  • x9015数字电位器应用

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

       名称: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 }
  • 相关阅读:
    Linux 之 文件压缩解压
    Linux 之 文件搜索命令
    Linux 之 文件内容查看
    Linux 之 Vim常用命令
    Linux 之 CentOS练习
    CentOS找不到想要的镜像版本?
    Swoole 简单学习(2)
    Swoole 简单学习
    svn的简单知识
    8、16、32-BIT系列单片机区别与特点
  • 原文地址:https://www.cnblogs.com/wangh0802PositiveANDupward/p/3249966.html
Copyright © 2011-2022 走看看