微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > TLC549 AD采样

TLC549 AD采样

时间:10-02 整理:3721RD 点击:
#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

有一个让人猜问题的难题,问题等于没问

1、用个仿真器或通过串口直接把AD值送出来,把AD转换调好
2、调显示,送不同的值(模拟AD输出),确保显示正常
分开来,分析问题原因

赞同楼上说法  面对这个问题还要让人猜  注释难道不可以多点

数码管显示没问题,只是不知道为什么显示出来的电压值不更新,难道549没起作用?

只是想让人帮忙看一下,AD转换数据是不是这样写(在主函数while循环中)

我的TLC1549也是一样的问题,能不能有办法解决?

我的现在还没解决,采集出来的电压值就是不更新,而且还是乱码。

不错的文件,值得收藏

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top