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

📄 2543.c

📁 tlc2543的驱动c程序
💻 C
字号:
/**************************************
             TLC2543驱动程序
*************************************/
#include <AT89X52.H>
unsigned int read,invlevel;
float vlevel;
unsigned char seg7code[16]=
// 0     1     2     3     4     5     6     7     8     9    A     b     C      d     E     F
{0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};

/**************************************
        2543控制引脚宏定义
*************************************/
sbit CLOCK=P2^0;  /*2543时钟*/
sbit D_IN=P2^1 ;  /*2543输入*/
sbit D_OUT=P2^2;  /*2543输出*/
sbit _CS=P2^3  ;  /*2543片选*/

/**************************************
  名称:delay
  功能:延时模块
  输入参数:n要延时的周期数
  输出参数:无
*************************************/
void delay(unsigned char n)
{
 unsigned char i;
 for(i=0;i<n;i++)
  {
   ;
  }
}

void Led(unsigned int invlevel)
{
 P2=P2&0xef;
 P0=(seg7code[invlevel/1000])|0x80;  //输出个位数和小数点
 delay(100); 
 P2=P2|0xf0;
 P2=P2&0xdf;
 P0=seg7code[invlevel%1000/100];     //输出小数点后第一位
 delay(100); 
 P2=P2|0xf0;
 P2=P2&0xbf;
 P0=seg7code[invlevel%100/10];       //输出小数点后第二位
 delay(100);
 P2=P2|0xf0;
 P2=P2&0x7f;
 P0=seg7code[invlevel%10];           //输出小数点后第三位
 delay(100);
 P2=P2|0xf0; 
}

/**************************************
  名称:read2543
  功能:TLC2543驱动模块
  输入参数:port通道号
  输出参数:ad转换值
*************************************/
unsigned int read2543(unsigned char port)
{
 unsigned int ad=0,i;
  CLOCK=0;
  _CS=0;
  port<<=4;
  for(i=0;i<12;i++)
 {
   if(D_OUT) ad|=0x01;
   D_IN=(bit)(port&0x80);
   CLOCK=1;
   delay(3);
   CLOCK=0;
   delay(3);
   port<<=1;
   ad<<=1;
 }
 _CS=1;
 ad>>=1;
 return(ad);
}

void Datapro(unsigned int adv)  ////////////TLC2543数据处理函数
{
 unsigned int vhigh,vmid,vlow;
 vhigh=(adv&0x0f00);
 vhigh=(vhigh>>8);
 vmid=(adv&0x00f0);
 vmid=(vmid>>4);
 vlow=(adv&0x000f);
 vlevel=(vhigh*5000.0/4096*256+vmid*5000.0/4096*16+vlow*5000.0/4096);
}

/**************************************
  名称:main
  功能:主函数
  输入参数:无
  输出参数:无
*************************************///////////
void main()
{
 while(1)
  {
   read=read2543(0x00);
   Datapro(read);
   invlevel=(int)vlevel;
   Led(invlevel);
  }
}

⌨️ 快捷键说明

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