第9章STC89C52单片机IO扩展与设计要点分析.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(4)指令集见表9-8: 注意: 在连续转换模式中,一个停止转换指令将停止连续转换,而重新启动必须发启动指令。 在单一模式中,每一次温度读取必须发一次启动转换指令。   (5)配置寄存器 配置寄存器描述如表9-9所示: DONE:转换完成位。 “1”为转换完成,“0” 为转换进行中 THF:温度高标志位。当温度高于或等于TH寄存器中设定值时THF值变为“1”. 当THF为1后,即使温度降到TH寄存器值以下,THF值保持为1。可以通过写入0或断开电源来清除这个标志。 TLF:温度低标志位。当温度小于或等于TL寄存器中设定值时TLF变为1.当TLF为1后,即使温度升高到TL寄存器值以上,TLF值仍保持为1。可以通过写入0或断开电源来清除这个标志。 NVB:非易失性存储器忙标志位。值1表示忙,正在向存储器中写入数据,值0表示存储器不忙,写入存储器需要时间为10ms。 POL:输出极性位。值1为高电平激活,值0为低电平激活,这位是非易失性的。 1SHOT:DS1621温度转换模式位。值1为单个模式,当DS1621收到启动转换指令后将执行一次温度转换。值0为连续模式,收到转换指令后连续执行温度转换,这位是非易失性。 返回 2. 单片机与DS1621接口电路分析: (1)器件地址: DS1621的器件地址格式为1001A2A1A0 ,通过A2A1A0编码一次可控制最多8片DS1621完成8处温度采样,在图9-28接口电路中,DS1621的A2A1A0=001则此处器件读地址为93H,写地址为92H。 (2)配置寄存器: 据据表9-9所示知:若单次温度转换,则配置值为09H,而连续温度转换,则配置值为08H,低电平激活。 (3)软件设计分析: 根据图9-30的2线与DS1621串行通信自上向下时序图,我们可以编写5个常用通信子程序,子程序功能(子程序名)分别为:发送单独命令(standalone)例如发送启动/终止命令;写单字节寄存器(Wone_byte)例如:写配置寄存器;写双字节寄存器(Wtwo_byte),例如写TH、TL温度;读单字节寄存器(read_one_byte)例如读配置、读斜率、读计数器;读双字节寄存器(read_two_byte)例如读温度。 仔细观察图9-30发现,以上5个常用子程序可以由IIC总线的起始信号S、终止信号P、发送应答位ACK、发送非应答位NACK、发送1字节数据子程序和接收1字节数据通用子程序来组成,即由START、STOP、ACK、NACK、W1BYTE、R1BYTE子程序组成,这些通用子程序在本章节IIC串行扩展设计已有详细叙述,此处不赘述,只给出子程序名。 3. 程序框图  主程序功能为:初始化DS1621:配置DS1621,设置高、低温值(是否设置根据需要定,此处不设置),启动温度转换,读取温度转换值。为了直观观察温度变化,我们使用4位数码管来显示温度值,因此,需将采集来的9位十六进制补码调整为习惯BCD码送显示缓冲区,最后调数码管显示子程序,主程序框图如图9-31所示。   程序清单:   (1)汇编语言程序清单 ;文件名:DS1621.A51,实现功能:数据采集与显示 ORG 0000H SCL BIT P1.3 ;时钟线 SDA BIT P1.2 ;数据线 WADDRESS_BYTE EQU 92H ;DS1621写地址 RADDRESS_BYTE EQU 93H ;DS1621读地址 COMMAND_BYTE EQU 70H ;命令字节 DATA_BYTE EQU 71H ;数据字节 MSBYTE EQU 72H ;温度高字节存储单元 LSBYTE EQU 73H ;温度低字节存储单元   MAIN:MOV MSBYTE,#00H ;温度高字节存储单元清0 MOV LSBYTE,#00H ;温度低字节存储单元清0 MOV COMMAND_BYTE,#0ACH;发送配置DS1621指令到命令字节 MOV DATA_BYTE,#08H ;设置DS1621为连续转换模式, LCALL Wone_byte ;配置DS1621 MOV COMMAND_BYTE,# 0EEH ;送启动指令到命令字节 LCALL standalone ;发送启动温度转换 MOV COMMAND_BYTE,#0AAH ;送读温度指令到命令字 MAIN1:LCALL read_two_byte ;发送读取温度值 LCALL DATA1 ;调用BCD码调整并送显示缓冲区 LCALL DISPLAY ;调用数码管显示子程序

文档评论(0)

挺进公司 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档