当前位置:首页 > STC12C5A60S2 - AD转换
//****************************************STC12C5A60S2 ***********************************************// #include\头文件在STC公司主页上下载 #include\#include\
//------------------------------------------------------------------------------ void AD_init(); void serial_init();
void delay(unsigned int a);
float AD_work(unsigned char channel);
unsigned int AD_get(unsigned char channel);
//------------------------------------------------------------------------------ void main() {
AD_init(); //A/D转换初始化 serial_init(); //串口初始化 while(1) {
unsigned char i;
for(i=0;i<8;i++) //循环发送P1.0-P1.7的转换数值 {
TI=1; //使用printf函数前须先将发送标志位TI置1 printf(\ TI=0;
AD转换
delay(1000); //延时约1s } } }
//------------------------------------------------------------------------------ unsigned int AD_get(unsigned char channel) {
ADC_CONTR=0x88|channel; //开启AD转换1000 1000 即POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0
_nop_(); _nop_(); _nop_(); _nop_();//要经过4个CPU时钟的延时,其值才能够保证被设置进ADC_CONTR 寄存器
while(!(ADC_CONTR&0x10)); //等待转换完成
ADC_CONTR&=0xe7; //关闭AD转换,ADC_FLAG位由软件清0
return(ADC_RES*4+ADC_RESL); //返回AD转换完成的10位数据(16进制) }
//------------------------------------------------------------------------------ float AD_work(unsigned char channel) {
float AD_val; //定义处理后的数值AD_val为浮点数 unsigned char i;
for(i=0;i<100;i++)
AD_val+=AD_get(channel); //转换100次求平均值(提高精度) AD_val/=100;
AD_val=(AD_val*5)/1024; //AD的参考电压是单片机上的5v,所以乘5即为实际电压值 return AD_val; }
//------------------------------------------------------------------------------ void delay(unsigned int a) //延时约1ms {
unsigned int i; while (--a!=0)
for(i=600;i>0;i--); //1T单片机i=600,若是12T单片机i=125 }
//------------------------------------------------------------------------------ void serial_init() {
TMOD=0x20; TH1=0xfd;
TL1=0xfd; //设置9600波特率
SCON=0x50; //串口方式1,允许接收 TR1=1; }
//------------------------------------------------------------------------------ void AD_init() {
P1ASF=0xff; //P1口全部作为模拟功能AD使用 ADC_RES=0; //清零转换结果寄存器高8位 ADC_RESL=0; //清零转换结果寄存器低2位 ADC_CONTR=0x80;//开启AD电源
delay(2); //等待1ms,让AD电源稳定 }
/*程序编写:落叶 2010.11.03*/
共分享92篇相关文档