首先第一步排查: 排查单片机能不能正确显示 你测试到的 AD 信号,显示正确不?
比如给他 3V 电压 ,用数码管显示出来。
第二: 串口发送,找个能正确发送数据的代码 ,直接把 ,你检查的数值给这个变量,让串口发送,
一步一步找问题,你绝对能解决的。我把AD0809 的代码给你用数码管测试
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code LEDData[]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
}
sbit OE = P1^0
sbit EOC = P1^1
sbit ST = P1^2
sbit CLK = P1^3
void DelayMS(uint ms)
{
uchar i
while(ms--)
{
for(i=0i<120i++)
}
}
void Display_Result(uchar d)
{
P2 = 0xf7
P0 = LEDData[d%10]
DelayMS(5)
P2 = 0xfb
P0 = LEDData[d%100/10]
DelayMS(5)
P2 = 0xfd
P0 = LEDData[d/100]
DelayMS(5)
}
void main()
{
TMOD = 0x02
TH0 = 0x14
TL0 = 0x00
IE = 0x82
TR0 = 1
P1 = 0x3f
while(1)
{
ST = 0
ST = 1
ST = 0
while(EOC == 0)
OE = 1
Display_Result(P3)
OE = 0
}
}
void Timer0_INT() interrupt 1
{
CLK = !CLK
}
这个是数电的课程设计,很简单其实就是adc测一个模拟输出传感器然后按地址读取rom值然后显示,只是rom需要写入内容1、直接用lm35比较好,max6675需要前端接热电偶
2、三个运放都可以,只是一般都要双电源,接起来烦
3、tm7707精度太高了没有必要,adc0809就好了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)