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
#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也是一样的问题,能不能有办法解决?
我的现在还没解决,采集出来的电压值就是不更新,而且还是乱码。
不错的文件,值得收藏