📄 tlc1543.c
字号:
#include<c8051f020.h>
#include <intrins.h>
#define SYSCLK 2000000
#define PORT 0
sbit CLOCK=P0^4; //TLC1543与单片机的硬件连接
sbit D_IN = P0^3;
sbit D_OUT= P1^0;
sbit _CS = P0^2;
sbit EOC = P1^1;
unsigned long x;
unsigned char xdata LCDdata[7]={0x30,0x30,0x2e,0x30,0x30,0x30,0x56};
unsigned char *lcdpoint;
unsigned char lcd_data_count;
void PORT_Init(void);
void LCD_Init(void);
void main(void)
{
unsigned char data1,p;
unsigned long voltage;
unsigned int v_int,v_frac;
unsigned int data ad;unsigned int i;
unsigned char data al=0,ah=0;
WDTCN=0xde;
WDTCN=0xad;
PORT_Init();
p=PORT;
while(1)
{
ah=0,al=0,ad=0;
CLOCK = 0;
_CS = 0;
for (i=0;i<4;i++) //把通道号打入1543
{
D_IN=(p&0x0f);CLOCK=1;CLOCK=0;
p<<=1;
}
for (i=0;i<6;i++) //填充6个CLOCK
{
CLOCK=1;CLOCK=0;
}
_CS=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
_CS=0; //等待AD转换
_nop_();_nop_();_nop_();
for (i=0;i<2;i++) //取D9-D6
{
D_OUT=1;
CLOCK=1;
ah<<=1;
if (D_OUT) ah|=0x01;
CLOCK=0;
}
for (i=0;i<8;i++) //取D5--D2
{
D_OUT=1;
CLOCK=1;
al<<=1;
if (D_OUT) al|=0x01;
CLOCK=0;
}
_CS=1;
ad=(unsigned int)ah;ad<<=8;ad|=(unsigned int)al; //得到AD值
voltage=ad;
for(x=0;x<50000;x++);
voltage=(voltage*5000L)/1024;
v_int=voltage/1000;
v_frac=voltage-(v_int*1000);
LCDdata[0]=v_int/10+0x30;LCDdata[1]=v_int%10+0x30; //整数部分
LCDdata[3]=v_frac/100+0x30;LCDdata[4]=v_frac%100/10+0x30;LCDdata[5]=v_frac%100%10+0x30; //小数部分
LCD_Init(); //LCD初始化
P2=0xA0; //准备送数据
for(x=0;x<50000;x++); //通过改变延时量可改变LCD显示速度
lcdpoint=&LCDdata;
for(lcd_data_count=7;lcd_data_count>0;lcd_data_count--) //显示第一行字符
{
data1=*lcdpoint;
P3=data1; //送显
P2=0x20;
P2=0xA0;
lcdpoint++;
for(x=0;x<5000;x++);
}
}
}
void PORT_Init (void)
{
XBR0 = 0x00;
XBR1 = 0x00;
XBR2 = 0x40;
P0MDOUT =0xff;
P1MDIN = 0xff;
P2MDOUT = 0xe0;
P3MDOUT = 0xff;
}
void LCD_Init(void)
{
P2 = 0X80;
for(x=0;x<50000;x++);
P3 = 0x30;
P2 = 0X00;
P2 = 0X80;
for(x=0;x<1000;x++);
P3 = 0x0e;
P2 = 0x00;
P2 = 0x80;
for(x=0;x<1000;x++);
P3= 0x06;
P2 = 0x00;
P2 = 0x80;
for(x=0;x<5000;x++);
P3 = 0x01;
P2 = 0x00;
P2 = 0x80;
for(x=0;x<5000;x++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -