微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于串口的温度检测数据单片机仿真

基于串口的温度检测数据单片机仿真

时间:09-23 来源:互联网 点击:

处于写存储器操作和温度A/D 转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us.采用寄生电源供电方式时VDD 端接地。由于单线制只有一根线,因此发送接口必须是三态的。

  图 3.1 DS18B20 引脚图

  3.2 工作时序图

  1. 初始化

  图 3.2 初始化时序图

  1)先将数据线置高电平1;2) 延时(该时间要求不是很严格,但是要尽可能短一些);3) 数据线拉到低电平0;4) 延时 750us(该时间范围可以在480~960us);5) 数据线拉到高电平1;6)延时等待。如果初始化成功则在15~60ms内产生一个由DS18B20 返回的低电平0,据该状态可以确定它的存在。但是要注意,不能无限地等待,不然会使程序进入死循环,所以要进行超时判断;7) 若 CPU 读到数据线上的低电平0 后,还要进行延时,其延时时间从发出高电平算起最少要480us;8)将数据线再次拉到高电平后结束。

  2. DS18B20 写数据

  图3.3 写数据时序图

  1) 数据线先置低电平0;

  2)延时确定的时间为15us;

  3) 按从低位到高位的顺序发送数据(一次只发送一位);

  4) 延时时间为 45us;

  5) 将数据线拉到高电平1;

  6) 重复 1)到5)步骤,直到发送完整个字节;

  7)最后将数据线拉高到1.

  3. DS18B20 读数据

  图3.4 读数据时序图

  1)将数据线拉高为1;

  2) 延时 2us ;

  3) 将数据线拉低0 ;

  4) 延时 6us ;

  5) 将数据线拉高1 ;

  6)延时 4us ;

  7) 读数据线的状态得到1 个状态位,并且进行数据处理;

  8) 延时 30us ;

  9) 重复 1)到7)步,知道读取完一个字节。

  4 硬件设计

  4.1 时钟电路及复位电路

  1.时钟电路

  时钟电路可以产生CPU 校准时序,是单片机的控制核心,本次设计是通过外接12MHz的晶振来实现时钟电路的时序控制。在使用片内振荡器时,XTAL1 和XTAL2 分别为反向放大器的输入端和输出端。外接晶体以及电容C3 和C5 构成并联谐振电路,接在放大器的反馈回路中。当用外部时钟驱动时,XTAL2引脚应悬空,而由XTAL1引脚上的信号驱动,外部振荡器通过一个2 分频的触发器而成为内部时钟信号,故对外部信号的占空比没有什么要求,但最小和最大的高电平持续时间和低电平持续时间应符合技术要求。电路如图4.1 所示。

  图 4.1 晶振电路

  2.空闲方式

  在空闲方式下,CPU 的内部时钟信号被门控电路所封锁,CPU 即进入睡眠状态,但内部时钟信号仍继续供给中断系统,定时器和串行口。这种方式由软件调用。在空闲方式期间,片内RAM和所有专用寄存器的状态仍被保留,空闲方式可通过任何允许的中断或硬件复位来终止。当空闲方式由硬件复位终止时,通常系统在空闲处恢复程序的执行。硬件复位只需要信号持续有效两个机器周期。当用复位终止空闲方式时,为防止避免意外写入端口引脚的可能性,调用空闲方式指令的下一条指令不应是写端口引脚或外部存储器。

3.掉电工作方式

5.2 程序设计

  5.2.1 主程序设计

  主程序主要完成硬件初始化、子程序调用等功能。

  1. 初始化。

  首先调用 LCD 初始化程序,在LCD 上显示数据RECEIVE:和TEMP is: *C.

  然后调用中断及串口初始化子程序程序,把串口接收数据单元RECDATA 清零。设置寄存器SCON 的SM0、SM1 位定义串口工作方式,选择波特率发生器为定时器T1;设定定时器T1 工作方式为方式2;设置波特率参数为9600bps;允许串行中断及总中断;允许串口接收数据,定义REN=1;启动定时/计数器T1 工作,定义TR1=1.

  2. 串口收发数据。

  判断串口成功接收数据标志位flag_uart 是否为0,若flag_uart 为0,表明串口未接收到数据,则继续等待串口接收数据;若flag_uart 为1,表明串口成功接收或发送数据,进入串口中断服务子程序,单片机接收数据,并将串口成功接收数据标志位flag_uart 清零,调用LCD 显示接收数据子程序,在LCD 上显示单片机从串口接收到的数据,同时回传温度值给PC机显示。主程序设计流程图如图5.1 所示。

  图 5.1 主程序流程图

  5.2.2 串口中断服务子程序

  判断串口发送标志位TI 是否为1,若TI 为1,则把数据从单片机发给PC 机,并把TI清零,中断子程序返回;若TI为0,表明RI=0,则把串口接收标志位RI清零,把串口接收缓冲器SBUF 中的数据写入串口接收数据单元RECDATA,再把该数据送到串口发送缓冲器SBUF 中,传给PC 机,置串口成功接收数据标志位RECOKBIT 为1,表明串口成功接收发送数据,最后中断子程序返回。串口收发数据中断服务子程序设计流程图如图5.2 所示。

  图5.2 串口中断服务子程序

  5.2.3 读温子程序

  读出温度子程序的主要功能是读出RAM 中的9 字节,在读出时需进行CRC 校验,校验有错时不进行温度数据的改写。其程序流程图如图5.3 示。

  图5.3 读温子程序

  5.2.4 温度转换命令子程序

温度

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top