ImageVerifierCode 换一换
格式:PPT , 页数:137 ,大小:2.34MB ,
文档编号:2878397      下载积分:29 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-2878397.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(三亚风情)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(第9章-串行总线接口技术.课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

第9章-串行总线接口技术.课件.ppt

1、12022-6-62022-6-622022-6-63 2022-6-642022-6-652022-6-662022-6-67 2022-6-682022-6-692022-6-6102022-6-6112022-6-612sbit DO = P12sbit CLK = P11sbit CS = P10bdata Unsigned char addata;sbit adin0 = addata 0; unsigned char TLC549 _ad(void) /*A/D转换程序*/ unsigned char i; Clk=0; CS=0; /*令CS为低选中TLC549*/ _nop_(

2、); 2022-6-613for(i=0;i8;i+) /*循环读取8位A/D转换结果*/ CLK =1; /*令CLK引脚为高,产生时钟*/ delay( ); /*延时*/ adin0 =DO; /*读取A/D转换后数据线的一位数据*/ addata = addata 1; /*左移一位,先读取为高位,后读为低位*/ CLK=0; /*令CLK恢复为0*/ _nop_( ); _nop_( ); return addata; /*返回A/D转换值*/void delay ( ) unsigned char i; for(i=0;i20;i+) 2022-6-614 2022-6-61520

3、22-6-6162022-6-617 2022-6-6182022-6-619 2022-6-6202022-6-621 2022-6-622设要转换的数据放在R7R6中,R7为高8位,R6低8位 DIN BIT P1.2 ;引脚定义 CS BIT P1.1 SCLK BIT P1.0 TLC5615_DA:CLR C;将R7R6中数据左移2位(16位数据的最低2位添00) RLC R6 RLC R7 CLR C RLC R6 RLC R7 SETB CS ;初始化片选信号为高 CLR SCLK ;初始化时钟为低 CLR DIN;D/A数据线置低 CLR CS;选中TLC5615,开始启动D/

4、A MOV R5,#16 ;将16位数据从DIN端移进内部的16位移位寄存器2022-6-623 LOOP: RLC R6;R7R6中数据左移一位,最高位进入CY RLC R7 MOV DIN,C;将数据送到DIN引脚 SETB SCLK ; 送时钟 NOPNOPNOPCLR SCLK;NOPNOPNOP DJNZ R5,LOOPSETB CS ;D/A片选拉高,10 位有效数据锁存到DAC寄存器,开始转换 RET 2022-6-624D/A转换C语言程序:sbit DA_clk=P10; /*引脚定义*/sbit DA_ cs=P11; sbit DA_in=P12; void delay_

5、s(unsigned char n) /*延时*/ unsigned char i; for(i=0;in;i+); void TLC5615_DA_conver(unsigned int DA_data) /* D/A转换程序*/ unsigned char i; DA_data = DA_data 2; /*将数据左移2位(最低2位添00) */ DA_cs=1; /*初始化片选信号为高*/ DA_clk=0; /*初始化时钟为低*/ DA_in=0; /*D/A数据线置低*/ DA_cs=0; /*选中TLC5615,开始启动D/A*/ for(i=0;i16;i+) /*将16位数据从

6、DIN端移进内部的16位移位寄存器*/2022-6-625 DA_data = DA_data 1; /*左移一位,最高位进入CY*/ DA_in=CY;/*将数据送到DIN引脚*/ DA_clk=1;delay_s(0 x02); /*送时钟*/ DA_clk=0;delay_s(0 x02); DA_cs=1; / *片选拉高,10 位数据锁存到DAC寄存器,开始转换*/ delay_s(0 x20); 2022-6-626 2022-6-6272022-6-628 2022-6-6292022-6-6302022-6-6312022-6-632 2022-6-6332022-6-634

7、( 2022-6-635 。 2022-6-636SCL BIT P1.1;汇编语言定义端口;汇编语言定义端口SDA BIT P1.0sbit SDA=P10; /C语言定义端口语言定义端口sbit SCL=P11; bit ack; /应答标志位,有应答为应答标志位,有应答为1,无应答为,无应答为0#define DELAY5US _nop_();_nop_();_nop_();_nop_();_nop_(); 2022-6-637汇编语言程序: START:SETB SDA;发送起始条件数据信号SETBSCL;发送起始条件的时钟信号NOPNOPNOPNOPCLR SDA;发送起始信号(SC

8、L为高,SDA发生由高到低)NOPNOPNOPNOPNOPCLRSCLRET 2022-6-638C语言程序:void start( ) SDA=1; /*将SDA、SCL置为1 */ SCL=1; DELAY5US; /*延时5us*/ SDA=0; /*SCL为高时,SDA由高变低*/ DELAY5US; SCL=0; /*SCL变低,准备发送或接收数据 */2022-6-639 汇编语言程序:STOP: CLR SDA ;发送停止条件的数据信号SETB SCL ;发送停止条件的时钟信号NOPNOPNOPNOPNOP SETB SDA ;发送I2C总线停止信号(SCL为高,SDA发生由低到

9、高) NOP NOP NOP NOPCLR SCLCLR SDARET2022-6-640C语言程序:void stop( ) SDA=0; /*将SDA清0, SCL置1 */ SCL=1; DELAY5US; SDA=1; /*当SCL为高电平时,SDA由低变高 */ DELAY5US; SCL=0; 2022-6-641汇编语言程序: MACK: CLR SDA ;发送应答信号MACKSETB SCLNOPNOPNOPNOPNOPCLR SCLSETB SDARET2022-6-642C语言程序:void ack(void) /*产生应答信号*/ SDA=0; /*SDA先清0,发应答信

10、号 */ SCL=1; /*SCL由低变高,产生一个时钟*/ DELAY5US; /*延时5us */ SCL=0; /*SCL变低,以便继续接收*/ SDA=1;2022-6-643汇编语言程序: NACK: SETB SDA ;发送应答信号NACKSETB SCLNOPNOPNOP NOPNOPCLR SCLCLR SDARET2022-6-644C语言程序:void nack(void) SDA=1; /*DA先置1,发非应答信号 */ SCL=1; /*SCL由低变高,产生一个时钟*/ DELAY5US; SCL=0; /*时钟线SCL恢复到低电平*/ SDA=0; 2022-6-64

11、5汇编语言程序(F0=1通信失败): CACK: SETB SDA ;发送应答信号CACKSETB SCLCLR F0MOV C,SDAJNC CENDSETB F0 CEND: CLR SCLRET2022-6-646C语言程序:void cack(void) SDA=1; /*SDA先置1,发非应答信号 */ SCL=1; /*SCL由低变高,产生一个时钟* DELAY5US; ack=0; if(SDA=1) ack=1; SCL=0; /*时钟线SCL恢复到低电平*/2022-6-647 汇编语言程序:;从A中取一个字节数据写向I2C总线WRITE_BYTE: MOV R7,#8;写8

12、位WRITE_LOOP: RLC A ;发送A中数据 MOV SDA,C SETB SCL NOP NOP NOP NOP NOP CLR SCL DJNZ R7,WRITE_LOOP RET2022-6-648C语言程序:/*将指针P指向的一个字节数据发送*/void SendByte(uchar *p) uchar n ,temp; temp =*p; for(n=0;n8;n+) /*一字节为8位,循环8次*/ if(temp &0 x80) SDA=1; /*将数据线SDA置1或清0*/ else SDA=0; NOP SCL=1; /*置SCL为高,通知从机开始接收数据*/ DELA

13、Y5US; SCL=0; /*SCL变低,准备发送下一位数据*/ temp = temp 1; /*准备下一位要发送的数据*/ 2022-6-649;从I2C总线接收一个字节 数据放在A中RDBYTE : MOV R7,#8;写8位RD_LOOP: SETB SDA SETB SCL NOP;延时5s NOP NOP NOP NOP NOP MOV C,SDA ;采样SDA线上的数据到cy MOV A,R2 ;R2为接收数据的缓冲寄存器RLC A ;将cy中的数据左移进A中MOV R2,A ;数据送回缓冲寄存器R2CLR SCLDJNZ R7,RD_LOOPRET2022-6-650C语言程序

14、:/*接收一个字节数据放在P指向单元*/uchar RcvByte (uchar *P ) uchar n,temp; for(n=0;n8;n+) /*一字节为8位,循环8次*/ SDA=1; /*置数据线SDA为高,进入接收方式*/ SCL=1; /*SCL由低变高,产生一个时钟*/ DELAY5US; temp= temp1; if(SDA=1) temp= temp0X01 ELSE temp= temp&0 xfe; SCL=0; /*时钟线SCL清0*/ *p= temp;2022-6-6512022-6-652WNBYTE:MOV A,R3; LCALL START LCALL

15、WRITE_BYTE LCALL CACK JB F0,WRBYTE MOV A,R2LCALL WRITE_BYTE LCALL CACKJB F0,WRBYTEWRDA: MOV A,R0LCALL WRITE_BYTE LCALL CACKJB F0,WRBYTEINC R0DJNZ R7,WRDALCALL STOPRET 2022-6-6532022-6-6542022-6-655汇编语言程序:;多字节读操作子程序RNBYTE;入口参数:R7写入的字节数,R0写入数据的首地址, R2从器件地址内部地址,R3从器件写地址,R4从器件读地址RNBYTE:LCALL STARTMOV A,

16、R3 ;取从器件写地址LCALL WRITE_BYTE;写从器件地址LCALL CACK ;检测应答信号JB F0,RNBYTE;无应答重新开始MOV A,R2 ;取从器件地址内部地址LCALL WRITE_BYTELCALL CACKJB F0,RNBYTELCALL START2022-6-656MOV A,R4 ;取从器件读地址LCALL WRITE_BYTELCALL CACKJB F0,RNBYTERDN:LCALL RDBYTE ;接收一个字节数据MOV R0,ADJNZ R7,ACKLCALL MNACK ;接收完发非应答信号LCALL STOPACK:LCALL MACK ;没

17、接收完发应答信号INC R0SJMP RDN2022-6-657C语言程序:/*多字节读操作子程序RNBYTE/*入口参数:n写入的字节数,s0读数据存放的首地址,s2从器件地址内部地址,s3从器件写地址,s4从器件读地址*/viod Rcvnbyte(uchar *s3,uchar *s4, uchar *s2, uchar *s0, uchar n) loop:start( ); /*发起始信号,启动总线*/ SendByte(s3); /*发送从器件地址*/ Cack( ); /*应答检测*/ if(ack) /*如果没能应答,重新开始 */ goto loop SendByte(s2)

18、; /*发送器件子地址*/ Cack( ); /*应答检测*/ if(ack) /*如果没能应答,重新开始 */ goto loop2022-6-658 start( ); /*再次发起始信号*/ SendByte(s4); /*sla+1表示进行读操作*/ cack( ); /*应答检测*/ if(ack) /*如果没能应答,重新开始 */ goto loop for(i=0;in-1;i+) /*对前n-1个字节发应答信号*/ RcvByte(s0); /*接收数据*/ ack( ); /*发送应答信号*/ s+; RcvByte(s0); /*接收最后一个字节*/ nack( ); /*

19、发送非应答信号*/ stop( ); /*发结束信号,结束本次数据传送*/ 2022-6-659 2022-6-6602022-6-661 2022-6-6622022-6-663 2022-6-6642022-6-6652022-6-6662022-6-667) 2022-6-668引脚序号引脚名称功能描述1SC/KR2数码管c段/键盘行信号22SD/KR3数码管d段/键盘行信号33DIG3/KC3数码管位选信号3/键盘列信号34DIG2/KC2数码管位选信号2/键盘列信号25DIG1/KC1数码管位选信号1/键盘列信号16DIG0/KC0数码管位选信号0/键盘列信号07SE/KR4数码管e

20、段/键盘行信号48SF/KR5数码管f段/键盘行信号59SG/KR6数码管g段/键盘行信号610DP/KR7数码管dp段/键盘行信号711GND接地12DIG6/KC6数码管位选信号6/键盘列信号62022-6-669引脚序号引脚名称功能描述13DIG7/KC7数码管位选信号7/键盘列信号714/INT键盘中断请求信号,低电平(下降沿)有效15/RST复位信号,低电平有效16Vcc电源,+3.35.5V17OSC1晶振输入信号18OSC2晶振输出信号19SCLI2C总线时钟信号20SDAI2C总线数据信号21DIG5/KC5数码管位选信号5/键盘列信号522DIG4/KC4数码管位选信号4/键

21、盘列信号423SA/KR0数码管a段/键盘行信号024SB/KR1数码管b段/键盘行信号12022-6-6702022-6-6712022-6-6722022-6-6732022-6-6742022-6-6752022-6-6762022-6-6772022-6-678 2022-6-679 2022-6-6802022-6-681d4d3d2d1d0(二进制)d4d3d2d1d0(十进制)显示结果0100109H9010100AHA010110BHb011000CHC01101ODHd01110OEHE01111OFHF1000010HG1000111HH2022-6-6821100119H

22、t2022-6-683d4d3d2d1d0(二进制)d4d3d2d1d0(十进制)显示结果110101AHU110111BHy111001CHc111011DHh111101EHT111111FH(无显示)2022-6-684 2022-6-685在8个数码管上从左到右显示”20100725”,参考程序清单如下:SDABIT P1.0SCL BIT P1.1WSLA EQU 070H;ZLG7290器件的写地址RSLA EQU 071H;ZLG7290器件的读地址 ORG0000H LJMP 0100H ORG0100H ;主程序START: MOV30H,#02H;变量缓冲区定义显示“201

23、00725”MOV31H,#00H;MOV32H,#01H;MOV33H,#00HMOV34H,#00H2022-6-686MOV35H,#07HMOV36H,#02HMOV37H,#05HMOVDPTR,#LEDSEG ;数据指针指向字型码表首地址CLRAMOVR7,#08HMOVR0,#40HMOVR1,#30HLOOP1: MOVA,R1 ;从变量缓冲区取出要形式的数字MOVCA,A+DPTR ;查表得字型码MOVR0,A ;将字型码存储到40H开始的单元中INCR1INCR0DJNZ R7,LOOP12022-6-687LOOP:MOVR7,#08HMOVR0,#40H ;字型码首地址

24、送R0MOVR2,#10H ;ZLG7290内部显示缓冲区首地址送R2MOVR3,#WSLA ;ZLG7290器件的写地址送R3LCALL WRNBYT ;调用显示子程序LCALL DELAYSJMP LOOP LEDSEG: DB 0FCH,60H,0DAH,0F2H,66H,0B8H,0BEH,0E4H ;0-F共阴字型码表 DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH DELAY: MOV R5,#00H ;延时子程序 DELAY1: MOV R6,#00H DJNZ R6,$ DJNZ R5,DELAY1 RET END2022-6-688上述调用的相关的

25、I2C子程序(WRNBYT,WRBYT,STOP,CACK,START)参见9.2.2节的内容。采用C语言编写的参考程序#include “reg51.h”#include “intrins.h”#define DEPLAY5US _nop_( ); _nop_( ); _nop_( ); _nop_( ); _nop_( ); sbit SDA=P10;sbit SCL=P11;#define WSLA0 0 x70#define RSLA0 0 x71#define uchar unsigned charvoid STA(void);void STOP(void);void CACK(vo

26、id);2022-6-689void Sendbyte (unsigned char *p);void Sendnbyte(uchar *s3,uchar *s2,uchar *s0,uchar n);void DELAY();void main() uchar n,i,m,*c,*y,*x,wsubsla=0 x10,WSLA=WSLA0; uchar a8=2,0,1,0,0,7,2,5; /*显示字符*/ uchar b8 ; /*存放显示字符对应的字型码*/ uchar zxm16=0 xfc,0 x60,0 xda,0 xf2,0 x60,0 xda,0 xf2,0 x66,0 xb

27、e,0 xe4, 0 xfe,0 xf6,0 xee,0 x3e,0 x9c,0 x7a, 0 x9e,0 x8e; /*0-F的字型码 */ for(i=0;i8;i+) m=ai; /*取当前显示字符*/ bi=zxmm /*查得显示字符的字型码 */2022-6-690while(1) x=&WSLA; /* 取ZLG7290器件的写地址*/ c=&wsubsla; /* 取ZLG7290器件的内部显示缓冲寄存器的地址*/ y=b; /*获得显示字符的字型码地址 */ n=8; Sendnbyte (x,c,y,n); /*调用写多字节的显示子程序*/ DELAY( ); void DE

28、LAY( ) unsigned char i,j; for(i=0;i100;i+) for(j=0;j100;j+); 2022-6-691上述程序调用的相关的I2C子程序(Sendbyte ( )、Sendnbyte( )、Stare( )、stop( )、ack( )、nack( )、cack( )参见9.2.2的内容。SDA BITP1.0SCLBITP1.1WSLAEQU070H ; ZLG7290器件的写地址RSLAEQU071H ; ZLG7290器件的读地址ORG 0000HLJMP0100HORG0003H ;中断入口LJMP INT_7290 ;键盘中断服务ORG 0100

29、H2022-6-692START:MOV SP,#60HSETB EA ;开INT0中断SETB EX0SETB IT0 ;触发极性为下降沿MOV30H,#0DH ; 变量缓冲区(存放显示字符在字型码表中的偏移地址)MOV31H,#10HMOV32H,#11HMOV 33H,#10HMOV34H,#02H MOV 35H,#13H; MOV36H,#13H;MOV37H,#13H; ;通过查表建立显示缓冲区(40H-47H)2022-6-693MOV DPTR,#LEDSEG ;开始对变量查表MOVR7,#8 ;写入数据个数MOVR0,#30H;源数据块首地址MOVR1,#40H ;当前字符字

30、形码表显示缓冲区LOOP1:MOVA,R0MOVC A,A+DPTR ;查表得对应的字形码MOV R1,A ;送显示缓冲区INCR1INCR0DJNZ R7,LOOP1;向7290B写入数据,以显示“data= XX ”,最后两位为键值的十进制显示2022-6-694LOOP: MOVR7,#8 MOV R2,#10H ;ZLG7290器件的内部显示缓冲寄存器的地址 MOV R3,#WSLA ; ZLG7290器件的写地址送R2 MOV R0,#40H ;当前字符字形码表显示缓冲区地址送R0 LCALL WRNBYT ;调显示子程序 LCALL DELAY ;使显示稳定 SJMP LOOPLE

31、DSEG:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E4H ;0-7的字形码 DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH ;8-F的字形码 DB 0FAH,1EH,12H,00H;a,t,=和熄灭码CF:PUSH 02H ;将A中的数据拆分为两个四位16进制数并查表2022-6-695 PUSH DPH;PUSH DPLMOVDPTR,#LEDSEGMOVR2,AANLA,#0FHMOVCA,A+DPTRMOVR3,AMOVA,R2SWAPAANLA,#0FHMOVCA,A+DPTRMOV R4,APOPDPLPOPDPHPOP0

32、2HRET2022-6-696;中断服务程序INT_7290:(读取健值、拆分并转换成字型码更新46H和47H单元内容,以便刷新显示)INT_7290:NOP PUSH 00HPUSH 02HPUSH 03HPUSH 04HPUSH 07HPUSH ACCPUSH PSWMOVR0,#20H;状态数据区首址MOVR7,#04H;取状态数据个数MOVR2,#00H;内部数据首地址2022-6-697 MOVR3,#WSLA ;取器件地址(写) MOVR4,#RSLA ;取器件地址(读) LCALL RNBYTE ;读出7290的4个寄存器(地址为00H03H)数据存于20H-23H NOP MO

33、VA,21H ;取21H单元的键值 LCALL CF;拆分、查表 MOV47H,R3 ;送显示缓冲区(最低两位数码管的字型码在46H、47H中) MOV46H,R4 POP PSW POPACC POP07H POP04H 2022-6-698 POP 03H POP 02H POP 00H RETI DELAY: MOV R6,#00H DELAY 1:MOV R5,#00H DJNZ R5,$ DJNZ R6,DELAY1 RET END相关的I2C子程序(WRNBYT、RNBYTE、WRBYT、STOP、CACK、STA),参见9.2.2的内容。2022-6-699采用C语言编写的参考程

34、序#include “reg51.h”#include “intrins.h”#define DELAY5US _nop_();_nop()_;_nop_();_nop()_;_nop_();sbit SDA=P10;sbit SCL=P11;#define unsigned char uchar#define WSLA1 0 x70; /*7290器件地址*/#define RSLA1 0 x71;void start(void); /*函数声明*/void stop(void);void mack(void);2022-6-6100void nmack(void);void cack(vo

35、id);void Sendbyte (unsigned char *p);void Rcvbyte (unsigned char *p);void Sendnbyte (unsigned char *s3, unsigned char *s2, unsigned char *s0, unsigned char n);void Rcvnbyte (unsigned char *s3, unsigned char *s4, unsigned char *s2, unsigned char *s0,unsigned char n);uchar zxm8;uchar code b20=0 xfc,0

36、x60,0 xda,0 xf2,0 x66,0 xb6,0 xde,0 xe4,0 xfe,0 xf6,0 xee,0 x3e,0 x9c,0 x7a,0 x9e,0 x8e,0 xfa,0 x1e,0 x12,0 x00;/*0-F字型码,最后4个依次为a,t,=和熄灭的字型码*/2022-6-6101void DELAY();void main() uchar n,i,*c,*y,*x,wsubsa=0 x10,WSLA=WSLA1; uchar a8= 0 x0d,0 x10, 0 x11, 0 x10,0 x12,0 x13,0 x13,0 x13;/*变量缓冲区(存放显示字符在字型码

37、表中的偏移地址)*/ for(i=0;i4; i=i&0 x0f; zxm6=bi;2022-6-6103void DELAY() unsigned char i,j; for(i=0;i100;i+) for(j=0;j0;i-) /*循环写8位(先低位,后高位)*/ DQ=0; /*产生15us的负脉冲*/ delay(1); DQ=data&0 x01; /*将当前数据位送数据线*/ data=data1; /*将下一位数据移到最低位*/ delay(5); /*延时60us*/ DQ=1; /*数据线拉高,为写入下一位做准备*/ delay(1); 2022-6-61222022-6-

38、6123汇编语言程序:DQ BIT P1.0 DELAY15US:MOV R7,#07H DJNZ R7,$ RET DELAY60US:MOV R7,#1EH DJNZ R7,$ RET READ_BYTE:MOV R7,#08H ;读DS18B20的一个字节并放在累加器A中 SETB DQ NOP NOP2022-6-6124LOOP:CLR DQ NOPNOPNOPSETB DQCALLDELAY15USMOV C,DQ ;读取数据放入CYCALLDELAY60USRRC A ;读出的数据右移进累加器A中SETB DQCALL DELAY15USDJNZ R7,LOOPCALL DELA

39、Y60USRET2022-6-6125C语言程序:Sbit DQ=P10;unsigned char bdata datSbit dat7=dat7;void delay(unsigned int i) unsigned int j;for (j=i;j0;j-);2022-6-6126unsigned char rdbyte(void) unsigned char i; dat=0; /*读出数据初值为0*/ for(i=8;i0;i-) /*循环读8位(先低位,后高位)*/ DQ=0; /*产生1us的负脉冲*/ _nop_(); DQ=1;/*数据总线拉高,延时15us*/ delay(

40、1); dat7=DQ; /*读取数据*/ delay(4); /*延时60us */ dat=dat1; /*读出数据右移一位*/ DQ =1; /* 数据线拉高,为写入下一位做准备*/ _nop_(); return(dat);2022-6-61272022-6-61282022-6-61292022-6-61302022-6-61312022-6-6132温度值(温度值()输出二进制码输出二进制码十六进制表示十六进制表示+125+1250000 0111 1101 00000000 0111 1101 000007D0H07D0H+25.75+25.750000 0001 1001 11000000 0001 1001 1100019CH019CH2022-6-6133 2022-6-61342022-6-61352022-6-61362022-6-6137

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|