基于单片机温度检测系统设计毕设论文 联系客服

发布时间 : 星期六 文章基于单片机温度检测系统设计毕设论文更新完毕开始阅读87898ca2d05abe23482fb4daa58da0116c171fd2

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

共 32 页 第 15 页

图3.-1硬件电路图

┊ 持续时间大于2个机器周期。

本系统的复位电路采用图5-5(b)上电复位方式。

(a)上电复位 (b)按键电平复位 (c)按键脉冲复位

图3-3复位电路

上述电路图中的电阻、电容参数适用于6MHz晶振,能保证复位信号高电平

长 春 大 学 课程设计纸

4.3系统的硬件组成及设计原理

多功能按键 温度传感器 复位电路 显示电路 声光报警 AT89S52 第五章 系统软件设计

5.1程序流程图

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

#include < reg51.h > #include < intrins.h> #define uchar unsigned char #define uint unsigned int

sbit DQ = P2^5 ; //定义DS18B20端口DQ sbit BEEP=P2^7 ; //蜂鸣器驱动线 bit presence ;

sbit LCD_RS = P2^4 ; sbit LCD_RW = P2^1 ; sbit LCD_EN = P2^6 ;

uchar code cdis1[ ] = {%uchar code cdis2[ ] = {\

共 32 页 第 16 页

长 春 大 学 课程设计纸

5.2程序

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

**/

/*检查LCD忙状态 */

/*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */ /******************************************************************/

bit lcd_busy() { bit result ;

共 32 页 第 17 页

长 春 大 学 课程设计纸

uchar code cdis3[ ] = {%uchar code cdis4[ ] = {%unsigned char data temp_data[2] = {0x00,0x00} ;

unsigned char data display[5] = {0x00,0x00,0x00,0x00,0x00} ;

unsigned char code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09} ; void beep() ;

unsigned char code mytab[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00} ; #define delayNOP() ; {_nop_() ;_nop_() ;_nop_() ;_nop_() ;} ;

/*******************************************************************/

void delay1(int ms) {

unsigned char y ; while(ms--) {

for(y = 0 ; y<250 ; y++) { _nop_() ; _nop_() ; _nop_() ; _nop_() ; } } }

/****************************************************************

┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊

长 春 大 学 课程设计纸

LCD_RS = 0 ; LCD_RW = 1 ; LCD_EN = 1 ; delayNOP() ;

result = (bit)(P0&0x80) ; LCD_EN = 0 ; return(result) ; }

/*写指令数据到LCD */

/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */

/*******************************************************************/

void lcd_wcmd(uchar cmd) {

while(lcd_busy()) ; LCD_RS = 0 ; LCD_RW = 0 ; LCD_EN = 0 ; _nop_() ; _nop_() ; P0 = cmd ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ; }

/*******************************************************************/

/*写显示数据到LCD */

/*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */

/*******************************************************************/

void lcd_wdat(uchar dat) {

共 32 页 第 18 页