STC89C52控制AD0809采集信号并显示

ADC0809是采样分辨率为8位的、以逐次逼近原理进行模-数转换的器件,其内部有一个8通道多路开关,它能够依据地址码锁存译码后的信号,选通8路模拟输入信号的任意一路,而且方便拓展,能够实现多路信号的同时采集。可实现模拟电压信号到数字电压信号的转换,这里所用的ADC芯片型号为ADC0809CCN,28引脚双列直插式封装,低功耗,具有转换启停控制端,使用温度范围为-40℃~+80℃。ADC0809的内部结构
图1 ADC0809内部结构
ADC0809地址信号与选中通道对应关系
表1 地址信号与通道对应关系
这里我仅用到两个通道,显示用的LCD1602,很简单,不说废话直接上代码。

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define out P2
sbit START=P3^5;
sbit OE=P3^3;
sbit CLOCK=P3^7;
sbit EOC=P3^4;
sbit add_a=P3^0;
sbit add_b=P3^1;
sbit add_c=P3^2;
sbit RS=P0^7;
sbit E=P0^5;
sbit RW=P0^6;
void delay(uint z)//延时函数
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}
void check_busy(void)//检查忙函数
{
	uchar dt;
	do
	{
		dt=0xff;
		E=0;
		RS=0;
		RW=1;
		E=1;
		dt=out;
	}while(dt&0x80);
	E=0;
}
void write_com(uchar com)//写指令函数
{
	check_busy();
	E=0;
	RS=0;
	RW=0;
	out=com;
	E=1;
	_nop_();
	E=0;
	delay(1);
}
void write_data(uchar dat)//写数字函数
{
    check_busy();
    E=0;
    RS=1;
    RW=0;
    out=dat;
    E=1;
    _nop_();
    E=0;
    delay(1);
}
void lcd_init(void)//LCD初始化函数
{
  	write_com(0x38);
  	write_com(0x0C);
  	write_com(0x06);
  	write_com(0x01);
  	delay(1);
}
void Timer0_INT() interrupt 1
{
	CLOCK=!CLOCK;
}
void main()
{	
    uint addata2=0;
	uint addata1=0;
	uint addata3,addata4;
	uchar temp;
	lcd_init();
	TMOD=0x02;
	TL0=0xff;
	TH0=0xff;
	IE=0x82;
	TR0=1;
    //beep=0;
	delay(1);
	while(1)
	{	
			delay(8);
			add_a=0;//采集第一路信号
			add_b=0;
			add_c=0;
			START=0;
			START=1;
			delay(8);
			START=0;
			while(EOC==0)
			OE=1;
			delay(8);
			temp=P1;
			OE=0;
			addata3=temp*19.61;
			if(addata1<=addata3)
			{
				addata1=addata3;
			}
			else
			{
				addata1=addata1;
			}
			write_com(0x82);
			write_data('F');
			write_data('O');
			write_data('R');
			write_data('C');
			write_data('E');
			write_data('=');
			write_data('0'+addata1/1000);
			write_data('0'+addata1/100%10);
			write_data('.');
			write_data('0'+addata1/10%10);
			write_data('0'+addata1%10);
			write_data('N');
			delay(10);
			add_a=1;//采集第二路信号
			add_b=0;
			add_c=0;
			START=0;
			START=1;
			delay(8);
			START=0;
			while(EOC==0)
			OE=1;
			delay(8);
			temp=P1;
			OE=0;
			addata4=temp*3.93;
		    if (addata2<=addata4)
			{
				addata2=addata4;
			}
				else
			{
				addata2=addata2;
			}
			write_com(0xC0);
			write_data('T');
			write_data('O');
			write_data('R');
			write_data('Q');
			write_data('U');
			write_data('E');
			write_data('=');
			write_data('0'+addata2/1000);
			write_data('.');
			write_data('0'+addata2/100%10);
			write_data('0'+addata2/10%10);
			write_data('0'+addata2%10);
			write_data('N');
			write_data('*');
			write_data('m');
			delay(100);
		}
}

  • 3
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值