基于单片机课程设计_第1页
基于单片机课程设计_第2页
基于单片机课程设计_第3页
基于单片机课程设计_第4页
基于单片机课程设计_第5页
免费预览已结束,剩余28页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于51单片机课程设计报告院 系:电子通信工程团 组:电子设计大赛1组姓 名:指导老师:2012/8/1529目录一、摘要 3二、系统方案的设计3三、硬件资源 5四、 硬件总体电路搭建 13五、程序流程图14六、设计感想 14七、参考文献 16附录17附录1程序代码17一、摘要本设计以STC89C51单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B2睬集,并以数字信号的方式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路。单片机通过对信号进行相应处理,从而实现温度控制的目的。文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有

2、:数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、led 控制程序、超温报警程序。关键词:STC89C5卑片机DS18B20温度芯片 温度控制,LED报警提示.二、系统方案的设计1、设计要求基本功能:不加热时实时显示时间,并可手动设置时间;设定加热水温功能。人工设定热水器烧水的温度,范围在2070度之间,打开开关后,根据设定温度与水温确定是否加热,及何时停止加热,可实时显示温度;设定加热时间功能。限定烧水时间,加热时间内超过温度上限或低于温度下限报警,并可实时显示温度。2、系统设计的框架本课题设计的是一种以STC89C51I片机为主控制单元,以 DS18B2Cfe温度 传感器的温度控

3、制系统。该控制系统可以实时存储相关的温度数据并记录当前的 时间。其主要包括:电源模块、温度测量及调理电路、键盘、数码管显示、指示 灯、报警、继电器及单片机最小系统。图1系统设计框架3工作原理温度传感器DS18B20从设备环境的不同位置采集温度,单片机 STC8951获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。 当采集的温度 经处理后超过设定温度的上限时,单片机通过三极管驱动继电器开启降温设备 (压缩制冷器),当采集的温度经处理后低于设定温度的下时,单片机通过三极管驱动继电器开启升温设备(加热器),这里采用通过LE

4、D1和LED2取代! !当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声,这里采用 HLLED提示。三、硬件资源1、器件选择:1.51 单片机一块STC89c51STC8951 是一个低功耗,高性能CMOS 8位单片机,片内含8kBytes ISP(In-system programmable) 的可反复擦写1000次的 Flash只读程序存储器,器件采用ATME公司的高密度、非易失性存储技术 制造,兼容标准MCS-51指令系统及STC8951引脚结构,芯片内集成 了通用

5、8 位中央处理器和ISP Flash 存储单元,功能强大的微型计算机的 STC8951 可为许多嵌入式控制应用系统提供高性价比的解决方案。 STC8951 具有如下特点:40 个引脚,8k Bytes Flash 片内程序存储器, 128 bytes 的随机存取数据存储器(RAM) , 32 个外部双向输入 / 输出(I/O )口,5 个中断优先级2 层中断嵌套中断,2 个 16 位可编程定时计数器,2 个全双工串行通信,片内时钟振荡器。止匕外,STC8951设计和配置了振荡频率可为 0Hz并可通过软件设 置省电模式。空闲模式下,CPIM停工彳K而RAMS时计数器,串行 口,外中断系统可继续工

6、作,掉电模式冻结振荡器而保存 RAM勺数据, 停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFPF口 PLCC?三种封装形式,以适应不同产品的需求。由于系统控制方案简单, 数据量也不大, 考虑到电路的简单和成本等因素, 因此在本设计中选用STC8951 单片机作为主控芯片。主控模块采用单片机最小系统是由于STC8951 芯片内含有8 kB 的E2PROM无需外扩存储器,电路简单可靠,其时钟频率为024MHz,并且价格低廉,批量价在10元以内其单片机的外围引脚有40个,分别是:第20脚和40脚分别是电 源,即GND口 Vcc;第9脚是复位脚RST第18脚是时钟XTAL2

7、脚, 片内振荡电路的输出端;第19脚是时钟XTAL1脚,片内振荡电路的 输入端;第29脚:PSENW,当访问外部程序存储器时,此引脚输 出负脉冲选通信号,PC的16位地址数据将出现在P0和P2 口上;第 30脚:ALE/PROG当访问外部数据存储器时,ALE (地址锁存)的 输出用于锁存地址的低字节;第 31脚:EA/Vpp为程序存储器内外 部选通信号;P0A0-P0A7.P1A0-P1A7.P2A0-P2A7.P3A0-P3A7.这 32 个 引脚为数据的输出及输入引脚,即I/0 口;单片机图如下:P1. 0Fl. 1F1. 2FL 3F1.4MD5I/P1, 5MI 50/F1.6SCI;

8、P1. 7 ESTRMF3. 0 _TKJ/F3, 1 fHT0;P3. 2 而T/P3, 3T0/F3.4 n;P9. 5 画F&ERD/P3. 7KTAL2KTA11FDIP Gm匚 1130匚 1229E1:141516IT1813EQ演272&2524232221 VccTO, 0 /ALO PO. 1/AD1 F。,2fAi)2 P0. 3/AD3 F0. 4/AD4P0. 5/AD5 TO. &/AD6 ro, 7/AD7 EA/m ALE/PK0& m3 P2. 7/A15P2. &/A14 12. 5/A13 F2. 4/Al 2 12.

9、 3/A11 FZ 2/A10P2. 1/A9 F工 WAS2、8位7段共阴数码管一个7段数码管一般由8个发光二极管组成,其中由7个细长的发光极管组成数字显示,另外一个圆形的发光二极管显示小数点。当发光二极管导通时,相应的一个点或一个笔画发光。控制相应 的二极管导通,就能显示出各种字符,尽管显示的字符形状有些失真, 能显示的数符数量也有限,但其控制简单,使有也方便。发光二极管 的阳极连在一起的称为共阳极数码管,阴极连在一起的称为共阴极数 码管,如图4.9所示。0x3F,0x0C,0x76,0x5E,0x4D,0x5B,0x7B,0x0E,0x7F,0x5F,0x6F,0x79,0x3 3,0x

10、7C,0x73,0x631 , 2 , 3 , 4 , 5 , 6 ,7,8, 9 ,A , B, C,D, E, F3、温度显示DS18B20一个DS18B20 采用3脚TO-92封装或8脚的SOIC封装,如图1所示。各引脚的功能:GN时电压地;DQ为单数据总线;V为电源电压;NC为空引脚U XI I.AM 18B20 ;1 Z 3NCCNC匚 尸un匚 DQqN-r m i 75mm SO(E>S18R2aZ)n ncZl N GMD口Q 二 NCI= NCCZGNDC7。K 7 CJ7H 丝CRCJTTUM JFW1TO-92iDS;xB21h8-hn u SOP图1DS18B20

11、引脚图DS18B20的DQll数据总线与单片机 P3.7连接,GNDt压地、V电 源电压分别和电压地和5伏直流电源连接。本文设计的系统主机只对 一个DS18B20进行操作,因此不需要读取 ROM编码以及匹配ROM 编码,只要跳过ROM命令,就可以进行如下温度转换和读取操作。(1)CCH 一跳过ROM,直接向DS18B20发送温度变换命令。(2)44H一读暂存器。读内部RAM中9字节的温度数据。(3)BEH 一写暂存器。发出向内部 RAM的第2、3字节写上、下限温 度数据命令,紧跟该命令之后,再传送两字节数据。DS18B20在出厂时默认配置为12位,其中最高位为符号位,即 温度值共11位,单片机

12、在读取数据时,一次会读两字节共 16位,读 完后将低11位的二进制数转换为十进制后再乘以 0.0625变为所测的 温度值。另外,还需要判断温度的正负。前 5个数字为符号位,这5 位同时变化,我们只需判断11位就可以了。前5位为1时,读取的温度为负值,且测到的数值需要取反再加一再乘以0.0625才可以得到实际的温度值。前5位为0时,读取的温度为正值,只要将测得的 数值乘以0.0625即可得到实际温度值。由于提前给DS18B20赋了上限、下限值,所以当温度超过上限 或者不足下限时,会伴有LED灯闪烁和蜂鸣器响作为警报。4、按键在按下键时,实际情况下,都会出现抖动。其直观图如下:天鹿技卜艇mj抖动波

13、形掇键薜放瞬间抖动波形图1按犍抖动波形图按键消抖一般采用硬件和软件消抖两种方法。硬件消抖是利用电路滤波的原理实现,软件消抖是通过按键延时来实现。 在微机系统中一般都采用软件延时的消抖方法,本文用的是软件延时的消抖方法。5、74HC57颔存器高性能硅门CMOS器件rcomSL74HC573跟LS/AL573的管脚一样。器件的输入是和标准CMOSft出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步) 相当于图上的Dx-Qx相通,I/O 口可以进行数据交换。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。在这里我

14、们是将LE接高电平,把锁存器当作驱动器,驱动数码管的显示;6、晶振其晶振的运用,在这地方我们用的是12MHz,主要用在单片机的最小系统中,参照单片机最小系统图示;7.电阻.电容.导线等(一)单片机最小系统电路在课题设计的温度控制系统设计中,控制核心是STC89C52I片机,该单片机为51系列增强型8位单片机,它有32个I/O 口,片内含4K FLASHED艺的程 序存储器,便于用电的方式瞬间擦除和改写,而且价格便宜,其外部晶振为 12MHz 一个指令周期为1仙d使用该单片机完全可以完成设计任务,其最小系 统主要包括:复位电路、震荡电路以及存储器选择模式(EA脚的高低电平选择), 电路如下图2所

15、示:图2单片机最小系统(二)温度传感器电路采用一线制数字温度传感器DS18B2味作为本课题的温度传感器。传感器输 出信号进4.7K的上拉电阻直接接到单片机的 P1.0引脚上。DS18B20温度传感器是美国达拉斯(DALLAS并导体公司推出的应用单总线 技术的数字温度传感器。该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上。本设计中温度传感器之所以选择单线数字器件DS18B20是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:(1)系统的特性:测温范围为20c70c ,测温精度为± 0.5 C;温度转 换精度912位可变,能够直接将温度转换值以16位二

16、进制数码的方式串行输 出;12位精度转换的最大时间为750ms可以通过数据线供电,具有超低功耗工 作方式。(2)系统成本:由于计算机技术和微电子技术的发展,新型大规模集成电 路功能越来越强大,体积越来越小,而价格也越来越低。一支DS18B20勺体积与 普通三极管相差无几,价格只有十元人民币左右。(3)系统复杂度:由于DS18B201单总线器件,微处理器与其接口时仅需 占用1个I/O端口且一条总线上可以挂接几十个 DS18B20测温时无需任何外部 元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度, 减少工程的施工量。(4)系统的调试和维护:由于引线的减少,使得系统接口大为简

17、化,给系 统的调试带来方便。同时因为DS18B2J全数字元器件,故障率很低,抗干扰性 强,因此,减少了系统的日常维护工作。DS18B2W度传感器只有三根外引线:单线数据传输总线端口DQ ,外供电源线VDD共用地线GND DS18B20W两种供电方式:一种为数据线供电方式, 此时VDD8地,它是通过内部电容在空闲时从数据线获取能量, 来完成温度转换, 相应的完成温度转换的时间较长。这种情况下,用单片机的一个I/O 口来完成对 DS18B2曲线的上拉。另一种是外部供电方式(VDD接+5V),相应的完成温度测量 的时间较短。在本设计中采用外部供电方式实现 DS18B20专感器与单片机的连接,具接口

18、电路如图4所示。图4温度传感器接口(三)按键接口电路图8键盘模块电路四、硬件总体电路搭建五、程序流程图;UJ1二苛肝 三I两份.出 口:兰秦,-a 巴事时底,M 肘空时显即当 百幅辱.六、设计感想首先通过此次课程设计,让我们对所学的计算机控制技术理论知 识更加熟悉了解,对理论学习时没有掌握牢固的一些知识以及一些在 学习中存在的漏洞进行学习并加以弥补,也让我们明白学习一门课程 就要认真地对待,掌握牢固,并要在实践中加以运用。只有能运用自如 的知识才是属于自己的东西。比较熟练,在学习此软件过程中其次,此次课程设计我们尝试用 proteus软件进行仿真设计。对于 proteus ,我们之前对它的一些

19、应 用比较熟悉,所以此次运用起来通过查找图书馆的资料以及在网上的 学习让我们意外收获了一些其他的知识,拓展了知识面,也丰富了自己的阅历。 第三,通过这次课程设计,我们学会了单片机完成某一 项功能,需要从两个方面入手:一是软件的实现即汇编语言程序的编 写,二是硬件电路的实现。两方面比较,程序编写时相对较难的一部 分。我们团组认为这是一个建模的过程, 即将实际的控制问题转换成 我们所熟悉的数学模型,这是一个很抽象的问题,有时真的是难以想 象。所以我们觉得这种困难最好的解决办法就是通过平时的积累,多多学习。 此次设计培养了我们对于计算机控制设计的一些兴趣,当 看着自己设计的东西,通过仿真可以出现自己

20、期望的结果时, 那种愉 悦的心情是前所未有的,同时当出现问题,通过自己查找资料检查电 路之后排除问题的过程也锻炼了我们对于学习的一种深入和坚持,锻炼了我们独立思考的能力和最初的创新意识,让我们真正体会到学习 的乐趣。第五,我们再次巩固了一些以前的东西,仿真软件的运用,课程设计 的书写,计算机的一些应用软件的应用,以及对 word的了解也更深 入了。最后一点,也使最深刻的体会,就是在设计过程中,基本上用到的都 是我们学过的一些原理,所以学以致用在这次设计中可谓体现的淋漓 尽致,要把所学的知识联系起来综合运用。 这些都将成为我们以后的 工作学习的铺路石,使我们在大学里收获的最实用的东西, 而不是仅

21、 仅只是纸上谈兵,而是通过我们亲自动手来完成的经验对每个人来说都是一笔财富,所以这次单片机控制技术课程设计对我们来说 绝对是一次难得的锻炼的机会。七、参考文献1 马彪 单片机应用技术2郭天祥 51单片机C语言教程3 陈海宴 51 单片机原理及应用同济大学出版社电子工业出版社北京航空航天大学出版社附录附录1 程序代码1: main主函数#include"ds18b.h"#include<reg52.h>sbit add=P3A0; / 加sbit cut=P3A1; / 减sbit set=P3A2; / 设置sbitpOO=POAO;sbitpO1=POA1;s

22、bitp02=P0A2;sbitp03=P0A3;/ 位选控制 声明sbitp04=P0A4;sbitp05=P0A5;sbitp06=P0A6;sbitp07=P0A7;sbit Lled=P2A0; /低于温度下限值此灯点亮sbitHled=P2A1; /高于温度上限值此灯点亮sbit LHIed=P2A2; /达到加热预设时间此灯点亮定义一个unsigned char tab44=0;/tab4 号数组用来存放温度的上限值与下限值unsigned char tab89=0;/unsigned char tab96=0; /定义一个tab9 号数组用来存放用户的给定的加热时间unsigne

23、dcharcodetab7=0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F; /位选控制 查表的方法控制unsignedcharcodetab=0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6;/共阳数码管数字码uchar tab1=0,0,0,0,0,0,0,0,0,0,0,0,0,0; /定义一个tab1 号数组用来存放温度转换值unsigned char shi=10,fen=35,miao,L; /你懂得不用多讲unsigned char LED; / 定义一个char 变量用来控制数 码管上的秒的闪烁u

24、nsigned char tt,i,flag=0;unsigned int wen; / 定义一个无符号整形变量用来存放温度返回值unsigned char TH,TL; / 存放用户的设定的温度上下限值void delay (unsigned int Z)/延时函数unsigned int x,y;for(x=Z;x>0;x-)for(y=110;y>0;y-);void init ()/ 初始化P2=0xff;P3=0xff;TMOD=0x11; / 开启定时器0, 1TH1=(65536-5000)/256;/5MsTL1=(65536-5000)%256;EA=1;ET1=

25、1;/ 你懂得不用多讲TR1=1;TH0=(65536-50000)/256;/50MsTL0=(65536-50000)%256;ET0=1; / 你懂得不用多讲TR0=1;void main ()init (); / 初始化 I/O 端口即定时器0.1 ;while(1)if(flag=0)|(flag=1) /进入手动设置当前时间tab84=fen/10;tab86=shi/10;tab87=shi%10;wen=dispaly();tab12=wen/100;tab11=wen%100/10;/ 你懂得不用多讲当第一次按下设置键tab85=fen%10;tab10=wen%10;tab

26、88=tab12*10+tab11;for(L=0;L<50;L+)for(i=0;i<8;i+)(P1=0;P1=tabtab11;p00=0;p01=1;p02=1;p03=1;p04=1;p05=1;p06=1;p07=1;delay_ms (2);P1=tabtab12;p00=1;p01=0;p02=1;p03=1;p04=1;p05=1;p06=1;p07=1;delay_ms(2);if(LED>=20)P1=0x02;p00=1;p01 = 1;p02=1;p03=1;p04=1;p05=0;p06=1;p07=1;delay_ms(2); if(LED>

27、;=40) LED=0; P1=0x02;p00=1;p01 = 1;p02=1;p03=1;p04=1;p05=1;p06=1;p07=1;delay_ms(2); if(flag=1)P1=0x02;p00=1;p01 = 1;p02=1;p03=1;p04=1;p05=0;p06=1;p07=1;delay_ms(2); P1=tabtab86;p00=1;p01 = 1;p02=1;p03=1;p04=1;p05=1;p06=1;p07=0;delay_ms(2);P1=tabtab87;p00=1;p01=1;p02=1;p03=1;p04=1;p05=1;p06=0;p07=1;d

28、elay_ms(2);P1=0x9c;p00=1;p01=1;p02=0;p03=1;p04=1;p05=1;p06=1;p07=1;delay_ms(2);P1=tabtab84;p00=1;p01=1;p02=1;p03=1;p04=0;p05=1;p06=1;p07=1;delay_ms(2);P1=tabtab85;p00=1;p01=1;p02=1;p03=0;p04=1;p05=1;p06=1;p07=1;delay_ms(2);if(flag=2)|(flag=3)/ 当第二或者第三次按下设置键进入温度上下限门槛设置tab42=tab82/100;tab41=tab82%100/

29、10; tab40=tab82%10; /Htab2tab46=tab83/100;tab45=tab83%100/10; tab44=tab83%10; /Ltab3for(i=0;i<8;i+)/ 动态扫描P1=tabtab4i; if(i=3) P1=0x6e;if(i=7)P1=0x1c ;P0=tab7i;delay(5);if(flag=4)/ 当第四次按下设置键进入用户给定加热时间设置tab91=TL%10;tab92=TL/10;tab94=TH%10;tab95=TH/10;for(i=0;i<8;i+)P1=tabtab9i; if(i=3)|(i=0)P1=0

30、x02; if(i=7)|(i=6) P1=0x02;P0=tab7i;delay(5);void timer1() interrupt 3TH0=(65536-5000)/256;/5MsTL0=(65536-5000)%256;/开辟一个每隔5Ms扫描按键检测是否邮件按下if(flag=4)TL+;if(flag=1)if(add=0) delay(10); if(add=0) while(!add) ;fen+;if(fen=60) fen=0;if(flag=2)tab82+;if(flag=3)tab83+;/ 你懂得不用多讲if(cut=0) delay(10); if(cut=0

31、) while(!cut) ;if(flag=4)TH+;if(flag=1) shi+;if(shi=24) shi=0;if(flag=2)tab82-; if(flag=3)tab83-;/ 你懂得不用多讲if(set=0)delay(10);if(set=0)while(!set);flag+;if(flag=5)flag=0;if(flag=1) TR0=0; if(flag=3) TR0=1; / 当第一次按下设置键关闭定时器0,if(tab88<=tab83) Lled=0; else Lled =1;/ 判断当前温度是否低于预设温度若是开启LED提示if(tab88>

32、;=tab82)Hled=0; else Hled =1;/ 你懂得不用多讲if(TL>=60) TL=0; if(TH>=24) TH=0;if(fen>=TL)&&(shi>=TH) LHled=0; else LHled=1; /判断用户预设加热时间是否达到若是 开启 LEDvoid timer0() interrupt 1TH1=(65536-50000)/256;TL1=(65536-50000)%256;/ 你懂得不用多讲tt+; LED+;if(tt>=18) tt=0;miao+; if(miao=60) fen+; miao=0;if(fen=60)shi+; fen=0;if(shi=24) shi=0;2: ds18B20.h 库文件#include"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论