1、基于单片机课程设计(完整资料)(可以直接使用,可编辑 优秀版资料,欢迎下载)基于1单片机课程设计报告院 系:电子通信工程 团 组:电子设计大赛1组姓 名:指导老师:02815目录一、摘要二、系统方案的设计三、硬件资源5四、 硬件总体电路搭建13五、程序流程图1六、设计感想 4七、参考文献1附录7附录 1 程序代码17一、摘要本设计以STC851单片机为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片S18B20采集,并以数字信号的方式传送给单片机。文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路。单片机通过对信号进行相应处理,从而实现温度控制的目的。文中还着重介绍了软
2、件设计部分,在这里采用模块化结构,主要模块有:数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、l控制程序、超温报警程序。关键词:SC89C51单片机 DS120温度芯片 温度控制 ,ED报警提示二、系统方案的设计1、设计要求基本功能:不加热时实时显示时间,并可手动设置时间;设定加热水温功能。人工设定热水器烧水的温度,范围在2070度之间,打开开关后,根据设定温度与水温确定是否加热,及何时停止加热,可实时显示温度;设定加热时间功能。限定烧水时间,加热时间内超过温度上限或低于温度下限报警,并可实时显示温度。、系统设计的框架本课题设计的是一种以STC8C单片机为主控制单元,以S1820为温
3、度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间.其主要包括:电源模块、温度测量及调理电路、键盘、数码管显示、指示灯、报警、继电器及单片机最小系统。图 系统设计框架3工作原理温度传感器DS18B从设备环境的不同位置采集温度,单片机ST851获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动继电器开启降温设备 (压缩制冷器) ,当采集的温度经处理后低于设定温度的下时 , 单片机通过三极管驱动继电器开启升温设备 (加热器) ,这里采用
4、通过LD1和LD取代!!当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声,这里采用HLLE提示。加热器继电器2三、硬件资源1、器件选择:1。5单片机一块STC8c1STC895是一个低功耗,高性能CMOS 8位单片机,片内含8kytesIS(Insyste rogrambe)的可反复擦写100次的Flsh只读程序存储器,器件采用AMEL公司的高密度、非易失性存储技术制造,兼容标准MCS51指令系统及STC51引脚结构,芯片内集成了通用8位中央处理器和I Flas存储单元,功
5、能强大的微型计算机的STC8951可为许多嵌入式控制应用系统提供高性价比的解决方案。TC95具有如下特点:40个引脚,8k ytes Fa片内程序存储器,18 tes的随机存取数据存储器(AM),32个外部双向输入/输出(I/)口,5个中断优先级2层中断嵌套中断,2个6位可编程定时计数器,2个全双工串行通信,片内时钟振荡器。此外,SC891设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CP暂停工作,而A定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RA的数据,停止芯片其它功能直至外中断激活或硬件复位.同时该芯片还具有PDIP、TQFP和PCC等三种封装
6、形式,以适应不同产品的需求.由于系统控制方案简单 ,数据量也不大 ,考虑到电路的简单和成本等因素 ,因此在本设计中选用 STC85单片机作为主控芯片。主控模块采用单片机最小系统是由于STC8951芯片内含有8 kB的 E2PROM,无需外扩存储器 ,电路简单可靠 ,其时钟频率为 024Mz,并且价格低廉 ,批量价在10元以内。其单片机的外围引脚有40个,分别是:第2脚和0脚分别是电源,即GND和c;第9脚是复位脚RS;第脚是时钟TL2脚,片内振荡电路的输出端;第19脚是时钟X1脚,片内振荡电路的输入端;第29脚:PSEN脚,当访问外部程序存储器时,此引脚输出负脉冲选通信号,P的16位地址数据将
7、出现在P0和P口上;第30脚:ALEPRG,当访问外部数据存储器时,ALE(地址锁存)的输出用于锁存地址的低字节;第脚:A/Vpp为程序存储器内外部选通信号;P00-07P10P17。P2P27.P30P37.这个引脚为数据的输出及输入引脚,即I/0口;单片机图如下:、8位段共阴数码管一个 7段数码管一般由个发光二极管组成,其中由7个细长的发光二极管组成数字显示,另外一个圆形的发光二极管显示小数点。当发光二极管导通时,相应的一个点或一个笔画发光。控制相应的二极管导通,就能显示出各种字符,尽管显示的字符形状有些失真,能显示的数符数量也有限,但其控制简单,使有也方便。发光二极管的阳极连在一起的称为
8、共阳极数码管,阴极连在一起的称为共阴极数码管,如图.所示.共阴数码管共阴数码管的编码为:x3F,0x0,0x,05E,0xD,0xB,07B,0xE,0x7F,0x5F,x6F,0x79,0x33,0xC,73,0x6 , , 2 , 3 , 4 , 5 , 6, , 8 , 9 ,A ,B, C, , E, F 3、温度显示D18B20一个DS1B2采用3脚TO92封装或8脚的SOIC封装,如图1所示。各引脚的功能:GD为电压地;Q为单数据总线;V为电源电压;NC为空引脚.图1S18B0引脚图 S1B20的D单数据总线与单片机3.7连接,GD电压地、V电源电压分别和电压地和5伏直流电源连接.
9、本文设计的系统主机只对一个S18B20进行操作,因此不需要读取ROM编码以及匹配ROM编码,只要跳过ROM命令,就可以进行如下温度转换和读取操作。(1)H跳过R,直接向DSB2发送温度变换命令.(2)44H读暂存器。读内部RM中9字节的温度数据.(3)BEH写暂存器。发出向内部R的第2、3字节写上、下限温度数据命令,紧跟该命令之后,再传送两字节数据。 DS1820在出厂时默认配置为2位,其中最高位为符号位,即温度值共1位,单片机在读取数据时,一次会读两字节共16位,读完后将低1位的二进制数转换为十进制后再乘以0.625变为所测的温度值。另外,还需要判断温度的正负。前5个数字为符号位,这5位同时
10、变化,我们只需判断11位就可以了。前5位为1时,读取的温度为负值,且测到的数值需要取反再加一再乘以0。065才可以得到实际的温度值。前5位为时,读取的温度为正值,只要将测得的数值乘以00625即可得到实际温度值.由于提前给D18B0赋了上限、下限值,所以当温度超过上限或者不足下限时,会伴有ED灯闪烁和蜂鸣器响作为警报. 4、按键在按下键时,实际情况下,都会出现抖动。其直观图如下: 按键消抖一般采用硬件和软件消抖两种方法。硬件消抖是利用电路滤波的原理实现,软件消抖是通过按键延时来实现。在微机系统中一般都采用软件延时的消抖方法,本文用的是软件延时的消抖方法。5、4HC5锁存器 高性能硅门 C 器件
11、L74C573 跟 LSA53 的管脚一样。器件的输入是和标准 CM 输出兼容的;加上拉电阻,他们能和 LSASTL输出兼容。当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)相当于图上的Dx-Qx相通,I/0口可以进行数据交换。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。在这里我们是将L接高电平,把锁存器当作驱动器,驱动数码管的显示;6、晶振其晶振的运用,在这地方我们用的是12z,主要用在单片机的最小系统中,参照单片机最小系统图示;7. 电阻.电容。导线等(一)单片机最小系统电路在课题设计的温度控制系统设计中,控制核心是STC85单片机,该单片机为5系列增
12、强型位单片机,它有2个/O口,片内含4K FLSH工艺的程序存储器,便于用电的方式瞬间擦除和改写,而且价格便宜,其外部晶振为12Hz,一个指令周期为1S。使用该单片机完全可以完成设计任务,其最小系统主要包括:复位电路、震荡电路以及存储器选择模式(A脚的高低电平选择),电路如下图2所示:图2 单片机最小系统(二)温度传感器电路采用一线制数字温度传感器D8B20来作为本课题的温度传感器。传感器输出信号进4.7K的上拉电阻直接接到单片机的P1.0引脚上。S1B20温度传感器是美国达拉斯(DALA)半导体公司推出的应用单总线技术的数字温度传感器。该器件将半导体温敏器件、A/转换器、存储器等做在一个很小
13、的集成电路芯片上.本设计中温度传感器之所以选择单线数字器件DS1B20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:()系统的特性:测温范围为27 ,测温精度为士0.;温度转换精度912位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;12位精度转换的最大时间为750ms;可以通过数据线供电,具有超低功耗工作方式。()系统成本:由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。一支DS1B20的体积与普通三极管相差无几,价格只有十元人民币左右。(3)系统复杂度:由于S8B2是单总线器件,微处理器与其接口时仅需占用1个I
14、/O端口且一条总线上可以挂接几十个D18B2,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的施工量.(4)系统的调试和维护:由于引线的减少,使得系统接口大为简化,给系统的调试带来方便。同时因为S180是全数字元器件,故障率很低,抗干扰性强,因此,减少了系统的日常维护工作。DS18B20温度传感器只有三根外引线:单线数据传输总线端口 ,外供电源线VDD,共用地线D。S1B20有两种供电方式:一种为数据线供电方式,此时VD接地,它是通过内部电容在空闲时从数据线获取能量,来完成温度转换,相应的完成温度转换的时间较长。这种情况下,用单片机的一个O口
15、来完成对DS182总线的上拉.另一种是外部供电方式(VDD接+V),相应的完成温度测量的时间较短.在本设计中采用外部供电方式实现D1820传感器与单片机的连接,其接口电路如图所示。图4 温度传感器接口(三)按键接口电路本课题设计采用的键盘模块,其接口原理图如下图8所示:图8 键盘模块电路四、 硬件总体电路搭建五、程序流程图六、设计感想首先通过此次课程设计,让我们对所学的计算机控制技术理论知识更加熟悉了解,对理论学习时没有掌握牢固的一些知识以及一些在学习中存在的漏洞进行学习并加以弥补,也让我们明白学习一门课程就要认真地对待,掌握牢固,并要在实践中加以运用。只有能运用自如的知识才是属于自己的东西。
16、 比较熟练,在学习此软件过程中其次,此次课程设计我们尝试用potes软件进行仿真设计。对于protes,我们之前对它的一些应用比较熟悉,所以此次运用起来通过查找图书馆的资料以及在网上的学习让我们意外收获了一些其他的知识,拓展了知识面,也丰富了自己的阅历。第三,通过这次课程设计,我们学会了单片机完成某一项功能,需要从两个方面入手:一是软件的实现即汇编语言程序的编写,二是硬件电路的实现。两方面比较,程序编写时相对较难的一部分。我们团组认为这是一个建模的过程,即将实际的控制问题转换成我们所熟悉的数学模型,这是一个很抽象的问题,有时真的是难以想象。所以我们觉得这种困难最好的解决办法就是通过平时的积累,
17、多多学习。 此次设计培养了我们对于计算机控制设计的一些兴趣,当看着自己设计的东西,通过仿真可以出现自己期望的结果时,那种愉悦的心情是前所未有的,同时当出现问题,通过自己查找资料检查电路之后排除问题的过程也锻炼了我们对于学习的一种深入和坚持,锻炼了我们独立思考的能力和最初的创新意识,让我们真正体会到学习的乐趣。第五,我们再次巩固了一些以前的东西,仿真软件的运用,课程设计的书写,计算机的一些应用软件的应用,以及对word的了解也更深入了. 最后一点,也使最深刻的体会,就是在设计过程中,基本上用到的都是我们学过的一些原理,所以学以致用在这次设计中可谓体现的淋漓尽致,要把所学的知识联系起来综合运用。这
18、些都将成为我们以后的工作学习的铺路石,使我们在大学里收获的最实用的东西,而不是仅仅只是纸上谈兵,而是通过我们亲自动手来完成的经验对每个人来说都是一笔财富,所以这次单片机控制技术课程设计对我们来说绝对是一次难得的锻炼的机会。七、参考文献1 马彪 单片机应用技术同济大学出版社 2 郭天祥 51单片机C语言教程 电子工业出版社3 陈海宴1单片机原理及应用北京航空航天大学出版社附录附录1 程序代码1:i主函数icludes18b。inclure5.hsit a=P30;/加sb cut=P31;/减bit seP2;/设置 sbit 00=P0; sit p01=P1;it p02=P02; sbi
19、p03=P0; / /位选控制声明btp04=P0; bip5=05;sit 0=P06; bit p00;sbit Lled=P2;/低于温度下限值 此灯点亮sbit Hled=1; /高于温度上限值 此灯点亮st Ld22; /达到加热预设时间此灯点亮unsignd car tab44=0; / 定义一个tab4号数组用来存放温度的上限值与下限值usige ca tab89=0; /nsined hr tab90; / 定义一个ta号数组用来存放用户的给定的加热时间 nigned cha code ta70xfe,0x,0xfb,xf7,xef,0xF,0xb,x7F; /位选控制 查表的
20、方法控制unsignear codetab=0fc,06,xa,x2,0x66,xb6,0xb,0e0,0e,xf6;/共阳数码管数字码cr ta0,0,0,0,0,0,0,0,0,0,; /定义一个tab1号数组用来存放温度转换值ungned chr shi=10,en=35,mia,L;/你懂得 不用多讲nsied ar D; /定义一个char变量用来控制数码管上的秒的闪烁unsined chr t,i,flag=0;unsigned it e; /定义一个无符号整形变量用来存放温度返回值unsgned char TH,TL; /存放用户的设定的温度上下限值 voiddelay(unsi
21、ed ntZ)/ 延时函数 ng int x,y; r(x=Z;x0;x-) r(y=10;y0;-); void nt()初始化 P20f; P3=0x; TMOD=01; /开启定时器 0,1 TH1=(6556-000)/56;/Ms L=(56500)56; E=1; 1=1;/你懂得不用多讲 TR1; TH0(65650000)/25;/0Ms L0=(5536500)%26; ET0=1;/你懂得不用多讲 T1; vomain () init (); 初始化IO端口即定时器0.1;hle() i((fla=0)|(lag=1) /当第一次按下设置键 进入手动设置当前时间 tab84
22、fen/10;ab=fen%10; tab86=sh/;ta87=shi1; wenda(); tab12=en/100;tab1=n%/10; /你懂得不用多讲b10=n10; ab=tab1210+a11; or(;L50;L+)for(0;=40) E=0;=0x2; p00=;p01=1;p2=1;p3=;p04=1;p05=1;0=1;p07=1; elay_m(2); i(fag=1) P1=0x02; p00;1;p02=1;p03=1;4=1;=0;p0=1;p07=1; elay_s(2); 1=tbtab86;p01;p01;p02=;p3=1;p4=1;0=;0=;070
23、;delams(2); P1=tabta8;p00=1;p011;021;p03=1;=;p5=;p0=;p07=; dla_ms(2); 1=x9c; p00=1;1=1;p02=0;p0=1;04=;p05=1;p06=1;p07=1; delay_s(2); P1abtb84;00=1;p01=1;p02=1;p031;p=0;05=1;p0=1;p0=1; delaym(2); P1=abtb85;p1;p01=;p0=;p03=;p04=1;051;p06=1;p07=; elayms(); (fag=2)|(flag=3))/当第二或者第三次按下设置键 进入温度上下限门槛设置 tb
24、42=ta8/1;tab41tb8210/10; ab40=tb8210;/Htab tab4=ab8/100; tab4=tab8100/1; tb44=tab8%10;L tab3 for(i=;i=24) TH=0; if(fen=TL)(sh=H)) LHled0; else Lled=1; /判断用户预设加热时间是否达到 若是 开启LED vod ier0()iterrupt 1 H1=(6536-00)/5; 1(655360000)26;/你懂得不用多讲 +; LED+; i(tt=18) tt=0;mio+; i(miao=) fen+;miao;if(fen=60)hi+;e
25、=0;if(sh=24)shi=0; 2:ds120.h库文件#incde”ds18。h” #nclue0;y);uhar 8b20_reset()/复位D18Bchara;Q0;elayus(60);;ela_u(9); i(DQ)a=;delay_ms(2);rturna;od ds18b2_write(chara)/写chari;for(i=;i;+) DQ=0; if(00) DQ1; eleDQ=; dlayu();D=1;/至高下一位数据准备 a=; uca s8b2re()/读uchar ,b;for(=0;j8;+)DQ=;b1;Q=1;(DQ)b=b080;dly_us(2)
26、;Q=1;/至高为下一位数据 准备return b;unsigned it disply() /启动温度转化 并返回温度转换至unt H,L; ds1820_reset(); ds8b2_write(0xc); ds18b20_wrte(0x44);elay_ms(0); s18b20_reset(); ds1b2_wr(0x); ds18b0_re(0xb);L=s8b20_read(); Hs182re(); HH5L;H0.625; retrn H;3:820头文件#ifnde _D1820_defin DS1820_H_den uchr siged char #definuint un
27、signd n un otput(vd); videay_s(uint a);#ndif摘要近年来,随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新.在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,正在不断的应用到实际生活中,并且根据具体硬件结构软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊.那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MS51系列单片机TC851为中心器件来设计交通灯控制器,实现了通过信号灯对路面状况的智能控制。从一定程度上解决了交通路
28、口堵塞、车辆停车等待时间不合理、急车强通等问题。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。关键词:交通灯 单片机 数码管一 .总体设计思路.1设计目的及思路设计目的了解交通灯管理的基本工作原理,熟练掌握SC89C5的工作原理和应用编程,熟悉STC8C51单片机并行接口的各种工作方式和应用,并了解计数器定时器的工作方式和应用编程外部中断的方法,掌握多位LED显示问题的解决。设计思路(1)分析目前交通路口的基本控制技术,提出自己的交通控制的初步方案.(2)确定系统交通控制的总体设计,增加了倒计时显示提示。(3)进行显示电路.(4)进行软件系统的设计。1.2
29、 实际交通灯显示时序及状态转换的理论分析图1所示为红绿灯转换的状态图。S2S1S4S3图 红绿灯状态转换图状态2SS时间3s530s5s东西道红灯亮红灯亮绿灯亮黄灯亮南北道绿灯亮黄灯亮红灯亮红灯亮表1 十字路口指示灯燃亮方案说明:(1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。时间为60秒。 (2)黄灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换. (3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。 时间为80秒.东西方向车流大通行时间长。 (4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车
30、辆就能安全畅通的通行。(5)此表可根据车流量动态设定红绿灯初始值。 共四种状态,分别设定为S1、S2、S3、4,交通灯以这四种状态为一个周期,循环执行如下图所示:图2 交通灯状态循环图程序就是在上述四种状态下循环转化的。一个周期四个状态,在正常模式下共花费分10秒。二.具体设计方案2方案要求:本设计要求与交通信号实际控制一致,采用LE模拟信号灯,信号灯分东西、南北二组,分别有红、黄、绿三色。其工作状态由程序控制,启动、停止按钮分别控制信号灯的启动与停止。白天/黑夜转换开关可对信号进行控制转换。并且要求能用两位数码管(或者一位数码管)来显示红灯或者绿灯等待的时间,在黄灯的时候数码管不显示。信号灯
31、的控制要求如下:假设东西方向交通繁忙为主干道,车流量为南北交通的两倍.因此东西方向的绿灯通行时间为是南北方向上的两倍。开始时东西方向绿灯先亮,南北为红灯。按下启动按钮开始工作,,按下停止按钮,停止工作.白天/黑夜转换开关闭合时为黑夜工作状态,这时只有黄灯来回闪烁,断开为白天工作状态。白天工作状态要求:东西方向绿灯亮0s,然后黄灯闪三下(下/秒,共5秒),然后红灯亮20s,而南北方向为红灯亮40然后绿灯亮s,然后黄灯也闪三下;如此周期循环下去。 示意图2。2方案分析根据十字路口交通灯的要求,可将本系统分为三个模块,第一模块是控制模块,主要负责整个系统的控制和运算,从而使各模块正常工作,第二个模块
32、式显示模块包括LED灯和数码管;第三是电源模块,给各模块提供电源,让各模块工作。其系统设计结构如图:图3.系统设计结构图。38951单片机引脚功能说明89C51外部引脚图:(可以直接拷入ASM程序文件中,作注释使用,十分方便) P1.0 1 40 Vcc P1.1 29 0.0 P2 38 P0. P1。3437P0。 P14 36 P.3 1.5 6 5 P0P16 7 34 P. P1。7 8 33 P0。 ST/Vp 932 0 RXDP3.0 10 31 EA/Vp(内1外0程序地址选择) TP31 11 3 ALE/P(地址锁存输出) -IN0 P 2 29 -PSN (外部程序读选通输出)-INT1 3。3 3 28 P2。7 T0 P3.4 27 P。6 T1P3.5 5 6 P3。6 16 2 P。