新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 51单片机ADC0804模数转换学习

51单片机ADC0804模数转换学习

作者:时间:2012-08-02来源:网络收藏

数模转换器与单片机连接的原理图:

点击浏览下一页

这TX-1C实验板上的和单片机连接的电路原理图。

左边的是,右边的是74HC573锁存器,锁存器同时又连接了单片机没画出。ADC0804的引脚CSAD是片选引脚,因为是低电平有效所以当

送0时,我们就可以选中它工作了。RD也是低电平有效,是读信号的,WR也是低电平有效,当送0时就可以启动A/D开始转换了。INTR是转换结

束引脚,同样也是低电平有效,当INTR为0时,表示转换结束了。DB0-DB7是转换后的数字信号输出端口。AGND和DGND是接地的。CLK R和

CLK IN(即19和4引脚)是用来给ADC0804产生内部时钟脉冲的(接了一个RC震荡电路)6和7端口是模拟信号的输入端,比如我们滑动电位器就

能使模拟信号发生改变,这样经过A/D转换后,输出的数字信号也就改变了。20引脚是接参考电平的。

下面这个程序是用单片机控制ADC0804进行,当拧动实验板上的电位器(也就是一个滑动变阻器)时,数码管的前三位以十进制方式动态显示A/D转换后的数字量。代码如下:
#include reg52.h> //52系列单片机头文件
#include intrins.h> //因为下面的程序用到了_nop_()函数,因此包含这个头文件
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6; //申明U1锁存器的锁存端
sbit wela=P2^7; //申明U2锁存器的锁存端
sbit adwr=P3^6; //定义AD的WR(写信号)端口
sbit adrd=P3^7; //定义AD的RD(读信号)端口
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delayms(uint); //延时函数声明
void display(uchar,uchar,uchar) //显示函数声明

/*--------------------------核心程序--------------------------------*/
void main()
{

uchar a,A1,A2,A3,adval;
wela=1; //打开位选锁存器,这样就把单片机的P0口与锁存器连通了
P0=0x7f; //这里因为片选 接的是P0口的第7位,P0=0x7f即把第七位置0,片选选定,也即是选定ADC0804工作
wela=0; //关闭位选锁存器


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭