网站首页 公文大全 个人文档 实用范文 讲话致辞 实用工具 心得体会 哲学范文 总结范文 范文大全 报告 合同 文书 信函 实用
  • 劳动合同
  • 租赁合同
  • 买卖合同
  • 施工合同
  • 销售合同
  • 工程合同
  • 转让协议
  • 借款合同
  • 百花范文网 > 合同 > 劳动合同 > 基于单片机的数字温度计设计课程设计_数字温度计单片机课程设计

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

    时间:2020-10-11 20:18:55来源:百花范文网本文已影响

    基于单片机的数字温度计设计 引言 随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。选用AT89C51型单片机作为主控制器件,DSl8B20作为测温传感器通过4位共阳极LED数码管串口传送数据,实现温度显示。通过DSl8B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0℃~100℃最大线性偏差小于0.1℃。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。

    2 系统硬件设计方案 根据系统功能要求,构造图1所示的系统原理结构框图。

    图1 系统原理结构框图 2.1 单片机的选择 AT89C51作为温度测试系统设计的核心器件。该器件是INTEL公司生产的MCS一5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS—51的CMOS产品。不仅结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,而且继承和扩展了MCS—48单片机的体系结构和指令系统。单片机小系统的电路图如图2所示。

    图2 单片机小系统电路 AT89C51单片机的主要特性:
    (1)与MCS-51 兼容,4K字节可编程闪烁存储器;

    (2)灵活的在线系统编程,掉电标识和快速编程特性;

    (3)寿命为1000次写/擦周期,数据保留时间可10年以上;

    (4)全静态工作模式:0Hz-33Hz;

    (5)三级程序存储器锁定;

    (6)128*8位内部RAM,32可编程I/O线;

    (7)两个16位定时器/计数器,6个中断源;

    (8)全双工串行UART通道,低功耗的闲置和掉电模式;

    (9)看门狗(WDT)及双数据指针;

    (9)片内振荡器和时钟电路;

    2.2 温度传感器介绍 DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EPROM中,掉电后依然保存。

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

    8引脚封装 TO-92封装 图3 温度传感器 引脚功能说明:
    NC :空引脚,悬空不使用;

    VDD :可选电源脚,电源电压范围3~5.5V。当工作于寄生电源时,此引脚必须接地。

    DQ :数据输入/输出脚。漏极开路,常态下高电平。

    GND :为电源地 DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

    光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

    DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。

    这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;
    如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

    例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。

    DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。

    暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。

    该字节各位的意义如下:
    TM R1 R0 1 1 1 1 1 低五位一直都是1 ,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如表1所示:(DS18B20出厂时被设置为12位) 表1 DS18B20温度转换时间表 R1 R0 分辨率/位 温度最大转向时间 0 0 9 93.75 0 1 10 187.5 1 0 11 375 1 1 12 750 根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。

    2.3 温度传感器与单片机的连接 温度传感器的单总线(1-Wire)与单片机的P2.0连接,P2.0是单片机的高位地址线A8。P2端口是一个带内部上拉电阻的8位双向I/O,其输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对该端口写“1”,可通过内部上拉电阻将其端口拉至高电平,此时可作为输入口使用,这是因为内部存在上拉电阻,某一引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时。如执行MOVX DPTR指令,则表示P2端口送出高8位的地址数据。在访问8位地址的外部数据存储器时,可执行MOVX RI指令,P2端口内容即为特殊功能寄存器(SFR)区中R2寄存器内容,整个访问期间不改变。在Flash编程和程序校验时,P2端口也接收高位地址和其他控制信号。图4为DSl8820内部结构。图5为DSl8820与单片机的接口电路。

    图4 DS18B20内部结构图 图5 DS18B20和单片机的接口连接 2.4 复位信号及外部复位电路 单片机的P1.6端口是MAX813看门狗电路中喂狗信号的输入端,即单片机每执行一次程序就设置一次喂狗信号,清零看门狗器件。若程序出现异常,单片机引脚RST将出现两个机器周期以上的高电平,使其复位。该复位信号高电平有效,其有效时间应持续24个振荡脉冲周期即两个机器周期以上。若使用频率为12 MHz的晶体振荡器,则复位信号持续时间应超过2μs才完成复位操作。

    2.5 单片机与报警电路 系统中的报警电路是由发光二极管和限流电阻组成,并与单片机的P1.2端口连接。P1端口的作用和接法与P2端口相同,不同的是在Flash编程和程序校验期间,P1接收低8位地址数据。

    2.6 电源电路 由于该系统需要稳定的5 V电源,因此设计时必须采用能满足电压、电流和稳定性要求的电源。该电源采用三端集成稳压器LM7805。它仅有输入端、输出端及公共端3个引脚,其内部设有过流保护、过热保护及调整管安全保护电路.由于所需外接元件少,使用方便、可靠,因此可作为稳压电源。图6为电源电路连接图。

    图6 电源电路连接图 2.7 显示电路 采用技术成熟的74HCl64实现串并转换。LED显示分为静态显示和动态显示。这里采用静态显示,系统通过单片机的串行口来实现静态显示。串行口为方式零状态,即工作在移位寄存器方式,波特率为振荡频率的1/12。当器件执行任何一条将SBUF作为目的寄存器的命令时,数据便开始从RXD端发送。在写信号有效时,相隔一个机器周期后发送控制端SEND有效,即允许RXD发送数据,同时允许从TXD端输出移位脉冲。图7为显示电路的连接图。

    图7 显示电路的连接图 2.8 看门狗电路 系统中把P1.6作为看门狗的“喂狗”信号;
    将MAX813的RESET与单片机的复位信号RST连接。由于单片机每执行一次程序,就会给看门狗器件一个复位信号,这样也可以用手工方式实现复位。当按键按下时,SW—SPST就会在MAX813引脚产生一个超过200 ms的低电平,其实看门狗器件在1.6 s时间内没有复位,使7引脚输出一个复位信号的作用是相同的,其连接图如图8所示。

    图8 看门狗器件的MAX813的连接图 3 软件设计 DSl8820的主要数据元件有:64位激光Lasered ROM,温度灵敏元件和非易失性温度告警触发器TH和TL。DSBl820可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;
    当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生(电容)电源为止。此外,还可外接5 V电源,给DSl8820供电。DSl8820的供电方式灵活,利用外接电源还可增加系统的稳定性和可靠性。图9为读取数据流程图。

    开始 DS18B20的初始化 启动温度转换 读取温度寄存器 跳过读序列号的操作 跳过读序列号的操作 DS18B20的初始化 RET LOW-低八位 HIGH-高八位 图9 读取数据的流程图 读出温度数据后,LOW的低四位为温度的小数部分,可以精确到0.0625℃,LOW的高四位和HIGH的低四位为温度的整数部分,HIGH的高四位全部为1表示负数,全为0表示正数。所以先将数据提取出来,分为三个部分:小数部分、整数部分和符号部分。小数部分进行四舍五入处理:大于0.5℃的话,向个位进1;
    小于0.5℃的时候,舍去不要。当数据是个负数的时候,显示之前要进行数据转换,将其整数部分取反加一。还因为DS18B20最低温度只能为-55℃,所以可以将整数部分的最高位换成一个“-”,表示为负数。图10为温度数据处理程序的流程图。

    开始 提取整数部分存入HT 提取小数部分存入LT LT右移三位,将精度降低到0.5摄氏度 HT++ 将小数部分整数化 提取符号部分存入sign LT是否大于5 Sign=?0XF0 RET 负数表示flag=1 HT=~HT+1 Y N N Y 图10 温度数据处理流程图 4 数据测试 将温度传感器与冰水混合物接触,经过充分搅拌达到热平衡后调节系统,使显示读数为0.00(标定0℃);
    利用气压计读出当时当地的大气压强,并根据大气压强和当地重力加速度计算出当时的实际压强;
    根据沸点与压强的关系查出沸点温度。把温度传感器放入沸水中,待显示读数稳定后重新调节,使显示器显示读数等于当地当时沸点温度后工作结束。该温度计的量程为-50℃~150℃,读数精度为0.1℃,实际使用一般在0℃~100℃。采用0℃~50℃和50℃~100℃的精密水银温度计作检验标准,对设计的温度计进行测试,其结果表明能达到该精度要求。

    5 总结与体会 作为一名电子信息工程的大四学生,我觉得做单片机课程设计是很有意义的,而且也是必要的。在做这次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的实际资料是十分必要的,也是必不可少的。

    其次,在这次课程设计中,我们运用了以前学过的专业课知识,如:proteus仿真、汇编语言、模拟和数字电路知识等。虽然过去我从未独立应用过他们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。

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

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

    附录1 仿真图 附录2 程序源代码 DATA_BUS BIT P3.3 FLAG BIT 00H ;标志位 TEMP_L EQU 30H ;温度值低字节 TEMP_H EQU 31H ;温度值高字节 TEMP_DP EQU 32H ;温度小数 TEMP_INT EQU 33H ;温度值整数 TEMP_BAI EQU 34H ;温度百位数 TEMP_SHI EQU 35H ;温度十位数 TEMP_GE EQU 36H ;温度个位数 DIS_BAI EQU 37H ;显示百位数 DIS_SHI EQU 38H ;显示十位数 DIS_GE EQU 39H ;显示个位数 DIS_DP EQU 3AH ;显示小数位 DIS_ADD EQU 3BH ;显示地址 ORG 0000H AJMP START ORG 0050H ;初始化 START: MOV SP, #40H MAIN: LCALL READ_TEMP ;调读温度程序 LCALL PROCESS ;调数据处理程序 AJMP MAIN ;读温度程序 READ_TEMP: LCALL RESET_PULSE ;调用复位脉冲程序 MOV A, #0CCH ;跳过ROM命令 LCALL WRITE MOV A, #44H ;读温度 LCALL WRITE LCALL DISPLAY ;显示温度 LCALL RESET_PULSE ;调用复位脉冲程序 MOV A, #0CCH ;跳过ROM命令 LCALL WRITE MOV A, #0BEH ;读缓存命令 LCALL WRITE LCALL READ RET ;复位脉冲程序 RESET_PULSE: RESET: SETB DATA_BUS NOP NOP CLR DATA_BUS MOV R7, #255 DJNZ R7, $ SETB DATA_BUS MOV R7, #30 DJNZ R7,$ JNB DATA_BUS, SETB_FLAG CLR FLAG AJMP NEXT SETB_FLAG: SETB FLAG NEXT: MOV R7, #120 DJNZ R7, $ SETB DATA_BUS JNB FLAG, RESET RET ;写命令 WRITE: SETB DATA_BUS MOV R6, #8 CLR C WRITING: CLR DATA_BUS MOV R7, #5 DJNZ R7, $ RRC A MOV DATA_BUS, C MOV R7, #30H DJNZ R7, $ SETB DATA_BUS NOP DJNZ R6, WRITING RET ;循环显示段位 DISPLAY: MOV R4, #200 DIS_LOOP: MOV A, DIS_DP MOV P2, #0FFH MOV P0, A CLR P2.7 LCALL DELAY2MS MOV A, DIS_GE MOV P2, #0FFH MOV P0, A SETB P0.7 CLR P2.6 LCALL DELAY2MS MOV A, DIS_SHI MOV P2, #0FFH MOV P0, A CLR P2.5 LCALL DELAY2MS MOV A, DIS_BAI MOV P2, #0FFH MOV P0, A MOV A, TEMP_BAI CJNE A, #0,SKIP AJMP NEXTT SKIP: CLR P2.4 LCALL DELAY2MS NEXTT: NOP DJNZ R4, DIS_LOOP RET ;读命令 READ: SETB DATA_BUS MOV R0, #TEMP_L MOV R6, #8 MOV R5, #2 CLR C READING: CLR DATA_BUS NOP NOP SETB DATA_BUS NOP NOP NOP NOP MOV C, DATA_BUS RRC A MOV R7, #30H DJNZ R7, $ SETB DATA_BUS DJNZ R6, READING MOV @R0, A INC R0 MOV R6, #8 SETB DATA_BUS DJNZ R5, READING RET ;数据处理 PROCESS: MOV R7, TEMP_L MOV A, #0FH ANL A, R7 MOV TEMP_DP,A MOV R7, TEMP_L MOV A, #0F0H ANL A, R7 SWAP A MOV TEMP_L, A MOV R7, TEMP_H MOV A, #0FH ANL A, R7 SWAP A ORL A, TEMP_L MOV B, #64H DIV AB MOV TEMP_BAI,A MOV A, #0AH XCH A, B DIV AB MOV TEMP_SHI,A MOV TEMP_GE,B MOV A, TEMP_DP MOV DPTR, #TABLE_DP MOVC A, @A+DPTR MOV DPTR, #TABLE_INTER MOVC A, @A+DPTR MOV DIS_DP, A MOV A, TEMP_GE MOV DPTR, #TABLE_INTER MOVC A, @A+DPTR MOV DIS_GE, A MOV A, TEMP_SHI MOV DPTR, #TABLE_INTER MOVC A, @A+DPTR MOV DIS_SHI, A MOV A, TEMP_BAI MOV DPTR, #TABLE_INTER MOVC A, @A+DPTR MOV DIS_BAI ,A RET DELAY2MS: MOV R6, #3 LOOP3: MOV R5, #250 DJNZ R5, $ DJNZ R6, LOOP3 RET TABLE_DP: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H DB 06H,07H,08H,08H,09H,09H TABLE_INTER: DB 03FH,006H,05BH,04FH,066H DB 06DH,07DH,07H,07FH,06FH END

    相关热词搜索:温度计 单片机 课程设计 基于单片机的数字温度计设计课程设计 数字温度计单片机课程设计 单片机课程设计的设计方法

    • 范文大全
    • 说说大全
    • 学习资料
    • 语录
    • 生肖
    • 解梦
    • 十二星座

    推荐访问

    单片机 单片机c51交通灯课程设计 单片机c语言面试题 单片机信号发生器程序 单片机原理及实验 单片机原理及应用实验指导书 单片机原理及应用试题答案 单片机原理试题 单片机和c语言的关系 单片机和plc的区别 单片机实训 单片机实训心得体会 单片机实训总结800字 单片机实训目的 单片机实验一实验报告 单片机实验总结1000字 单片机实验报告点亮第一个led灯 单片机报警器设计 单片机控制led灯论文 单片机控制交通灯论文 单片机控制电梯系统的设计 单片机数字时钟设计 单片机毕业论文设计 单片机毕业设计论文 单片机毕设题目 单片机温控风扇 单片机温湿度传感器 单片机点阵显示控制 单片机电子时钟设计程序 单片机电风扇设计 单片机直流电机调速系统的设计毕业论文 单片机简易信号发生器设计 单片机课程设计报告 单片机课程设计报告基于单片机的温控系统 单片机课程设计报告模板 单片机课程设计的设计方法 单片机音乐播放器课程设计 单片机题库及答案 基于单片机三层电梯系统设计 基于单片机温室大棚温湿度采集系统设计 基于单片机温湿度检测 基于单片机温湿度测量系统的研究与设计 基于单片机火灾报警系统 基于单片机电梯控制系统设计 基于单片机的乒乓球游戏系统的设计 基于单片机的信号发生器设计 基于单片机的倒车防撞系统 基于单片机的北斗定位系统 基于单片机的数字温度计设计课程设计 基于单片机的数控恒流源设计 基于单片机的时钟设计