单片机控制数字电位器的c语言程序
发布网友
发布时间:2022-04-20 09:37
我来回答
共2个回答
热心网友
时间:2022-05-13 04:19
数字电位器用的是X9C103
#include<reg51.h>
#include<stdio.h>
#include<intrins.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;i>0;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;num>0;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);}
}
}
热心网友
时间:2022-05-13 05:37
用C51控制ds1867的写入程序
注:ds1867是一款256抽头的数字电位器有10k、50k、100k几款,程序采用串行输入
/*******数字电位器驱动子程序*******/
void ChangePos(bit sel,unsigned char
pos1,unsigned char pos0)
{ unsigned int i;
/******初始化3线串行口全部置0******/
/RST = 0;
DQ = 0;
CLK = 0;
/RST = 1; /*起始时刻/RST置高*/
DQ = sel; /*电位器输出选择位,DQ数据
需要在CLK高电平建立前已经保
持一定时间*/
_nop_();
/*微量延时*/
CLK = 1; /*时钟高电平脉冲时刻数据写
入*/
_nop_(); /*微量延时*/
CLK = 0; /*CLK置低*/
/***传输控制字1,先高位后低位***/
for(i=0;i<8;i++)
{ if(pos1&0x80) /*取pos1高位*/
DQ = 1; /*写入高电平*/
else DQ = 0; /*写入低电平*/
_nop_();
CLK 1;/*时钟高电平脉冲时刻数据写入*/
_nop_();
CLK = 0;
pos1 = pos1 << 1;/* pos1左移*/ }
/***传输控制字0, 先高位后低位***/
for(i = 0;i < 8;i++)
{ if(pos0 & 0x80) /*取pos0高位*/
DQ = 1; /*写入高电平*/
Else DQ = 0; /*写入低电平*/
_nop_();
CLK = 1; /*时钟高电平脉冲时刻数据写入*/
_nop_();
CLK = 0;
pos0 = pos0 << 1;/*pos0左移*/
}
/RST = 0; /*/RST置低完成一次数据的操作*/
单片机控制数字电位器的c语言程序
set_x9c103(60,1,1);}
51单片机如何控制x9c104p数字电位器
sbit inc=P0^0; //脉冲输出端 sbit ud=P0^1; //方向端 sbit cs=P0^2; //片选端 sbit led=P2^0; //指示灯 /*以下是函数声明*/ void x9c104s_inc(uchar number);void x9c104s_dec(uchar number);void x9c104s_set(uchar number);/*设定初始值*/ void x9c104s_set...
x9c104数字电位器的台阶数
100阶。x9c104数字电位器下载商家给的文件一个程序和一个手册:下载程序 按照程序内接线vcc,gnd,Inc,u/d,cs、用电压表侧量rw和rl之间的电阻、用高电平触碰P0.6降低电阻、触碰P0.7上高电阻。这个芯片的输出电阻最小是40欧姆,最大是100K,有100阶每阶1040欧姆。这个芯片利用1(INC)、2(U/...
音响中制作用c51单片机控制数字电位器实现音量控制程序
音量的控制还是比较好实现,可以用pt2314。暂停、转换是对音源的控制,需要结合音响中的CD或者MP3的播放。
怎么用单片机控制的方法改变电路中电阻的大小
如果阻值很大,可以用电子开关CD4051来切换电阻。如果要阻值很小,那可以用MOS场效应管。单片机输出PWM信号经滤波后转换成变化的直流电压加在MOS栅极上,DS之间的电阻就会随着变化,不过可能会不太稳定。
数字电位器的内部电路原理:
数字电位器一般带有总线接口,可通过单片机或逻辑电路进行编程。它适合构成各种可编程模拟器件,如可编程增益放大器、可编程滤波器、可编程线性稳压电源及音调/音量控制电路,真正实现了“把模拟器件放到总线上”(即单片机通过总线控制系统的模拟功能块)这一全新设计理念。由于数字电位器可代替机械式电位器,...
球一份关于单片机或c语言的论文!2000字左右的?
c.电流调节。多台开关电源并联使用时,要求各台电源的负载电压相等。单片机A/D口采集转换成电压值的负载电流值,通过通信口得到各台电流值,取电流平均值,控制数字电位计调节输出电压,使输出负载电流达到平均值;或者通过键盘的左右键选出电流调节页面,用上下键进行手动调节。d.故障报警。单片机通过光电耦合器检测到各项...
51单片机如何控制LM317.5v电子关断稳压器?
1、LM317是线性稳压器。2、输入5V电压 经过 317 输出 3V ? 用单片机控制317 输出 和 关断?3、还是: 用单片机控制317 输出电压 3 ~ 5V?如果是第3点意思,可以将720电阻换为 数字电位器,用单片机控制数字电位器的阻值大小即可调节输出电压。如果是第2点,5V 经317出3V没有问题,关断输出则...
关于数字电位器max5401的编程问题
DIN和SCLK的时序是由IO端口的高底来实现的.先片选.两线串行输入,上升沿有效.我没用过,没程序.参考器件资料,试写下.
单片机电源电路设计有几种方案啊?用7805怎么做呢?
1、直接找可直接由单片机控制。可编程的输出电源的芯片。找到的大多是电源管理芯片,有多路输出。太浪费。不知道有没有更好的芯片?2、带有da或是pwm功能的单片机产生一个电压,使用功放扩流。如lm386。3、单片机控制数字电位器,加上输出可调的dcdc芯片。到达到0 .1v需要的数字电位器价格...