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

📄 ad10b.c

📁 STC12系列单片机10位AD转换C语言测试程序
💻 C
字号:
#include "reg52.h"
#include "intrins.h"


/*
#define AD_P10 0xe0; //选择P1.0口为AD转换
#define AD_P11 0xe1; //模式为SPEED0=1,SPEED1=1
#define AD_P12 0xe2; //即最高转换速度,晶振20M,转换速度为100K	10US/次
#define AD_P13 0xe3;
#define AD_P14 0xe4;
#define AD_P15 0xe5;
#define AD_P16 0xe6;
#define AD_P17 0xe7; //选择P1.7口为AD转换口
 */



sfr ADC_LOW2  = 0xBE;
sfr ADC_CONTER = 0xC5;
sfr ADC_DATA  = 0xC6;

sfr P1M0=0X91;
sfr P1M1=0X92;
unsigned int Result;

unsigned int ADC() 
{
ADC_CONTER = ADC_CONTER|0x80;//开AD电源
//延时2ms 
ADC_DATA=0x00;   //高8位清零
ADC_LOW2=0x00; 	 //低2位清零
ADC_CONTER=0xe7; //启动P1.7通道AD转换 // 
ADC_CONTER|=0x08; //启动AD转换 
while ((0x10&ADC_CONTER)!=0x10); 
ADC_CONTER&=0xE7; //清零ADC_FLAG标志位
Result = (ADC_DATA<<2)|(ADC_LOW2&0x03);//读取AD转换结果 10位  
return (Result);  //返回值
}


void delay(void)   //延时
{
unsigned char m,n;
for(m=50;m>0;m--)
for(n=50;n>0;n--);

}

void sendbyte(one_byte)
{  
 TI=0;
 SBUF=one_byte;
 while (TI==0);
 TI=0;

 }

void init_uart(void)
{
 ES=0;
 TMOD=0x20; //定时器1,内部RC	
 SCON=0x50;	//串口方式1,波特率4800
 TH1=0xfd;
 TL1=0xfd;
 TR1=1;
 ES=1;
 }
void main(void)
{
 unsigned int a;
 unsigned char  res[4];
 P1M0=0xFF;
 P1M1=0xFF; //设置P1口均为开漏模式
 ADC_CONTER|=0x80; //开AD转换电源 
 init_uart();
  while(1)
  {
    a=ADC();
	res[0]=a/1000+0x30;
	res[1]=(a%1000)/100+0x30;
	res[2]=(a%100)/10+0x30;
	res[3]=a%10+0x30;
    
	sendbyte(0xbb); /*串口发送一字节******/
	delay();
	delay();
	sendbyte(res[0]); /*串口发送一字节******/
	delay();
	delay();
	sendbyte(res[1]); /*串口发送一字节******/
	delay();
	delay();
	sendbyte(res[2]); /*串口发送一字节******/
	delay();
	delay();
	sendbyte(res[3]); /*串口发送一字节******/
	delay();
	delay();
	sendbyte(0xcc); /*串口发送一字节******/
   }
}

⌨️ 快捷键说明

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