A. 单片机控制数字电位器的c语言程序
数字电位器用的是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);}
}
}
B. 单片机如何控制数字电位器
数字电位器一般都是串行或并行通信方式,在完成简单的外围电路搭建后,你还需要根据器件本身的器件手册,编写访问电位器的程序,才能控制电位器阻值的大小。
C. 单片机数字电位器X9312怎么测它的电阻
D. 怎样用单片机控制音响的音量
单片机控制音响的音量的方式有两种:
一种是控制音响音量的采用马达电位器,单片机控制马达顺时针或逆时针转动,实现音量控制。和传统的电位器相比相当于在普通电位器基础上增加了马达实现音量控制,这类电位器的尺寸比较大,而且因为马达经常转动,故障率相对较高。
还有种是采用集成电路来实现:用专用的音量控制集成电路加上编码开关(也叫数字电位器)配合单片机程序实现对音量控制。例如PTC(台湾普城 http://www.princeton.com.tw)品牌的PT2313等,和马达控制相比较有可靠性高,体积小的优点。
E. 我用单片机控制数字电位器AD5206,使用光耦隔离的方式进行控制(供电网络不一样)
由于没有贴出电路图,所以只能靠猜的:
单片机是推挽输出的,还是开漏(开集),前者应该问题不大,但是后者是低电平有效;
数据传输速率有多高?不要超过光耦的最高工作频率;
单片机、光耦和AD转换模块之间引线要尽可能的短,否则严重影响数据传输速率,所受到的干扰也会较严重。
以上是建立在硬件安装无误的基础上的,供参考。
F. 怎么用51单片机控制数字电位器x9241
找到数字电位器x9241器件资料,根据器件定义、编程要求和波形参数等来进行51单片机程序设计。硬件可以选择I/O口,也可以选择串口或者其它,取决于你对单片机应用的实际能力。具体说就是按照器件指令要求编程,通过读写操作控制滑动端的位置。
G. 哪个型号的数字电位器能和单片机相连,怎么连
现在,单片机技术这么发达,好像很少使用数字电位器了。
数字电位器完全可以由单片机来实现,何必画蛇添足呢?
数字电位器一般是接 加、减的按键,里面是简易的D/A回路(一般是2^4 或2^5,个别的能达到2^6)。如果实在要用,把数字电位器的输出接单片机的ADC端口,让单片机AD采集即可。
难道你再用单片机的ADC采集D/A的输出?
为什么不直接把加、减的按键直接接在单片机上,软件实现高精度D/A,或者根本不用D/A,直接是内部数据的运算。相对更简单、实用、精度高(轻松达到2^8,稍加处理,完全可以实现2^16)。
H. 怎么用单片机控制数字电位器啊拜托大家,最好有程序啊,尽量是自己编写的
你说的"数字电位器"是不是无极限电位器?带开关的5只脚,不带开关的三只脚,中间是公共脚?若是我可以给你一个完整程度。
I. 用单片机控制数字电位器那么知道电位器的阻值具体被控制到了多少
单片机控制数字电位器是通过模拟量信号,根据单片机的取样位数不同,将电阻分为2的N次方,电阻的精度就是2的N次方分之一。例如:单片机取样位数是4位,电阻就可以分成2的4次方,就是16分,精度就是1/16,如果是8位,就是2的8次方,精度就是1/256。单片机位数越高,控制电位器电阻的精度就越高。
J. 51单片机如何控制x9c104p数字电位器
#include"reg52.h"
#include"intrins.h"
#define uchar unsigned char
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(uchar number)
{
uchar i;
inc=1;
_nop_();
_nop_();
cs=0;
_nop_();
_nop_();
ud=0; //方向为减
_nop_();
_nop_();
for(i=0;i<100;i++) /*因为该芯片为100抽头 所以先清零*/
{
inc=1;
_nop_();
_nop_();
inc=0;
_nop_();
_nop_();
}
ud=1; //方向朝上
_nop_();
_nop_();
for(i=0;i<number;i++) //设定初始值
{
inc=1;
_nop_(); //下降沿有效
_nop_();
inc=0;
_nop_();
_nop_();
}
inc=1; //以下为保存设定值
_nop_();
_nop_();
cs=1;
_nop_();
_nop_();
ud=1;
_nop_();
_nop_();
inc=1;
}
/*函数为重新增加阻值*/
void x9c104s_inc(uchar number)
{
uchar i;
inc=1;
_nop_();
_nop_();
cs=0;
_nop_();
_nop_();
ud=1;
_nop_();
_nop_();
for(i=0;i<number;i++) //设定阻值
{
inc=1;
_nop_();
_nop_();
inc=0;
_nop_();
_nop_();
}
inc=1; //以下为保存设定值
_nop_();
_nop_();
cs=1;
_nop_();
_nop_();
ud=1;
_nop_();
_nop_();
inc=1;
}
/*函数为阻值减小*/
void x9c104s_dec(uchar number)
{
uchar i;
inc=1; //选中该芯片
_nop_();
_nop_();
cs=1;
_nop_();
_nop_();
ud=0; //方向为减小
_nop_();
_nop_();
for(i=0;i<number;i++)
{
inc=1;
_nop_();
_nop_();
inc=0;
_nop_();
_nop_();
}
inc=1; //保存设定值
_nop_();
_nop_();
cs=1;
_nop_();
_nop_();
ud=1;
_nop_();
_nop_();
inc=1;
}
void main()
{
led=0;
x9c104s_set(10);
x9c104s_inc(60); //三个函数都使用一下 防止警告
x9c104s_dec(10);
}