25 页 桂林电子科技大学毕业设计(论文)报告 第
图3.18 DS18B20外部供电方式
图3.19 DS18B20寄生电源供电方式
图3.20 温度补偿电路原理图
本设计采用外部供电方式,其测温原理图如图3.20所示。其编写程序步骤如下: (1)DS18B20初始化; (2)操作指令读;
26 页 桂林电子科技大学毕业设计(论文)报告 第
(3)操作指令写; (4)温度转换; (5)读取温度值。 3.2.7 +5V电源模块
本设计的电源时通过一个变压器将220V交流电转变为12V交流电,然后通过制成的+5V电源电源电路,经过整流、滤波、稳压,最后输出所需的+5V电压。此电源电路原理图如图3.21所示。
图3.21 +5V电源电路
27 页 桂林电子科技大学毕业设计(论文)报告 第
第四章 软件设计
在单片机的开发与应用中,除了汇编语言外,还可以用C语言。单片机C语言既有汇编语言操作底层硬件的能力,又有高级语言的许多优点。因此,本设计主要采用C语言编写。本章节主要讲述本设计的软件设计以及系统各模块程序的编写。 4.1软件整体设计
众所周知,汇编语言是一种面向机器的程序语言,指令执行速度快,执行时间固定,故其效率很高,但其语言格式比较晦涩、可读性差、难以编写和调试,也不便于移植。而单片机C语言在结构上更易于理解,可读性强,开发速度快、可靠性好、便于移植。
虽然本设计的温度传感器对时间精度要求高,但经过仔细计算得出的C语言已被广泛应用,故直接用已有的程序也能做到对温度的精确读取,所以本设计全部使用C语言编程。
系统开发环境主要包括Windows 7的PC机、 Keil uVision4和STC_ISP_V480 下载器。流程为先在PC机平台上用Keil UV4编写好程序,然后通过STC_ISP_V480下载器将程序烧到单片机上反复调试和修改,达到要求,完成设计。图4.1为主程序路程图:
图4.1 系统主程序流程图
28 页 桂林电子科技大学毕业设计(论文)报告 第
本系统上电后,首先将系统初始化,DS18B20初始化,然后不断扫描按键K1是否按下,如果K1按下,则开始测量当前环境温度,给 P1.0一个10μS以上的高电平,使HC-SR04模块发射出8个40KHZ的超声波,同时定时器T0开始计时。CPU循环检测P3.2引脚,当P3.2为低电平时,外部中断0开始中断,同时绿灯亮,表明接收到回波,立即停止定时器0计时,保存定时器的计数值。之后根据温度传感器测量温度,进行温度补偿,由速度与时间的关系计算出障碍物与传感器之间的距离并通过数码管显示出来。
4.2 系统主要模块程序设计
4.2.1超声波发射程序及接收中断子程序
超声波发射程序是通过P1.0端口发送8个40KHZ的超声波脉冲信号,在发射超声波的同时把定时器0打开进行计时,定时器0工作在方式1。
超声波测距主程序是利用外部中断0检测超声波回波信号,P3.2口一旦接收到回波信号,则外部中断0立即执行中断,将定时器0关闭使其停止计时,并将测距成功标志位置1,以此同时绿灯亮,表示成功接收回波信号。超声波发射程序如下: Trig=1; delay_20us(); Trig=0;
超声波成功接收(外部中断0)程序如下: INT0_() interrupt 0 // 外部中断是0号 {
outcomeH =TH0; //取出定时器的值 outcomeL =TL0; //取出定时器的值 flag=1; //至成功测量的标志 }
超声波发射接收流程图如图4.2所示: 4.2.2 DS18B20访问程序
通过1-wire总线端口访问DS18B20的流程图如图4.3所示,DS18B20需要严格的时序协议才能实现1-Wire总线通信。
29 页 桂林电子科技大学毕业设计(论文)报告 第
图4.2 超声波发射接收程序流程图
图4.3 通过单总线访问DS18B20流程图