導航:首頁 > 操作系統 > 單片機控制電位器

單片機控制電位器

發布時間:2025-01-01 04:21:38

❶ 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),將單片機輸出的數值轉換為電位。
具體電路及程序請參閱教科書或有關資料。

閱讀全文

與單片機控制電位器相關的資料

熱點內容
安卓軟體怎麼重新使用 瀏覽:474
mysql新建用戶命令 瀏覽:541
雲伺服器顯示拒絕連接 瀏覽:69
雲伺服器矩陣什麼意思 瀏覽:77
和程序員有關的網名 瀏覽:226
游戲雲咖如何租伺服器 瀏覽:202
程序員rpg游戲 瀏覽:197
編程範式下載 瀏覽:249
phpsocket框架對比 瀏覽:438
java字元串使用 瀏覽:581
程序員怎麼考主管 瀏覽:710
變形坦克2為什麼連不上伺服器 瀏覽:584
camera演算法 瀏覽:866
怎麼壓縮成幾個文件 瀏覽:836
阿里雲伺服器express項目 瀏覽:798
高大模板支撐下部加密 瀏覽:61
aes替換演算法教程 瀏覽:506
java方法重寫和重載 瀏覽:764
往復式壓縮機循環工作過程順序 瀏覽:271
思維的方式pdf 瀏覽:864