现实中的很多量,都是模拟量,如温度,压力等,单片机要去了解它们,首先就要把这些量进行数字化,AD转换即把模拟量转变为数字量。这次书上介绍的AD芯片为ADC0804,8位并行AD转换芯片。关于AD转换的详细原理,我就不抄了,网上有的是。
ADC0804的使用,比前面用过的锁存器74LS573难用得多,主要是读写数据都要根据时序图,进行电位的变化,而且芯片的接法也相对麻烦一点。下面记录一下引脚定义:
VIN(+),VIN(-):待测量的模拟信号输入
DB0~DB7:测量结果输出
AGND:模拟信号地
DGND:数字信号地
CLK:时钟信号输入端
CLKR:内部时钟发生器的外接电阻端,与CLK端配合可由芯片自身产生时钟脉冲,其频率为1/(1.1RC)
CS:片选信号,低电平有效
WR:写信号输入,低电平启动A/D转换
RD:读信号输入,低电平有效
INTR:A/D转换结束信号,低电平表示本次转换已经完成
VREF/2:参考电平输入,决定量化单位(可以调节该电平,调节最终准确度)
VCC:电源输入
关于时钟:如果使用内部时钟的话,官方的建议是用10K电阻和150pF电容,如上图;
模拟地和数字地一般直接接地即可。参考电平在2.5V左右,我试了一下,调到2.55的时候比较准确。关于待测量的模拟信号,如电压,可以向上图一样连接,负直接接地即可。
这里没有用到INTR,即没用中断,而是直接用延时的方法,等待A/D转换完成后,读取DB0~DB7的值。
--------------------------------------------------------------------
读写芯片都要根据芯片的时序来,其写时序如下:
可以看到,首先要使片选信号置低电平,然后写信号下降,上升后,芯片开始A/D转换,转换完成后INTR置低电平通知已经完成。
读时序如下:
可以看到,转换完成后,选使片选有效,然后使读引脚下降,再上升,即可读取数据。
由于不管读写,都要使片选有效,即CS脚置低,所以CS脚置一次低就可以了。
1 | void main() { uchar val = 0; //允许AD芯片 ad_cs = 0; while(1) { ad_write = 0;//WR脚置低 _nop_(); ad_write = 1;//WR脚置高,完成时序,转换开始 delay(50);//稍等后转换会完成,由于没用中断,所以采用延时50毫秒 P1 = 0xff;//先把数据端口全部置1,避免原先数据影响 ad_read = 0;//RD脚置高 _nop_(); val = P1;//把数据存入临时变量 ad_read = 1;//RD脚置低 show((val>>4)*0.32 + (val&0x0f)*0.02);//根据换算规则,把数据换算成实际电压 } }
|
换算的规则是,8位数据的高四位,相当于每单位0.32V,低四位,相当于每单位0.02V,所以总电压就是:
(val>>4)*0.32 + (val&0x0f)*0.02)
这次没有使用中断,直接采用延时读取,实在是有些不爽,有时间的话,把程序改一下,改成使用中断通知的。
--------------------------------------------------------------
尝试了一下,完成了由中断实现的A/D转换,不再需要时刻去检验了,提高了程序的运行效率。原理图需要稍微改一下,由于用到了外部中断0,即P3.2脚,而这个脚本来连接到了ADC0804的片选引脚,所以要把片选改到P3.5,然后把芯片的INTR连接到P3.2脚才能引发中断。具体请下载查看。
关键字:Proteu 51单片机 AD转换
引用地址:
用Proteus学习51单片机之AD转换
推荐阅读最新更新时间:2024-03-16 15:28
51单片机彩灯控制(包括功能说明、原理及C程序)
/*一、功能说明: 此程序是一款普通的彩灯,它通过电源开关控制四种模式,即关掉电源然后打开电源就可以改变一种模式,它的功能主要有四种模式分别如下: 第一种模式:开机四种颜色以0.5秒速度循环1次,然后在白颜色上停止循环,即显示白光 第二种模式:按下功能键后,它以1秒速度四种颜色不停的循环 第三种模式:当按键按下后它会记住第二种模式的颜色,比如第二种模式现在亮得是绿色,你按下按键时,它会先闪一下,然后在绿颜色上停下来 第四模式:当你再按下开关时,它自动回到模式一下,在模式 三下,当它断电时,可以记住模式三 些产品特点:利用 电源开关切换功能,断电数据保存,起到减小EEPROM擦除 次数.程序部分转自51单片机 www.51h
[单片机]
TFT画出矩形
以51单片机为平台,用TFT画出实心矩形! 以下程序关键在于自己的应用,有多余的经历则可以深入研究! 关键在于用!!! 希望能给大家带来帮助 #include reg52.h #define uint unsigned int #define uchar unsigned char #define TYPE_LCD_DATA 1 #define TYPE_LCD_COMMAND 0 #define LCD_SIZE_X 128 #define LCD_SIZE_Y 160 #define DATA P0 sbit LCD_RST = P2^7; //RST 引脚定义 sbit LCD_RD
[单片机]
基于W78E51单片机的自动拨号器的实现
自动拨号器是一种智能化的报警监控装置,它以单片机为核心器件,利用无线寻呼和程控电话可随时将警情发送给指定的BP机。它配备不同的传感器后,不但可以对有毒气体泄漏、家中被盗等情况进行报警,而且还可对通信设备及电源故障的发生进行告警,可广泛应用于仓库、小型商店、无人值守通信台站的监测以及家庭防盗、煤气报警等。 工作原理 自动拨号器按功能的不同可分为可编码型和简易型两种。可编码型自动拨号器可人为设置、更改BP机号码,使用方便灵活;简易型自动拨号器的BP机号码已写入CPU的程序存储器中,具有成本低廉、稳定可靠的特点,缺点是不能人为更改BP机号码,需通过编程器写入,但成本较可编码型低。以下分别介绍这两种拨号器的工作原理。
[单片机]
51单片机的功能和用法详细介绍
51单片机是一个芯片,内部有n个寄存器,外部长着n个脚,由于51单片机系列种类众多,具体有多少寄存器、长着几个脚要看具体型号。一般来说,在做产品的时候,以够用为原则。 单片机属于数字器件,所以它的引脚只有两种状态,即高低电平,5V的单片机,高电平是5V,低电平是0V;3.3V的单片机,高电平是3.3V,低电平是0V。即高电平的电压等于电源电压。部分单片机内部集成有DAC功能,即数模转换器,把数字量转换成模拟量的模块,带有DAC功能的单片机DAC输出引脚可以输出0到电源电压之间的任何电压值。有些单片机内部集成ADC功能,可以把连接到引脚上的0到电源电压之间的任何电压值转换成数字量存储到单片机内部寄存器。 单片机就是靠着它自身
[单片机]
基于51单片机设计的简易智能机器人
引言 随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成cpu、存储器、定时器/计数器、并行和串行接口、看门狗、前置放大器、a/d转换器、d/a转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。这种技术促使机器人技术也有了突飞猛进的发展,目前人们已经完全可以设计并制造出具有某些特殊功能的简易智能机器人。 1 设计思想与总体方案 1.1 简易智能机器人的设计思想 本机器人能在任意区域内沿引导线行走,自动绕障,在有光源引导的条件下能沿光源行走。同时,能检测埋在地下的金属片,发出声光指示信息,并能实时存储、显示检测到的断点数目以及各断点至起跑线间的距离,最后
[单片机]
51单片机学习笔记———6.中断法配置定时器
#include reg52.h sbit LED P0^4; void main() { EA = 1;//打开总中断 TMOD&=0xFC; TMOD|=0x01; TH0 = (65535-2000)/256;//定时2ms TL0 = (65535-2000)/%256; ET0 = 1; TR0 = 1; while(1) { ... } void interruptTime() interrupt 1 { static unsigned int n = 0; TH0 = (65535-2000)/256; TL0 = (65535-200
[单片机]
51单片机串口通信--SCON方式1
计算机的通信分为:串行通信和并行通信 串行通信分为:异步通信和同步通信 异步通信:发送设备与接受设备有各自的时钟,通信时双方的时钟尽量保持一致, 以字符为单位进行传输, 字符与字符间的时间间隔是任意的, 每个字符中的各位是以固定时间传送的, 异步通信的数据格式:起始位,7位数据,校验位,停止位(这10位数据就是所说的字符,叫1帧数据) 同步通信: 建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。 传输数据的位之间的距离均为“位间隔的整数倍”, 传输的字符间不留间隙,保持位同步和字符同步, 两种方式实现同步:外同步,自同步 外同步:计算机甲控制计算机乙的时钟, 自同步:??? 串行通信的传输方向: 单工:仅
[单片机]
基于51单片机按键控制喇叭发出多种声音
具体实现功能: 51单片机按键控制喇叭发出多种声音。 设计介绍 51单片机简介 51单片是一种低功耗、高性能CMOS-8位微控制器,具有8K可编程Flash存储器,使得其为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 51系列单片机具有以下标准功能: 8k字节Flash,512字节RAM, 32位I/O口线,看门狗定时器, 内置4KB EEPROM, MAX810复位电路, 三个16位定时器/计数器, 一个6向量2级中断结构, 全双工串行口。 另外, 51系列在空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机停止工作,直到下一个中
[单片机]