⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tlc2543.txt

📁 tlc2543单片机c51源程序,调试通过,
💻 TXT
字号:
/****************************************************

   程序功能: 使用TLC2543进行AD转换
   文件名   : AD.c
   作者     :   kaixinlaohe
   单位     : 河北工程大学 信电学院 电工电子实验室
   日期     : 2007-8-17
   版本     : 1.0
   修改记录: 无
   程序说明: 本程序适应于绝大多数没有四线制SPI口的8051
             单片机,模拟一个接口,可根据实际情况修改四个
             接口的地址即可实现移植,使用编译器为keil c2 

***************************************************/

#include <reg51.h>

//-------------------------------------------------
//函数头的声明
//-------------------------------------------------
void delay();      //延时函数
unsigned int AD_Conver(unsigned char Channel);  
                   //AD转换
//--------------------------------------------------
//定义四线制接口
//-------------------------------------------------
sbit     cs =    P3^2;      //片选
sbit    clk =    P3^3;      //时钟
sbit    din =    P3^4;      //数据入口
sbit   dout =    P3^5;      //数据出口
//---------------------------------------------------
//主函数
void main()
{
    long AdValue = 0;
    delay();
    while(1)
    {
       AdValue = AD_Conver(0); //0通道,转换数据12位,高位在前,低位在后
      
    }
}
//--------------------------------------------------
//             函数名称:   delay
//             函数功能:   延时55us
//             入口参数:    无
//             出口参数:    无
//--------------------------------------------------
void delay()
{
      int i = 5;
      while(i--);
}
//--------------------------------------------------
//             函数名称:   AD_Conver
//             函数功能:   AD转换
//             入口参数:    地址命令字
//             出口参数:    AD值
//--------------------------------------------------
unsigned int AD_Conver(unsigned char channel)
{
     unsigned char i;
     long int ad_value = 0;

      clk = 0;
      cs   = 1;
      delay();
      cs   = 0;
     
      channel <<=4;
      for (i = 0; i < 12; i++)         //注意:在12个时钟周期的下降沿产生了数据输出
      {                                //在前4个时钟周期内,TLC2543已经知道下一次将
         if (dout)   ad_value |= 1;     //哪个通道做转换,在后8个时钟内就一直对此通道
         din = (bit)(channel & 0x80); //进行采样,并保持到第12个时钟周期结束,此后才
         clk = 1;                      //开始进行A/D转换,转换时间需要10us.
         delay();                      //在第4-8个时钟周期内输入的是命令控制字
         clk = 0;                      //可根据需要输入

         channel   <<=1;
         ad_value <<=1;

      }

      clk =1;
      ad_value >>=1;

      return ad_value;


}
//----------------end-----------------------------------/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -