初级会员

- 积分
- 145
- 金钱
- 145
- 注册时间
- 2013-8-17
- 在线时间
- 3 小时
|

楼主 |
发表于 2013-9-3 22:16:09
|
显示全部楼层
回复【楼主位】搁浅:
---------------------------------
void TLC2543_Init(void)
{
RCC->APB2ENR|=1<<6; //使能PORTE口时钟
GPIOE->CRH&=0X0000FFFF;
GPIOE->CRH|=0x33380000;//PE13,14,15 推挽输出   E12 输入
GPIOE->ODR|=1<<12; //PE12.13.14.15 上拉
GPIOE->ODR|=1<<13;
GPIOE->ODR|=1<<14;
GPIOE->ODR|=1<<15;
}
u16 red_2543(u8 port) //  ORT通道号
{
u8 i;
u8 al;
u8 ah;
u16 ad;
CLK=0;
CS=0;
port<<=4;
for(i=0;i<4;i++)
{
DIN=port&0x80;
CLK=1;
CLK=0;
port<<=1;
}
DIN=0;
for(i=0;i<8;i++)
{
CLK=1;
CLK=0;
}
CS=1;
delay_us(5);
CS=0;
for(i=0;i<4;i++)
{
CLK=1;
ah<<=1;
if(DO) ah|=0x01;
CLK=0;
}
for(i=0;i<8;i++)
{
CLK=1;
al<<=1;
if(DO) al|=0x01;
CLK=0;
}
CS=1;
ad=ah;
ad<<=8;
ad|=al;
return ad;
}
void Show_TLC2543(void)
{
u16 temp;
temp=red_2543(1);
temp=(float)temp*5/4096;
temp*=1000;
LCD_ShowNum(156,190,temp,4,16);//显示电压值
}
这是我的TLC2543驱动代码,可是不管ad输入的是多大的电压,显示的值一直是2000,有谁能帮忙看一下 |
|