标题:
A/D LTC1864 16位转换 单片机源程序
[打印本页]
作者:
kc乐乐
时间:
2019-9-29 18:12
标题:
A/D LTC1864 16位转换 单片机源程序
A/D LTC1864 16位转换资料网上百度库有。
单片机源程序如下:
#include<reg52.h> //LTC1864是一个16位精度模数转换
#include<intrins.h>
#include<1602.h>
#define uchar unsigned char
#define uint unsigned int
uchar code num[]={"0123456789*#"}; //
sbit SDO=P3^0; //数据输出端
sbit SCK=P3^2; //时钟输入
sbit CONV=P3^4; //转换输入
uint read_adc() //定义一个16位变量
{
uchar i; //定义需要移位数量
uint dat=0x0000; //定义一个16位变量
SCK=1; //先时钟端高电平
CONV=0;CONV=1; //转换端进行一个上升沿(一个低电平转到高电平)模数转换
_nop_(); _nop_(); _nop_(); _nop_();//等待一下结束转换
CONV=0; //结束转换转换端置低电平,进入采样模式,如果转换端为高电平进入睡眠模式
for(i=0;i<16;i++) //移动16位
{
SCK=1; //时钟置为高电平
_nop_();
SCK=0; //时钟置为低电平
_nop_();
dat=(dat<<1)|SDO; //下降沿后输出同位数,由高电位转向低电位,完成一个16位数值
_nop_();
}
SCK=0; //如果CONV为低电平,SCK时钟信号置低电平,SDO端为零
return dat; //输出一个1转换完16位数值dat
}
void main()
{
uint temp; //定义一个16位变量
lcd_init(); //1602初始化
display_list(0,0,"LTC1864 A/D Test"); //1602第一行输出字符
while(1)
{
temp=read_adc(); //定义temp=转换后数据
temp=(temp*50.0/65534.0)*1000; //转换成电压数据
display_list(1,0,"CurrVolt:"); //1602第二行输出字符
wirte_lcd_cmd(0xc0+9); //1602第二行第9位开始输出下面字符
wirte_lcd_date(num[temp/10000]); //输出压数值第一位
wirte_lcd_date(num[temp%10000/1000]); //输出压数值第二位
wirte_lcd_date('.'); //输出字符,
wirte_lcd_date(num[temp%10000%1000/100]); //输出压数值第三位
wirte_lcd_date(num[temp%10000%1000%100/10]); //输出压数值第四位
wirte_lcd_date(num[temp%10]); //输出压数值第五位
wirte_lcd_date('V'); //输出压符号
}
}
复制代码
0.png
(8.02 KB, 下载次数: 43)
下载附件
2019-9-30 16:06 上传
所有资料51hei提供下载:
ADC_LTC1864.rar
(64.36 KB, 下载次数: 57)
2019-9-29 18:11 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
xyl123456
时间:
2019-12-26 17:17
谢谢分享
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1