下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PCF8591 读写程序(一)、PCF85911、引脚说明ANI0ANI3为模拟信号输入端,不使用的输入端应接地A0A2地址输入端GND 、VCC地和电源端( +5V )SDA为 I2C 数据输入与输出端SCL为 I2C 时钟输入端EXT内外部时钟选择端,使用内部时钟时接地,使用外部时钟时接+5VOSC外部时钟输入、内部时钟输出端,不使用时应悬空AGND VREF AOUT模拟信号地基准电压输入端D/A 转换后的电压输出端2、功能说明PCF8591 是具有 I2C 总线接口的8 位 A/D 及 D/A 转换器,具有4 路 A/D 输入, 1 路 D/A 输出。 PCF8591 采用典型的I2C
2、 总线接口器件寻址方法,即总线地址由器件地址( 1001)、引脚地址(由 A0A2 接地或 +5V 来确定,接地代表0;接 +5V 代表 1)、方向位(即R/W )组成。因此,在I2C 总线系统中最多可接8 个这样的器件。D7D6D5D4D3D2D1D01001A2A1A0R/WR/W=1 表示读操作, R/W=0 表示写操作。本例将A0A2 接地,则读地址为91H ;写地址为90H。地址字节:由器件地址、引脚地址、方向位组成,它是通信时主机发送的第一字节数据。控制字节:用于控制 PCF8951 的输入方式、输入通道、 D/A 转换等,是通信时主机发送的第二字节数据,其格式如下:D7D6D5D
3、4D3D2D1D0D/A 输A/D 输入方式选择自动增AD通道选择位出允许位 00: 4 路单端输益选择00:选择通道 0未用位 0入 01 :3 路差分未用位 001:选择通道 1(写 0)为禁止输入10 :单端与(写 0)为禁用10:选择通道 21 为允差分11 :2 路差1 为启11:选择通道 3许分输入用A/D 输入方式选择说明:3、通信格式第一字节写入器件地址(90H)向第二字节写入控制字节PCF8591写入格式(高位在前)第三字节要写入的数据第一字节写入器件地址 (90H 写)第二字节第三字节写入控制字节写入器件地址 (91H 读)从 PCF8591读数据格式(高位在前)第四字节读
4、出一字节数据(二)、 I2C 总线1、 I2C 总线数据位的传输它通过 2 根线:串行数据线(SDA )和串行时钟线(SCL )组成。连接到总线上的每一个器件都有一个唯一的地址,而且都可以作为一个发生器或接收器,SDA 和 SCL 都是双向线路, 分别通过一个电阻连接到电源( +5V )端。前提是连接到总线上的器件的SDA 和 SCL 端必须是漏极或集电极开路型。I2C 总线上的数据传输速率在标准模式下可达100Kb/s ,快速模式可达400Kb/s, 高速模式下可达3.4Mb/s 。连接到总线的器件数量只由总线的电容( 400PF)限制决定。I2C 总线上每传输一个数据位必须产生一个时钟脉冲
5、,I2C 总线上数据传输的有效性要求SDA 线上的数据必须在时钟线SCL 的高电平期间保存稳定,数据线的改变只能在时钟线为低电平期间。在标准模式下,高低电平宽度必须大于4.7us(即每次时钟线需延时4.7us 后才能改变) 。2、 I2C 总线数据的传输数据传输的字节格式发送到 SDA 线上的每一个字节必须为 8 位,每次发送的字节数量不受限制,从机在接收完一个字节后向主机发送一个应答位,主机在收到从机应答后才会发送第二字节数据,发送数据时先发数据的最高位。数据传输中的应答相应的应答位由接收方(从机)产生,在应答的时钟脉冲期间,发送方(主机)应释放SDA 线(使其为高电平)。在应答过程中,接收
6、方(从机)必须将数据线SDA 拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。3、 I2C 总线的传输协议寻址字节主机产生起始条件后, 发送的第一字节为寻址字节,该字节的前 7 位为从机地址, 最低位决定了传输的方向,该最低位为“ 0”表示主机写数据到从机, “ 1”表示主机从从机中读数据。从机地址由一个固定的部分(如高4位 1001)和可编程部分(如低 3 位 A0A2 )及一个方向位( R/W )组成。传输格式主机产生起始条件后, 首先发送一个寻址字节, 收到从机应答后,接着就传输数据, 数据传输一般由主机产生的停止位终止。 但如果主机仍希望在总线上通信,则它可以产生重复起始条件和寻
7、址另一个从机,而不必产生一个停止条件。主机写数据到从机的通信格式如下:1234567NN-1主机产发从机等待从发送数等待从发送数等待从生起始地址。停止位机应答据机应答据机应答位90H主机从从机中读数据的通信格式如下:1234567NN-1主机产发从机等待从接收从向从机接收从向从机主机产生起始地址机发出机发出。生停止机应答应答应答位91H的数据的数据位原理图如下:汇编源代码如下:;/本测试程序将AIN0 通道的模拟电压进行A/D 转换后,将数字量通过LED 数码管显示出来,同时再将该数字;/量写入 PCF8591 ACK BIT 20H.0中,通过其内部的D/A; 应答标志位ACK=0转换为模拟
8、电压输出驱动表示无应答LED发光二极管。SCL BIT P1.0 SDA BIT P1.1 WADD EQU 21H;时钟线;数据线; 器件地址(即从地址)SUBD EQU 22H NUMBR EQU 23H NUMBW EQU 24H;器件内部地址(即子地址);需读取的字节数;需写入的字节数RDATA EQU 25H WDATA EQU 26H;读出数据的存放首地址;写入数据的存放首地址ORG 0000HSJMP MAINORG 0030HMAIN: MOV WADD,#90H;写入PCF8591的地址MOV P0,#0FFH; 关闭显示MOV P2,#0FFHMOV SUBD,#40H;写
9、入 PCF8591 的控制字MOV NUMBR,#1; 写入需读取的字节数MOV NUMBW,#1; 写入需写入的字节数MOV RDA TA,#30H;送入首地址MOV WDATA,#40H;送入首地址MOV 50H,#0; 显示的百位清零MOV 51H,#0; 显示的十位清零MOV 52H,#0; 显示的个位清零M1: LCALL READI2C;读 PCF8591 子程序MOV 40H,30HMOV NUMBR,#1MOV NUMBW,#1LCALL DATLCALL DISPLAYLCALL WRITEI2C;写 PCF8591 子程序SJMP M1;数据处理子程序DAT: MOV A,
10、30HMOV B,#100DIV ABMOV 50H,AMOV A,#10XCH A,BDIV ABMOV 51H,AMOV 52H,BRET;显示子程序DISPLAY: MOV DPTR,#TABMOV A,50HMOVC A,A+DPTRMOV P0,AMOV P2,#01HLCALL TIM2MSMOV A,51HMOVC A,A+DPTRMOV P0,AMOV P2,#02HLCALL TIM2MSMOV A,52HMOVC A,A+DPTRMOV P0,AMOV P2,#04HLCALL TIM2MSRET;2ms 延时子程序TIM2MS: MOV R6,#2TIM1: MOV R5
11、,#250TIM2: NOPNOPDJNZ R5,TIM2DJNZ R6,TIM1RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH,8CH,0C6H,0C7H,86H,0FFH; 共阳数码管;从 I2C 总线读取N 个字节数据子程序READI2C: LCALL STARTI2C;启动 I2C 总线MOV A,W ADD; 送入器件地址LCALL WI2C;向 I2C 总线发送一个字节数据子程序LCALL RACK;读取从机应答位子程序JNB ACK,ROUT;判断从机有无应答 ACK=0 则无应答MOV A,SUBD;送入
12、器件内部地址LCALL WI2CLCALL RACKLCALL STARTI2CMOV A,W ADDINC A;改总线为读取状态LCALL WI2CLCALL RACKJNB ACK,READI2CMOV R0,RDATA;送入读出数据的存放首地址RI2C2: LCALL RI2CMOV R0,ADJNZ NUMBR,RI2C1;判断字节读取完否LCALL NMACK;调主机非应答子程序ROUT: LCALL STOPI2C;调 I2C 总线停止子程序MOV RDA TA,#30HRETRI2C1: LCALL MACK;调主机应答子程序INC R0SJMP RI2C2;向 I2C 总线发送
13、 N 个字节数据子程序WRITEI2C: LCALL STARTI2C;启动 I2C 总线MOV A,W ADD;送入器件地址LCALL WI2C LCALL RACK JNB ACK,WOUT;向 I2C 总线发送一个字节数据子程序;读取从机应答位子程序; 判断从机有无应答ACK=0 则无应答MOV A,SUBD;送入器件内部地址LCALL WI2CLCALL RACKJNB ACK,WOUTMOV R0,WDA TA;送入写入数据的存放首地址WI2C1: MOV A,R0LCALL WI2CLCALL RACKJNB ACK,WRITEI2CINC R0DJNZ NUMBW,WI2CWOU
14、T: LCALL STOPI2CMOV WDATA,#40HRET;I2C 总线启动子程序STARTI2C: SETB SDASETB SCLNOPNOPNOPNOPNOPCLR SDANOPNOPNOPNOPNOPCLR SCLRET;I2C 总线停止子程序STOPI2C: CLR SDASETB SCLNOPNOPNOPNOPNOPSETB SDARET;主机应答子程序MACK: CLR SDASETB SCLNOPNOPNOPNOPNOPCLR SCLRET;主机非应答子程序NMACK: SETB SDASETB SCLNOPNOPNOPNOPNOPCLR SCLRET;向 I2C 总线发送一个字节数据子程序WI2C: MOV R7,#8WLP: RLC AMOV SDA,CNOPSETB SCLNOPNOPNOPNOPNOPCLR SCLDJNZ R7,WLPRET;从
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工现场特种作业票填写规范与指导培训
- 液化气槽车泄漏火灾应急处置全流程培训
- 广西桂林市2027届三年级数学第一学期期末预测试题含解析
- 2026年AI珠宝设计软件赋能珠宝主题博物馆设计开发
- 运动教员理论考试题及答案
- 江西省宜春市樟树市2026-2027学年数学四上期末综合测试模拟试题含解析
- 某塑料厂工资管理制度
- 长春历史会考试题及答案
- 2025年暖通技术(地暖安装)试题及答案
- 教育培训机构课程顾问家长满意度绩效评定表
- 第一至三单元质量检测卷2026-2027学年统编版语文八年级上册
- 2026年下半年幼儿园教师资格证《保教知识与能力》真题试卷
- 宁德时代笔试题及答案
- 2026年教育政策理论测试题及答案
- DL∕T 1342-2014 电气接地工程用材料及连接件
- 个人宾馆转让合同
- 《JGJT473-2019建筑金属围护系统工程技术标准》贯标培训资料
- 华东师大版八年级数学上册知识点总结
- 主动脉夹层护理查房ppt
- MT 654-1997煤矿用带式输送机安全规范
- GB/T 531.1-2008硫化橡胶或热塑性橡胶压入硬度试验方法第1部分:邵氏硬度计法(邵尔硬度)
评论
0/150
提交评论