📄 tlc2543.c
字号:
#include"reg54.h"
#include"intrins.h"
#include"absacc.h"
//#define ((conver_ad_dat/4096)*5012) TLC2543_DATA
sbit tlc2543_eoc=P3^7;
sbit tlc2543_clk=P1^7;
sbit tlc2543_add=P1^4;
sbit tlc2543_dat=P1^5;
sbit tlc2543_cs0=P1^6;
sfr out_data=0x80;
sbit disp_bit0=P2^4;
sbit disp_bit1=P2^5;
sbit disp_bit2=P2^6;
sbit disp_bit3=P2^7;
unsigned char data disp_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3
0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off
unsigned int tlc2543_ad_conversion(unsigned char data channels_number);//AD转换函数
void delay_1ms(unsigned char ms);
void iniltion()
{
TMOD&=0X0f;
TMOD|=0X20;
TH1=0Xfd;
TL1=0Xfd;
TR1=0;
SCON=0X50;
TR1=1;
}
void main()
{unsigned char data disp_thousand,disp_hundred,disp_decade,disp_entry;
unsigned int data conver_ad_dat;
unsigned long data conver_ad_data;
iniltion();
for(;;)
{
conver_ad_dat=tlc2543_ad_conversion(0x00);
conver_ad_data=conver_ad_dat;
conver_ad_data<<=12;
conver_ad_data+=0x393544;
conver_ad_dat=conver_ad_data/4096;
disp_thousand=conver_ad_dat/1000;
disp_hundred=conver_ad_dat%1000/100;
disp_decade=conver_ad_dat%1000%100/10;
disp_entry=conver_ad_dat%1000%100%10;
out_data=(disp_code[disp_thousand])&0x7f;
disp_bit0=0;
delay_1ms(5);
out_data=0xff;
disp_bit0=1;
out_data=disp_code[disp_hundred];
disp_bit1=0;
delay_1ms(5);
out_data=0xff;
disp_bit1=1;
out_data=disp_code[disp_decade];
disp_bit2=0;
delay_1ms(5);
out_data=0xff;
disp_bit2=1;
out_data=disp_code[disp_entry];
disp_bit3=0;
delay_1ms(5);
out_data=0xff;
disp_bit3=1;
}
}
/*
unsigned int tlc2543_ad_conversion(unsigned char channels_number)
{
unsigned char data i,temp;
unsigned int conver_dat=0x0000;
channels_number<<=4;
tlc2543_clk=0;
tlc2543_cs0=1;
tlc2543_cs0=0;
temp=channels_number;
for(i=0;i<12;i++)
{conver_dat<<=1;
tlc2543_add=(bit)(temp&0x80);
conver_dat|=tlc2543_dat;
tlc2543_clk=1;
_nop_();
_nop_();
_nop_();
tlc2543_clk=0;
_nop_();
_nop_();
_nop_();
temp<<=1;
}
tlc2543_cs0=1;
return(conver_dat&0x0fff);
}*/
unsigned int tlc2543_ad_conversion(unsigned char data channels_number)
{
unsigned char data i,temp;
unsigned int conver_dat=0x0000;
channels_number<<=4;
tlc2543_cs0=1;
tlc2543_clk=0;
tlc2543_cs0=0;
temp=channels_number;
for(i=0;i<12;i++)
{
conver_dat<<=1;
conver_dat|=tlc2543_dat;
tlc2543_add=(bit)(temp&0x80);
tlc2543_clk=1;
_nop_();
tlc2543_clk=0;
temp<<=1;
}
tlc2543_cs0=1;
return(conver_dat&0x0fff);
}
void delay_1ms(unsigned char ms)
{
unsigned char i;
while(ms--)
for(i=0;i<120;i++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -