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

📄 adconvert.c

📁 使用STC12C5410AD单片机作为开发系统实现简易闹钟、秒表、打铃小系统程序。包含实时时钟芯片HT1380控制
💻 C
字号:
#include "STC12C5410AD.H"
#include "adconvert.h"

uchar code display_AD_channel_ID[2] = {0x00,0x01};

void Delay1T(uint numb)					//晶振=11059200,机器周期=1.085069444us,"加"的机器周期=1
{
	 int n=0;
	 for(;n<numb;n++);
}

/********************************************************************
* 名称: 
* 功能: A/D转换
* 输入: channel为通道号   0:0通道;1:1通道(本程序中仅使用2个通道,即P1.0和P1.1,其余5个可根据需要自行添加)
* 返回值: AD_Result_Temp 即AD装换完成后得到的10位数据,用一个uint保存
********************************************************************/
uint startADC(uchar channel)
{
	uint AD_Result_Temp = 0;

	//P1 = 0xff;              		//将P1口置高,为A/D转换作准备
	ADC_CONTR = ADC_CONTR|0x80; 	//1000 0000打开A/D转换电源
	P1M0 = 0x03;                	//0000 0011用于A/D转换的P1.0--P1.1先设为开漏。断开内部上拉电阻
	P1M1 = 0x03;                
	Delay1T(20);                  	//延时20
	
	ADC_CONTR = ADC_CONTR&0xE0; 	//1110 0000 清ADC_FLAG,ADC_START位和低3位
	ADC_CONTR = ADC_CONTR|(display_AD_channel_ID[channel]&0x07); //设置当前通道号
	
	Delay1T(1);                   	//延时使输入电压达到稳定
	ADC_DATA = 0;               	//清A/D转换结果寄存器高8位
	ADC_LOW2 = 0;					//清A/D转换结果寄存器低2位
	
	/*启动AD转换*/
	ADC_CONTR = ADC_CONTR|0x08; 		//0000 1000 ADC_START = 1,启动转换
	
	do { ; }    					  	//等待A/D转换结束
	while((ADC_CONTR & 0x10)==0);     	//0001 0000 ADC_FLAG为0时表示转换正在进行
	
	/*ADC_FLAG=1时,执行到此*/
	ADC_CONTR = ADC_CONTR&0xE7;			//1110,0111清ADC_FLAG位,同时ADC_START置零,停止A/D转换
	
	/*AD转换结束*/
	AD_Result_Temp = ((AD_Result_Temp|ADC_DATA)<<2)|(ADC_LOW2&0x03);//保存AD转换的结果
	
	return (AD_Result_Temp);
}

⌨️ 快捷键说明

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