1、1湖南工程学院课程设计课程名称单片机原理与应用课题名称温湿度检测系统专业自动化班级学号姓名指导教师2013年6月20日等级252湖南工程学院课程设计任务书课程名称单片机与应用课题环境温、湿度检测系统设计专业班级学生姓名学号指导老师审批任务书下达日期2013年6月10日任务完成日期2013年6月21日3设计内容与设计要求设计内容本课题要求以单片机为核心,采用温湿度传感器DHT11设计一个对环境温度湿度的检测系统,要求用按键控制系统选择分别对温度或湿度的测试、复位、清除功能,用四位LED数码管显示实时温度和湿度。还可由用户设定温度和湿度的上、下限,设计越限报警功能。设计要求1)确定系统设计方案;2
2、)进行系统的硬件设计;3)完成必要元器件选择;4)系统软件设计及调试;5)系统联调及操作说明6)按规范要求写设计说明书4主要设计条件1、PC机及单片机调试软件;2、开发板1块;3、系统设计、调试所需的元器件。说明书格式1课程设计任务书2目录3总体方案确定4各单元硬件电路设计及计算方法5软件设计与说明(包括流程图)6调试结果与必要的调试说明7总结8、参考文献9、附录附录A系统原理图附录B程序清单10、课程设计成绩评分表。5进度安排设计时间分为二周第一周星期一、上午布置课题任务,课题介绍及讲课。下午借阅有关资料,总体方案讨论。星期二、确定总体方案,学习与设计相关内容。星期三、各部分方案设计,各部分
3、设计。星期四、设计及调试。星期五、设计及调试。星期六、设计及调试。第二周星期一设计及调试。星期二设计及调试。星期三调试、写说明书。星期四星期五上午写说明书、完成电子版并打印成稿。星期五下午答辩。参考文献1王迎旭等单片机原理及及应用机械工业出版社2012年6目录第1章系统总体方案设计711系统设计方案总体思路712系统总体方案框图7第2章硬件设计821STC89C52简介822晶振电路823复位电路824共阳数码管显示电路925键盘电路1026DHT11传感器电路1027报警电路11第3章软件设计与说明1231系统软件设计思路错误未定义书签。32主程序设计1233键盘函数错误未定义书签。34显示
4、程序设计12第4章调试结果与说明1441系统调试说明1442调试结果14第5章总结15参考文献16附录A系统电理图路原17附录B系统程序清单187第1章系统总体方案设计11系统设计方案总体思路根据课题,设计温湿度检测系统电路,采用单片机STC89C52为控制芯片。根据设计要求所需的实现要求,将总电路分为键盘接口电路、单片机时钟电路、复位电路、LED显示电路、DHT11传感器电路、报警电路几个模块。键盘接口电路为44矩阵式键盘,采用查询法,键盘连接到单片机的P2口(P10P13列线,P14P17行线),在本系统中采用内部时钟电路,由一个石英晶体管振荡器和两个微调电容组成;复位电路中给给RST引脚
5、连续输入2个机器周期(即24个时钟振荡周期)以上高电平,就可完成初始化操作;显示电路与单片机I/O相连,采用4段7位共阳LED显示管显示温湿度。12系统总体方案框图根据设计思路确定的总体方案如图12所示。图12系统总体框图DHT11传感器STC89C52晶振电路键盘电路LED数码管显示复位电路段码位控制报警电路8第2章硬件设计21STC89C52简介STC89C52是STC公司生产的一种低功耗高性能CMOS8位微控制器,具有8K在系统可编程FLASH存储器。STC89C52使用经典的MCS51内核,但做了很多改进使得芯片具有传统51单片机不具备的功能。拥有灵巧的8位CPU和在系统可编程FLAS
6、H,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。22晶振电路单片机工作的时间基准是由时钟电路所控制的。在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。电路中,电容器C1和C2对振荡频率有微调作用,均选用20PF,石英晶体选择12MHZ。晶振电路如图图22晶振电路23复位电路复位电路是保证单片机正常运行的关键因素,所以可靠地复位电路设9计是必要的。将RST引脚连续输入2个机器周期(即24个时钟振荡期间)以上高电平,即可以完成单片机的初始化操作。本设计采用按钮复位方式。复位电路如图图23复位电路24共阳数码管显示电路LED数码管
7、采用共阳数码管,采用动态显示方式,减少硬件资源。动态扫描显示接口是单片机中应用最广泛的一种显示方式。数码管的DP段以及GA段依序与P0口的P07P00连接。4位LED的位选线分别由相对应的P20P23控制。显示电路如图图24显示电路1025键盘电路该系统采用44矩阵式键盘电路,在矩阵式键盘中,每条水平线和垂直线交叉处都由一个按钮连接。键盘的行线与P1口的P14P17相连,列线与P10P13相连。本系统采用4个键键0启动系统,传感器有响应。键1设置温湿度的上下限。键2暂停。键3单片机复位,系统停止工作。键盘电路如下图25键盘电路图26DHT11传感器电路DHT11是一种能对环境的温湿度参数进行采
8、样的传感器。传感器中的DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4MS左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零操作流程如下一次完整的数据传输为40BIT,高位先出。数据格式8BIT湿度整数数据8BIT湿度小数数据。8BI温度整数数据8BIT温度小数数据。8BIT校验和。DHT11传感器电路如下11图26DHT11传感器电路27报警电路蜂鸣器是一种一体化的电子通讯响应器。在本系统中,当温湿度超过其上下线时报警。图27报警电路12第3章软件设计与说明此次系统设计是通过C语言编程,其中包括数码管显示部分、键盘扫描
9、部分、传感器采样温湿度部分。31主程序设计主程序初始化,主程序循环扫描是否有键按下,如有键按下则做出相应的功能处理,若无键按下则继续执行显示函数。34显示程序设计显示采用4位共阳数码管,段码在程序数据区定义,根据需要查表取得,再送往P0口,以控制数码管显示不同字符数字。位码由P20P23口分别控制晶体数码管的位控位W4W1,以控制各个数码管显示。13NY图34显示程序流程图开始保护现场开始初始化送段码查表取字型码送位码恢复现场延时显示4位显示扫描完返回14第4章调试结果与说明41系统调试说明本系统调试过程中采用直接硬件调试的方法,对整体的系统程序进行分解排故,首先对八段显像管进行数字显示测试,
10、然后对键盘进行按键响应测试,当测试都得到正确结果时,将键盘与显示结合起来,并给予恰当的字型码,最后加入定时器中断程序,给出正确的脉冲信号和频率。调试过程中,数码管显示的数字闪烁,原因是传感器接触不良,后换了导线,数字不在闪烁。按键出现按下一键响应多次的情况,后查出由于键位抬起子程序书写不当,造成键盘多次响应,并加上了松手去抖程序后问题得以顺利解决。42调试结果接上温湿度传感器DHT11后和电源后,将程序下载到板子上,按下0号键启动,执行程序,数码管上显示了环境的温湿度参数。图51显示环境温湿度参数15第5章总结经过两周的单片机课程设计,终于完成了单片机环境温湿度检测系统的设计,其中收获许多,付
11、出了许多精力和时间,实践能力的到了一定的提高。刚学完单片机并且经历了考试,我一直以为我对单片机有了不少的了解,课透过此次课程设计,我才看到了自己的诸多不足,也学到了很多知识与技巧。虽然之前有做过不少课程设计,但以前大多是单独的软件或者硬件设计,这次设计让我有了长足的进步,真正实现了对单片机硬件与软件的兼顾与融会贯通。单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事。由于C语言学习较早,很多技巧与方法早就忘得差不多了,上课与做实验,我一直以来都是使用汇编语言来编写程序,可课题的复杂度明显比试验中遇到的要大得多,C语言编程
12、的方便性让我不得不着手C语言开始。这也让我再次巩固了以前学习的专业知识。面对大量的参考资料甚至是几乎现成的参考报告,我选择了在学习吸纳的基础上另辟蹊径,虽然遇到困难的时候都想放弃,直接用现成的程序和报告,可看到其他同学和我一样在埋头苦干、老师期盼的眼神,我选择了坚持下来,当然,现在这是我骄傲的资本。虽然这个课题不算难,但是从硬件电路到最后程序的编写和调试都是自己摸索出来的,这个过程中也遇到了不少困难,更多的是成功后的喜悦,学习永无止境,只有把学习和实践当做一种乐趣那么即便有再大的困难也会是一种享受。16参考文献1王迎旭单片机原理与应用M北京机械工业出版社,20042陈海宴51单片机原理及应用M
13、北京北京航空航天大学出版社,20103胡汉才单片机原理及其接口技术M北京清华大学出版社,20104李全利单片机原理及应用技术M北京高等教育出版社,20045陈光东单片微型计算机原理及接口技术M华中科技大学出版社,20016何立民51系列单片机应用与实践教程M北航出版社,17附录A系统电路原理图18附录B系统程序清单/P10P17段选ADP,P20P23位选W4W1,P1口接矩阵键盘列接高四位,横接低四位/键盘0键启动,1键设置,2键暂停,3键复位INCLUDE/包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义DEFINEUCHARUNSIGNEDCHARDEFINEUINTUNS
14、IGNEDINTUNSIGNEDCHARCODELED_CODE0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E,0XBF/共阳字型段码表,“0“F“,“/UCHARLED0,LED1,LED2,LED3/函数声明/UCHARKEYSCANVOID/键盘扫描VOIDDELAYUINTI/延时程序VOIDDISPLAYUCHARLED0,LED1,LED2,LED3/动态扫描显示程序/主函数/VOIDMAINUCHARKEY19P10XFF/关所有位显示/LED016/显示初始状态“0”
15、/LED116LED216LED30WHILE1DISPLAYLED0,LED1,LED2,LED3/调显示/KEYKEYSCAN/调用键盘扫描,SWITCHKEYCASE0X7ELED00BREAK/0按下相应的键,首位数码管显示相对应的值CASE0X7DLED01BREAK/1CASE0X7BLED02BREAK/2CASE0X77LED03BREAK/3CASE0XBELED04BREAK/4CASE0XBDLED05BREAK/5CASE0XBBLED06BREAK/6CASE0XB7LED07BREAK/7CASE0XDELED08BREAK/8CASE0XDDLED09BREAK/
16、9CASE0XDBLED010BREAK/ACASE0XD7LED011BREAK/BCASE0XEELED012BREAK/CCASE0XEDLED013BREAK/DCASE0XEBLED014BREAK/ECASE0XE7LED015BREAK/F20/键盘扫描程序,P10P13列线,P14P17行线,/UCHARKEYSCANVOID/键盘扫描函数,使用行列反转扫描法UCHARCORD_H,CORD_L/行列值中间变量P10X0F/行线输出全为0CORD_HP1/读入列线值IFCORD_H0X0F/先检测有无按键按下,CORD_H不等于0X0F无键按下DISPLAYLED0,LED1,
17、LED2,LED3/调显示/IFCORD_H0X0FCORD_HP1/读入列线值P1CORD_H|0XF0/输出当前列线值CORD_LP1/读入行线值RETURNCORD_HCORD_L/键盘最后组合码值RETURN0XFF/无键按下返回值/动态扫描显示程序,P0段控,P20P23位控(反向驱动)/21VOIDDISPLAYLED0,LED1,LED2,LED3/P20XFEP0LED_CODELED0DELAY5P20XFDP0LED_CODELED1DELAY5P20XFBP0LED_CODELED2DELAY5P20XF7P0LED_CODELED3DELAY5/延时程序/VOIDDEL
18、AYINTXINTI,JFORI0IINCLUDETYPEDEFUNSIGNEDCHARUNINT8TYPEDEFUNSIGNEDCHARUNINT16UNSIGNEDCHARTABLE00XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90/不带小数点UNSIGNEDCHARSTR1“UNSIGNEDCHARSTR2“SBITTRHP30/温湿度传感器DHT11数据接入SBITLCD_RSP2622SBITLCD_RWP25SBITLCD_ENP27VOIDDISPUNINT8STR1,UNINT8STR2,UNINT8STR3,UNINT8STR
19、4UNINT8TH_DATA,TL_DATA,RH_DATA,RL_DATA,CK_DATAUNINT8TH_TEMP,TL_TEMP,RH_TEMP,RL_TEMP,CK_TEMPUNINT8COM_DATA,UNTEMP,TEMPUNINT8RESPONDVOIDDELAYNOP_NOP_NOP_NOP_NOP_/毫秒级延时子程序VOIDDELAY_MSUNSIGNEDCHARMSUNSIGNEDCHARIWHILEMSFORI0I150I_NOP_NOP_NOP_NOP_/5US级延时程序23VOIDDELAY_USUNINT8IIIIIICHARRECEIVEUNINT8ICOM_DA
20、TA0FORI0I7IRESPOND2WHILETRHDELAY_USDELAY_USDELAY_USIFTRHTEMP1RESPOND2WHILETRHELSETEMP0COM_DATA1COM_DATA|TEMP24RETURNCOM_DATAVOIDREAD_TRH/主机拉低18MSTRH0DELAY_MS18TRH1/DATA总线由上拉电阻拉高主机延时20USDELAY_USDELAY_USDELAY_USDELAY_USTRH1/判断DHT11是否有低电平响应信号如不响应则跳出,响应则向下运行IFTRHRESPOND2/判断DHT11发出80US的低电平响应信号是否结束WHILETR
21、HRESPOND2/判断从机是否发出80US的高电平,如发出则进入数据接收状态WHILETRH/数据接收状态RH_TEMPRECEIVERL_TEMPRECEIVE25TH_TEMPRECEIVETL_TEMPRECEIVECK_TEMPRECEIVETRH1/数据校验UNTEMPRH_TEMPRL_TEMPTH_TEMPTL_TEMPIFUNTEMPCK_TEMPRH_DATARH_TEMPRL_DATARL_TEMPTH_DATATH_TEMPTL_DATATL_TEMPCK_DATACK_TEMP/湿度整数部分STR10TABLE0RH_DATA/10STR11TABLE0RH_DATA
22、10/温度整数部分STR20TABLE0TH_DATA/10STR21TABLE0TH_DATA10/主函数/TH,TL,RH,RL分别代表温湿度的整数和小数部分VOIDMAINDELAY_USTMOD0X01/选择定时器工作方式26TH06553612000/256TL06553612000256EA1/开总中断ET01/开定时器中断TR01/启动定时器WHILE1READ_TRHVOIDT0_TIMERINTERRUPT1TH06553620000/256TL06553620000256DISPSTR10,STR11,STR20,STR21VOIDDISPUNINT8STR1,UNINT8
23、STR2,UNINT8STR3,UNINT8STR4P20XFEP0STR1DELAY_MS1P20XFDP0STR2DELAY_MS1/P20XFB/P0STR3/DELAY_MS1P20XFB27P0STR3DELAY_MS1P20XF7P0STR4DELAY_MS1/P20XDF/P0STR6/DELAY_MS128电气与信息工程系课程设计评分表项目评价优良中及格差设计方案合理性与创造性(10)开发板焊接及其调试完成情况(10)硬件设计或软件编程完成情况(20)硬件测试或软件调试结果10设计说明书质量20答辩情况10完成任务情况10独立工作能力10出勤情况10综合评分指导教师签名_日期_注表中标号项目是硬件制作或软件编程类课题必填内容;此表装订在课程设计说明书的最后一页。课程设计说明书装订顺序封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。