单片机串行扩展.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机串行扩展

3)与单片机的接口 取反 目的是双向传输数据 片选 1,读入数据;0操作码、地址、数据进入C46 二、 串行扩展I/O口 1、 利用SPI扩展I/O口 (1)? 扩展并行输出口 (2) 扩展并行输入口 2、利用I2C扩展I/O口 (1)PCF8574是一种CMOS电路,具有I2C接口和8位准双向口。它在I2C总线中仅作从器件。具有低的电流损耗,具有中断逻辑线。3只硬件地址引脚最多挂接8个PCF8574。 SDA:串行数据线,双向 SCL:串行时钟线,输入 P7~P0:8位准双向口。上电复位为高电平。在做输入时,应置高电平。 A0~A2:地址输入线 /INT:中断输出,低电平有效 (2)PCF8574的寻址方式及操作 控制字节和器件寻址 读,写 应答 开始信号 控制字节 选中某一片 (a)为PCF8574器件控制字节,(b)为PCF8474A控制字节 读操作 写操作 (3)PCF8574应用和编程 作扩展8位输入口 A0,A1,A2接地了 扩展8位输出口 输出显示 A0,A1,A2接地了 作扩展4位输入和4位输出口。 中断悬空 输入开关量 输出显示 TLC549是美国德州仪器公司生产的8位串行A/D转换器芯片,通过SPI接口与单片机连接,从CLK输入的频率最高可达1.1MHz。 1、8位串行A/D转换器TLC549 TLC549具有4MHz的片内系统时钟,片内具有采样保持电路,A/D转换时间最长17μs,最高转换速率为40000次/s。 TLC549的电源范围为+3V ~ +6V,功耗小于15Mw,总失调误差最大为±0.5LSB,适用于电池供电的便携式仪表及低成本高性能的系统中。 三、 串行扩展A/D、D/A等 REF+:正基准电压输入端,  2.5V≤REF+≤VCC+0.1V。 (1)、引脚功能 REF-:负基准电压输入端, -0.1V≤REF-≤2.5V,且要求REF+ - REF-≥1V。 在要求不高时,也可将REF-接地,REF+接VCC。 AIN:模拟信号输入端,0≤AIN≤VCC,当AIN≥REF+时,转换结果为全1(FFH),AIN≤REF-时,转换结果为全“0”(00H)。 /CS:芯片选择输入端,低电平有效。 DO:数据串行输出端,输出时高位在前,低位在后。 CLK:外部时钟输入端,最高频率可达1.1MHz。 (2)、TLC549的时序 当/CS变为低电平时,TLC549芯片被选中,同时前次转换结果的最高有效位MSB(A7)自DO端输出; 接着自CLK端输入8个外部时钟信号,前7个CLK信号是配合TLC549输出上次转换结果的A6-A0 7位,并为本次转换做准备: 在第4个CLK信号由高至低的跳变之后,片内采样/保持电路对输入模拟量采样开始,第8个CLK信号的下降沿使片内采样/保持电路进入保持状态并启动A/D开始转换。 转换时间为36个系统时钟周期,最大为17uS。A/D转换完成前的这段时间内,TLC549的控制逻辑要求:或者/CS保持高电平,或者CLK时钟端保持36个系统时钟周期的低电平。 由此可见,在TLC549的CLK端输入8个外部时钟信号期间需要完成以下工作:读入前次A/D转换结果;对本次转换的输入模拟信号采样并保持;启动本次A/D转换。 利用TLC549转换器设计一个简易数字电压表,用4位LED显示器将被测电压显示出来。 将TLC549的/CS、CLK、DO接到单片机的三条I/O口线, REF+、REF-直接接到Vcc、GND,模拟输入AIN接电位器的中心抽头,调节电位器即可改变被测输入电压值。 sbit CLK = P1^1 ;//时钟 sbit DO = P1^2 ;//数据输出 sbit CS = P1^0 ;// 片选信号 uchar TLC549_ADC(void) { uchar i, tmp; CS = 1; CLK = 0; CS = 0; _nop_(); _nop_(); for(i = 0; i 8; i++) { tmp = 1; tmp |= DO; CLK = 1; _nop_(); CLK = 0; } CS = 1; for(i = 17; i != 0; i--) _nop_(); return (tmp); } CS BIT P1.0 CLOCK BIT P1.1 DO BIT P1.2 MEM EQU 3

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档