找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5564|回复: 13
收起左侧

单片机通过按键控制数字电位器X9C103实现阻值的增长源程序

  [复制链接]
ID:808304 发表于 2020-11-18 22:36 | 显示全部楼层 |阅读模式
最近发现一块数字电位器,便写了一个通过按键控制电位器阻值的的程序,可增,可减,增减的阻值可根据送入得脉冲数去确定(以100欧姆为例),当然也可以确定送入的脉冲数,这里举5k电阻值为例,其他阻值也可同理得到。(由于精度问题,此电位器也是存在误差的)

实物图如下:
数字电位器模块.jpg
具体单片机程序如下
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int

sbit SW_1 = P3^0;//电位器阻值增加
sbit SW_2 = P3^1;//电位器阻值减小

sbit SW_3 = P3^2;//电位器阻值位5k

sbit INC = P2^0;//数字电位器接口
sbit U_D = P2^1;//数字电位器接口
sbit CS = P2^2;//数字电位器接口


void ButtonService2();//电位器阻值减少函数
void ButtonService1();//电位器阻值增加函数
void         ButtonService3();

void delayms(uint xms)//延时函数
{
        uint i,j;
        for(i=0;i<xms;i++)
                for(j=0;j<120;j++);
}

void init()
{//数字电位器初始化
        int m;
        
        CS = 0;
        U_D = 0;
        _nop_();
        for(m=100;m>0;m--)//电位器强制向下滑动100级到最底端
        {
                INC = 0;
                _nop_();
                _nop_();
                INC = 1;
        }
        CS = 1;}

        
                        void ButtonService1()                                //电位器值增加
                {   
                                unsigned char n = 0;
                                CS = 0;
                                U_D = 1;
                                _nop_();
                                for(n=1;n>0;n--)
                                {
                                        INC = 0;
                                        _nop_();
                                        _nop_();
                                        INC =1;
                                }
                                CS = 1;
                }
                                                               
                                       
               
        void ButtonService2()
                                       //电位器值减小
                {
                                unsigned char n = 0;
        
                                CS = 0;
                                U_D = 0;
                                _nop_();
                                for(n=1;n>0;n--)
                                {
                                        INC = 0;
                                        _nop_();
                                        _nop_();
                                        INC = 1;
                                }
                                CS = 1;
                }

                void ButtonService3()                                //5k电阻值
                {   
                                unsigned char n = 0;
                                CS = 0;
                                U_D = 1;
                                _nop_();
                                for(n=50;n>0;n--)
                                {
                                        INC = 0;
                                        _nop_();
                                        _nop_();
                                        INC =1;
                                }
                                CS = 1;
                }
                                               
void main()
{        
        
        
        init();         
        while(1)
        {
        if(SW_1==0)//这里每按下一次增加100Ω
        {delayms(10);
                if(SW_1==0)
        ButtonService1();
        while(!SW_1);}
               
                          
           if(SW_2==0)//每按下一次减少100Ω
                {delayms(10);
                        if(SW_2==0)
                        ButtonService2();
                  while(!SW_2);}  

    if(SW_3==0)
                {delayms(10);
                        if(SW_3==0)
                        {init();
                                ButtonService3();}
                  while(!SW_3);}  
               
                }}  

全部资料51hei下载地址:
X9C103数字电位器数据手册(中文).7z (174.49 KB, 下载次数: 97)
5k电阻值.jpg
按下按键由100欧增为200欧.jpg
按下按键由200欧减为100欧.jpg
电位器初始化后,但存在误差.jpg

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:97678 发表于 2020-11-19 08:05 | 显示全部楼层
好东东 有原理图吗? 可以分享下吗?
回复

使用道具 举报

ID:808304 发表于 2020-11-20 12:07 | 显示全部楼层
jovew 发表于 2020-11-19 08:05
好东东 有原理图吗? 可以分享下吗?

直接用导线连上就可以了
回复

使用道具 举报

ID:900850 发表于 2021-4-5 13:10 | 显示全部楼层
这个单片机用的51单片机么
回复

使用道具 举报

ID:900850 发表于 2021-4-5 16:07 | 显示全部楼层
我想问一下INC引脚不是下降沿触发么
回复

使用道具 举报

ID:538517 发表于 2021-4-10 01:14 来自手机 | 显示全部楼层
我找了好久,终于找到了
回复

使用道具 举报

ID:570093 发表于 2021-5-13 17:47 | 显示全部楼层
VH,VL,VW不用连接把?我买了一个怎么买也测不对,是上电后测阻值吗?
回复

使用道具 举报

ID:570093 发表于 2021-5-16 22:44 | 显示全部楼层
96317 发表于 2021-5-13 17:47
VH,VL,VW不用连接把?我买了一个怎么买也测不对,是上电后测阻值吗?

买了一个芯片一个模块都是坏的,最后再买一个模块可以了。某一个宝J货真的多
回复

使用道具 举报

ID:923125 发表于 2021-5-18 10:06 | 显示全部楼层
楼主你好,我最近也看到了这个电位器,但是我手上的是树莓派,不知道能不能直接接上这个电位器,没咋学过这些东西,还希望楼主回复一下
回复

使用道具 举报

ID:808304 发表于 2021-5-24 01:14 来自手机 | 显示全部楼层
WOW: 发表于 2021-5-18 10:06
楼主你好,我最近也看到了这个电位器,但是我手上的是树莓派,不知道能不能直接接上这个电位器,没咋学过这 ...

树莓派我不是很了解,不过我觉得应该可以,可以尝试去接一下
回复

使用道具 举报

ID:937995 发表于 2021-11-30 21:49 | 显示全部楼层
如果可以用在EQ图示均衡器上,改掉原来直滑式电位器就好了,请问楼主可以吗 ?
回复

使用道具 举报

ID:86450 发表于 2021-12-10 10:19 | 显示全部楼层
正常使用, 需要每次上电电位器强制向下滑动100级到最底端?
回复

使用道具 举报

ID:3802 发表于 2021-12-10 16:45 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:1090455 发表于 2023-8-2 18:01 | 显示全部楼层
是可以用stm32F401直接使用这个代码吗?还有那个按键是应该怎么连(小白一个,谢谢了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表