实际电路接线

我们需要ad转化的时候 ,分两步走,先启动转化,再读取输出的数字量

阅读手册时序图

 开始编写驱动文件adc0804.c和adc0804.h如下

#include  "ad0804.h"void adc_start()
{CS=1;WR=1;CS=0;WR=0;delay(1);WR=1;delay(1);CS=1;
}void adc_read()
{RD=1;CS=1;CS=0;_nop_();RD=0;delay(10);
}float adc_getVoltage()
{float voltage;uchar temp;adc_start();adc_read();/*如果v0+v1*x+……会报错,只能分开写了*/temp = v0==0?  (v1*2+v2*4+v3*8+v4*16+v5*32+v6*64+v7*128):(v1*2+v2*4+v3*8+v4*16+v5*32+v6*64+v7*128)+1;voltage=(float)temp/256*4.84;return voltage;
}
#include "public.h"
#ifndef AD0804_H
#define AD0804_Hsbit weila=P2^7;
sbit RD=P3^7;
sbit WR=P3^6;
sbit CS=P0^7;sbit v0=P1^0;
sbit v1=P1^1;
sbit v2=P1^2;
sbit v3=P1^3;
sbit v4=P1^4;
sbit v5=P1^5;
sbit v6=P1^6;
sbit v7=P1^7;void adc_start();                         //启动ad采样
void adc_read();                            //ad读取
float adc_getVoltage();                     //返回adc电压值#endif

其中public.h文件内容如下

#ifndef _PUBLIC_H
#define _PUBLIC_H
#include <STC12C5A60S2.H>
#include "intrins.h"
#ifndef uchar
#define uchar unsigned char
#endif#ifndef uint
#define uint unsigned int
#endifvoid delay(uint c);#endif

然后是main.c

#include "public.h"
#include  "ad0804.h"
#include  "uart.h"uchar buf[100];
void main()
{float v;UartInit();while(1){v=adc_getVoltage();if(v!=adc_getVoltage())               //若ad采样电压值发生变化,则在串口打印{sprintf(buf,"检测电压值:%.2f V\r\n",adc_getVoltage());printf(buf);}}
}

效果为转动滑动变阻器,串口打印电压,若不转动,串口不产生输出。经过电压表检测,串口打印电压值与实际值误差约3%

这里用到的串口打印函数,可以看我另一篇关于串口的博客,里面有完整代码

(130条消息) 51单片机串口的使用_犹是春闺梦里人的博客-CSDN博客

51单片机ADC0804的使用相关推荐

  1. adc0804模数转换实验报告_51单片机ADC0804模数转换学习

    51 单片机 ADC0804 模数转换学习 数模转换器 ADC0804 与单片机连接的原理图: 这 TX-1C 实验板上的 ADC0804 和单片机连接的电路原理图. 左边的是 ADC0804 ,右边 ...

  2. adc0804模数转换实验报告_ADC0804 模数转换51单片机程序+电路图

    51单片机驱动 adc0804模数转换 ,下面是电路图 #include #include "lcd.h" #include #define uint unsigned int # ...

  3. 51单片机—基于PT100温度变送器的温度检测装置(ADC0804)

    一.前言 在我们学习51单片机的过程中,提到温度测量,很多同学的第一反映一定是DS18B20温度传感器.DS18B20是一款物美价廉且十分简单的传感器,它的体积小,测量精度高,使得其成为很多同学的选择 ...

  4. 基于51单片机的只能电子温度计硬件系统

    基于51单片机的智能电子温度计硬件系统 使用Pt100传感器:四位LCD显示实时温度值:4个按键用于设置上下限温度值:上下限超限声音报警,报警值可随时设置:设置的报警值能保存在EEPROM中:实时温度 ...

  5. 基于51单片机的简易太阳能追踪系统

    基于51单片机的简易太阳能追踪系统Proteus仿真如图所示. 系统主控核心为AT89C51单片机: 动作执行部分为两个0-360度舵机: 4个电位器模拟光敏电阻检测阵列: 模拟电压采集部分使用74H ...

  6. 基于51单片机的光照强度检测系统

    一.硬件方案 本设计采用单片机作为数据处理与控制单元,为了进行数据处理,通过光敏电阻来感应光强弱变化,经过ADC0804转换,直接将数字信号送入到单片机中进行数据处理.单片机数据处理之后,将光照强度发 ...

  7. 单片机原理与实践学习记录之51单片机I/O口简单应用

    单片机原理与实践学习记录 第二课(更新时间:2021.9.3) 51单片机I/O口简单应用 C51中常用的头文件 ​ 通常有reg51.h,reg52.h,math.h, ctype.h, stdio ...

  8. 51单片机实现对24C02进行页写、顺序读取并显示验证

    源:51单片机实现对24C02进行页写.顺序读取并显示验证 //******************************************************************** ...

  9. 51单片机编码自学_这是9个月的自学式编码看起来像什么

    51单片机编码自学 by Stephen Mayeux 斯蒂芬·马约(Stephen Mayeux) 这是9个月的自学式编码看起来像什么 (Here's What 9 Months of Self-T ...

最新文章

  1. (三)WebGIS前端地图显示之根据地理范围换算出瓦片行列号的原理(核心)
  2. 结合丰富示例深入讲解Ajax架构和最佳实践——《深入Ajax:架构与最佳实践》
  3. php和python哪个学起来简单一点-现在自学php和python那个合适?
  4. Android文件操作中的openFileOutPut和openFileInput
  5. Docker php 环境搭建dockerfile
  6. leetcode954. 二倍数对数组(treemap)
  7. 转载 实践与分享:Windows 7怎么获取TrustedInstaller权限【图文教程】
  8. 户外驴友必须掌握的登山包的装填和调整
  9. 如何读取tensorboard文件 展现可视化
  10. 站内搜索引擎初探:haystack全文检索,whoosh搜索引擎,jieba中文分词
  11. Android开发笔记(五十七)录像录音与播放
  12. python multiprocessing遇到Can’t pickle instancemethod问题
  13. PHP 霸主地位被动摇,JIT 是穷途末路后的绝地反击?
  14. swoft php怎么样,[原创]Swoole和Swoft的那些事 (Http/Rpc服务篇)
  15. 牛津词典 2018 年度词汇 ——「有毒」!
  16. 人工智能数学基础之高等数学
  17. C#处理控制台关闭事件
  18. jQuery中find和filter的区别
  19. 在Eclipse上用JAVA连接数据库
  20. JSON-RPC是什么东西

热门文章

  1. 引起短波通讯服务器终端,通信系統.ppt
  2. 关于怎样把普通usb摄像头图像发布到ros的topic
  3. 解决:运行sbin下的start-hdfs.sh时报WARN util.NativeCodeLoader: Unable to load native-hadoop
  4. 汽车tbox是车联网系统
  5. STL中的map简单详解
  6. 作为一个知识图谱的觉悟就是全世界的猫猫联合起来-1
  7. 字节跳动内部学习资料泄露!徐州java培训哪个好
  8. VR全景作品中添加开场加载画面教程
  9. 微软认证系统工程师MCSE(院校IT课程)
  10. 将“活雷锋” 搬到网上 ——记百姓网CEO王建硕