?? 2543.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 + -