654523978课程设计(论文)基于单片机的DS18B20数字温度传感器设计.doc

上传人:文库蛋蛋多 文档编号:4146179 上传时间:2023-04-07 格式:DOC 页数:42 大小:1.39MB
返回 下载 相关 举报
654523978课程设计(论文)基于单片机的DS18B20数字温度传感器设计.doc_第1页
第1页 / 共42页
654523978课程设计(论文)基于单片机的DS18B20数字温度传感器设计.doc_第2页
第2页 / 共42页
654523978课程设计(论文)基于单片机的DS18B20数字温度传感器设计.doc_第3页
第3页 / 共42页
654523978课程设计(论文)基于单片机的DS18B20数字温度传感器设计.doc_第4页
第4页 / 共42页
654523978课程设计(论文)基于单片机的DS18B20数字温度传感器设计.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《654523978课程设计(论文)基于单片机的DS18B20数字温度传感器设计.doc》由会员分享,可在线阅读,更多相关《654523978课程设计(论文)基于单片机的DS18B20数字温度传感器设计.doc(42页珍藏版)》请在三一办公上搜索。

1、摘 要利用DS18B20温度传感器与89C51相连测量室内温度并且在六位LED显示器的中间两位显示出来。LED显示器的前两个显示上限温度,中间两个显示当前温度测量值。最后两位显示下限温度。利用按键设置温度的上限与下限,并在LED显示器上动态显示。系统共有四个按键,前两个按键实现温度上限的调整,后两个实现温度下限的调整。当温度低于下限(15)值时二极管发光,当室温高于上限(40)时蜂鸣器报警,发出有规律的声音。通过按键调节温度上下限,使当前外界温度的范围包含在温度传感器的上下限内,从而使得蜂鸣器关闭和二极管光灭。关键词:DS18B20数字温度传感器 89C51 LED共阴极显示器 程序汇编 调试

2、目 录一、DS18B206二、89C5117三、815519四、实验设备及原理23五、设计思路及程序流程图28六、上机调试过程37七、心得体会38八、附件40 参考文献47正 文一、DS18B20温度传感器 DS1820 单线数字温度计特性 独特的单线接口仅需一个端口引脚进行通讯 简单的多点分布应用 无需外部器件 可通过数据线供电 零待机功耗 测温范围-55+125,以 0.5递增 温度以 9 位数字量读出 温度数字量转换时间 200ms(典型值) 用户可定义的非易失性温度报警设置 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件 应用包括温度控制、工业系统、消费品、温度计或任何热

3、感测系统 引脚说明 16脚SSOPPR35符号说明91GND接地82DQ数据输入/输出脚。对于单线操作:漏极开路(见“寄生电源”节)73VDD可选的 VDD 引脚。具体接法见“寄生电源”节DS18B20(16 脚 SSOP):所有上表中未提及的引脚都无连接。 概览图1的方框图示出了DS1820的主要部件。DS18B20 有三个主要数字部件:1)64 位激光 ROM,2)温度传感器,3)非易失性温度报警触发器TH和TL。器件用如下方式从单线通讯线上汲取能量:在信号线处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。DS18B

4、20 也可用外部 5V 电源供电。DS18B20 依靠一个单线端口通讯。在单线端口条件下,必须先建立 ROM 操作协议,才能进行存储器和控制操作。因此,控制器必须首先提供下面 5 个 ROM 操作命令之一:1)读 ROM,2)匹配 ROM,3)搜索 ROM,4)跳过 ROM,5)报警搜索。这些命令对每个器件的激光 ROM 部分进行操作,在单线总线上挂有多个器件时,可以区分出单个器件,同时可以向总线控制器指明有多少器件或是什么型号的器件。成功执行完一条 ROM 操作序列后,即可进行存储器和控制操作,控制器可以提供6条存储器和控制操作指令中的任一条。一条控制操作命令指示 DS18B20 完成一次温

5、度测量。测量结果放在 DS18B20 的暂存器里,用一条读暂存器内容的存储器操作命令可以把暂存器中数据读出。温度报警触发器 TH 和 TL 各由一个 EEPROM 字节构成。如果没有对 DS18B20 使用报警搜索命令,这些寄存器可以做为一般用途的用户存储器使用。可以用一条存储器操作命令对 TH 和 TL 进行写入,对这些寄存器的读出需要通过暂存器。所有数据都是以最低有效位在前的方式进行读写。 寄生电源 寄生电源的方框图见图 1。这个电路会在 I/O 或 VDD 引脚处于高电平时“偷”能量。当有特定的时间和电压需求时(见节标题“单线总线系统”),I/O 要提供足够的能量。寄生电源有两个好处:1

6、)进行远距离测温时,无需本地电源,2)可以在没有常规电源的条件下读 ROM。要想使 DS18B20 能够进行精确的温度转换,I/O 线必须在转换期间保证供电。由于 DS18B20 的工作电流达到 1mA,所以仅靠 5K 上拉电阻提供电源是不行的,当几只 DS18B20 挂在同一根 I/O线上并同时想进行温度转换时,这个问题变得更加尖锐。 有两种方法能够使 DS18B20 在动态转换周期中获得足够的电流供应。第一种方法,当进行温度转换或拷贝到存储器操作时,给 I/O 线提供一个强上拉。用 MOSFET 把 I/O 线直接拉到电源上就可以实现,见图 2。在发出任何涉及拷贝到存储器或启动温度转换的协

7、议之后,必须在最多 10s 之内把 I/O 线转换到强上拉。使用寄生电源方式时,VDD 引脚必须接地。另一种给 DS18B20 供电的方法是从 VDD 引脚接入一个外部电源,见图 3。这样做的好处是 I/O线上不需要加强上拉,而且总线控制器不用在温度转换期间总保持高电平。这样在转换期间可以允许在单线总线上进行其他数据往来。另外,在单线总线上可以挂任意多片 DS18B20,而且如果它们都使用外部电源的话,就可以先发一个 Skip ROM 命令,再接一个 Convert T 命令,让它们同时进行温度转换。注意当加上外部电源时,GND 引脚不能悬空。温度高于 100时,不推荐使用寄生电源,因为 DS

8、18B20 在这种温度下表现出的漏电流比较大,通讯可能无法进行。在类似这种温度的情况下,强烈推荐使用 DS18B20 的 VDD 引脚。 对于总线控制器不知道总线上的 DS18B20 是用寄生电源还是用外部电源的情况,DS18B20 预备了一种信号指示电源的使用意图。总线控制器发出一个 Skip ROM 协议,然后发出读电源命令,这条命令发出后,控制器发出读时间隙,如果是寄生电源,DS18B20 在单线总线上发回“0”,如果是从 VDD 供电,则发回“1”,这样总线控制器就能够决定总线上是否有 DS18B20 需要强上拉。如果控制器接收到一个“0”,它就知道必须在温度转换期间给 I/O 线提供

9、强上拉。这个命令协议详见“存储器操作命令”节。 测温操作 DS18B20 通过一种片上温度测量技术来测量温度。图 4 示出了温度测量电路的方框图。 DS18B20 是这样测温的:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于-55的一个值。如果计数器在门周期结束前到达 0,则温度寄存器(同样被预置到-55)的值增加,表明所测温度大于-55。 同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到 0,如果门周期仍未结束,将重复这一

10、过程。 斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨力。这是通过改变计数器对温度每增加一度所需计数的的值来实现的。因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器的值和每一度的计数值。 温度/数据关系(表 1)温度数据输出(二进制)数据输出(十六进制)+12500000000 1111101000FA+2500000000 001100100032+1/200000000 000000010001000000000 000000000000-1/211111111 11111111FFFF-2511111111 11001110FFCE-5511111111

11、10010010FF92DS18B20 内部对此计算的结果可提供 0.5的分辨力。温度以 16bit 带符号位扩展的二进制补码形式读出,表 1 给出了温度值和输出数据的关系。数据通过单线接口以串行方式传输。DS18B20 测温范围-55+125,以 0.5递增。如用于华氏温度,必须要用一个转换因子查找表。 报警搜索操作 DS18B20 完成一次温度转换后,就拿温度值和存储在TH和TL中的值进行比较。因为这些寄存器是8位的,所以 0.5位被忽略不计。TH或TL的最高有效位直接对应16位温度寄存器的符号位。如果测得的温度高于TH或低于TL,器件内部就会置位一个报警标识。每进行一次测温就对这个标识进

12、行一次更新。当报警标识置位时,DS1820会对报警搜索命令有反应。这样就允许许多DS18B20并联在一起同时测温,如果某个地方的温度超过了限定值,报警的器件就会被立即识别出来并读取,而不用读未报警的器件。64位(激)光刻ROM 每只DS18B20都有一个唯一的长达64位的编码。最前面8位是单线系列编码(DS1820 的编码是 9h)。下面48位是一个唯一的序列号。最后8位是以上56位的CRC码。(见图 5)64位ROM和ROM操作控制区允许DS18B20作为单线制器件并按照详述于“单线总线系统”一节的单线协议工作。只有建立了ROM操作协议,才能对DS1820进行控制操作。这个协议用ROM操作协

13、议流程图来描述。单线总线控制器必须得天独厚提供5条ROM操作命令其中之一:1)Read ROM,2)Match ROM,3)Search Rom,4)Skip ROM,5)Alarm Search。成功进行一次ROM操作后,就可以对DS18B20进行特定的操作,总线控制器可以发出六个存储器和控制操作命令中的任一条。 CRC 发生器 DS1820 中有 8 位 CRC 存储在 64 位 ROM 的最高有效字节中。总线控制器可以用 64 位 ROM 中的前 56 位计算出一个 CRC 值,再用这个和存储在 DS1820 中的值进行比较,以确定 ROM 数据是否被总线控制器接收无误。CRC 计算等式

14、如下: CRC=+DS1820 同样用上面的公式产生一个 8 位 CRC 值,把这个值提供给总线控制器用来校验传输的数据。在任何使用 CRC 进行数据传输校验的情况下,总线控制器必须用上面的公式计算出一个 CRC 值,和存储在 DS1820 的 64 位 ROM 中的值或 DS1820 内部计算出的 8 位 CRC 值(当读暂存器时,做为第 9 个字节读出来)进行比较。CRC 值的比较以及是否进行下一步操作完全由总线控制器决定。当在 DS1820中存储的或由其计算的 CRC值和总线控制器计算的值不相符时,DS1820 内部并没有一个能阻止命令序列进行的电路。 单线CRC可以用一个由移位寄存器和

15、 XOR 门构成的多项式发生器来产生,见图 7。 移位寄存器的各位都被初始化为 0。然后从系列编号的最低有效位开始,一次一位移入寄存器。8位系列编码都进入以后,序列号再进入,48 位序列号都进入后,移位寄存器中就存储了CRC值。移入8位CRC会使移位寄存器复0。存储器DS1820的存储器结构示于图 8。存储器由一个暂存 RAM 和一个存储高低温报警触发值 TH 和TL 的非易失性电可擦除()RAM 组成。当在单线总线上通讯时,暂存器帮助确保数据的完整性。数据先被写入暂存器,这里的数据可被读回。数据经过校验后,用一个拷贝暂存器命令会把数据传到非易性()RAM 中。这一过程确保更改存储器时数据的完

16、整性。暂存器的结构为 8 个字节的存储器。头两个字节包含测得的温度信息。第三和第四字节是 TH和 TL 的拷贝,是易失性的,每次上电复位时被刷新。下面两个字节没有使用,但是在读回数据时,它们全部表现为逻辑 1。第七和第八字节是计数寄存器,它们可以被用来获得更高的温度分辨力(见“测温操作”一节)。还有一个第九字节,可以用读暂存器命令读出。这个字节是以上八个字节的 CRC 码。CRC 的执行方式如第二个标题“CRC 发生器”所述。 单线总线系统 单线总线系统包括一个总线控制器和一个或多个从机。DS18B20 是从机。关于这种总线分三个题目讨论:硬件结构、执行序列和单线信号(信号类型和时序)。 单线

17、总线只有一条定义的信号线;重要的是每一个挂在总线上的器件都能在适当的时间驱动它。为此每一个总线上的器件都必须是漏极开路或三态输出。DS18B20 的单总线端口(I/O引脚)是漏极开路式的,内部等效电路见图9。一个多点总线由一个单线总线和多个挂于其上的从机构成。单线总线需要一个约 5K的上拉电阻。 单线总线的空闲状态是高电平。无论任何理由需要暂停某一执行过程时,如果还想恢复执行的话,总线必必须停留在空闲状态。在恢复期间,如果单线总线处于非活动(高电平)状态,位与位间的恢复时间可以无限长。如果总线停留在低电平超过480s,总线上的所有器件都将被复位。 通过单线总线端口访问DS1820的协议如下:

18、初始化 ROM 操作命令 存储器操作命令 执行/数据 初始化 通过单线总线的所有执行(处理)都从一个初始化序列开始。初始化序列包括一个由总线控制器发出的复位脉冲和跟有其后由从机发出的存在脉冲。存在脉冲让总线控制器知道DS1820在总线上且已准备好操作。ROM 操作命令 一旦总线控制器探测到一个存在脉冲,它就可以发出5个ROM命令中的任一个。所有ROM操作命令都8位长度。Read ROM 33h 这个命令允许总线控制器读到DS18B20的8位系列编码、唯一的序列号和8位CRC码。只有在总线上存在单只DS1B820的时候才能使用这个命令。如果总线上有不止一个从机,当所有从机试图同时传送信号时就会发

19、生数据冲突(漏极开路连在一起开成相与的效果)。 Match ROM 55h 匹配ROM命令,后跟64位ROM序列,让总线控制器在多点总线上定位一只特定的 DS18B20。只有和64位ROM序列完全匹配的DS1820才能响应随后的存储器操作命令。所有和64位ROM序列不匹配的从机都将等待复位脉冲。这条命令在总线上有单个或多个器件时都可以使用。 Skip ROM CCh 这条命令允许总线控制器不用提供64位ROM编码就使用存储器操作命令,在单点总线情况下又节省时间。如果总线上不止一个从机,在Skip ROM命令之后跟着发一条读命令,由于多个从机同时传送信号,总线上就会发生数据冲突(漏极开路下拉效果

20、相当于相与)。 Search ROM F0h 当一个系统初次启动时,总线控制器可能并不知道单线总线上有多少器件或它们的64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。 Alarm Search ECh 这条命令的流程图和Search ROM相同。然而,只有在最近一次测温后遇到符合报警条件的情况,DS18B20才会响应这条命令。报警条件定义为温度高于TH或低于TL。只要DS18B20不掉电,报警状态将一直保持,直到再一次测得的温度值达不到报警条件。I/O 信号 DS18B20需要严格的协议以确保数据的完整性。协议包括几种单线信号类型:复位脉冲、存在脉冲、写

21、0、写1、读0和读1。所有这些信号,除存在脉冲外,都是由总线控制器发出的。和DS18B20间的任何通讯都需要以初始化序列开始,初始化序列见图 11。一个复位脉冲跟着一个存在脉冲表明 DS18B20 已经准备好发送和接收数据(适当的ROM命令和存储器操作命令)。 存储器操作命令 Write Scratchpad 4E 这个命令向DS18B20的暂存器中写入数据,开始位置在地址2。接下来写入的两个字节将被存到暂存器中的地址位置2和3。可以在任何时刻发出复位命令来中止写入。 Read Scratchpad BEh 这个命令读取暂存器的内容。读取将从字节0开始,一直进行下去,直到第9(字节8,CRC)

22、字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取.Copy Scratchpad 48h 这条命令把暂存器的内容拷贝到DS18B20的存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS1820又正在忙于把暂存器拷贝到存储器,DS1820就会输出一个“0”,如果拷贝结束的话,DS18B20则输出“1”。如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持10ms。 Convert T 44h 这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后 DS18B20 保持等待状态。如果总线控

23、制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出“0”,若温度转换完成,则输出“1”。如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持500ms。RecallB8h 这条命令把报警触发器里的值拷回暂存器。这种拷回操作在DS18B20上电时自动执行,这样器件一上电暂存器里马上就存在有效的数据了。若在这条命令发出之后发出读时间隙,器件会输出温度转换忙的标识:“0”=忙,“1”=完成。Read Power Supply B4h 若把这条命令发给 DS18B20 后发出读时间隙,器件会返回它的电源模式:“0”=寄生电源,“1”

24、 =外部电源。读/写时间隙 DS1820 的数据读写是通过时间隙处理位和命令字来确认信息交换。写时间隙当主机把数据线从逻辑高电平拉到逻辑低电平的时候,写时间隙开始。有两种写时间隙:写1时间隙和写0时间隙。所有写时间隙必须最少持续60s,包括两个写周期间至少1s的恢复时间。I/O线电平变低后,DS18B20在一个15s到60s的窗口内对I/O 线采样。如果线上是高电平,就是写1,如果线上是低电平,就是写0(见图 12) 时 序 主机使用时间隙(time slots)来读写 DSl8B20 的数据位和写命令字的位 (1)初始化主机总线t0时刻发送一复位脉冲(最短为 480us 的低电平信号)接着在

25、t1时刻释放总线并进入接收状态DSl8B20在检测到总线的上升沿之后等待15-60us接着DS18B20 在t2时刻发出存在脉冲(低电平持续60-240us)。RESET PUSH B ;保存 B 寄存器 PUSH A ;保存 A 寄存器 MOV A,#4 ;设置循环次数 CLR P1.0 ;发出复位脉冲 MOV B,#250 ;计数 250 次 DJNZ B,$ ;保持低电平 500us SETB Pl.0 ;释放总线 MOV B,#6 ;设置时间常数 CLR C ;清存在信号标志 WAITL: JB Pl.0,WH ;若总线释放 跳出循环 DJNZ B,WAITL ;总线低 等待 DJNZ

26、 ACC,WAITL ;释放总线等待一段时间 SJMP SHORT WH : MOV B,#111 WH1 : ORL C,P1.0 DJNZ B,WH1 ;存在时间等待 SHORT : POP A POP BRET(2)写时间隙 当主机总线t0时刻从高拉至低电平时就产生写时间隙从t0时刻开始15us之内应将所需写的位送到总线上DSl820在t0后15-60us间对总线采样.若低电平写入的位是0,若高电平写入的位是1.连续写 2 位间的间隙应大于1us。写位子程序(待写位的内容在 C 中) WRBIT: PUSH B ;保存 B MOV B,#28 ;设置时间常数 CLR P1.0 ;写开始

27、NOP ;1us NOP ;1us NOP ;1us NOP ;1us NOP ;1us MOV Pl.0,C ;C 内容到总线 WDLT: DJNZ B,WDLT ;等待 56Us POP B SETB Pl.0 ;释放总线 RET ;返回 写字节子程序(待写内容在 A 中): WRBYTB: PUSH B ;保存 B MOV B,#08H ;设置写位个数 WLOP: RRC A ;把写的位放到 C ACALL WRBIT ;调写 1位子程序 DJNZ B WLOP ;8 位全写完? POP B RET (3)读时间隙 读位子程序(读得的位到 C 中) RDBIT: PUSH B ;保存 B

28、 PUSH A ;保存 A MOV B,#23 ;设置时间常数 CLR P1.0 ;读开始 NOP ;1us NOP ;1us NOP ;1us NOP ;1us SETB Pl.0 ;释放总线 MOV A,P1 ;P1口读到A MOV C,EOH ;P1.0 内容 C NOP ;1us NOP ;1us NOP ;1us NOP ;1us RDDLT:DJNZ B,RDDLT ;等待 46us SETB P1.0 POP A POP B RET 读字节子程序(读到内容放到 A 中) RDBYTE: PUSH B ;保存 B RLOP: MOV B,#08H ;设置读位数 ACALL RDBI

29、T ;调读 1 位子程序 RRC A ;把读到位在 C 中并依次送给 A DJNZ B,RLOP ;8 位读完? POP B ;恢复 B RET 二、89C5189C51的内部结构和引脚功能名称类型名称和功能VssI地VccI电源:提供掉电、空闲、正常工作电压P0.0-0.7 I/OP0 口是开漏双向口,可以写为1使其状态为悬浮用作高阻输入。P0也可以在访问外部程序存储器时作地址的低字节。在访问外部数据时作数据总线,此时通过内部强上拉输出 1 P1.0-1.7 I/OP1 口是带内部上拉的双向I/O口,向P1口写入1时 P1 口被内部上拉为高电平,可用作输入口 当作为输入口。当作为输入脚时,被

30、外部拉低的 P1 口会因为内部上拉而输出电流。P1 口第 2 功能 :T2(P1.0) 定时/计数器 2 的外部计数输入/时钟输出T2EX(P1.1) 定时/计数器 2 重装载/捕捉/方向控制 P2.0-2.7 I/OP2 口是带内部上拉的双向I/O口,向P2口写入1时,P2口被内部上拉为高电平,可用作输入口。当作为输入脚时,被外部拉低的P2口会因为内部上拉而输出电流。在访问外部程序存储器和外部数据时分别作为地址高位字节和 16 位地址(MOVX DPTR),此时通过内部强上拉传送1当使用8位寻址方式(MOV Ri)访问外部数据存储器时,P2口发送P2特殊功能寄存器的内容P3.0-3.7 I/

31、OP3口是带内部上拉的双向I/O口向P3口写入1时,P3口被内部上拉为高电平,可用作输入口。当作为输入脚时,被外部拉低的P3口会因为内部上拉而输出电流P3 口还具有以下特殊功能:RxD(p3.0) 串行输入口 TxD(P3.1) 串行输出口 INT0(P3.2) 外部中断 0 INT1(P3.3) 外部中断 T0(P3.4) 定时器 0 外部输入 T1(P3.5) 定时器 1 外部输入 WR(P3.6) 外部数据存储器写信号 RD(P3.7) 外部数据存储器读信号 RSTI复位 当晶振在运行中,只要复位管脚出现2个机器周期高电平即可复位,内部有扩散电阻连接到Vss仅需要外接一个电容到Vcc即可

32、实现上电复位 ALEO地址锁存使能在访问外部存储器时,输出脉冲锁存地址的低字节,在正常情况下,ALE输出信号恒定为1/6振荡频率,并可用作外部时钟或定时,注意每次访问外部数据时一个ALE脉冲将被忽略ALE可以通过置位SFR的auxlilary.0 禁止,置位后ALE只能在执行MOVX指令时被激活 O程序存储使能 当执行外部程序存储器代码时 PSEN 每个机器周期被激活两次 在访问外部数据存储器时 PSEN 无效 访问内部程序存储器时 PSEN 无效 I外部寻址使能/编程电压在访问整个外部程序存储器时EA 必须外部置低 如果EA为高时,将执行内部程序除非程序计数器包含大于片内 FLASH 的地址

33、 该引脚在对 FLASH 编程时接 5V/12V 编程电压(Vpp) 如果保密位1 已编程EA在复位时由内部锁存 XTAL1I晶体 1 反相振荡放大器输入和内部时钟发生电路输入 XTAL2O晶体 2 反相振荡放大器输出 三、81558155的内部结构和引脚功能8155各引脚功能说明如下:RST:复位信号输入端,高电平有效。复位后,3个I/O口均为输入方式。AD0AD7:三态的地址/数据总线。与单片机的低8位地址/数据总线(P0口)相连。单片机与8155之间的地址、数据、命令与状态信息都是通过这个总线口传送的。:读选通信号,控制对8155的读操作,低电平有效。:写选通信号,控制对8155的写操作

34、,低电平有效。:片选信号线,低电平有效。IO/M :8155的RAM存储器或I/O口选择线。当IO/ 0时,则选择8155的片内RAM,AD0AD7上地址为8155中RAM单元的地址(00HFFH);当IO/ 1时,选择 8155的I/O口,AD0AD7上的地址为8155 I/O口的地址。ALE:地址锁存信号。8155内部设有地址锁存器,在ALE的下降沿将单片机P0口输出的低8位地址信息及 ,IO/ 的状态都锁存到8155内部锁存器。因此,P0口输出的低8位地址信号不需外接锁存器。PA0PA7:8位通用I/O口,其输入、输出的流向可由程序控制。PB0PB7:8位通用I/O口,功能同A口。PC0

35、PC5:有两个作用,既可作为通用的I/O口,也可作为PA口和PB口的控制信号线,这些可通过程序控制。TIMER IN:定时/计数器脉冲输入端。TIMER OUT:定时/计数器输出端。VCC:5V电源。2、8155的地址编码及工作方式在单片机应用系统中,8155是按外部数据存储器统一编址的,为16位地址,其高8位由片选线提供, 0,选中该片。当0,IO/M0时,选中8155片内RAM,这时8155只能作片外RAM使用,其RAM的低8位编址为00HFFH;当0,IO/M1时,选中8155的I/O口,其端口地址的低8位由AD7AD0确定,如表6-6所示。这时,A、B、C口的口地址低8位分别为01H、

36、02H、03H(设地址无关位为0)。下表为8155芯片的I/O口地址AD7AD6AD5AD4AD3AD2AD1AD0所选端口000命令/状态寄存器001A口010B口011C口100定时器低8位101定时器高6位及方式RAM单元8155的A口、B口可工作于基本I/O方式或选通I/O方式。C口可工作于基本I/O方式,也可作为A口、B口在选通工作方式时的状态控制信号线。当C口作为状态控制信号时,其每位线的作用如下:PC0:AINTR(A口中断请求线)PC1:ABF(A口缓冲器满信号)PC2: (A口选通信号)PC3:BINTR(B口中断请求线)PC4:BBF(B口缓冲器满信号)PC5: (B口选通

37、信号)8155的I/O工作方式选择是通过对8155内部命令寄存器设定控制字实现的。命令寄存器只能写入,不能读出,命令寄存器的格式如下图所示。在ALT1ALT4的不同方式下,A口、B口及C口的各位工作方式如下:ALT1:A口,B口为基本输入/输出,C口为输入方式。ALT2:A口,B口为基本输入/输出,C口为输出方式。ALT3:A口为选通输入/输出,B口为基本输入/输出。PC0为AINTR,PC1为ABF,PC2为 ,PC3PC5为输出。ALT4:A口、B口为选通输入/输出。PC0为AINTR,PC1为ABF,PC2为 ,PC3为BINTR,PC4为BBF,PC5为 。图6-16 8155命令寄存

38、器格式8155内还有一个状态寄存器,用于锁存输入/输出口和定时/计数器的当前状态,供CPU查询用。状态寄存器的端口地址与命令寄存器相同,低8位也是00H,状态寄存器的内容只能读出不能写入。所以可以认为8155的I/O口地址00H是命令/状态寄存器,对其写入时作为命令寄存器;而对其读出时,则作为状态寄存器。3、8155的定时/计数器8155内部的定时/计数器实际上是一个14位的减法计数器,它对TIMER IN端输入脉冲进行减1计数,当计数结束(即减1计数“回0”)时,由TIMER OUT端输出方波或脉冲。当TIMER IN接外部脉冲时,为计数方式;接系统时钟时,可作为定时方式。定时/计数器由两个

39、8位寄存器构成,其中的低14位组成计数器,剩下的两个高位(M2,M1)用于定义输出方式。其格式如下:D7 D6 D5 D4 D3 D2 D1 D0 M2 M1 T13 T12 T11 T10 T9 T8D7 D6 D5 D4 D3 D2 D1 D0 T7 T6 T5 T4 T3 T2 T1 T0 定时器/计数器的使用 8155的定时器/计数器与MCS-51单片机芯片内部的定时器/计数器,在功能上是完全相同的,同样具有定时和计数两种功能。但是再使用上却与MCS-51的定时器/计数器有许多不同之处。具体表现在: 8155的定时器/计数器是减法计数,而MCS-51的定时器/计数器却是加法计数.因此确

40、定计数初值的方法是不同的. MCS-51的定时器/计数器有多种工作方式.而8155的定时器/计数器,则只有一种固定的工作方式,既14位计数,通过软件方法进行计数值加载. MCS-51的定时器/计数器有两种计数脉冲。当定时工作时,从芯片内部按机器周期提供固定频率的计数脉冲;当计数工作时,从芯片外部引入计数脉冲。但8155的定时器/计数器,不论是定时工作还是计数工作,都由外部提供计数脉冲,其信号引脚就是TIMER IN. MCS-51的定时器/计数器,计数溢出自动置位TCON寄存器的计数溢出标志位(TF),供用户以查询或中断方式使用;但8155的定时器/计数器,计数溢出时向芯片外边输出一个信号(T

41、IMER OUT)。而且这一信号还有脉冲和方波两种形式,可由用户进行选择。具体由M1.M2两位定义: M2 M1=00 单个方波 M2 M1=01 连续方波 M2 M1=10 单个脉冲 M2 M1=11 连续脉冲 8155定时器/计数器的工作方式由命令字中的高二位D7D6进行控制。具体说明如下: D7D6 =00 不影响计数器工作。 D7D6 =01 停止计数。如计数器未启动则无操作,如计数器正运行则停止计数。 D7D6 =10 达到计数值(计数器减为0)后停止。 D7D6 =11 启动计数器。如计数器没运行,则在装入计数值后开始计数;如计数已运行,则在当前计数值计满后,再以新的计数值进行计数。 四、实验设备及原理工具清单:1、电烙铁 2、电烙铁架 3、镊子 4、小螺丝刀 5、偏口钳 6、焊锡 7、电路板8、元器件清单:序号名 称数 量序号名 称数 量189C5116共阴极数码管 62815517DS18B20 1374LS14184740729575452 310注:以上元器件不能焊在板上。序号名 称数 量序号名 称数 量1电阻 0.1K518晶振 11.059212电阻 0.3K119单排插针/座 (3)13电阻 1K120短路块14电阻 2.2K421单排插座 (3)15电阻 3K122单排插座 (30)26电阻

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号