当前位置:首页 > 基于单片机温度检测系统设计毕设论文
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊
共 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 页
共分享92篇相关文档