- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PCF8591芯片的使用
基于PCF8591的AD—DA的程序设计。本设计是通过PCF8591芯片选择通道1将滑动变阻器的电压记过A/D转换,有单片机读回,并在数码管显示,比且有这个数据再经过D/A转换成模拟电压驱动发光二极管。发光二极管的亮度与数码管显示的电压值相对。
1.PCF8591芯片
PCF8591是单片、单电源低功耗8位CMOS数据采集器件,具有4个模拟输入、一个输出和一个串行I2C总线接口。3个地址引脚A0、A1和A2用于编程硬件地址,允许将最多8个器件连接至I2C总线而不需要额外硬件。器件地址、控制和数据通道通过两线双向I2C总线传输。
器件功能包括多路复用模拟量输入、片上跟踪和保持功能、8位模数转换和8位数模转换。最大转换速率取决于I2C总线的最高速率。
我实现的AD转换是使用通道0将滑动变阻器两端的电压
AIN0~AIN3:模拟信号输入端。
A0~A2:引脚地址端。
VDD、VSS:电源端。(2.5~6V)
SDA、SCL:I2C 总线的数据线、时钟线。
OSC:外部时钟输入端,内部时钟输出端。
EXT:内部、外部时钟选择线,使用内部时钟时 EXT 接地。
AGND:模拟信号地。
AOUT:D/A 转换输出端。
VREF:基准电源端。
地址:I2C总线系统中的每一片PCF8591通过发送有效地址到该器件来激活。该地址包括固定部分和可编程部分。可编程部分必须根据地址引脚A0、A1和A2来设置。在I2C总线协议中地址必须是起始条件后作为第一个字节发送。地址字节的最后一位是用于设置以后数据传输方向的读/写位。(见下图)
控制字:发送到PCF8591的第二个字节将被存储在控制寄存器,用于控制器件功能。控制寄存器的高板字节用于允许模拟输出,和将模拟输入编程为单端过查分输入。低半字节选择一个有高板字节定义的模拟输入通道。如果自动增量标志置1,每次A/D转换后通道号将自动增加。
如果自动增量模式是使用内部振荡器的应用中所需要的,那么控制字中模拟输出允许标志应置1。这要求内部振荡器持续运行,因此要防止振荡器启动延时的转换错误结果。模拟输出标志可以在其他时候复位以减少静态功耗。
D/A转换:发送给PCF8591的第三个字节被存储到DAC数据寄存器,并使用片上D/A转换器转换成对应的模拟电压。这个D/A转换器由连接至外部参考电压的具有256个接头的电阻分压电路和选择开关组成。模拟输出电压由自动清零单位增益放大器缓冲。这个缓冲放大器可通过设置控制寄存器的模拟输出允许标志来开户或关闭。在激活状态,输出电压保持到新的数据字节被发送。
A/D转换:A/D转换器采用逐次逼近转换技术。在A/D转换周期将来临时片上D/A抓换器和高增益比较器。一个A/D转换周期总是开始于发送一个有效读模式地址给PCF8591之后。A/D转换周期在应答时钟脉冲的后沿被触发,并在传输前一次转换结果时执行。一旦一个转换周期被触发,所选通道的输入电压采样将保存到芯片被转换为对应的8为二进制码。
2.74HC573芯片
74HC573为八位制3态非反转透明锁存器,具有高性能硅门CMOS器件。管脚图如下:
1脚三态允许控制端低电平有效
D0~D7为数据输入端
/Q0~/Q7为数据输出端
3.74LS138芯片
74LS138为3线—8线译码器,引脚图如下:
工作原理:①当一个选通端(E1)为高电平,另两个选通端((/E2))和/(E3))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。比如:A2A1A0=110时,则Y6输出端输出低电平信号。
②利用 E1、E2和E3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。
③若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。
④可用在8086的译码电路中,扩展内存。
引脚功能:
A~C:地址输入端
STA(G1):选通端
/STB(/G2A)、/STC(/G2B):选通端(低电平有效)
/Y0~/Y7:输出端(低电平有效)
VCC:电源正
GND:地
4.电路图
. 源程序代码
#include reg52.h
#define uchar unsigned char
#define uint unsigned int
#define PCF8591 0x90 //PCF8591 地址
bit write=0; //写24c02的标志
sbit SCL=P1^5; //串行时钟输入端
sbit SDA=P3^6; //串行数据输入端
sbit LS138A=P2^0;//138译码器的3位 控制数码管的
sbit LS138B=P2^1;
sbit LS138C=P2^2;
文档评论(0)