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

📄 soft_ad.c

📁 flash memory controler
💻 C
字号:
/*软件A/D所能实现的精度有限,测量电压范围是2-15V,
而且速度低(约1KHz),但仅用一个电容和一个电阻的诱惑
力,我想大虾您会笑纳的。用于某些场合是有用的。

原理是利用470K电阻对1uF电容充电,利用P0.0口作为检测电压,
当电压低于1/3 VCC时,P0.0读入的I/O电平为0,当充电电压超过
1/3 VCC时,P0.0读入的I/O电平为1。通过测量此过程所用的时间,
就能判断输入电压(需要换算)。

程序的编写用定时器0实现
*/


//设计时需要计算过2V充电时测量的电压时间小于250ms,否则time溢出。
//如需要高精度,time,vol换成int,测量时间会长一点

sbit v_input=P0^0;
unsigned char time,vol,n;
unsigned int total;

void int_t0(void) interrupt 1 {
	TL0+=24;TH0=0xfb;	//1000个机器周期
	time++;
	if (v_input) {
		v_input=0;	//把电容电压放调
		total+=time;
		time=0;
		if ((++n)>10) {	//统计10次测量的时间
			n=0;
			vol=total/10;	//vol的值为测量的电压(还没有转换)
			total=0;
		}
		v_input=1;
	}
}

			



⌨️ 快捷键说明

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