基于stc89c52单片机的温湿度检测系统设计(编辑修改稿)内容摘要:
)端,下降沿使能。 7 DB0 低 4 位三态、 双向数据总线 0 位(最低位) 8 DB1 低 4 位三态、 双向数据总线 1 位 9 DB2 低 4 位三态、 双向数据总线 2 位 10 DB3 低 4 位三态、 双向数据总线 3 位 11 DB4 高 4 位三态、 双向数据总线 4 位 12 DB5 高 4 位三态、 双向数据总线 5 位 13 DB6 高 4 位三态、 双向数据总线 6 位 14 DB7 高 4 位三态、 双向数据总线 7 位(最高位)(也是 busy flag) 15 BLA 背光电源正极 16 BLK 背光 电源负极 寄存器选择控制表 RS R/W 操作说明 0 0 写入指令寄存器(清除屏等) 0 1 读 busy flag( DB7),以及读取位址计数器( DB0~DB6)值 1 0 写入数据寄存器(显示各字型等) 1 1 从数据寄存器读取数据 第 3 章 系统的硬件设计和连接 主控模块 采用 STC89C52 单片机作为系统的控制器。 Pl 口控制数码管显示温度和湿度值。 P2 口与 DHT11 连接.实现湿度模拟电压量转换为数字量便于单片机处理。 键 盘控制采用 PO 口.其中 PO. O 是温度的设置, PO. 1 是湿度的设置, PO. 2/ PO. 3是分别对温度与湿度的上/下限值进行设置。 原理如下图: 基于 AT89C52 单片机的温湿度检测系统设计 11 图 STC89C52 单片机各引脚功能 基于 AT89C52 单片机的温湿度检测系统设计 12 显示模块 温度和湿度采集模块 1 所示 图 1 总线空闲状态为高电平 ,主机把总线拉低等待 DHT11 响应 ,主机把总线拉低必须大于 18 毫秒 ,保证 DHT11 能检测到起始信号。 DHT11 接收到主机的开始信号后 ,等待主机开始信号结束 ,然后发送 80us 低电平响应信号 .主机发送开始信号结束后 ,延时等待 2040us 后 , 读取 DHT11 的响应信号 ,主机发送开始信号后 ,可以切换到输入模式 ,或者输出高电平均可 , 总线由上拉电阻拉高。 E A /V P31X119X218R E S E T9RD17WR16IN T 012IN T 113T014T115P 101P 112P 123P 134P 145P 156P 167P 178P 0039P 0138P 0237P 0336P 0435P 0534P 0633P 0732P 2021P 2122P 2223P 2324P 2425P 2526P 2627P 2728P S E N29A L E / P30T X D11R X D10U1A T 89 S 5 1R P 11 0K12345678910111213141516J1L C D 16 0 2V C CV C CV C CRSRWERSRWE基于 AT89C52 单片机的温湿度检测系统设计 13 图 2 总线为低电平 ,说明 DHT11 发送响应信号 ,DHT11 发送响应信号后 ,再把总线拉高80us,准备发送数据 ,每一 bit数据都以 50us低电平时隙开始 ,高电平的长短定了数据位是 0 还是 .如果读取响应信号为高电平 ,则 DHT11 没有响应 ,请检查线路是否连接正常 .当最后一 bit 数据传送完毕后, DHT11 拉 低总线50us,随后总线由上拉电阻拉高进入空闲状态。 数字 0 信号表示方法如图 4 所示 图 4 数字 1 信号表示方法 .如图 5 所示 基于 AT89C52 单片机的温湿度检测系统设计 14 图 5 键盘设计 用了几个简单的按键将它们拼成了一个简易的键盘。 为提高 CPU 的效率,键盘采用中断方式。 按键对单片机的接口电路图如图所示。 行信号( KEY)接到高电平,当没有键按时,行线与列线( KEYSCAN)是断开的,且行线都是高电平( 1111),行信号作为的输入端、列信号作为的输出端。 可以设置列线初始状态为低电平( 0000)。 信号为从上到下的顺序 当有键按下时,假如是 K1 按下,行信号与列信号接通,这时相应的行线( KEY0)变为低电平( 01111),可以肯定第一行( K1, 5, 9, 13)有键按下。 下面就要运用扫描的原理了: 基于 AT89C52 单片机的温湿度检测系统设计 15 因 为只知道第一行有键按下,不知道是那个,可以设置列信号为 0111,这时行信号变为( 1111)(注:假设时钟周期很短,手还没松开,即键还在按下的状态) 设置列信号为 1011,行信号也变成( 1111) 设置列信号为 1101,行信号也变成( 1111) 设置列信号为 1110,行信号也变成( 0111),这时就可以肯定是第一个键按下。 与上位机相连电路的设计 通过和 MAX232 和上位机相连接,如图 39 所示。 在大气气候的检测中需要做记录时,可以通过设置单片机的参数,每隔一定的时间进行自动的做记录, 省去人工的记录麻烦。 Max232 的 T1IN 和单片机的 相连, R1 OUT 和单片机的 相连。 图 单片机系统与上位机的连接 报警电路设计 本设计采用峰鸣音报警电路。 峰鸣音报警接口电路的设计只需购买市售的压电式蜂鸣器,然后通过 MCS51 的 1 根口线经驱动器驱动蜂鸣音发声。 压电式蜂鸣器约需 10mA 的驱动电流,可以使用 TTL 系列集成电路 7406 或 7407 低电平驱动,也可以用一个晶体三极管驱动。 在图中, 接晶体管基极输入端。 当 输出高电平“ 1”时,晶体管导 通,压电蜂鸣器两端获得约 +5V 电压而鸣叫;当 输出低电平“ 0”时,三极管截止,蜂鸣器停止发声。 NPN +5V AT89S52 PB2130UP002A 基于 AT89C52 单片机的温湿度检测系统设计 16 图 三极管驱动的峰鸣音报警电路 第 4 章 系统 软件 方案的 设计 温度控制主程序的设计应考虑以下问题:( 1)温湿度采样,数字滤波;( 2)越限报警和处理;( 3)温度标度转换;( 4)温湿度显示。 通常,符合上述功能的温度控制程序由主程序和 T0 中断服务程序两部分组成。 在该软件系统中,定时器 T0 为工作方式 1,定时周期为 125ms, 8 次定时器中断为 1S,由于实际环境温度和湿度变化是连续和平缓的,故这里采 用分段定值平缓滤波算法处理每次测得的温度和湿度值,有效防止了突发干扰使测得值波动很大,导致反馈系统关启工作,影响系统的稳定,提高了系统的抗干扰性。 程序流程图 LCD1602 头文件 ifndef __LCD_1602_CLIMBERWIN__ define __LCD_1602_CLIMBERWIN__ define uchar unsigned char define uint unsigned int include include /******Port Definitions*****/ define LCD_Data P0 //LCD 的数据口 sbit LCD_BF=LCD_Data^7。 //LCD 忙信号位 sbit LCD_RS = P2^7。 sbit LCD_RW = P2^6。 sbit LCD_EN = P2^5。 unsigned char dis_buf[3]。 //数值显示缓冲区 unsigned char table[11] = 0123456789。 //字码 /*定义子程序 */ void LCD_ClrAll(void)。 //清屏 基于 AT89C52 单片机的温湿度检测系统设计 17 void Judge_LCD_busy(void)。 //检测是否忙碌 void LCD_Write(uchar WriteData)。 //写控制字 void LCD_write_data(uchar LCD_data)。 //写数据显示 void LCD_cursor(uchar x)。 //光标起始地址 void LCD_printc(unsigned char lcd_data)。 //输出一个字符 void LCD_prints(unsigned char *lcd_string)。 //输出字符串 void delay_ms(unsigned char i)。 //1ms 延时 //************************************************************************ /*LCD1602 忙碌判断子程序 */ void Judge_LCD_busy(void) //判断 LCD1602 是否忙状态 { while(1) { LCD_EN=0。 LCD_RS=0。 LCD_RW=1。 LCD_Data=0xff。 LCD_EN=1。 //EN 是 1— 0 使能 if(!LCD_BF)break。 //LCD_BF=1 表示忙碌,需要等待。 } LCD_EN=0。 } /******LCD 清屏 ***************/ void LCD_ClrAll(void) { Judge_LCD_busy()。 //判断是否忙碌 LCD_RS=0。 LCD_RW=0。 LCD_Data=0x01。 LCD_EN=1。 LCD_EN=0。 } /*******LCD 写数据定义各种模式 *********/ void LCD_Write(uchar WriteData) //写指令到 LCD { Judge_LCD_busy()。 LCD_RS=0。 LCD_RW=0。 LCD_Data=WriteData。 //把 WriteData 的数据送到数据口 LCD_EN=1。 LCD_EN=0。 基于 AT89C52 单片机的温湿度检测系统设计 18 } /********LCD 显示数据 ***********/ void LCD_write_data(uchar LCD_data) //输出一个字节数据到 LCD { Judge_LCD_busy()。 LCD_RS=1。 LCD_RW=0。 LCD_Data=LCD_data。 LCD_EN=1。 LCD_EN=0。 } /****光标位置的确定 ***/ void LCD_cursor(uchar x) //LCD 光标定位到 x 处 { LCD_Write(0x80+x)。 //第一行地址是 0x80 } /*输出一个字符 */ void LCD_printc(unsigned char lcd_data) { LCD_write_data(lcd_data)。 } /*输出字符串 */ void LCD_prints(unsigned char *lcd_string) { unsigned char i=0。 while(lcd_string[i]!=0x00) { LCD_write_data(lcd_string[i])。 i++。 } } /*显示整数 */ void LCD_ints(unsigned char num) { signed char i=0。 for(i=0。 i3。 i++)//拆分 bcd { 基于 AT89C52 单片机的温湿度检测系统设计 19 dis_buf[i] = num%10。 num = num/10。 } for(i=2。 i0。 i)//灭零 { if(dis_buf[i]==0)dis_buf[i]=10。 else break。 } for(i=2。 i=0。 i)//逐。基于stc89c52单片机的温湿度检测系统设计(编辑修改稿)
相关推荐
/O 口,具有内部上拉电阻。 当使用外存储器或外扩 I/O 口时, P2 口输出高 8 位地址。 在编程和校验时, P2 口接收 哈尔滨剑桥学院毕业设计 6 高字节地址和某些控制信号。 P3 8 位、准双向 I/O 口,具有内部上拉电阻。 P3 口可作为普通 I/O 口。 用作输入时,应先将输出锁存器置 1。 在编程 /校验时,P3 口接收某些控制信号。 它可驱动 4 个 TTL 负载。 (
小,易发生融体破裂 ( 2)流动性好,但收缩范围及收缩值大,易发生缩孔、凹痕、变形。 ( 3)冷却 速度快,浇注系统及冷却系统应缓慢散热,并注意控制成型温度,料温低温高压时容易取向,模具温度低于 50 度时,塑件不光滑,易产生熔接不良,流痕, 90 度以上易发生翘曲变形。 ( 4)塑料壁厚须均匀,避免缺胶,尖角,以防应力集中。 瓶盖生产流程图: 注射原料 储料罐 嵌件 预热 装配 12
理念、备件的分类、库存模式、计算机辅助管理、维修和维护管理等方面进行了研究 [ 1]。 由于大部分企业的备件储备占用企业大部分资金(通常占企业流动资金的 20%30%),因而备件的库存管理和计划管理成为重中之重,使得备件管理的研究主要集中在以下三个内容: ( 1) 备件储备定额的确定 早期的备件储备定额没有考虑备件的使用寿命、磨损规律等因素,主要是依据管理者的经验和主管判 断来确定的
各种形状和多中彩色的灯管 ,另一种为日光等管或白炽灯管作为光源 ,另配大型广告语或宣传画来达到宣传 的效果。 这些灯的亮灭 ,闪烁时间及流动方向等均可以通过 PLC 来达到控制的要求。 可编程控制器 PLC:英文全称 Programmab leLogic Controller,中文全称为可编程逻辑控制器,是一种数字运算操作的电子系统,专为在社会环境应用而设计的。 它采用一类可编程的存储器
NC6P F O /5M R /1V C C2G N D3P F I4U1M A X 7 0 8V in1G N D2O N / O F F3O U T5B Y P A S S4U5L P 2 9 8 5ST1G N D2O U T3V C C4U6S G 3 5 0 S C F 8 M12345678J1C O N 8Q1P N P 1S1S W P BD1L E DR21KR11KR32 2
域等等。 洛阳理工 学院毕业设计(论文) 6 第 2 章 数字图像处理技术及 MATLAB 软件简介 数字图像处理技术简介 图像处理技术基本可以分成两大类:模拟图像处理 (Analog Image Processing)和数字图像处理 (Digital Image Processing),数字图像处理是指将图像信号转换成数字信号并利用计算机进行处理的过程。 数字图像处理技术主要包括如下内容