ADC0832是美国国家半导体公司生产的一种8位逐次比较型CMOS双通道A-D转换器,采用5V电源电压供电,模拟电压输入范围为0~5V,内部时钟250KHz时转换速度为32微秒。

仿真图为:

程序为:

/********预处理***********/
#include <reg51.h>
#include "ADC0832.c"                 //调用ADC0832驱动程序
code uchar seven_seg[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};        //声明包含0123456789的一个十六进制的数组
uchar cp1,cp2;                   //声明变量cp1,cp2;
uint dat_ad;                   //声明变量dat_dat
//sbit P3_0 = P3^0;
void timer0_isr(void);                                                               //声明中断服务函数
void timer0_init(void);                                                              //声明中断初始化函数
/***********主函数******************/
void main(void)
{
 timer0_init();
 adc0832_init();
 while(1);
}
/*********************T0中断服务函数**************************/
void timer0_isr(void)interrupt 1
{
 TH0 = 0xf8;
 TL0 = 0x2f;
 cp1++;
 if(cp1 >= 250)                                                              //0.5s
 {
  cp1 = 0;
  dat_ad = adc0832_ch0();                                   //0.5秒让ADC0832转换一次
  dat_ad = dat_ad * 1.96;                      //数据254对应模拟电压5V
 }          
 P0 = 0xff;                                                                        //仿真需要消隐
 switch(cp2)                     //模拟电压显示0~5V
 {
  case 0: P0 = seven_seg[dat_ad  % 10]; P2 = ~0x01; break;        //小数点后第二位显示
  case 1: P0 = seven_seg[dat_ad  % 100 / 10]; P2 = ~0x02;break;       //小数点后第一位显示
  case 2: P0 = seven_seg[dat_ad / 100] & 0x7f; P2 = ~0x04; break;       //个位显示和小数点显示
 }
 cp2++;
 if(cp2 >= 3)cp2 = 0;        
}
/*T0初始化函数*/
void timer0_init(void)
{
 TMOD = 0x01;                                        //中断方式1
 TH0 = 0xf8;
 TL0 = 0x2f;                                         //对机器脉冲计数,2000个计满溢出引发中断
 EA = 1;               //开总中断
 ET0 = 1;              //开T0中断
 TR0 = 1;              //启动定时器To
}

AD0832程序:/*ADC0832驱动程序*/
/*ADC0832模数转换将连续变化的模拟信号转换为离散的数字信号V = 5 / 256 = 0.01953v = 19.53mv*/
#include <intrins.h>     //调用intrins.h库
#define nop _nop_()      //将 _nop_()宏定义为 nop    /** _nop_()是空指令,延时一个指令周期,在51单片机中,外部晶振是12M,那么延时时间为1、12M*12=1us;*/
#define uchar unsigned char    //将unsigned char宏定义为ucahr
#define uint unsigned int         //将unsigned int 宏定义为uint
sbit CS = P3^0;       //片选使能,低电平使能
sbit CLK = P3^1;      //时钟输入
sbit DIDO = P3^2;      //数据信号输入
/********对ACD0832初始化*************/
void adc0832_init(void)
{
 CS = 1;nop;
 CLK = 1;
 CS = 0;
}
/**********对转换CH0通道的模拟信号**************/
uchar adc0832_ch0(void)         //包含11个clk下降沿
{
 uchar i,dat;       //声明一个i,dat;
 adc0832_init();       //调用adc0832_init();
 DIDO = 1;CLK = 0;nop;CLK = 1;nop;  //sck第1个下降沿到来时,di启动DAC0832
 DIDO = 1;CLK = 0;nop;CLK = 1;nop;  //sck第2个下降沿
 DIDO = 0;CLK = 0;nop;CLK = 1;nop;  //sck第3个下降沿,发送1、0选择通道ch0
 DIDO = 1;                            //释放总线
 for(i = 0;i < 8;i++)     //sck第4个下降沿到第11个下降沿
 {
  CLK = 0;nop;
  if(DIDO)dat |= 0x01;
  CLK = 1;nop;
  dat = dat <<= 1;        //dat=(dat按位右移1位)
 }
 return(dat);       //返回dat
 CS = 1;
}

谢谢浏览,第一次接触到博客,有点小激动,哈哈!

ADC0832的应用的更多相关文章

  1. ADC0832

    #include <reg51.h> #include "ADC0832.c" code uchar seven_seg[]={0xc0, 0xf9, 0xa4, 0x ...

  2. 树莓派通过模数转换芯片ADC0832读取LM35温度传感器数据

    树莓派通过模数转换芯片ADC0832读取LM35温度传感器数据 今天和小朋友一起玩树莓派,打算来做一个测量室温的小实验.经过几个小时的研究和测试,终于能够成功读取LM35传感器的温度数据了.本文主要记 ...

  3. 学习AD、DA的体会

    AD转换器的转换是指模拟信号输入转化为数字信号输出,而DA转换器是把数字信号转换为模拟信号,在ADC0832.TLC549和TLC5615程序设计中,通过使用中断服务函数每0.5s对ADC0832进行 ...

  4. PM2.5环境检测系统的设计与分析

    PM2.5环境检测系统的设计与分析   摘要: 大气颗粒物污染对人类健康和生态环境造成了很大的影响,这让人们逐渐重视起对细颗粒物PM2.5检测技术的研究.本文阐述了PM2.5浓度检测的五种方法,在对上 ...

  5. tlc549

    #include <reg51.h> #include "TLC549.c" code uchar seven_seg[] = {0xc0, 0xf9, 0xa4, 0 ...

随机推荐

  1. 看看腾讯是怎么做产品设计分析的 - 腾讯QQ音乐业务产品规划

  2. Eclipse/Myeclipse生成serialVersionUID方法

    serialVersionUID作用: 序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性. 如果你修改代码重新部署后出现序列化错误,可以考虑给相应的类增加serialVersio ...

  3. JavaScript进阶(七)JS截取字符串substr 和 substring方法的区别

    JS截取字符串substr 和 substring方法的区别 substr方法 返回一个从指定位置开始的指定长度的子字符串. stringvar.substr(start [, length ]) 参 ...

  4. 开源数字媒体资产管理系统:Razuna

    Razuna以一个使用Java语言编写的开源的数字媒体资产管理(Digital Asset Management)系统.功能很强大,可以用于管理各种格式的数字媒体资源. Razuna在本机的安装配置还 ...

  5. 更改EBS R12中forms的模式Servlet/Socket

    EBS R12中forms的模式有:Servlet mode 和 Forms Socket mode 当我们完成Oracle EBS R12套件的快速安装后,forms的默认配置是Servlet mo ...

  6. eclipse搭建ssh后台

    SSH框架是最常用的框架之一,在搭建SSH框架的时候总有人遇到这样,那样的问题.下面我介绍一下SSH框架搭建的全过程.  第一步:准备工作.    下载好eclipse,Struts2,Spring, ...

  7. 某公司基于FineBI数据决策平台的试运行分析报告

    一.数据平台的软硬件环境 二.组织机构和权限体系 组织机构:平台中已集成一套组织机构,可以建立部门.人员.也可以与现有系统的组织机构集成,将组织机构导入到平台中. 功能权限:通过配置功能点URL的方式 ...

  8. 图像的基本运算——scale, rotation, translation

    图像是视觉信息的直接反应,图像呈现出各种各样的特效都是通过图像的基本运算来完成的.图像最基本的运算有三种,分别是scale,rotation 和translation,叫做尺度,旋转和平移.很多图像的 ...

  9. Unity PUN插件多人在线同步角色坐标旋转角度和动作

    用PUN插件的话,就在OnJoinedRoom()回调函数里,表示加入房间,可以实例化角色,GameObject go=PhotonNetwork.Instantiate(prefabPlayer.n ...

  10. Android逆向分析(2) APK的打包与安装背后的故事

    前言 上一次我们反编译了手Q,并遇到了Apktool反编译直接crash的问题,虽然笔者很想在这次解决这个问题,但在解决途中,发现该保护依赖于很多知识,所以本次先插入一下,正所谓知其然知其所以然,授之 ...