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

📄 tlc2543.c

📁 用软件仿真模数转换芯片TLC2543
💻 C
字号:
#include <reg51.h>
#include <intrins.h> 
#define uchar unsigned char
#define uint  unsigned int
uchar a[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f};//共阴极段码
uchar b[4];//存放4位要显示的数

sbit CLOCK=P2^7; /*2543时钟*/
sbit D_IN=P2^6; /*2543输入*/
sbit D_OUT=P2^4; /*2543输出*/
sbit _CS=P2^5; /*2543片选*/


void mdelay(uint z)//1ms延时子程序
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}

void delay(uchar n)
{
uchar i;
for(i=0;i<n;i++)
{
   _nop_();
}
}
/**************************************
  名称:read2543
  功能:TLC2543驱动模块
  输入参数:port通道号
  输出参数:ad转换值
*************************************/

uint read2543(uchar port)
{
uint ad=0,i;
CLOCK=0;
_CS=0;
port<<=4;//通道号左移4位
for(i=0;i<12;i++)//没有设置控制字,默认输出数据为12位,高位先送出,输出数据的格式为2进制
{
  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 show(void)//数码管显示子程序
{ 
	uint i;
	uchar c=0x01;
	for(i=0;i<4;i++)
	{
		P1=(c<<i);
		P3=b[i];
		if(i==2)//显示小数点
		P3=P3|0x80;
		mdelay(1);
	}
}
void main(void)
{
	uint ad=0;
	while(1)
	{
		ad=read2543(0);//从通道0输入
		ad=ad*1.0/4096*500;//注意这一步不能写成 ad=ad*500/4096
		b[0]=a[ad%10];//个位
		b[1]=a[ad%100/10];//十位
		b[2]=a[ad/100];//百位
		b[3]=a[ad/1000];//最高位始终为0
		show();
	
		
	}
}

⌨️ 快捷键说明

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