x9015数字电位器应用
/***********************************************************************
int main(void)
{ uint32 data;
x9015_Init();
NumbTube_Init(); //数码管初始化
AD_Init();
x9015_Step(,); //先将数字电位器x9015的档数设为0
x9015_Step(,); //再将数字电位器x9015的档数设为16
while()
{
data = AD_Read(AIN4); //AD转换(AIN4)
NumbTube_Display(data*,); //数码管显示
}
return();
}
单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速运行,测量到的电压信号在数码管上进行显示。
//-----------引脚定义----------------
#define x9015_INC (1<<29) //P2.29
#define x9015_UpDown (1<<28) //P2.28
#define x9015_CS (1<<18) //P1.18
/********************************************************************
* 名称:x9015_Init()
* 功能:初始化x9015的引脚配置
********************************************************************/
void x9015_Init(void)
{
// 设置引脚连接 x9015_CS(P1.18)为GPIO
PINSEL2 = PINSEL2 & 0xfffffff7;
IO2DIR = IO2DIR | x9015_INC | x9015_UpDown;
IO1DIR = IO1DIR | x9015_CS;
}
/****************************************************************************
* 名称:x9015_Step(uint8 UpDown, uint8 level)
* 功能:改变x9015数字电位器的内部档数
* 入口参数:UpDown 增加档数或减少档数, level 变化的档数值
****************************************************************************/
void x9015_Step(uint8 UpDown, uint8 level)
{
uint8 i;
IO1CLR = x9015_CS;
if(UpDown == ) IO2SET = x9015_UpDown; //内部挡数增加
else IO2CLR = x9015_UpDown; //内部挡数减少
for(i=;i<;i++) ; //小段延时
for(;level>;level--)
{ IO2SET = x9015_INC;
for(i=;i<;i++) ;
IO2CLR = x9015_INC;
for(i=;i<;i++) ;
}
IO1SET = x9015_CS;
}
/*************************************/
/* X9313W驱动程序 */
/* 版本号:V1.0 */
/*************************************/ /*************************************/
/* 文件包含 */
/*************************************/
#include <REG51.h>
#include <INTRINS.h> /*************************************/
/* IO口地址定义 */
/*************************************/
sbit X9313W_INC = P3^; //计数脉冲输入端,下降沿触发
sbit X9313W_UPDN = P3^; //方向,高电平加、低电平减
sbit X9313W_CS = P3^; //片选,低电平有效 /*************************************/
/* 调整电阻到第RNumber阶阻值 */
/*入口:RNumber:阶阻值0~31 */
/*出口:无 */
/*************************************/
void X9313W_SetVol(unsigned char RNumber)
{
unsigned char i; X9313W_INC = ;
_nop_();
_nop_();
X9313W_CS = ;
_nop_();
_nop_();
X9313W_UPDN = ; //先调到0
for(i=;i<;i++){
X9313W_INC = ;
_nop_();
_nop_();
X9313W_INC = ;
_nop_();
_nop_();
} X9313W_UPDN = ; //调到指定值
for(i=;i<RNumber;i++){
X9313W_INC=;
_nop_();
_nop_();
X9313W_INC=;
_nop_();
_nop_();
} X9313W_INC = ; //电阻值保存
_nop_();
_nop_();
X9313W_CS = ;
_nop_();
_nop_();
X9313W_UPDN = ;
_nop_();
_nop_();
X9313W_INC = ;
} /*************************************/
/* 调整电阻增加RNumber阶阻值 */
/*入口:RNumber:阶阻值0~31 */
/*出口:无 */
/*************************************/
/*
void X9313W_IncVol(unsigned char RNumber)
{
unsigned char i; X9313W_INC = 1;
_nop_();
_nop_();
X9313W_CS = 0;
_nop_();
_nop_();
X9313W_UPDN = 1; //加RNumber个指定值
for(i=0;i<RNumber;i++){
X9313W_INC=1;
_nop_();
_nop_();
X9313W_INC=0;
_nop_();
_nop_();
} X9313W_INC = 1; //电阻值保存
_nop_();
_nop_();
X9313W_CS = 1;
_nop_();
_nop_();
X9313W_UPDN = 1;
_nop_();
_nop_();
X9313W_INC = 1;
}
/*************************************/
/* 调整电阻减少RNumber阶阻值 */
/*入口:RNumber:阶阻值0~31 */
/*出口:无 */
/*************************************/
/*
void X9313W_DecVol(unsigned char RNumber)
{
unsigned char i; X9313W_INC = 1;
_nop_();
_nop_();
X9313W_CS = 0;
_nop_();
_nop_();
X9313W_UPDN = 0; //减RNumber个指定值
for(i=0;i<RNumber;i++){
X9313W_INC=1;
_nop_();
_nop_();
X9313W_INC=0;
_nop_();
_nop_();
} X9313W_INC = 1; //电阻值保存
_nop_();
_nop_();
X9313W_CS = 1;
_nop_();
_nop_();
X9313W_UPDN = 1;
_nop_();
_nop_();
X9313W_INC = 1;
}
x9015数字电位器应用的更多相关文章
- SPI应用 用SPI控制一个数字电位器
Controlling a Digital Potentiometer Using SPI In this tutorial you will learn how to control the AD5 ...
- 「雕爷学编程」Arduino动手做(9)——火焰传感器模块
37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...
- 自制导纳信号发生器 [原创cnblogs.com/helesheng]
最近正在研制一种通过测量人体导纳,估算体内血液变化率,进而评估心血管系统泵血功能的医疗仪器.为测量人体导纳,我们设计了一套巧妙的激励信号幅度反馈电路,该电路由于涉及商业机密就不在这里讨论了.这里主要分 ...
- 【雕爷学编程】Arduino动手做(53)---土壤湿度传感器
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...
- 「雕爷学编程」Arduino动手做(30)——光敏二极管模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(动手做)的理念,以学习和交流为目的,这里准备逐 ...
- 「雕爷学编程」Arduino动手做(11)——金属触摸模块
37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...
- 【雕爷学编程】Arduino动手做(6)---声音传感器模块
37款传感器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备逐一做做实验 ...
- [TPYBoard-Micropython之会python就能做硬件 4] 学习使用电位器和1602显示屏
一.实验器材 1.TPYboard V102板 一块 2.电位器 一个 3.1602 屏 一块 4.杜邦线:若干 二.电位器的使用 电位器 (英文:Potentiometer)是可变电阻器的一种 ...
- 利用XPT2046制作一个电位器AD转换装置
XPT2046是一款四线制电阻触摸屏控制芯片,内含12位分辨率125KHz转换速率逐步逼近型A/D转换器,支持从1.5V到5.25V的低电压I/O接口. 所谓逐步逼近型,就是输入一个模拟量,其与100 ...
随机推荐
- 9Types of Leader
Using the Enneagram Personality Types: The Perfectionist. The People Pleaser. The Achiever. The Indi ...
- mongodb 导出查询结果到文件
编写mongo查询语句到 find.js db.xxx.find( {status:1,publisherId:0 , appDesc: {$in: [ /.*privacy .*/ ,/.*kika ...
- windows远程桌面连接树莓派
1.树莓派上需要安装xrdp(An open source remote desktop protocol(rdp) server). sudo apt-get install xrdp 远程桌面打开 ...
- A股中为什么有涨幅超过10%的
在A股规定涨跌幅10%的正常交易日中,某些股票的涨跌幅却超出或没达到10%的,原因是因为A股的交易中最小的价格“申报单位为0.01元”,就是说某些股票不管什么价格都不会刚刚好是10%,它只能“取最近于 ...
- axis2 WebService的发布与调用
1:准备: JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html e ...
- OSGMFC
在OSG的Demo中找到MFC_OSG类文件. #pragma once #include <osgViewer/Viewer> #include <osgViewer/Viewer ...
- 如何在makefile中写cd命令
http://stackoverflow.com/questions/1789594/how-to-write-cd-command-in-makefile
- ARC 没有自动释放内存
http://www.cnblogs.com/qingche/p/4569833.html 定位了好几天,才发现是打印日志没有即时释放内存,使用intrustment
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架 - 5.3 数据库连接管理模块
RDIFramework.NET — 基于.NET的快速信息化系统开发框架 5.3 数据库连接管理模块 5.3 数据库连接管理模块 我们经常可以看到很多软件直接把数据库连接字符串放在软件执行目录下的配 ...
- fail2ban使用
转子: http://www.2cto.com/Article/201406/310910.html 1.fail2ban简介: fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹 ...