导航:首页 > 操作系统 > 单片机控制电位器

单片机控制电位器

发布时间: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),将单片机输出的数值转换为电位。
具体电路及程序请参阅教科书或有关资料。

阅读全文

与单片机控制电位器相关的资料

热点内容
服务器的灯如何设置 浏览:858
单片机控制门流程图 浏览:298
沪漂女程序员跳槽 浏览:302
百度石榴算法指的是 浏览:779
怎么将文件压缩得尽可能小 浏览:443
linux开发常用命令 浏览:829
我的世界java版如何进入服务器 浏览:897
如何把jpg转换pdf格式 浏览:290
华为p10plus图片加密 浏览:369
宏杰文件夹加密密码忘了 浏览:620
dos命令rd 浏览:667
怎么把wps上的算法格式改了 浏览:806
微信文件文件夹网盘 浏览:842
html5pdf教程 浏览:648
android聊天键盘 浏览:914
github拉取代码命令 浏览:38
8255a的初始化编程 浏览:390
资源机安卓未激活什么意思 浏览:998
飞利浦mp3没有文件夹 浏览:495
java程序员那些事儿 浏览:406