下面是我收藏的TLC2543驅(qū)動(dòng)程序??梢灾苯诱{(diào)用的,只需要給出端口號(hào),直接返回轉(zhuǎn)換的數(shù)值,很好用,目前是網(wǎng)上結(jié)構(gòu)最簡(jiǎn)的TLC2543驅(qū)動(dòng)。
/************文件Sbit.h***********************************/
TLC2543完美驅(qū)動(dòng)程序
/*把所有要用到的sbit都放到該文件 */
/*在要引用該文件定義寄存器端口的文件里包含該文件。*/
sbit EOC=P2^0;
sbit CLK=P2^1;
sbit SDI=P2^2;
sbit SDO=P2^3;
sbit CS=P2^4;
/*******************************文件Tlc2543.h***************************************/
/* tlc2543功能實(shí)現(xiàn)文件,只需要通過(guò)端口參數(shù)傳遞即可實(shí)現(xiàn)
即調(diào)用 Tlc2543(端口號(hào)) */
#include"Sbit.h" //調(diào)用自定義寄存器頭文件
unsigned int Tlc2543(unsigned char port)
{
unsigned char i=0; //定義時(shí)候初始化變量有助于壓縮內(nèi)存
unsigned int ad=0; //初始化輸出存儲(chǔ)變量
CS=0; //操作開(kāi)始
CLK=0;
port<<=4;
port<<=4;
for(i=0;i<12;i++)
{ ad<<=1; //空出最低位
ad|=SDO; //在下降沿取出輸出數(shù)據(jù)寄存器的值
SDI=(port&0x80); // 取出最高位在上升沿發(fā)送到數(shù)據(jù)輸入寄存器
CLK=1; //上升沿
port<<=1;
CLK=0; //下降沿
}
while(!EOC) continue; //轉(zhuǎn)換結(jié)束后再進(jìn)入下一輪掃描。
return (ad);
}
/************************main函數(shù)************************************/
#include<reg51.h>
#include"Tlc2543.h"
unsigned char n;
void main()
{
Tlc2543(n);
}
/********************************************************************/
附件內(nèi)容為T(mén)LC2543仿真電路和TLC2543驅(qū)動(dòng)程序。如果需要換成上面新的驅(qū)動(dòng),直接換掉就行了。