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

📄 main.c

📁 实验在Keil 3平台上调试通过
💻 C
字号:

#include "iocc1110.h"
#define uint unsigned int
#define uchar unsigned char

#define ConversionNum 20
//定义控制灯的端口
sbit led1 = P1^0;	
sbit led2 = P1^1;

void Delay(uint);
void initUARTtest(void);
void InitialAD(void);
void UartTX_Send_String(char *Data,int len);


uchar adcdata[]="0.000V";

/****************************************************************
*函数功能 :延时												*
*入口参数 :定性延时											*
*返 回 值 :无													*
*说    明 :													*
****************************************************************/
void Delay(uint n)
{
	uint i;
	for(i=0;i<n;i++);
	for(i=0;i<n;i++);
	for(i=0;i<n;i++);
	for(i=0;i<n;i++);
	for(i=0;i<n;i++);
}

/****************************************************************
*函数功能 :初始化串口1											*
*入口参数 :无													*
*返 回 值 :无													*
*说    明 :57600-8-n-1											*
****************************************************************/
void initUARTtest(void)
{

    SLEEP &= ~0x04;              //晶振
    while(!(SLEEP & 0x40));      //等待晶振稳定  
    CLKCON &= ~0x47;             //TICHSPD128分频,CLKSPD不分频
    SLEEP |= 0x04; 				 //关闭不用的RC振荡器

	PERCFG = 0x00;				//位置1 P0口
	P0SEL = 0x3c;				//P0用作串口
	
	U0CSR |= 0x80;				//UART方式
	U0GCR |= 11;				//baud_e = 11;
	U0BAUD |= 34;				//波特率设为57600
	UTX0IF = 1;
}
	     

/****************************************************************
*函数功能 :初始化ADC											*
*入口参数 :无													*
*返 回 值 :无													*
*说    明 :参考电压AVDD,转换对象是1/3AVDD						*
****************************************************************/
void InitialAD(void)
{
	//P1 out
	P1DIR = 0x03; 		//P1控制LED
	led1 = 1;
	led2 = 1;			//关LED

	ADCH &= 0X00;		//清EOC标志	
	ADCCON3=0xbf;		//单次中断参考电压为电源电压,对1/3 AVDD进行A/D转换
						//12位分辨率
	ADCCON1 = 0X30;		//停止A/D

	ADCCON1 |= 0X40;	//启动A/D
}

/****************************************************************
*函数功能 :串口发送字符串函数									*
*入口参数 : data:数据											*
*			len :数据长度										*
*返 回 值 :无													*
*说    明 :													*
****************************************************************/
void UartTX_Send_String(char *Data,int len)
{
  int j;
  for(j=0;j<len;j++)
  {
    U0DBUF = *Data++;
    while(UTX0IF == 0);
    UTX0IF = 0;
  }
}


/****************************************************************
*函数功能 :主函数												*
*入口参数 :无													*
*返 回 值 :无													*
*说    明 :无													*
****************************************************************/
void main(void)
{	
	uchar temp[2];
	float num;
	uchar i;
	initUARTtest();
	InitialAD();
	
	adcdata[0] = 0x01;
	adcdata[1] = 0x02;
	adcdata[2] = 0xAA;
	led1 = 1;

	i = ConversionNum;
	while(i>0)
	{
		if(ADCCON1>=0x80)
		{
			led1 = !led1;	  				//转换完毕指示
			adcdata[1] = ADCL;
			adcdata[0] = ADCH;
			ADCCON1 |= 0x40;	  			//开始下一转换

			temp[0] = adcdata[0]>>4;	    //数据处理
			temp[1] = adcdata[1]>>4;
			temp[1] |= adcdata[0]<<4;

			num = (temp[0]*256+temp[1])/2047*5.00;

			adcdata[0] = (char)num;
			adcdata[2] = (char)(num*10%10);
			adcdata[3] = (char)(num*100%10);
			adcdata[4] = (char)(num*1000%10);
			
	
			ADCCON1 |= 0x40;	  			//开始下一转换
			UartTX_Send_String(adcdata,3);	//串口送数

			Delay(30000);
			led1 = !led1;	
			Delay(30000);  	

			i--;
		}									 //20次转换
	}
	while(1);	//程序停在这里 方便使用串口调试助手
}

⌨️ 快捷键说明

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