经验证的程序
#include
# include
# define PORTA XBYTE[0X7CFF]
# define PORTB XBYTE[0X7DFF]
# define PORTC XBYTE[0X7EFF]
# define CONTROL XBYTE[0X7FFF]
# define uchar unsigned char
# define uint unsigned int
//# define ulong unsigned long
uchar shu[7];
uchar flag=0,count;
uint ad_value=0,advalue_sum=0;
uchar channel=4;
sbit Receive=P1^1;
sbit Send=P1^0;
sbit K0=P2^2;
sbit K1=P2^3;
sbit K2=P2^4;
sbit K3=P2^5;
uchar code data0[]={'0','1','2','3','4','5','6','7','8','9','.','s','p'};//计算机通信0~9和‘.’起始位 结束位
/***************************************************/
uchar code table[12]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x080,0x00};//0-9,'.'和消影
//--------------------------------------------------
//定义四线制接口
//-------------------------------------------------
sbit clk = P1^4; //时钟
sbit din = P1^5; //数据入口
sbit dout = P1^6; //数据出口
sbit cs = P1^7; //片选
sbit eoc=P1^3; //转换结束
//---------------------------------------------------
/****************************************************
程序功能: 使用TLC2543进行AD转换
文件名 : AD.c
程序说明: 本程序适应于绝大多数没有四线制SPI口的8051
单片机,模拟一个接口,可根据实际情况修改四个
接口的地址即可实现移植,使用编译器为keil c2
***************************************************/
//--------------------------------------------------
// 函数名称: delay
// 函数功能: 延时55us
// 入口参数: 无
// 出口参数: 无
//--------------------------------------------------
void delay()
{
uchar i,j;
for(i=0;i<20;i++)
for(j=0;j<30;j++);
}
//--------------------------------------------------
// 函数名称: AD_Conver
// 函数功能: AD转换
// 入口参数: 地址命令字
// 出口参数: AD值
//--------------------------------------------------
void delay_5us()
{
;;;;;
}
AD_Conver()
{
uchar i,chan;
uint temp=0;
clk = 0;
cs = 1;
delay_5us();
cs= 0;
temp=0;
chan=channel<<4;
for (i=0;i<12;i++) //注意:在12个时钟周期的下降沿产生了数据输出
{ //在前4个时钟周期内,TLC2543已经知道下一次将
if(dout) temp|= 1; //哪个通道做转换,在后8个时钟内就一直对此通道
din=(bit)(chan&0x80); //进行采样,并保持到第12个时钟周期结束,此后才
clk=1; //开始进行A/D转换,转换时间需要10us.
eoc=0;
while(!eoc); //等待转换完毕
delay_5us(); //