版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、信息与通信工程学院单片机系统课程设计报告完成日期:2012年11月16日目 录 1一、设计任务和要求 11.1 设计任务 11.2 性能指标 1二、设计方案 22.1 .方案设计 22.1.1 单片机控制模块的选择论证 22.1.2 温度湿度检测模块的选择与论证 22.1.3 显示模块的选择与论证 22.2 本设计采用方案及原理 3三、系统硬件设计 41.1 单片机最小系统设计 41.2 温湿度采集电路 51.3 电源电路 61.4 光敏电阻接入电路 71.5 键盘电路 81.6 LCD显示电路 81.7 报警电路 91.8 串行接口电路 104 .系统软件设计 104.1 主程序设计 104
2、.2 LCD12864模块程序 114.3 DHT11模块程序 124.4 光敏电阻模块程序 145 .调试及性能分析 155.1 调试过程中出现的问题 155.2 性能分析 156 .心得体会 16参考文献 17附录1程序清单 18附录2电路原理图 24附录3PCB图 25附录4硬件电路板图 26一、设计任务和要求1.1 设计任务基本要求:(1)利用单片机控制传感器采集环境温湿度,光照强度等参数,并在液晶屏上显示环境参数值。(2)系统设有键盘,可实现系统参数的设置。提高部分:(1)将上述环境数据记录在 SD或TF卡上;(2)采集并显示三轴加速度值;(3)无线传输所测环境参数。1.2 性能指标
3、(1)温度湿度光照强度显示:用LCD12864进行显示。(2)环境温度:单位/ C。(3)环境湿度:单位/%RH(4)环境光强:单位/lux(5)键盘(6)报警一、设计万案2.1 .方案设计2.1.1 单片机控制模块的选择论证方案一:单片机选用 STC12C5A60S2这款单片机有第二串口,有 A/D转换,有PWM/PCA 功能,有内部EEPROMT内部实现A/D转换。方案二:采用XC9000系列的FPGA该类器件具有并行处理能力,能快速的响应外部的 各种数字信号。综上所述,单片机数学运算功能较强。在程序相互调用方面, 处理方便灵活,性能稳定,适合实际应用。且单片机技术发展较为成熟,价格便宜,
4、而FPGA芯片价格较昂贵。则选择方案一。2.1.2 温度湿度检测模块的选择与论证方案一:温度湿度的采集模块采用DHT11 DHT11是一款数字输出的复合传感器,包含一个电阻式感湿元件和 NTC式温度检测元件,可测2090%RH1度,误差5%RH050摄氏度, 误差2摄氏度。方案二:选用 DS18B20温度传感器和 HS1101湿度传感器。DS18B20是一线式数字温度传感器,具有独特的单线式接口方式,测量范围在55c125C,误差为± 0.5 C。最高精度可达0.0625 C。HS1101是电容式湿度传感器,可测相对湿度范围在 0%100%RH误差为 ±2%RH综上所述,虽
5、然方案二的测试范围和精度都比较好,但DHT11综合性比较强,则选择方案一。2.1.3 显示模块的选择与论证方案一:采用12864液晶模块显示测得的数据,可显示较多组的数据,字体较大,可清 晰读数,12864为四行八列中文显示器,可以很清晰的显示温度湿度光照强度等的指标。方案二:采用1602液晶模块显示所测数据,1602液晶接线简单方便,但所显示的不清楚,没有条理性。综上所述选择方案一。2.2 本设计采用方案及原理电源模块、显示模按照系统设计的功能的要求,初步确定设计系统由单片机主控模块、 块、DHT11环境温湿度检测模块、光敏电阻模块、报警、按键等模块组成。原理框图:蜂鸣器*报警电路12864
6、液晶显示电路三、系统硬件设计3.1单片机最小系统设计Pl .0之1 E鼠科第却40JPl.lDI.J Pl.4 Pl.:DI.6产 l.U.弛LQU PlLADCl Pl.iDC P1.3.ADC3 P1.4.AIX:4 口If. AI心 Pl.tf.ADCtf Pl: ADC一P3.C-.JUO), uv ADQ.PO.O ADI PO I AD2P0.2 AD3.P03 AD4,P6.4 AD5,PO.5 ADdPOd 皿7m了 EX_LT>叫 M.l PC'.2 P0.3X 4 K 5Pl.-RFTRXDM 6M.7TTOaP3.1.TXD Pj IffiTO P3.11N
7、TL 於4 Tt PS.i.Tl P女也斛飞 瞌* EJ> XTAL-<T C汇LEnrron*rm Tvi尿A11PZ* A14P1.4AL;/. Pl, 5 AUPi.4 All 21.3 A1QP1J._P2 "P1$T1%5MT%典4中P13鼻P2 2L鸟 工守XT AL IA9.P2.1AB PIO_£2 1U1STC12C *注KK*5单片机图 3-1-1XI11晶振电路图 3-1-2RL复位电路图 3-1-3采用STC12C5A60S弹片机,P0 口接上拉电阻,10K*8排阻,晶振电路采用 11.0592M, 33pF电容,单片机晶振的作用是为系统
8、提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。3.2 温湿度采集电路QHTIL温湿度传感器电路图 3-2-1单总线数字温湿度传感器 DHT11这款传感器由广州奥松电子科技有限公司研发,与单片机的通信十分简洁方便,无需外接时钟信号,通信如图发F 片 HL AT39S5?发起通信和接收数据图2-5年总糙数字血湿度特建制DHT11与出H机诲常除此之外,它还有很多突出的优点(1)温湿度传感器的一体化结构能同时对相对湿度和温度进行测量,并以数字信号输出,从而减少用户对信号的预处理负担(2)独特的单总线数据传输线
9、协议使得读取传感器更加便捷,而且还有全部校准数据字节,编码方式为8位二进制数。(3) 40位二进制数据输出,高位先出,格式为:湿度整数部分8位,小数部分8位;温度整数部分8位,小数部分8位,最后8位为校验字节,为前32位数据的和。(4)宽工作电压,几乎与 AT89S52的电压相同,为35.5V ,而且功耗较低,通信最大电流为 2.5mA。其简要的性能参数如下表所示:表zt温湿度传感患Dffni性能型数恻显花用测昵精以肥盘精度分辨率W装2K0-50 rC±*2V11 针中排直插从表中可以看出,它的测量范围较小,但对实验或民用已经足够了,如果要工业使用的话,可选用该公司的同类工业级产品A
10、M323,测量范围为 -55.0+125.0 度,测量范围为0.0100.0%RH,并且可以和 DHT11完全互换。按照说明书的要求,DHT11与单片机的连接距离小于20米时,需要在 VCC口 DATA弓|脚之间接一个5K左右的电阻,则电路如图所示。JIII5 IV<C 13.3 电源电路VCC电源电路图 3-3-1用J1 USB供电,D1为上电指示灯,J2为六脚按键,用来控制板子上电。3.4 光敏电阻接入电路(1)光电流、亮电阻。光敏电阻器在一定的外加电压下当有光照射时,流过的电流称为光电流,外加电压与光电流之比称为亮电阻,常用“100LX”表示。(2)暗电流、暗电阻。光敏电阻在一定的
11、外加电压下,当没有光照射的时候,流过的电流称为暗电流。外加电压与暗电流之比称为暗电阻,常用“0LX”表示。(3)灵敏度。灵敏度是指光敏电阻不受光照射时的电阻值(暗电阻)受光照射时的电阻值(亮电阻)的相对变化值。(4)在一定外加电压下,光敏电阻的光电流和光通量之间的关系。不同类型光敏电阻光照特性不同,但光照特性曲线均呈非线性。因此它不宜作定量检测元件,这是光敏电阻的不足之处。一般在自动控制系统中用作光电开关。(5)光敏电阻的光谱特性光谱特性与光敏电阻的材料有关。硫化铅光敏电阻在较宽的光谱范围内均有较高的灵敏度,峰值在红外区域,化镉、硒化镉的峰值在可见光区域。因此,在选用光敏电阻时,应把光敏电阻的
12、材料和光源的种类结合起来考虑,才能获得满意的效果。(6)光敏电阻的伏安特性:在一定照度下,加在光敏电阻两端的电压与电流之间的关系称为伏安特性。在给定偏压下 ,光照度较大,光电流也越大。在一定的光照度下,所加的电压越大,光电流越大,而且无饱和现象。但是电压不能无限地增大,因为任何光敏电阻都受额定功率、最高工作电和额定电流的限制。超过最高工作电压和最大额定电流,可能导致光敏电阻永久性损坏。(7)当光敏电阻受到脉冲光照射时,光电流要经过一段时间才能达到稳定值,而在停止光照后,光电流也不立刻为零,这就是光敏电阻的时延特性。由于不同材料的光敏,电阻时延特性不同,所以它们的频率特性也不同,硫化铅的使用频率
13、比硫化镉高得多,但多数光敏电阻的时延都比较大,所以,它不能用在要求快速响应的场合。3.5 键盘电路S1至 至 _OS4TJrJ 7 0GND 'I |M键盘图 3-5-1本设计的控制输入部分为简单的四个按键:由于单片机默认状态下端口引脚为高电平,可以接上按键与地相连。单片机检测按键端口的电平情况来决定是否有按键按下和哪个按键被按下,抖动问题采用软件延时方式,减少硬件电路设计,电路如图所示。3.6 LCD显示电路由引脚的应用考虑,LCD接为串行显示,当模块的 PSB脚接低电平时,模块即进入串行接口模式。串行模式使用串行数据线 SID与串行时钟线SCL”i传送数据,即构成2线串行模式。3L
14、- EL-SET CS2 CS1/PSW D7 块 DJD4 a D2 DI DC ENRS XL VCC <ihDVCCH LCD显示电路CdmcnfMr.t 1图 3-6-13.7 报警电路图 3-7-1根据蜂鸣器的参数,电压 1.31.5V ,电流2080mA电阻6-8Q知,可用选用集成放大芯片LM386驱动,但更经济的是用一个三极管9012或8550驱动即可,电路如图所示。3.8串行接口电路RIB: R.21XT12;T2KR.1OITTR2CITTTL-OUTTCITTC2-C2 -V-串行接口电路图 3-8-1四.系统软件设计4.1主程序设计void main() (ucha
15、r k,j;LCD_init();LCD_dis_code(0,1,lcd);LCD_dis_code(1,0,lcd1);LCD_dis_code(2,0,lcd2);LCD_dis_code(3,0,lcd3); while(1)read_io();/读取温湿度数据clear_gcrom();/湿度for(k=0; k<2; k+)(lcd_pos(3,k+3);write_data(str1k);clear_gcrom();/温度for(j=0; j<2; j+)(lcd_pos(2,j+2);write_data(str2j);)delay(500);)4.2 LCD128
16、64模块程序 void LCD_dis_code(uchar x,uchar y,uchar code *s) 写地址写数据write_cmd(addr_tab8*x+y); while(*s>0)write_data(*s); /s+;)/* 初始化 LCD*/void Lcd_init(void)delay(50);write_cmd(0x30);/选择基本指令集delay(1);write_cmd(0x30);/选才1 8bit数据流delay(1);write_cmd(0x0c);/开显示(无游标、不反白)delay(1);write_cmd(0x01);/清除显示,并且设定地址
17、指针为00Hdelay(30);)/* 串行发送一个字节 void send_byte(uchar byte) uchar i;for(i=0;i<8;i+)SCLK = 0;byte=byte<<1; /*/SID = CY;SCLK = 1;SCLK = 0;)/左移一位先发送高位的数据移出的位给SID/上升沿触发发送/* 写指令 */void write_cmd(uchar cmd) (delay(1);SID = 0;SCLK = 0; delay(5);P0 = cmd;delay(5);SCLK = 1;delay(5);SCLK = 0;/* 写数据 */voi
18、d write_data(uchar dat) (delay(1);SID = 0;SCLK = 0;P0 = dat; delay(5); SCLK = 1; delay(5);SCLK = 0;/* 延时子程序*/void delay(uint a)(uint i;while(a-)(for(i=0; i<113; i+);4.3 DHT11模块程序uchar receive_byte()/接收一个字节(uchar i,temp;for(i=0;i<8; i+)(count = 2;while(!io) && count+)/temp = 0;delay1();
19、delay1();delay1();if (io=1)(temp = 1;count = 2;while(io && count+);elsetemp = 0;data_byte<<=1;data_byte=temp;等待50us低电平结束,并防止死循环return (data_byte);/* 开始信号 void read_io()/ (io = 0; delay(18);/io = 1;DATA*/开始信号,读数据并校验主机拉低18ms总线由上拉电阻拉高 主机延时20usdelay1();delay1();delay1();delay1();io = 1;/ 主
20、机设置为输入高电平,判断从机响应信号if(!io)(count = 2;while(!io)&&count+); 判断DHT11发出80us低电平响应信号是否结束 count = 2;while(io && count+);/ 判断DHT11拉高总线 80us高电平是否结束RH_temp = receive_byte();RL_temp = receive_byte();TH_temp = receive_byte();TL_temp = receive_byte();CK_temp = receive_byte();io = 1;num = (RH_temp
21、+ RL_temp + TH_temp + TL_temp);/数据校验if(num = CK_temp) (RH_data = RH_temp;RL_data = RL_temp;TH_data = TH_temp;TL_data = TL_temp; CK_data = CK_temp;/湿度整数部分str10 = (char)(0x30 + RH_data/10);str11 = (char)(0x30 + RH_data%10);/温度整数部分str20 = (char)(0x30 + TH_data/10);str21 = (char)(0x30 + TH_data%10); /*E
22、 n 口*/4.4 光敏电阻模块程序unsigned char adc0804( void ) /读 AD0804子程序 unsigned char addata,i; rd=1;wr=1;/int1=1; /读 ADC0804前准备P1=0xff; /P1全部置一准备cs=0;wr=0;wr=1; / 启动 ADC0804开始测电压rd=0; /开始读转换后数据i=i; i=i; /无意义语句,用于延时等待ADC0804读数完毕addata=P1;/读出的数据赋与addate rd=1;cs=1;/读数完毕addata=addata/2;return(addata);/返回最后读出的数据五.
23、调试及性能分析5.1 调试过程中出现的问题首先,在调试时,先下载一个 LCD显示程序,但LCD没有结果,经过测量,发现由于滑 动变阻器的阻值太大,导致 LCD背光太低,致使 LCD没有显示,把滑动变阻器阻值调小后, 则程序出现结果。5.2 性能分析此系统实现的是环境温湿度光照强度的显示,以及报警功能,按键设计等。单总线数字温度、湿度传感器,应用单片机原理,LCD显示技术,实现了实验室多点温湿度参数的实时显示和超限报警系统,保障了实验室环境的可靠性,有效地提高了实验成功率。系统集成度高,操 作容易,可靠性好,具有较高的实用价值,实践表明,该系统能够对温度、湿度进行检测, 适合于对数据采样频率要求
24、不是很高的应用场合六.心得体会为了设计出基于单片机的环境温湿度检测系统,搜集了大量的芯片手册, 查阅了较多的图书资料,复习了所学的课本教材,分两个阶段对系统进行了设计一一前期的基本设计和后 期的探索设计。前期的设计,在种类繁多的温度和湿度传感器中选定了由广州奥松公司生 产的单总线数字温湿度传感器DHT11这款传感器的优势在于通信协议相对来说比较简洁,产品价格低廉,这对设计低成本,高精度的温湿度检测系统十分有必要。对于功能方面的要求,在调查了市场上的同类产品之后,根据实际需求来设计的。市场上的温湿度检测系统的功能为,检测并显示温湿度数据, 设置报警点并报警, 与上层监控设备通信。因此设计正 是,
25、从这几个方面的要求出发,利用单片机本身的特点,来实现系统的功能。后期的探索设计,提升了系统的性能。由于第一次设计基于单片机的系统,虽然完成了基本的设计要求,但在设计过程中遇到了许多硬件和软件问题还没有完全解决,设计的过程也是模块式的,没有完整系统的总体规划,后期的探索设计只是从理论上进行了可行性分析,没有做出相应的硬件并调试符合预期构想。因此,以后还必须加强单片机系统设计的能力,毕业设计只是一个浅薄的入门。当然,在设计过程中,应虚心听取他人的建议和意见,对解决设计过程中的问题都很有帮助。展望未来,最终的系统应该为基于单片机的多功能环境检测系统,它不仅可以检测环境的温度、湿度、照度等所需的环境变
26、量并显示在液晶屏幕上,可以根据设定的限值进行报警提示,可以以时间顺序存储大量的检测数据,并根据需要发送给上层分析处理设备,还可以用红外遥控实行远程无线控制,除此之外,电源系统可以适应各种供电场合,并存储部分电能,断电后确保系统可继续工作一定时间。参考文献1李瀚孤.简明电路分析.北京:高等教育出版社 20022康光华.电子技术基础-模拟部分.北京:高等教育出版社 19793康光华.电子技术基础-数字部分.北京:高等教育出版社 19804马金龙.信号与系统.北京:科学出版社 20065唐颖.单片机原理与应用.北京:北京大学出版社 20086郑莉.董渊.张瑞丰.C+语言程序设计.北京:清华大学出版社
27、20047唐文彦.传感器.北京:机械工业出版社20108陈尔绍等.电子控制电路实例.北京:电子工业出版社 20049姜威.实用电子系统设计基础.北京:北京理工大学出版社200810毛兴武等.新型电子器件及其应用技术 .北京:中国电力出版社 201011孟贵华.电子元器件选用入门.北京:机械工业出版社 200412黎小桃等.Protel99入门与提高.北京:电子工业出版社 200913郭强.液晶显示模块应用与调试 .北京:电子工业出版社 201014陈涛.单片机应用及 C51程序设计.北京:机械工业出版社 200815钟睿.MCS-51单片机原理及应用开发技术.北京:中国铁道出版社 2006附录
28、1程序清单/*DHT11与 12864LCD*/*DHT11/*总线接P1A0 晶振 11.0592M*/*/*/#include <reg52.h>#define uchar unsigned char#define uint unsigned intuchar lcd_x,lcd_y,data_byte=0,count;uint TH_data,TL_data,RH_data,RL_data,CK_data;uint TH_temp,TL_temp,RH_temp,RL_temp,CK_temp;uchar num;void read_io();void delay(uint
29、a);/延时子函数void lcd_pos(unsigned char X,unsigned char Y);void LCD_init();/LCD初始化程序void LCD_dis_code(uchar x,uchar y,uchar code *s);/显示函数void write_data(uchar dat);/ 写数据void write_cmd(uchar cmd);/ 写指令void delay1();/10us 延时/* 汉字地址表*/ uchar code addr_tab=0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,/0x90,0x91
30、,0x92,0x93,0x94,0x95,0x96,0x97,/0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,/第一行汉字位置第二行汉字位置第三行汉字位置0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,/第四行汉字位置);sbit SID = P0A1;/读写信号sbit SCLK = P0A0;/ 串行时钟信号sbit io = P1A3;/DHT11 总线uchar code lcd=" uchar code lcd1= uchar code lcd2= uchar code lcd3=环境监测系统");
31、温度:C");湿度:%RH"光强:lux"uchar str1=" "uchar str2=" "/* 主程序 */ void main()uchar k,j;LCD_init();LCD_dis_code(0,1,lcd);LCD_dis_code(1,0,lcd1);LCD_dis_code(2,0,lcd2);LCD_dis_code(3,0,lcd3); while(1) read_io();/读取温湿度数据/clear_gcrom();/湿度for(k=0; k<2; k+)lcd_pos(3,k+3);wr
32、ite_data(str1k);/clear_gcrom();/温度for(j=0; j<2; j+) lcd_pos(2,j+3);write_data(str2j);delay(500);/*延时程序void delay1()/ */延时10usunsigned char i;for(i=0; i<3; i+);/*显示程序 */void lcd_pos(unsigned char X,unsigned char Y) unsigned char pos;if ( X = 1 )pos = 0x80 ; else if ( X = 2 ) pos = 0x90 ; else i
33、f ( X = 3 )pos = 0x88 ; else pos = 0x98 ; 数据指针=80+地址变量write_cmd(Y | pos); / /*DHT11模块 */uchar receive_byte()/接收一个字节uchar i,temp;for(i=0;i<8; i+) 等待50us低电平结束,并防止死循环count = 2;while(!io) && count+)/temp = 0;delay1();delay1();delay1();if (io=1)temp = 1;count = 2;while(io && count+); e
34、lsetemp = 0;data_byte<<=1;data_byte|=temp;return (data_byte);*/开始信号,读数据并校验/*开始信号void read_io()/ io = 0;delay(18);/主机拉低 18msio = 1;/DATA 总线由上拉电阻拉高主机延时20usdelay1();delay1();delay1();delay1();io = 1;/主机设置为输入高电平,判断从机响应信号if(!io)(count = 2;while(!io)&&count+); 判断DHT11发出80us低电平响应信号是否结束 count
35、= 2;while(io && count+);/ 判断DHT11拉高总线 80us高电平是否结束RH_temp = receive_byte();RL_temp = receive_byte();TH_temp = receive_byte();TL_temp = receive_byte();CK_temp = receive_byte();io = 1;num = (RH_temp + RL_temp + TH_temp + TL_temp);/数据校验if(num = CK_temp) (RH_data = RH_temp;RL_data = RL_temp;TH_da
36、ta = TH_temp;TL_data = TL_temp;CK_data = CK_temp;/湿度整数部分str10 = (char)(0x30 + RH_data/10);str11 = (char)(0x30 + RH_data%10);/温度整数部分str20 = (char)(0x30 + TH_data/10);str21 = (char)(0x30 + TH_data%10);/*E n 口*/*12864模块程序*/*void clear_gcrom() (uchar i,j,k;lcd_x = 0x80;lcd_y = 0x80;write_cmd(0x34);for(i = 0 ; i < 2 ; i+)/ 上下两屏幕(for(j = 0 ; j < 32 ; j+)(write_cmd(lc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024届江西省赣州市重点中学高三第二学期第二次综合练习数学试题文试卷
- 2024年初级招标采购从业人员《招标采购专业实务》考前冲刺必会试题库300题含
- 22 3 实际问题与二次函数 同步精练人教版九年级数学上册
- 自信自强主题
- 工程力学知到智慧树章节测试课后答案2024年秋湖南工学院
- 养成好习惯主题班会
- 《药学文献综述》课件
- 弘扬学习雷锋精神课件
- 安塞腰鼓课件初中语文
- 《巴西国家介绍》课件
- 后进生动员会议课件
- 新石器时代考古课件
- 多选翼微型无人机技术规范书
- 异常分娩产道异常课件
- 大气压强板书
- 水利工程建设项目文件归档范围和档案保管期限表
- 超级筹码理论电子文档(股市剑客)
- 江苏小学二年级上册劳动《树叶书签》教案(定稿)
- 【课件】读后续写之无灵主语课件-2022届高三英语写作专项
- 肿瘤流行病学概述
- A3000高级过程控制系统使用说明和维护手册20120504
评论
0/150
提交评论