基于单片机的数字温度计设计.docx

上传人:b****6 文档编号:8766831 上传时间:2023-02-01 格式:DOCX 页数:15 大小:234.23KB
下载 相关 举报
基于单片机的数字温度计设计.docx_第1页
第1页 / 共15页
基于单片机的数字温度计设计.docx_第2页
第2页 / 共15页
基于单片机的数字温度计设计.docx_第3页
第3页 / 共15页
基于单片机的数字温度计设计.docx_第4页
第4页 / 共15页
基于单片机的数字温度计设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基于单片机的数字温度计设计.docx

《基于单片机的数字温度计设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字温度计设计.docx(15页珍藏版)》请在冰豆网上搜索。

基于单片机的数字温度计设计.docx

基于单片机的数字温度计设计

1设计题目:

单片机数字温度计设计

2设计目的:

熟悉MCS-51单片机的功能,掌握其设计流程。

3系统硬件设计方案及原理框图

1:

系统结构原理图:

2单片机:

图1系统原理结构框图

温度传感器DS18B20引脚如图3所示。

8引脚封装TO-92封装

图3温度传感器

 

4设计步骤:

1温度传感器与单片机的连接

温度传感器的单总线(1-Wire)与单片机的P2.0连接,P2.0是单片机的高位地址线A8。

P2端口是一个带内部上拉电阻的8位双向I/O,其输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对该端口写“1”,可通过内部上拉电阻将其端口拉至高电平,此时可作为输入口使用,这是因为内部存在上拉电阻,某一引脚被外部信号拉低时会输出一个电流。

在访问外部程序存储器或16位地址的外部数据存储器时。

如执行MOVXDPTR指令,则表示P2端口送出高8位的地址数据。

在访问8位地址的外部数据存储器时,可执行MOVXRI指令,P2端口内容即为特殊功能寄存器(SFR)区中R2寄存器内容,整个访问期间不改变。

在Flash编程和程序校验时,P2端口也接收高位地址和其他控制信号。

图4为DSl8820内部结构。

图5为DSl8820与单片机的接口电路。

图4DS18B20内部结构图

图5DS18B20和单片机的接口连接

4.2复位信号及外部复位电路

   单片机的P1.6端口是MAX813看门狗电路中喂狗信号的输入端,即单片机每执行一次程序就设置一次喂狗信号,清零看门狗器件。

若程序出现异常,单片机引脚RST将出现两个机器周期以上的高电平,使其复位。

该复位信号高电平有效,其有效时间应持续24个振荡脉冲周期即两个机器周期以上。

若使用频率为12MHz的晶体振荡器,则复位信号持续时间应超过2μs才完成复位操作。

4.3单片机与报警电路

   系统中的报警电路是由发光二极管和限流电阻组成,并与单片机的P1.2端口连接。

P1端口的作用和接法与P2端口相同,不同的是在Flash编程和程序校验期间,P1接收低8位地址数据。

4.4电源电路

由于该系统需要稳定的5V电源,因此设计时必须采用能满足电压、电流和稳定性要求的电源。

该电源采用三端集成稳压器LM7805。

它仅有输入端、输出端及公共端3个引脚,其内部设有过流保护、过热保护及调整管安全保护电路.由于所需外接元件少,使用方便、可靠,因此可作为稳压电源。

图6为电源电路连接图。

图6电源电路连接图

4.5显示电路

采用技术成熟的74HCl64实现串并转换。

LED显示分为静态显示和动态显示。

这里采用静态显示,系统通过单片机的串行口来实现静态显示。

串行口为方式零状态,即工作在移位寄存器方式,波特率为振荡频率的1/12。

当器件执行任何一条将SBUF作为目的寄存器的命令时,数据便开始从RXD端发送。

在写信号有效时,相隔一个机器周期后发送控制端SEND有效,即允许RXD发送数据,同时允许从TXD端输出移位脉冲。

图7为显示电路的连接图。

图7显示电路的连接图

4.6看门狗电路

系统中把P1.6作为看门狗的“喂狗”信号;将MAX813的RESET与单片机的复位信号RST连接。

由于单片机每执行一次程序,就会给看门狗器件一个复位信号,这样也可以用手工方式实现复位。

当按键按下时,SW—SPST就会在MAX813引脚产生一个超过200ms的低电平,其实看门狗器件在1.6s时间内没有复位,使7引脚输出一个复位信号的作用是相同的,其连接图如图8所示。

图8看门狗器件的MAX813的连接图

 

5设计流程图:

图9读取数据的流程图

读出温度数据后,LOW的低四位为温度的小数部分,可以精确到0.0625℃,LOW的高四位和HIGH的低四位为温度的整数部分,HIGH的高四位全部为1表示负数,全为0表示正数。

所以先将数据提取出来,分为三个部分:

小数部分、整数部分和符号部分。

小数部分进行四舍五入处理:

大于0.5℃的话,向个位进1;小于0.5℃的时候,舍去不要。

当数据是个负数的时候,显示之前要进行数据转换,将其整数部分取反加一。

还因为DS18B20最低温度只能为-55℃,所以可以将整数部分的最高位换成一个“-”,表负数。

图10温度数据处理流程图

6程序源代码

DATA_BUSBITP3.3

FLAGBIT00H;标志位

TEMP_LEQU30H;温度值低字节

TEMP_HEQU31H;温度值高字节

TEMP_DPEQU32H;温度小数

TEMP_INTEQU33H;温度值整数

TEMP_BAIEQU34H;温度百位数

TEMP_SHIEQU35H;温度十位数

TEMP_GEEQU36H;温度个位数

DIS_BAIEQU37H;显示百位数

DIS_SHIEQU38H;显示十位数

DIS_GEEQU39H;显示个位数

DIS_DPEQU3AH;显示小数位

DIS_ADDEQU3BH;显示地址

ORG0000H

AJMPSTART

ORG0050H;初始化

START:

MOVSP,#40H

MAIN:

LCALLREAD_TEMP;调读温度程序

LCALLPROCESS;调数据处理程序

AJMPMAIN

;读温度程序

READ_TEMP:

LCALLRESET_PULSE;调用复位脉冲程序

MOVA,#0CCH;跳过ROM命令

LCALLWRITE

MOVA,#44H;读温度

LCALLWRITE

LCALLDISPLAY;显示温度

LCALLRESET_PULSE;调用复位脉冲程序

MOVA,#0CCH;跳过ROM命令

LCALLWRITE

MOVA,#0BEH;读缓存命令

LCALLWRITE

LCALLREAD

RET

;复位脉冲程序

RESET_PULSE:

RESET:

SETBDATA_BUS

NOP

NOP

CLRDATA_BUS

MOVR7,#255

DJNZR7,$

SETBDATA_BUS

MOVR7,#30

DJNZR7,$

JNBDATA_BUS,SETB_FLAG

CLRFLAG

AJMPNEXT

SETB_FLAG:

SETBFLAG

NEXT:

MOVR7,#120

DJNZR7,$

SETBDATA_BUS

JNBFLAG,RESET

RET

;写命令

WRITE:

SETBDATA_BUS

MOVR6,#8

CLRC

WRITING:

CLRDATA_BUS

MOVR7,#5

DJNZR7,$

RRCA

MOVDATA_BUS,C

MOVR7,#30H

DJNZR7,$

SETBDATA_BUS

NOP

DJNZR6,WRITING

RET

;循环显示段位

DISPLAY:

MOVR4,#200

DIS_LOOP:

MOVA,DIS_DP

MOVP2,#0FFH

MOVP0,A

CLRP2.7

LCALLDELAY2MS

MOVA,DIS_GE

MOVP2,#0FFH

MOVP0,A

SETBP0.7

CLRP2.6

LCALLDELAY2MS

MOVA,DIS_SHI

MOVP2,#0FFH

MOVP0,A

CLRP2.5

LCALLDELAY2MS

MOVA,DIS_BAI

MOVP2,#0FFH

MOVP0,A

MOVA,TEMP_BAI

CJNEA,#0,SKIP

AJMPNEXTT

SKIP:

CLRP2.4

LCALLDELAY2MS

NEXTT:

NOP

DJNZR4,DIS_LOOP

RET

;读命令

READ:

SETBDATA_BUS

MOVR0,#TEMP_L

MOVR6,#8

MOVR5,#2

CLRC

READING:

CLRDATA_BUS

NOP

NOP

SETBDATA_BUS

NOP

NOP

NOP

NOP

MOVC,DATA_BUS

RRCA

MOVR7,#30H

DJNZR7,$

SETBDATA_BUS

DJNZR6,READING

MOV@R0,A

INCR0

MOVR6,#8

SETBDATA_BUS

DJNZR5,READING

RET

;数据处理

PROCESS:

MOVR7,TEMP_L

MOVA,#0FH

ANLA,R7

MOVTEMP_DP,A

MOVR7,TEMP_L

MOVA,#0F0H

ANLA,R7

SWAPA

MOVTEMP_L,A

MOVR7,TEMP_H

MOVA,#0FH

ANLA,R7

SWAPA

ORLA,TEMP_L

MOVB,#64H

DIVAB

MOVTEMP_BAI,A

MOVA,#0AH

XCHA,B

DIVAB

MOVTEMP_SHI,A

MOVTEMP_GE,B

MOVA,TEMP_DP

MOVDPTR,#TABLE_DP

MOVCA,@A+DPTR

MOVDPTR,#TABLE_INTER

MOVCA,@A+DPTR

MOVDIS_DP,A

MOVA,TEMP_GE

MOVDPTR,#TABLE_INTER

MOVCA,@A+DPTR

MOVDIS_GE,A

MOVA,TEMP_SHI

MOVDPTR,#TABLE_INTER

MOVCA,@A+DPTR

MOVDIS_SHI,A

MOVA,TEMP_BAI

MOVDPTR,#TABLE_INTER

MOVCA,@A+DPTR

MOVDIS_BAI,A

RET

DELAY2MS:

MOVR6,#3

LOOP3:

MOVR5,#250

DJNZR5,$

DJNZR6,LOOP3

RET

TABLE_DP:

DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06H

DB06H,07H,08H,08H,09H,09H

TABLE_INTER:

DB03FH,006H,05BH,04FH,066H

DB06DH,07DH,07H,07FH,06FH

END

 

7总结与体会心得

作为一名电子信息工程的大三学生,我觉得做单片机课程设计是很有意义的,而且也是必要的。

在做这次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。

为了让自己的设计更加完善,查阅这方面的实际资料是十分必要的,也是必不可少的。

其次,在这次课程设计中,我们运用了以前学过的专业课知识,如:

proteus仿真、汇编语言、模拟和数字电路知识等。

虽然过去我从未独立应用过他们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。

最后,要做好一个课程设计,就必须做到:

在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机有哪些资源;要有一个清晰的思路和一个完整的软件流程图;在设计程序时,不能妄想一次将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,这样为资料的保留和交流提供了方便;在设计中遇到的问题要记录,以免下次遇到同样的问题。

在这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单片机更是如此,程序只有在经常写与读的过程中才能提高,这就是这次课程设计的最大收获。

八、参考资料:

[1]求是科技.单片机典型模块设计实例导航.北京:

人民邮电出版社.2005.8

[2]徐淑华,程退安等.单片微型机原理及应用.哈尔滨:

哈尔滨工业大学出版社.2005.1

[3]孙余凯.精选实用电子电路260例.北京:

电子工业出版社.2007.6

[4]殷春浩,崔亦飞.电磁测量原理及应用.徐州:

中国矿业大学出版社.2003.7

[5]《LCD1602A数据手册》

[6]《DS1302数据手册》

[7]《DS18B20数据手册》

[8]《AT24C02数据手册》

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

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1