云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > STC12C5A60S2 - AD转换

STC12C5A60S2 - AD转换

  • 62 次阅读
  • 3 次下载
  • 2025/6/14 10:36:36

//****************************************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*/

搜索更多关于: STC12C5A60S2 - AD转换 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

//****************************************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 chann

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com