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);
}