没有合适的资源?快使用搜索试试~ 我知道了~
用ATC0832设计的两路电压表
需积分: 10 0 下载量 134 浏览量
2012-02-11
10:14:35
上传
评论
收藏 6KB TXT 举报
温馨提示
试读
7页
用ATC0832设计的两路电压表
资源推荐
资源详情
资源评论
//-------------------------------------------------------------------------------
//名称:用ATC0832设计的两路电压表
//-------------------------------------------------------------------------------
#include <reg51.h>
#include <intrins.h>
#include <absacc.h>
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
#define REG0 XBYTE[0X0000] //写指令寄存器
#define REG1 XBYTE[0X0001] //读数据到D0-D7
#define REG2 XBYTE[0X0002] //写数据寄存器
uchar ADC_Result = 0; //转换结果
uchar Display_Buffer[2] [16] = //两路电压显示缓冲
{
{"CH1= 0.00 v"},
{"CH2= 0.00 v"}
};
sbit CS = p3^0;
sbit DI = p3^2;
sbit DO = p3^2;
sbit CLK = p3^1;
//-------------------------------------------------------------------------------
//获取指定通道的A/D转换结果
//-------------------------------------------------------------------------------
Void Channel_01_AD_Convert(uchar ch)
{
uchar i, dat1 =0, dat2=0;
//起始控制位
//名称:用ATC0832设计的两路电压表
//-------------------------------------------------------------------------------
#include <reg51.h>
#include <intrins.h>
#include <absacc.h>
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
#define REG0 XBYTE[0X0000] //写指令寄存器
#define REG1 XBYTE[0X0001] //读数据到D0-D7
#define REG2 XBYTE[0X0002] //写数据寄存器
uchar ADC_Result = 0; //转换结果
uchar Display_Buffer[2] [16] = //两路电压显示缓冲
{
{"CH1= 0.00 v"},
{"CH2= 0.00 v"}
};
sbit CS = p3^0;
sbit DI = p3^2;
sbit DO = p3^2;
sbit CLK = p3^1;
//-------------------------------------------------------------------------------
//获取指定通道的A/D转换结果
//-------------------------------------------------------------------------------
Void Channel_01_AD_Convert(uchar ch)
{
uchar i, dat1 =0, dat2=0;
//起始控制位
CS =0; _nop_();_nop_();
CLK=0; _nop_();_nop_();
DI =1; _nop_();_nop_();
CLK =1; _nop_();_nop_();
//第一个下降沿之前,设 DI=1/0
//选择单端/差分(SGL/DIF)模式中的单端输入模式
CLK =0; DI = 1; _nop_();_nop_();
CLK =1; _nop_();_nop_();
//第二个下降沿之前,设 DI=1/0 ,选择CH0/CH1
CLK =0; DI = ch; _nop_();_nop_();
CLK =1; _nop_();_nop_();
//第三个下降沿之前,设 DI=1
CLK =0; DI = 1; _nop_();_nop_();
//第4-11个下降沿读数据(MSB―>LSB)
for(i=0; i < 8; i++)
{
CLK=1;_nop_();_nop_();
CLK=0;_nop_();_nop_();
dat1 = dat1 << 1 | D0;
}
//第11-18个下降沿读数据(LSB―>MSB)
for( i=0; i < 8; i++)
{
dat2=dat2 | ( (uchar)(D0) << i);
CLK=1;_nop_();_nop_();
CLK=0;_nop_();_nop_();
}
CS=1;
//如果MSB―>LSB和LSB―>MSB读取的结果相同,则返回读取的结果,否则返回0
ADC_Result = ( dat1==dat2 ) ? dat1 :0;
CLK=0; _nop_();_nop_();
DI =1; _nop_();_nop_();
CLK =1; _nop_();_nop_();
//第一个下降沿之前,设 DI=1/0
//选择单端/差分(SGL/DIF)模式中的单端输入模式
CLK =0; DI = 1; _nop_();_nop_();
CLK =1; _nop_();_nop_();
//第二个下降沿之前,设 DI=1/0 ,选择CH0/CH1
CLK =0; DI = ch; _nop_();_nop_();
CLK =1; _nop_();_nop_();
//第三个下降沿之前,设 DI=1
CLK =0; DI = 1; _nop_();_nop_();
//第4-11个下降沿读数据(MSB―>LSB)
for(i=0; i < 8; i++)
{
CLK=1;_nop_();_nop_();
CLK=0;_nop_();_nop_();
dat1 = dat1 << 1 | D0;
}
//第11-18个下降沿读数据(LSB―>MSB)
for( i=0; i < 8; i++)
{
dat2=dat2 | ( (uchar)(D0) << i);
CLK=1;_nop_();_nop_();
CLK=0;_nop_();_nop_();
}
CS=1;
//如果MSB―>LSB和LSB―>MSB读取的结果相同,则返回读取的结果,否则返回0
ADC_Result = ( dat1==dat2 ) ? dat1 :0;
剩余6页未读,继续阅读
资源评论
stanley128
- 粉丝: 0
- 资源: 30
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功