微控制器系统设计与应用教材_第1页
微控制器系统设计与应用教材_第2页
微控制器系统设计与应用教材_第3页
微控制器系统设计与应用教材_第4页
微控制器系统设计与应用教材_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 微控制器系统设计与应用微控制器系统设计与应用 复习:复习:u ADC0809ADC0809是典型的是典型的8 8位位8 8通道通道逐次逼近式逐次逼近式A/DA/D转换器,可模拟电压量实现分转换器,可模拟电压量实现分时转换为时转换为8 8位数字量。位数字量。u V Vrefref/V/Vinin=2=2n n/D/D即即V Vinin/D=5/255/D=5/255u 转换步骤:转换步骤:u 1.有有clock时钟信号(典型值时钟信号(典型值500KHZ,周期,周期2us) 用定时器用定时器0产生周期产生周期2us方波信号作为方波信号作为CLOCKu 2.Start、ALE有效有效,开始转换开

2、始转换Vin Start、ALE需要正脉冲,通过置需要正脉冲,通过置1或或0得到得到u 3.转换过程中,转换过程中,EOC=0;当转换结束时,当转换结束时,EOC=1.(转换时间大概(转换时间大概100us左右)左右) 利用查询等待方式,利用查询等待方式,while(eoc=0);u 4.转换结束后,设置转换结束后,设置OE=1后,才可以读取转换后的数字量后,才可以读取转换后的数字量 OE=1;m=P0; OE=0;u 5.数字量送数码管显示数字量送数码管显示XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/

3、AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51X1CRYSTALC130pFC230pFC310uFR1123456781615141312111

4、09RN1300R410kR510kOUT121ADD B24ADD A25ADD C23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START6OUT58EOC7OE9CLOCK10OUT220OUT714OUT615OUT817OUT418OUT319IN228IN127IN026ALE22U2ADC0808RV11kQ1PN2907Q2PN2907234567891RP1RESPACK-81.1.十六进制显示转化为十进制显示十六进制显示转化为十进制显示 unsigned char i,j;unsigned char i,j; i=m/51; i=m/51;

5、 j=m%51; j=m%51; j=j/5; j=j/5;2.带小数点显示的段值带小数点显示的段值举例说明举例说明带小数点共阴数码管:带小数点共阴数码管:+ 80H P1=sz1i+80H带小数点共阳数码管:带小数点共阳数码管:- 80H P1=sz1i-80H 温度计制温度计制作作(4学时学时)温度计温度计温度计电路温度计电路板板(2学时学时)学时安排:学时安排: 项目六项目六 数字温度计数字温度计 -学习学习DS18B20模块模块 DS-18B20 DS-18B20 数字温度传感器数字温度传感器u DS18B20DS18B20是美国是美国DALLASDALLAS公司生产的公司生产的1-w

6、ire1-wire式单总线的数字温度传感器。式单总线的数字温度传感器。具有耐磨耐碰,体积小,线路简单,使用方便,大大提高了系统的抗干扰具有耐磨耐碰,体积小,线路简单,使用方便,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量。例如:冷冻库,粮仓,储罐,电讯性。适合于恶劣环境的现场温度测量。例如:冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温,汽车空调、冰箱、冷柜、以及中低温机房,电力机房,电缆线槽等测温,汽车空调、冰箱、冷柜、以及中低温干燥箱等。干燥箱等。 u 一、主要特点一、主要特点 1. 1. 1-wire1-wire式式 只要一个端口即可实现和单片机的双向通信(图上只要一个

7、端口即可实现和单片机的双向通信(图上DQDQ端),电路连接简单端),电路连接简单 单总线通常要求外接一个约为单总线通常要求外接一个约为 4.7K10K 4.7K10K 的上拉电阻,这样,当总线闲的上拉电阻,这样,当总线闲置时其状态为高电平。置时其状态为高电平。 2.2.分辨率可以在分辨率可以在9-129-12位位选择(温度转换后的数字信号是选择(温度转换后的数字信号是9-129-12位)位) 3. 3. 测温范围测温范围 5555125,125,在在 -10+ 85-10+ 85C C 范围内,精度为范围内,精度为 0.50.5C C 。唯一的序列号唯一的序列号 4.4.每个器件都有每个器件都

8、有 5.5.内部有内部有温度上限、下限的报警温度上限、下限的报警设置,有报警功能设置,有报警功能 6. 6. 支持支持多点组网多点组网功能,多个功能,多个DS18B20DS18B20可以并联在唯一的三线上,实现多点可以并联在唯一的三线上,实现多点测温测温 7.7.供电方式灵活供电方式灵活 , ,可以外接电源,也可以通过内部寄生电路从数据线上获可以外接电源,也可以通过内部寄生电路从数据线上获取电源取电源27.0DQ2VCC3GND1U3DS18B20二、二、DS18B20管脚排列管脚排列DS18B20DS18B20的管脚排列的管脚排列1. GND1. GND为电源为电源 地;地;2. DQ2.

9、DQ为数字信号输入输出端;为数字信号输入输出端;3. VDD3. VDD为外接供电电源输入端为外接供电电源输入端(在寄生电源接线方式时接地)(在寄生电源接线方式时接地)外接电源工作方式外接电源工作方式 u两种供电方式:两种供电方式:三、三、DS18B20内部结构内部结构 如图所示,主要由如图所示,主要由4部分组成:部分组成: 64 64 位光刻位光刻 ROMROM 、温度传感器、温度传感器、温度报警触发器温度报警触发器TH和和TL、配置寄存器。、配置寄存器。1. 64 1. 64 位光刻位光刻ROMROM 64 64 位位ROMROM中存储的信息是中存储的信息是出厂前被光刻好出厂前被光刻好的,

10、存储的主要是的,存储的主要是序列号。序列号。 64 64 位光刻位光刻 ROM ROM 的排列是:的排列是: 开始开始 8 8 位(地址:位(地址:28H 28H )是产品类型标号,)是产品类型标号, 接着的接着的 48 48 位是该位是该 DS18B20 DS18B20 自身的序列号,它可以看作是该自身的序列号,它可以看作是该DS18B20DS18B20的地的地址序列码,每个址序列码,每个DS18B20DS18B20的的6464位序列号均不相同位序列号均不相同 最后最后 8 8 位则是前面位则是前面 56 56 位的循环冗余校验码位的循环冗余校验码 ( CRC=X8+X5+X4+1 CRC=

11、X8+X5+X4+1 )。)。 由于每一个由于每一个 DS18B20 DS18B20 的的 ROM ROM 数据都各不相同,因此微控制器就可以通过单数据都各不相同,因此微控制器就可以通过单总线对多个总线对多个 DS18B20 DS18B20 进行寻址,从而实现一根总线上挂接多个进行寻址,从而实现一根总线上挂接多个 DS18B20 DS18B20 的目的目的。的。 2.2.温度传感器温度传感器u DS18B20DS18B20中的温度传感器完成对温度的测量,把温度转换为对应的数字量(中的温度传感器完成对温度的测量,把温度转换为对应的数字量(9 9位或位或1212位,出厂时默认位,出厂时默认1212

12、位,最高位是符号位)。位,最高位是符号位)。u 为了存放为了存放1212位的数字量,用位的数字量,用1616位符号扩展的二进制位符号扩展的二进制补码补码形式表示来存放。形式表示来存放。 举例。举例。u 该数字量和温度之间的对应转换格式,见下图,其中该数字量和温度之间的对应转换格式,见下图,其中S S为符号位,即数据格式为符号位,即数据格式以以0.0625/LSB0.0625/LSB形式表达形式表达。 补码三个部分:补码三个部分: 符号符号: :高字节的高高字节的高4 4位位 整数:高字节的低整数:高字节的低4 4位、低字节的高位、低字节的高4 4位位u 小数:低字节的低小数:低字节的低4 4位

13、位u 对应的温度计算:当符号位对应的温度计算:当符号位S=0S=0时,直接将二进制位转换为十进制;当时,直接将二进制位转换为十进制;当S=1S=1时,时,先将补码变为原码,再计算十进制值。先将补码变为原码,再计算十进制值。u 例如:例如:u 1.转换后的数字量转换后的数字量12位,扩展为位,扩展为16位后为位后为(十六进制十六进制):00C1H,则对应的温则对应的温度值应为:度值应为:u +12.0625 u 若为负温度,如何计算?若为负温度,如何计算?u 2.转换后的数字量转换后的数字量12位,扩展为位,扩展为16位后为位后为(十六进制十六进制):FF5EH,则对应的温度值应为:则对应的温度

14、值应为:u -10.125 ;12位3.3.配置寄存器配置寄存器u 其中配置寄存器的格式如下:其中配置寄存器的格式如下:u 最高位用于设置最高位用于设置DS18B20DS18B20在工作模式还是在测试模式。在在工作模式还是在测试模式。在DS18B20DS18B20出厂出厂时该位被设置为时该位被设置为0 0,工作模式,工作模式,用户不要去改动。,用户不要去改动。u R1R1和和R0R0用来设置用来设置分辨率分辨率,如下图所示:(,如下图所示:(DS18B20DS18B20出厂时被设置为出厂时被设置为1212位)位)u 低五位一直都是低五位一直都是“1 1” 配置寄存器与分辨率关系表配置寄存器与分

15、辨率关系表 4.4.高速暂存存储器高速暂存存储器RAMRAM 高速暂存存储器由高速暂存存储器由9 9个字节个字节组成,见下图组成,见下图. .转换所得的温度值以两个字节补码形式存放在高速暂存存储器的第转换所得的温度值以两个字节补码形式存放在高速暂存存储器的第0 0和第和第1 1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。位在后。u四、四、DS18B20的工作时序的工作时序(单线接口访问(单线接口访问DS18B20DS18B20的协议的协议 ) 单片机对单片机对DS18B20DS18B20操作:温度转换、读取温度、存

16、取报警上下限等。操作:温度转换、读取温度、存取报警上下限等。 根据根据DS18B20DS18B20的通讯协议,单片机每次访问的通讯协议,单片机每次访问DS18B20DS18B20都必须遵循以下顺序:都必须遵循以下顺序:u 初始化初始化18B20 18B20 ;u 发对发对ROMROM操作命令;操作命令;u 发对发对RAMRAM操作命令:操作命令:u 相应操作。相应操作。 1. 1. ROM操作命令操作命令u 2. RAMRAM操作命令操作命令DS18B20 的的RAM指令集指令集 3.3.温度的转换流程温度的转换流程DS18B20DS18B20进行一次温度的转换,那具体的操作就是:进行一次温度

17、的转换,那具体的操作就是:(1)(1)、初始化、初始化18B20 (18B20 (主机作主机作复位复位操作操作) )(2)(2)、发对、发对ROMROM操作命令操作命令( (主机写主机写跳过跳过ROMROM的操作(的操作(CCHCCH)命令命令) )(3)(3)、发对、发对RAMRAM操作命令操作命令( (主机写主机写转换温度的操作(转换温度的操作(44H44H)命令)命令) ) 后面释放总线至少一秒,让后面释放总线至少一秒,让DS18B20DS18B20完成转换的操作。完成转换的操作。 整个操作的总线状态如下图。整个操作的总线状态如下图。4.4.读取读取RAMRAM内的温度数据流程内的温度数

18、据流程具体的操作就是:具体的操作就是:(1)(1)、初始化、初始化18B20 (18B20 (主机作主机作复位复位操作操作) )(2)(2)、发对、发对ROMROM操作命令操作命令( (主机写主机写跳过跳过ROMROM的操作(的操作(CCHCCH)命令命令) )(3)(3)、发对、发对RAMRAM操作命令操作命令( (主机写主机写读取读取RAMRAM的操作(的操作(BEHBEH)命令)命令) )(4)(4)、随后主机依次读取、随后主机依次读取DS18B20DS18B20发出的从第发出的从第0 0一第一第8 8,共九个字节的数据。,共九个字节的数据。 如果如果只想读取温度只想读取温度数据,那在读

19、完第数据,那在读完第0 0和第和第1 1个数据个数据后就不再理会后面后就不再理会后面DS18B20DS18B20发出的数据即可。同样读取数据也是低位在前的。发出的数据即可。同样读取数据也是低位在前的。 整个操作的总线状态如下图:整个操作的总线状态如下图: 初始化DS18B20跳过ROM匹配开始温度转换转换结束了否?初始化DS18B20跳过ROM匹配读温度值结束开始YNDS18B20DS18B20温度测量操作流程温度测量操作流程u1.1.初始化初始化DS18B20DS18B20u2.2.发出跳过发出跳过ROMROM的操作(的操作(CCHCCH)命令)命令u3.3.发出温度转换(发出温度转换(44

20、H44H)命令)命令u4.4.延时等待转换完延时等待转换完u5.5.初始化初始化DS18B20DS18B20u6.6.发出跳过发出跳过ROMROM的操作(的操作(CCHCCH)命令)命令u7.7.发出读温度(发出读温度(BEHBEH)命令)命令u8.8.把温度(两个字节)从把温度(两个字节)从RAMRAM中读出,保存起来中读出,保存起来u9.9.读出的温度的数字量进行数据转换,送数码管显示读出的温度的数字量进行数据转换,送数码管显示在以上流程中,反复用到初始化、写、读时序,我们先编在以上流程中,反复用到初始化、写、读时序,我们先编程对应程序程对应程序u五、五、DS18B20的基本操作的基本操作

21、 在以上的工作流程中,首先要初始化在以上的工作流程中,首先要初始化18B2018B20,然后发各种命,然后发各种命令以及数据传输都涉及到对令以及数据传输都涉及到对DS18B20DS18B20的读写操作,所以共涉的读写操作,所以共涉及到以下及到以下3 3个工作时序:个工作时序:1.1.初始化操作初始化操作2.2.写操作写操作 (发命令)(发命令)3.3.读操作读操作 (读温度)(读温度)1.初始化时序初始化时序u DS18B20DS18B20的初始化的初始化 (1 1) 先将数据线置高电平先将数据线置高电平“1”1”。(2 2) 延时(该时间要求的不是很严格,但是尽可能的短一点)延时(该时间要求

22、的不是很严格,但是尽可能的短一点)(3 3) 数据线拉到低电平数据线拉到低电平“0”0”。(4 4) 延时延时750750微秒(该时间的时间范围可以从微秒(该时间的时间范围可以从480480到到960960微秒)。微秒)。(5 5) 数据线拉到高电平数据线拉到高电平“1”1”。(6 6) 延时等待(如果延时等待(如果初始化成功初始化成功则在则在1515到到6060毫秒时间之内产生一个由毫秒时间之内产生一个由DS18B20DS18B20所返回的低电平所返回的低电平“0”0”。据该状态可以来。据该状态可以来确定它的存在确定它的存在,但是应注,但是应注意不能无限的进行等待,不然会使程序进入死循环,所

23、以要进行超时控意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。制)。(7 7) 若单片机读到了数据线上的低电平若单片机读到了数据线上的低电平“0”0”后,还要做延时,其延时后,还要做延时,其延时的时间从发出的高电平算起(第(的时间从发出的高电平算起(第(5 5)步的时间算起)最少要)步的时间算起)最少要480480微秒。微秒。(8 8) 将数据线再次拉高到高电平将数据线再次拉高到高电平“1”1”后结束。后结束。u unsigned char presence;u init_ds18b02(void)/DS18B20初始化u uDQ=1;delay_8us(3);/延时约25

24、微秒uDQ=0; delay_8us(80); /延时约650微秒 u uDQ=1; delay_8us(2);upresence = DQ;udelay_8us(20); /延时约170微秒u u DQ = 1; return(presence);uuDS18B20DS18B20的写操作的写操作(1 1) 数据线先置低电平数据线先置低电平“0”0”。(2 2) 延时确定的时间为延时确定的时间为1515微秒,表示写周期开始。微秒,表示写周期开始。(3 3) 按从低位到高位的顺序发送字节(一次只发送一位)。按从低位到高位的顺序发送字节(一次只发送一位)。(4 4) 延时时间为延时时间为4545微

25、秒。微秒。(5 5) 将数据线拉到高电平。将数据线拉到高电平。(6 6) 重复上(重复上(1 1)到()到(6 6)的操作直到所有的字节全部发送完为止。)的操作直到所有的字节全部发送完为止。(7 7) 最后将数据线拉高。最后将数据线拉高。若主机想写若主机想写0 0,则拉低电平最少,则拉低电平最少6060微秒直至写周期结束,然后释放总线为高电平。微秒直至写周期结束,然后释放总线为高电平。若主机想写若主机想写1 1,在一开始拉低总线电平,在一开始拉低总线电平1 1微秒后就释放总线为高电平,一直到写周期结束。微秒后就释放总线为高电平,一直到写周期结束。2. 2. 写时序写时序u void write

26、_byte(unsigned char dat) /单片机向单片机向DS18B20写写 入一个字节数据,先低后高入一个字节数据,先低后高u uunsigned char i;ufor(i=0;i=1;uu 3.3.读时序读时序完成一个读时序过程,至少需要完成一个读时序过程,至少需要60us60us才能完成才能完成DS18B20的读操作的读操作 (1)将数据线拉高)将数据线拉高“1”。(2)延时)延时2微秒。微秒。(3)将数据线拉低)将数据线拉低“0”。(4)延时)延时15微秒。微秒。(5)将数据线拉高)将数据线拉高“1”。(6)延时)延时15微秒,对总线进行采样检测。微秒,对总线进行采样检测。

27、(7)读数据线的状态得到)读数据线的状态得到1个状态位,并进行数据处理。个状态位,并进行数据处理。(8)延时)延时30微秒。微秒。u unsigned char read_byte(void)/单片机从单片机从DS18B20读出一个字读出一个字节数据节数据u uunsigned char i,dat;ufor(i=0;i=1; /一举两得一举两得uDQ=1;uif(DQ) /存储采样到的值存储采样到的值udat|=0 x80;udelay_8us(4);uureturn dat;u 例:设计温度计,例:设计温度计,4位显示,位显示,1位小数点。位小数点。u程序流程程序流程初始化DS18B20跳

28、过ROM匹配开始温度转换转换结束了否?初始化DS18B20跳过ROM匹配读温度值结束开始YNu1.1.初始化初始化DS18B20DS18B20u2.2.发出跳过发出跳过ROMROM的操作(的操作(CCHCCH)命令)命令u3.3.发出温度转换(发出温度转换(44H44H)命令)命令u4.4.延时等待转换完延时等待转换完u5.5.初始化初始化DS18B20DS18B20u6.6.发出跳过发出跳过ROMROM的操作(的操作(CCHCCH)命令)命令u7.7.发出读温度(发出读温度(BEHBEH)命令)命令u8.8.把温度(两个字节)读出保存起来把温度(两个字节)读出保存起来u9.9.数据转换,送数

29、码管显示数据转换,送数码管显示u每个步骤具体化:每个步骤具体化:u 1.1.初始化初始化DS18B20DS18B20 init_ds18b02(void);u 2.2.发出跳过发出跳过ROMROM的操作(的操作(CCHCCH)命令)命令 if(presence=0) /DS18B20初始化成功初始化成功 write_byte(0 xcc);u 3.3.发出温度转换(发出温度转换(44H44H)命令)命令write_byte(0 x44); u 4.4.延时等待转换完延时等待转换完 delay_8us(500);u 5.5.初始化初始化DS18B20DS18B20 init_ds18b02(vo

30、id)u 6.6.发出跳过发出跳过ROMROM的操作(的操作(CCHCCH)命令)命令 write_byte(0 xcc);u 7.7.发出读温度(发出读温度(BEHBEH)命令)命令 write_byte(0 xBE);u 8.8.把温度(两个字节)读出保存起来把温度(两个字节)读出保存起来 temp0=read_byte(); /按顺序读出温度低按顺序读出温度低8位位 temp1=read_byte(); /温度高温度高8位位 /temp是事先定义的数组,用于存放读取的温是事先定义的数组,用于存放读取的温度度u 9.9.数据转换,送数码管显示数据转换,送数码管显示 如何数据转换?如何数据转

31、换?u 假设读过来的温度数字量假设读过来的温度数字量 temp0=0 x12 低低8位位 temp1=0 x04 高高8位位转换思路:分离出温度的整数位、小数位转换思路:分离出温度的整数位、小数位小数位小数位m: temp0的低的低4位位 0010*0.0625=0.125=0.1(四舍五入)(四舍五入)同理推出从同理推出从0000-1111对应的四舍五入的温度小数值对应的四舍五入的温度小数值 0000*0.0625=0.0=0.0(四舍五入)(四舍五入)0001*0.0625=0.0625=0.1(四舍五入)(四舍五入)0010*0.0625=0.125=0.1(四舍五入)(四舍五入)0011*0.0625=0.1875=0.2(四舍五入)(四舍五入)0100*0.0625

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论