TLC549 AD采样

2019-07-16 04:20发布

#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit clock=P2^5;
sbit cs=P2^3;
sbit dat=P2^4;
uchar duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段选
sbit P1_0=P1^0;//位选
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
void delay(uint t)
{
while(t--);
}
uchar ADC0_Conver () //AD采样
{
    uchar i,temp;
cs=1;
clock=0;
cs=0;
_nop_();
_nop_();
for(i=0;i<8;i++)
{
  temp<<=1;
  temp|=dat;
  clock=1;
  _nop_();
  clock=0;
}
cs=1;
for(i=17;i!=0;i--)_nop_();
return(temp);
}
void display(uint t)//数码管显示函数
{
P1_0=0;
P0=duan[t/1000];
delay(10);
P0=0xff;
P1_0=1;

P1_1=0;
P0=duan[t%1000/100];
delay(10);
P0=0xff;
P1_1=1;
P1_2=0;
P0=duan[t%100/10];
delay(10);
P0=0xff;
P1_2=1;
P1_3=0;
P0=duan[t%10];
delay(10);
P0=0xff;
P1_3=1;
}
void main()
{
    uchar value;
    uint voltage;
P1=0xff;
while(1)
{
    delay(100);
    value=ADC0_Conver();
    voltage=5.0/256*(int)value*1000;//将电压值扩大1000倍
    display(voltage);
}

}

为啥改变输入电压,数码管显示的电压值不更新,只显示4980
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
771
1楼-- · 2019-07-17 06:22
月光之子 发表于 2012-10-28 20:17
我的TLC1549也是一样的问题,能不能有办法解决?

我的现在还没解决,采集出来的电压值就是不更新,而且还是乱码。
liuzhaoxin1020
2楼-- · 2019-07-17 09:34
不错的文件,值得收藏

一周热门 更多>