#includelt;reg52.hgt; //LTC1864是一个16位精度模数转换
#includelt;intrins.hgt;
#includelt;1602.hgt;
#DeFine uchar unsigned char
#DeFine uint unsigned int
uchar code num[]={“0123456789*#”}; //
it SDO=P3^0; //数据输出端
it SCK=P3^2; //时钟输入
it 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;ilt;16;i++) //移动16位
{
SCK=1; //时钟置为高电平
_nop_();
SCK=0; //时钟置为低电平
_nop_();
dat=(datlt;lt;1)|SDO; //下降沿后输出同位数,由高电位转向低电位,完成一个16位数值
_nop_();
}
SCK=0; //如果CONV为低电平,SCK时钟信号置低电平,SDO端为零
return dat; //输出一个1转换完16位数值dat
}
oid 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’); //输出压符号
}
}
热门文章推荐:直接点击进入
001:基于51单片机的PID算法直流电机调速设计
002:数电仿真—智力竞赛倒计时电路设计
003:基于51单片机的电话拨号防盗报警器
004:基于AT89S51单片机的出租车计价器
005:基于51单片机的IC卡读写仿真设计
006:基于单片机的Integrate就医服务平台设计
007:基于51单片机的电子秤设计
008:基于51单片机的TLC549测量电压LCD显示设计
009:基于51单片机的数字温度计设计
010:基于51单片机的水温控制系统设计
011:基于51单片机的TLC549测量高电压的电压表设计
012:基于51单片机的PID算法直流电机调速设计
013:基于51单片机控制的开关电源设计
014:基于51单片机的八路扫描式抢答器设计
015:基于51单片机和VB上位机程序控制的DS1302时钟的proteus仿真
016:基于51单片机的简易电子琴设计
017:基于C与VB语言联合在proteus上仿真设计
018:基于51单片机的心率计设计
019:基于51单片机智能水塔控制系统
文章标题:基于51单片机的LTC1864电压测量
文章链接:https://www.btchangqing.cn/60886.html
更新时间:2023年04月06日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。