❶ 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);
}
❷ 電位器在單片機上的用法
1,電位器一般有三個腳,這里用中間那個腳和其他任一腳,TEMP接到單片機的A/D口上,見圖。
2,至於這個電壓代表多大的溫度值,與你實際所用的熱敏電阻有關,用熱敏電阻做溫度是需要校準的,不校準是不知道多少電壓代表多大溫度值(有的熱敏電阻廠家會給出溫度和阻值的表,當然有這個就不需要校準了)。
3,1已回答,見圖...
❸ 哪個型號的數字電位器能和單片機相連,怎麼連
現在,單片機技術這么發達,好像很少使用數字電位器了。
數字電位器完全可以由單片機來實現,何必畫蛇添足呢?
數字電位器一般是接 加、減的按鍵,裡面是簡易的D/A迴路(一般是2^4 或2^5,個別的能達到2^6)。如果實在要用,把數字電位器的輸出接單片機的ADC埠,讓單片機AD採集即可。
難道你再用單片機的ADC採集D/A的輸出?
為什麼不直接把加、減的按鍵直接接在單片機上,軟體實現高精度D/A,或者根本不用D/A,直接是內部數據的運算。相對更簡單、實用、精度高(輕松達到2^8,稍加處理,完全可以實現2^16)。
❹ 51單片機連電位器一定要adc嗎
一定。51單片機連電位器需要adc的,因為作AD用必須一個接電源一個接地,兩個電阻中間即VREF接單片機引腳或接一個1K的電阻再接單片機引腳。
❺ 單片機控制數字電位器的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);}
}
}
❻ 如何用51單片機控制電路中電阻的大小 我想用51單片機實現數字電位器
用「數→模」轉換晶元(例如DAC0832),將單片機輸出的數值轉換為電位。
具體電路及程序請參閱教科書或有關資料。