AD转换获取土壤的湿度

#include "reg52.h"
#include "intrins.h"#define MYID 0x05
#define UPID 0x01sfr AUXR = 0x8e;sfr ADC_CONTR = 0xBC;
sfr ADC_RES = 0xBD;
sfr ADC_LOW2 = 0xBE;
sfr P1ASF = 0x9D;#define ADC_POWER 0x80
#define ADC_FLAG 0x10
#define ADC_START 0x08
#define ADC_SPEEDLL 0x00
#define ADC_SPEEDL 0x20
#define ADC_SPEEDH 0x40
#define ADC_SPEEDHH 0x60unsigned char bufsend[10] = { 0 };void Delay1ms(unsigned int x)        //@11.0592MHz
{unsigned char i, j;while( x -- ){_nop_();_nop_();_nop_();i = 11;j = 190;do{while (--j);} while (--i);}
}void UartInit() // 9600 @11.0592
{PCON |= 0x80;SCON = 0x50;AUXR &= 0xBF;AUXR &= 0xFE;TMOD &= 0x0F;TMOD |= 0x20;TL1 = 0XFA;TH1 = 0xFA;ET1 = 0;TR1 = 1;
}void InitADC(){P1ASF = 0x01;ADC_RES = 0;ADC_CONTR = ADC_POWER | ADC_SPEEDLL;Delay1ms(2);
}unsigned char GetADCResult(unsigned char ch){ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;_nop_();_nop_();_nop_();_nop_();while( ! (ADC_CONTR & ADC_FLAG) );ADC_CONTR &= ~ADC_FLAG;return ADC_RES;
}unsigned char DataSendPreprocess()
{unsigned char i, t = 0;bufsend[0] = 0x7f; //起始字节bufsend[1] = UPID; //接受者地址bufsend[2] = MYID; //发送者地址bufsend[3] = 3;      //数据长度bufsend[4] = 0x13; //传感器类型0x13---->土壤湿度bufsend[5] = 0; //数据高字节bufsend[6] = ( 255 - GetADCResult(0) )* 100 / 255 ; //AD通道号0转换后的数据for(i = 1; i <7; i ++ ){t ^= bufsend[i];  }bufsend[7] = t; //异或校验码生成bufsend[8] = 0xff;  //结束字节return 9;
}void DataSend(unsigned char ss[], unsigned char len)
{unsigned char i;for( i = 0; i < len; i ++ ){SBUF = ss[i];while( TI == 0 );TI = 0;    }
}void main()
{unsigned char len;InitADC();UartInit();while(1){len = DataSendPreprocess();DataSend(bufsend, len);Delay1ms(1000);}
}

stc12c5a60s AD转换获取土壤的湿度相关推荐

  1. 基于51单片机PT100热电偶AD转换protues仿真设计

    基于51单片机PT100热电偶AD转换protues仿真设计 (源码+仿真) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0023 这里写 ...

  2. 树莓派实现AD转换(pcf8591模块)

    一.树莓派启动I2C 使用: ls /dev/命令可以查看I2C设备是启动. 如果没有启动执行 sudo raspi-config选择 interfacing Options->I2C-> ...

  3. pic1路AD转换c语言,pic单片机的ad转换(实例解析)

    描述 AD转换就是模数转换.顾名思义,就是把模拟信号转换成数字信号.主要包括积分型.逐次逼近型.并行比较型/串并行型.Σ-Δ调制型.电容阵列逐次比较型及压频变换型.A/D转换器是用来通过一定的电路将模 ...

  4. s5pv210——AD转换

    以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除. 参考博客http://www.cnblogs.com/biaohc/p/6286569.html 一.ADC的主要相关概念 1.量程(模拟量 ...

  5. 单片机ad显示程序c语言,pic单片机ad转换c程序分享

    A/D转换器是用来通过一定的电路将模拟量转变为数字量.模拟量可以是电压.电流等电信号,也可以是压力.温度.湿度.位移.声音等非电信号.但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各 ...

  6. AD转换中【参考电压】的作用

    AD转换 AD转换就是模数转换.顾名思义,就是把模拟信号转换成数字信号.主要包括积分型.逐次逼近型.并行比较型/串并行型.Σ-Δ调制型.电容阵列逐次比较型及压频变换型. A/D转换器是用来通过一定的电 ...

  7. ad stm8l 热电偶_[转载]STM8S单片机入门3(AD转换及锂电池管理)

    锂电池以其容量大.充电性能好的优点,已经得到了广泛引用,特别在小型的需电池供电的电子设备上.但是锂电池的充电和使用条件比较严格,比如充电必须以恒流恒压方式,使用时电压不能低于3V等,所以用锂电池供电的 ...

  8. dsp的ad标志位是什么_关于STM32 AD转换的ADC_FLAG_EOC标志位问题

    关于STM32 AD转换的ADC_FLAG_EOC标志位问题 [复制链接] 小弟最近再写STM32的ADC,看了很多网的例程都是用DMA接数据,但是我想直接用AD读到寄存器,再拿出来处理. 在写程序的 ...

  9. AD转换汇编语言模数转换实验

    ** 1. A/D0809芯片特点 ** ADCO809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器.其内部有一个8通道多路开关,可根据地址码选通其中一路输入信号进行A ...

  10. 51单片机 AD转换

    在数逻的课程中,已经学习过AD转换的概念:将模拟信号采样.量化.编码后转换为数字信号.但是未学习过通过单片机编程,显示结果. 编码分有舍有入.只舍不入两种,量化误差前者更小.=2Vm/(2^n+1   ...

最新文章

  1. 在asp.net中调用Office来制作各种(3D)统计图
  2. P4915 帕秋莉的魔导书
  3. 删除无序单链表中值重复出现的节点
  4. 陆金所 CAT 优化实践
  5. cron 每年执行一次_循环执行定时任务crontab
  6. 几位无人驾驶领域的杰出科学家
  7. 机器学习实战(十一)FP-growth(频繁项集)
  8. Dubbo+Zookeeper 基础讲解
  9. Python消息队列
  10. python怎么读取csv文件-python3读取csv文件任意行列代码实例
  11. plupload android,文件上传的几种方法——plupload篇
  12. 项目管理四要素是什么?
  13. 10款电子邮箱测评:新浪邮箱、TOM邮箱、qq邮箱、163邮箱等产品差异明显,这款邮箱安全稳定性最高!
  14. 手脱aspack变形壳
  15. 史上最清晰的雷霆战机游戏开发全过程(基于java,素材和源码均齐全)
  16. 前端如何设置浏览器窗口的网站logo
  17. 生信自学笔记(五)计分矩阵的实例
  18. php 改数字 例如10000变成1万
  19. 算法训练 24点游戏
  20. 如何在数字前加上0,如将1变成01

热门文章

  1. 命令行工具下载b站视频
  2. c语言小游戏 贪吃蛇
  3. 统一网关Gateway、路由断言工厂、路由过滤器及跨域问题处理
  4. 命令提示符怎么以管理员方式打开
  5. 自动驾驶 Apollo 源码分析系列,感知篇(三):红绿灯检测和识别
  6. 软件混沌工程原则以及应用介绍(PRINCIPLES OF CHAOS ENGINEERING)
  7. mysql的insert_MySQL中INSERT的一般用法
  8. 微软bi报表服务器,什么是 Power BI 报表服务器?
  9. cmake出错:Building inplace are not allowed. You should create a separate directory for Building.
  10. 实验六 —— 火焰传感器