⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 通过adc0809采集电压
💻 C
字号:

/*
****************************************************

		

****************************************************
*/

#include <reg52.H>
#include "Typedef.H"
#include "UserDef.H"
#include "Disp.H"
#include "ADC0809.H"
#include "TLC0832.H"
#include "DAC0832.H"

/* 常数定义 */
#define T_ADDA	10	  			//ADDA周期:10ms

/*---------------------<<< 修改1 >>>---------------------------------*/
// 	按照实际数值修改,可用电压探针查看相应IC的REF引脚电压
//	注:TLC0832使用5V的固定电压作为基准电压值
#define V_REF_AD0	5.0		//ADC0809的基准电压值
#define V_REF_AD1	5.0		//TLC0832的基准电压值
#define V_REF_DA	5.0		//DAC0832的基准电压值
/*--------------------------------------------------------------------*/


/*  全局变量 */
bit bDispRef = FALSE;		//信号灯:显示更新时间到
bit bADDARef = FALSE;		//信号灯:ADDA采样时间到


/***************************************

	

****************************************/
void main(void)
	{
	INT8U AD0,AD1,DA;
	float Volt_AD0,Volt_AD1,Volt_DA;

	//初始化
	TMOD = 0x11;
	TH0 = (INT8U)(KTDLY>>8);
	TL0 = (INT8U)(KTDLY);
	TR0 = 1;
	
	ET0 = 1;
 	EA = 1;

	DispInit();		//LCD初始化
	AD0809_init();	//AD0809初始化

	/* LCD清屏 */
	DispCls();

	/* 显示固定的文字 */
   	DispXYSet(0,20);
	DispHZ(2);
	DispHZ(3);
/*----------------------<<< 修改2 >>>--------------------------------*/
// 液晶屏幕上显示“数据采集”的汉字,现只有显示“数据”的程序。
// 请补充显示“采集”的相关程序及补充字库中的汉字字模
// 字模的获取通过工具软件实现
// 注:汉字字模在font.h中的FontHZ14x14数组
	DispHZ(4);
	DispHZ(5);
/*--------------------------------------------------------------------*/

	DispFontSet(1);		
	DispXYSet(3,0);
	DispStr("AD0=");
	DispXYSet(5,0);
	DispStr("AD1=");
	DispXYSet(7,0);
	DispStr("DA =");

	
	
	while(TRUE)
		{
		/* 显示扫描刷新,输出可变的文字 */
		if (bDispRef == TRUE)
			{
			bDispRef = FALSE;

			// 显示当前的AD、DA数值
			DispFontSet(1);
			DispXYSet(3,35);
			DispInt(AD0,3);
			DispXYSet(5,35);
			DispInt(AD1,3);
			DispXYSet(7,35);
			DispInt(DA,3);

			// 显示当前的AD、DA所对应的实际电压值
			DispFontSet(0);
			DispXYSet(3,64);
			DispFloat(Volt_AD0,6);	DispChr('V');
			DispXYSet(5,64);
			DispFloat(Volt_AD1,6);	DispChr('V');
			DispXYSet(7,64);
			DispFloat(Volt_DA,6);	DispChr('V');
			}

		/* ADDA采样,进行AD、DA转换并计算AD、DA值对应的实际电压值 */
		if (bADDARef == TRUE)
			{
			bADDARef = FALSE;
			AD0 = AD0809(0);
			AD1 = TLC0832();
			DA = AD0-AD1;
			Dac0832(DA);
/*----------------------<<< 修改3 >>>---------------------------------*/
// 根据公式计算AD,DA所对应的实际电压值
			Volt_AD0 = AD0 / 256.0 * V_REF_AD0;
			Volt_AD1 = AD1 / 256.0 * V_REF_AD1;
																	//根据DAC0832的外围硬件电路,选择下列2个公示中的一个
			Volt_DA = (signed char)(DA - 128) / 128.0 * V_REF_DA;	//双极性输出
//			Volt_DA = -1.0 * DA / 256.0 * V_REF_DA;					//单极性输出
/*--------------------------------------------------------------------*/
			}
		}
	}




/*************************************

	定时器中断程序 

**************************************/
void int_t0(void) interrupt 1 using 1
	{
	static int cnt = 0;

	TH0 = (unsigned char)(KTDLY>>8);
	TL0 = (unsigned char)(KTDLY);

	cnt ++;

	/* 显示扫描信号灯  */
	if ((cnt % T_DISPREF) == 0)
		{
		bDispRef = TRUE;
		}
	
	/* ADDA采样信号灯  */
	if ((cnt % T_ADDA) == 0)
		{
		bADDARef = TRUE;
		}
	
	}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -