173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

单片机控制x9c103

htxw 2023-03-15 资讯中心 22 ℃

怎么用单片机控制数字电位器啊?拜托大家,最好有程序啊,尽量是自己编写的

你说的"数字电位器"是不是无极限电位器?带开关的5只脚,不带开关的三只脚,中间是公共脚?若是我可以给你一个完整程度。

单片机控制数字电位器的c语言程序

数字电位器用的是X9C103

#includereg51.h

#includestdio.h

#includeintrins.h

#define uchar unsigned char

#define uint unsigned int

//设定四个按键

sbit X9C102=P2^0;

sbit X9C202=P2^1;

sbit X9C302=P2^2;

sbit X9C402=P2^3;

sbit X9C103_CS=P1^0;

sbit X9C103_INC=P1^1;

sbit X9C103_UD=P1^2;

void delay_nus(uint i)

{

while(i--);

}

void delay_nms(uchar i)

{

for(i;i0;i++)

{

delay_nus(1000);

}

}

void set_x9c103(uchar num,uchar ud,uchar save)

{

X9C103_CS=0;

delay_nus(1);

if(ud==1)

{

X9C103_UD=1;

}

else

{

X9C103_UD=0;

}

delay_nus(4);

for(num;num0;num--)

{

X9C103_INC=1;

delay_nus(2);

X9C103_INC=0;

delay_nus(2);

}

delay_nus(2);

if(save==1)

{

X9C103_INC=1;

delay_nus(2);

X9C103_CS=1;

delay_nms(22);

}

X9C103_CS=1;

delay_nus(10);

}

void clear_down()

{

set_x9c103(100,0,1);

}

void main_init()

{

X9C103_CS=0;

clear_down();

}

void main()

{

main_init();

set_x9c103(70,1,1);

while(1)//扫描按键,对应不同倍数的输出

{

if (X9C102==0){

clear_down();

set_x9c103(10,1,1);}

if (X9C202==0){

clear_down();

set_x9c103(30,1,1);}

if (X9C302==0){

clear_down();

set_x9c103(60,1,1);}

if (X9C402==0){

clear_down();

set_x9c103(90,1,1);}

}

}

x9c103电位器编程!!!

//参考一下

#define RINC PD0 //INC

#define RUD PD1 //U/D

//复位数字电位器******************************************************

void RSTDCP(void)//使用X9C104

{

uchar i;

PORTD|=_BV(RINC); _delay_us(1); //INC拉高

PORTD=~_BV(RUD); _delay_us(1); //置减方向

for(i=0;i100;i++)

{

PORTD=~_BV(RINC);_delay_us(1);//INC拉低

PORTD|=_BV(RINC);_delay_us(1);//INC拉高

}

PORTD|=_BV(RUD);_delay_us(1);//置增方向

}

int main(void)

{

DDRD|=0x03; //定义PD0-1为输出

RSTDCP();//初始化数字电位器

while(1)

{

if( )//此处写上需要数字电位器上调一档的条件

{

PORTD=~_BV(RINC);_delay_us(1);//INC拉低

PORTD|=_BV(RINC);_delay_us(1);//INC拉高

}

}

}

单片机控制x9c103的介绍就聊到这里吧,感谢您花时间阅读,谢谢。

本文标签:单片机控制x9c103

<