找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2750|回复: 1
打印 上一主题 下一主题
收起左侧

A/D LTC1864 16位转换 单片机源程序

[复制链接]
跳转到指定楼层
楼主
A/D LTC1864 16位转换资料网上百度库有。

单片机源程序如下:
  1. #include<reg52.h>                                //LTC1864是一个16位精度模数转换
  2. #include<intrins.h>
  3. #include<1602.h>

  4. #define uchar unsigned char
  5. #define uint unsigned int

  6. uchar code num[]={"0123456789*#"};           //
  7. sbit SDO=P3^0;                                           //数据输出端
  8. sbit SCK=P3^2;                                           //时钟输入
  9. sbit CONV=P3^4;                                           //转换输入

  10. uint read_adc()                                                //定义一个16位变量
  11. {
  12.         uchar i;                                   //定义需要移位数量
  13.         uint dat=0x0000;                   //定义一个16位变量
  14.         SCK=1;                                           //先时钟端高电平
  15.         CONV=0;CONV=1;                           //转换端进行一个上升沿(一个低电平转到高电平)模数转换
  16.         _nop_(); _nop_(); _nop_(); _nop_();//等待一下结束转换
  17.         CONV=0;                                           //结束转换转换端置低电平,进入采样模式,如果转换端为高电平进入睡眠模式
  18.         for(i=0;i<16;i++)                   //移动16位
  19.         {
  20.                 SCK=1;                                   //时钟置为高电平
  21.                 _nop_();
  22.                 SCK=0;                                   //时钟置为低电平
  23.                 _nop_();
  24.                 dat=(dat<<1)|SDO;            //下降沿后输出同位数,由高电位转向低电位,完成一个16位数值
  25.                 _nop_();
  26.         }
  27.         SCK=0;                                           //如果CONV为低电平,SCK时钟信号置低电平,SDO端为零
  28.         return dat;                                   //输出一个1转换完16位数值dat
  29. }

  30. void main()
  31. {
  32.         uint temp;                                         //定义一个16位变量
  33.         lcd_init();                                         //1602初始化
  34.         display_list(0,0,"LTC1864 A/D Test"); //1602第一行输出字符
  35.         while(1)
  36.         {
  37.                 temp=read_adc();                 //定义temp=转换后数据
  38.                 temp=(temp*50.0/65534.0)*1000;           //转换成电压数据
  39.                 display_list(1,0,"CurrVolt:");         //1602第二行输出字符
  40.                 wirte_lcd_cmd(0xc0+9);                         //1602第二行第9位开始输出下面字符
  41.                 wirte_lcd_date(num[temp/10000]);   //输出压数值第一位
  42.                 wirte_lcd_date(num[temp%10000/1000]);         //输出压数值第二位
  43.                 wirte_lcd_date('.');                                          //输出字符,
  44.                 wirte_lcd_date(num[temp%10000%1000/100]);  //输出压数值第三位
  45.                 wirte_lcd_date(num[temp%10000%1000%100/10]); //输出压数值第四位
  46.                 wirte_lcd_date(num[temp%10]);                        //输出压数值第五位
  47.                 wirte_lcd_date('V');                                   //输出压符号
  48.         }
  49. }
复制代码


所有资料51hei提供下载:
ADC_LTC1864.rar (64.36 KB, 下载次数: 55)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:674768 发表于 2019-12-26 17:17 | 只看该作者
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表