zoukankan      html  css  js  c++  java
  • Keil C51学习 8 A/D模数转换 TLC1549

    AD 将连续变化的模拟信号转换为数字信号。

    按工作原理划分:

    • 双积分型A/D转换器。
    • 逐次逼近比较型AD/转换器。
    • 并行A/D转换器。

    一个5V满刻度的8位ADC能分辨输入电压变化最小值是5V×1/28 =19.53mV。

    测量电压,四位数码管显示

    #include <reg52.h>
    #include <absacc.h>
    
    #define uint unsigned int
    #define SEG1 XBYTE[0xffec]
    #define SEG2 XBYTE[0xffed]
    #define SEG3 XBYTE[0xffee]
    #define SEG4 XBYTE[0xffef]
    #define SUM 50 //多次测量求平均值次数
    #define VREF 4999//放大1000倍
    
    code unsigned char ledmap[]= //共阴LED数码管译码表
    {    
        0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,//0-9不带小数点
        0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10 //0-9带小数点    
    };
    
    //接口定义
    sbit CS = P1^5;
    sbit DA = P1^6;
    sbit CK = P1^7;
    
    //读取ADC结果函数
    unsigned int get_data(void)
    {
      unsigned char i;
      unsigned int temp = 0;
      CS = 0;   //开启控制电路,使能DA和CK IO引脚;
      for(i=0;i<10;i++)  //采集10次 ,即10bit
      { 
        CK = 0;        
        temp <<= 1;
        if(DA) temp++;  
        CK = 1;
      }
      CS = 1;
      return(temp);
    }
    
    void delay(unsigned char i) //延时子程序
    { 
        while(--i);
    }
    
    
    main()
    {    
        unsigned long int temp;
        unsigned char i;
        CS = 1;  //禁止I/O CLOCK
        i = SUM;
        temp = 0;
        while(1)
        {
            temp += get_data();
            i--;
            if(i==0)
            {                
                temp = temp / SUM;    // 取平均值        
                temp = temp * VREF;    // 转换成电压值
                temp = temp / 1023;
                // 十进制译码送数码管显示
                SEG1 = ledmap[temp/1000%10 + 10];//+10表示该位带小数点
                SEG2 = ledmap[temp/100%10];
                SEG3 = ledmap[temp/10%10];
                SEG4 = ledmap[temp%10];
                i = SUM;
                temp = 0;
            }
            delay(10); //不使用延时,测量程序延时为28us
        }
    }
    TLC1549测量电压
    作者:儒良设计

    -------------------------------------------

    个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

    万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!

  • 相关阅读:
    mod_wl.so,apxs,mod_so.c,withmpm=worker,selinux;apapche&weblogic链接配置
    rc.local
    库没启动,报:ORA01034: ORACLE not available
    Socket编程简单示例
    基于UDP的Socket编程
    代理模式
    [转]Tomcat Server.xml 标签详解
    创建和使用URL访问网络资源
    myeclipse8.5中 集成svn
    div+css布局之固定定位布局
  • 原文地址:https://www.cnblogs.com/bymeet/p/14358367.html
Copyright © 2011-2022 走看看