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

📄 main.c

📁 通过C51来实现光照度测量的设计,而且通过电机带动。
💻 C
字号:

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

		

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

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


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

#define V_REF_AD0	5.0		//ADC0809的基准电压值


/*  全局变量 */
bit bDispRef = FALSE;		//信号灯:显示更新时间到
bit bADDARef = FALSE;		//信号灯:ADDA采样时间到
sbit b00 = P2^0; 
sbit b01 = P2^1; 
/***************************************

	

****************************************/
void main(void)
	{
	INT8U AD;
	float Volt_AD,Volt_AD0;

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

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

	/* LCD清屏 */
	DispCls();

	/* 显示固定的文字 */
   	DispXYSet(0,35);
	DispHZ(0);   //欢
	DispHZ(1);	 //迎
	DispHZ(2);   //使
	DispHZ(3);	 //用
	DispXYSet(2,20);
	DispHZ(4);   //光
	DispHZ(5);	 //照
	DispHZ(6);   //度
	DispHZ(7);	 //测
	DispHZ(8);   //量
	DispHZ(9);	 //仪

	DispXYSet(6,10);
	DispHZ(4);   //光
	DispHZ(5);	 //照
	DispHZ(6);   //度


	DispFontSet(1);		
	DispXYSet(4.5,10);
	DispStr("AD=");
	
	DispFontSet(1);		
	DispXYSet(6.5,55);
	DispStr("=");
	
	while(TRUE)
		{
		  
	
		/* 显示扫描刷新,输出可变的文字 */
		if (bDispRef == TRUE)
			{
			bDispRef = FALSE;

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

			// 显示当前的AD、DA所对应的实际电压值
			DispFontSet(0);
			DispXYSet(6.5,65);
			DispFloat(Volt_AD,6);	DispStr("cd");
			
			}

		/* ADDA采样,进行AD、DA转换并计算AD、DA值对应的实际电压值 */
		if (bADDARef == TRUE)
			{
			bADDARef = FALSE;
			
			if (P2==0xfe)
/*----------------------<<< 修改3 >>>---------------------------------*/
// 根据公式计算AD,DA所对应的实际电压值
	    	{AD = AD0809(0);
			 Volt_AD = AD / 256.0 * V_REF_AD0*1000.0;}

			if (P2==0xfd)
			{ 
			  AD = AD0809(0);
			  AD = AD/5;
			  Volt_AD0 = AD / 256.0 * V_REF_AD0;
			  Volt_AD =Volt_AD0 /5.0*1000.0;
			}
/*--------------------------------------------------------------------*/
		    
			} 
			

		}
	}




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

	定时器中断程序 

**************************************/
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 + -