打印

帮忙看下TLC549程序 数码管只显示198 时序应该没错

[复制链接]
1164|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#include <reg51.h>
#include <intrins.h>

#define uint unsigned int
#define uchar unsigned char

uchar code num[]={0x5f,0x06,0x3b,0x2f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar temp1;
uint qian,bai,shi,ge;

sbit DO=P3^5;
sbit CS=P3^3;
sbit CLK=P3^4;

void display();
void show();
void delay(uint ms)
{
uint i , j;
for (i=ms;i>0;i--)
    for(j=110;j>0;j--);
}

uchar ADC_TLC()
{
uint i,temp;
CS=1;
CLK=0;       //自动将上次转换结果的最后位D7加到输出端的第一位
CS=0;
_nop_();
_nop_();
for(i=0;i<8;i++)
{
temp<<=1;
temp|=DO;
CLK=1;
_nop_();
CLK=0;
}
CS=1;
for(i=0;i<20;i++)
_nop_();
return (temp);
}

void show()
{
qian=temp1%10000/1000;
bai=temp1%1000/100;
shi=temp1%100/10;
ge=temp1%10;
}

void display()
{
P2=num[qian];
P1=0x01;
delay(3);
P2=num[bai];
P1=0x02;
delay(3);
P2=num[shi];
P1=0x04;
delay(3);
P2=num[ge];
P1=0x08;
delay(3);
}

void conversion()
{
uchar voit,temp,qiya;
temp=ADC_TLC();
voit=2.0/256*temp*100;
temp1=voit-0.96;
if(temp1>=0&&temp1<=0.54)
qiya=101.0+92.5926*temp1;
if(temp1>0.54&&temp1<=0.79)
qiya=101.0+759.4937*temp1;
if(temp1>0.79&&temp1<=1.04)
qiya=101.0+1538.4615*temp1;
}

void main()
{
while(1)
{
ADC_TLC();
conversion();
show();
display();
}
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

10

帖子

1

粉丝