基于串口通讯的单片机测温系统设计_第1页
基于串口通讯的单片机测温系统设计_第2页
基于串口通讯的单片机测温系统设计_第3页
基于串口通讯的单片机测温系统设计_第4页
基于串口通讯的单片机测温系统设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉纺织大学机械设计及其自动化学院课程设计(论文)说明书论文题目 基于串行口收发电路的温度测量单片机系统设计学 号 1302220132 学生姓名 彭航 专业班级 测控11301班 任课老师 乔 桥 总评成绩 2016 年 1 月 6 日摘 要 随着科技的不断进步,在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已成为当今的主流。本文介绍了数字温度测量及自动控制系统的设计。本文采用单片机来实现对温度的控制。它的主要组成部分有:AT89S51单片机、温度传感器、按键与显示电路、温度控制电路、串口通讯电路。它可以实时的显示和设定温度,实现对温度的自动控制。通过测试表明,本设计

2、对温度的控制有方便、简单的特点,从而大幅提高了被控温度的技术指标。关键词: 单片机 温度传感器 键盘和显示 串口通讯Abstract As the technology advances in industrial production in the temperature is charged with common parameters, and the use of those charged with SCM to the parameters of control has become the mainstream. In this paper, digital temperatur

3、e measurement and automatic control system design. In this paper, SCM to achieve the temperature control. It is a major component of: STC89C52 SCM, temperature sensor, keyboard and display circuit, temperature control circuit. It can display real-time and temperature settings, and the temperature co

4、ntrol,and serial interface electric circuit. Passed the tests show that the design of the temperature control is convenient and simple characteristics, thus greatly raising the temperature was charged with the technical indicators.Key words: MCU Temperature sensor Keyboard and Demonstration Serial I

5、nterface目录一、设计任务书.4二、具体设计.52.1系统设计.5三、电路设计. 53.1显示电路设计.53.2按键电路设计.73.3温度采样电路设计.83.4串行通讯电路设计.93.5报警电路设计11四、操作说明.12五、总结.12六、电路仿真图12七、源程序代码13一、设计任务书1.设计题目:基于串行口收发电路的温度测量单片机系统设计1.2目的意义:(1)综合运用并巩固所学单片机设计知识;(2)采用编程的方法实现基于串行口收发电路的温度测量单片机系统设计。1.3设计内容:A/D转换电路的制作 。 掌握A/D转换电路的制作。 掌握温度采样电路的原理和制作。 掌握将转换的数字信号换算成实

6、际温度值的方法。 掌握相应电路的程序编写 单片机串行口收发电路的制作 学会单片机与PC机收发电路的制作。 掌握MCS-51单片机串行口收发程序的编写要点。(3)基本人机接口设计 完成显示接口设计。 完成键盘接口设计。设计要求:按题意要求,画出原理图;单片机接线图;按照题目要求设计采集电路;完成单片机控制程序;完成设计说明书(15页);设计上交内容:设计说明书(包括1、2、3、4、5项)1.4设计步骤理解并确定设计要求确定整体控制方案编写程序说明书附录附上电路图一张及汇编控制程序或C51程序一份,说明书分三章描述,即设计内容的前三点。二、具体设计2.1系统设计本次课程设计是采用编程的方法实现基于

7、串行口收发电路的温度测量单片机系统设计,利用温度传感器与AT89C51单片机结合来测量温度,并在显示相应的温度值,可以通过按键设置温度的上限和下限数值,当温度超过设定的最高温度或低于设定的最低温度值是,系统就会进行声音报警,提示高温报警或低温报警。本次系统可分为五个主要板块:显示电路;按键设置电路;温度采样电路报警电路电平转换电路。系统框图如图1所示:AT89C51显示电路按键设置电平转换PC机温度采样电路报警电路复位电路晶振电路图1:系统整体框图三、电路设计3.1显示电路设计显示部分元器件:显示器LCD16021.LCD1602简介:1602液晶也叫1602字符型液晶,它是一种专门用来显示字

8、母、数字、符号的点阵型液晶模块。它是由若干个5x7或者5x11的点阵字符位组成,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能很好的显示图片。LCD1602基本操作时序:读状态:输入:RS=L,RW=H,E=H 输出:D0D7状态字写指令:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲 输出:无读数据:输入:RS=H,RW=H,E=H 输出:D0D7=数据写数据:输入:RS=H,RW=L, D0D7=数据,E=高脉冲 输出:无LCD1602的引脚功能如表1所示:表1:LCD1602引脚功能表2.电路图

9、如图2所示图2:LCD1602与单片机连接图3.LCD1602初始化过程(复位过程):1.延时15ms2.写指令38H(不检测忙信号)3.延时5ms4.写指令38H(不检测忙信号)5.延时5ms6.写指令38H(不检测忙信号)7.以后每次写指令、读/写数据操作之前均需要检测忙信号)8.写指令38H:显示模式设置9.写指令08H:显示关闭10.写指令01H:显示清屏11.写指令06H:显示光标移动位置12.写指令0CH:显示开及光标设置3.2按键设置部分: 该部分是控制温度上下限的控制装置,选用普通的双脚按键,由于器件简单,就不加说明了。按键如图3所示图3:按键设置电路图3.3温度采样部分:DS

10、18B201.DS18B20简介:DS18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点: (1)采用单总线的接口方式 与微处理器连接时 仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。 (2)测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 + 125 ; 在 -10+ 85C 范围内,精度为 0.5C 。 (3)持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多点测温。 (4)供电方式灵活

11、 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而 使系统结构更趋简单,可靠性更高。 (5)测量参数可配置 DS18B20 的测量分辨率可通过程序设定 912 位。 DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。2.DS18B20与单片机的连接 把DS18B20的数据线与单片机的P1.1管脚连接,再加上阻值为10K的上拉电阻。图4:温度传感器与单片机连接图3.DS118B20的初始化过程:主机首先发出一个480960微秒的

12、低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。做为从器件的DS18B20在一上电后就一直在检测总线上是否有480960微秒的低电平出现,如果有,在总线转为高电平后等待1560微秒后将总线电平拉低60240微秒做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。4.DS18B20的操作过程:DS18B20的一线工作协议流程是:初始化ROM操作指令存储器操作指令数据传输。其工作时序包括:(1)初始化时序(2)写时序(3)读时序5.DS18B20的读操作

13、过程:由于本次课程设计只需要读取当前环境温度,故这里只介绍读操作。对于读数据操作时序分为读0时序和读1时序两个过程。读周期是从主机把单总线拉低1微秒之后就得释放单总线为高电平,以让DS18B20把数据传输到单总线上。作为从机DS18B20在检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把总线拉为低电平直到读周期结束。若要送出1则释放总线为高电平。主机在一开始拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期内总线为高电平则确认为1。完成一个读时序过程,至少需要60微秒才能完成6.DS18B20

14、存储温度的形式及读取温度的操作步骤DS18B20经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。所以当我们只想简单的读取温度值的时候,只用读取暂存器中的第0和第1个字节就可以了。简单的读取温度值的步骤如下:(1)跳过ROM操作(2)发送温度转换命令(4)跳过ROM操作(5)发送读取温度命令(6)读取温度值3.4串行口通讯部分:MAX232 MAX232的管脚图如图5所示: 图5:MAX232管脚图1.max232资料简介: 该产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。由于电脑串口RS232电平是-10v+10v,而一般的单片机应用系统的信号电压是

15、TTL电平0+5v,MAX232就是用来进行电平转换的,该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。 该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-VTTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。2.主要特点:(1)单5V电源工作 (2)LinBiCMOSTM工艺技术(3)两个驱动器及两个接收器(4)30V输入电平 (5)低电源电流:典型值是8mA (6)符合甚至优于ANSI标准EIA/TIA-232-E及ITU推荐标准V.28(7)ESD保护大于MIL-S

16、TD-883(方法3015)标准的2000V3.MAX232接线图 图6:串行口通讯接线图4.串行口设置程序 由于收发的为8位十六进制数,故可采用串行口工作方式1。双工通信要求收、发同时进行。实际上收、发操作主要是在串行口中进行,CPU只是把数据从接收缓冲器读出和把数据写入发送缓冲器。数据接收用中断方式进行。数据发送通过人工按下按键进行。但由于MCS-51单片机串行中断请求TI或RI合为一个中断源,响应中断以后,通过检测是否是RI置位引起的中断来决定是否接收数据。发送数据是通过调用子程序来完成。定时器T1采用工作方式2,可以避免计数溢出后用软件重装定时初值。定时器T1初值计算如图8-4所示,定

17、时器初值为0FEH。SCON取值:50H。TMOD取值:20H。根据老师提供资料,汇编程序如下:ORG 0000H LJMP START ORG 0023HLJMP SINSTART:MOV TMOD,#20H ;定时器T1设为方式2MOV TL1,#0FEH ;装入定时器初值MOV TH1,#0FEH ;8位重装值SETB TR1 ;启动定时器T1MOV SCON,#50H ;串行口设为方式1SETB EA ;开总中断SETB ES ;开串行中断MAIN: SETB P2.7 ;P2.7设为输入JB P2.7,MAINLCALL DELAY ;延时去抖JB P2.7,MAINLCALL SO

18、UT ;调用发送子程序NEXT: JNB P2.7,NEXT ;等待按键释放LCALL DELAYJNB P2.7,NEXTLJMP MAIN;串行中断服务程序SIN: JNB RI,FANHUI ;判断是否为接收引起的中断MOV A,SBUF ;从接收缓冲器读入数据MOV P1,A ;送P1口显示FANHUI: CLR RICLR TIRETI;发送子程序SOUT: MOV P0,#0FFH ;P0口设为输入口MOV A,P0 ;P0口状态送累加器AMOV SBUF,A ;把数据写入发送缓冲器RETDELAY:MOV R6,#64H ;延时10ms子程序D1: MOV R5,#0EHNOPD

19、2: NOPNOPDJNZ R5,D2 DJNZ R6,D1RETEND3.5报警电路图7:报警电路连线图本次课程设计的报警电路如图7所示,电路中使用一个三极管作为开关,当环境温度超出温度最高上限或低于最低温度下限时,单片机会让P1.0为高电平、P1.1为低电平,此时三极管导通LED-RED亮,蜂鸣器工作报警(该处电压只有2.8V左右,应将蜂鸣器的导通电压设置为2.5V),表示危险。反之,单片机让P1.0为低电平、P1.1为高电平,此时LED-GREEN亮,表示安全。四、操作说明 该装置刚通电时,要对系统进行初始化,首先按下“设置”键,此时显示屏上“min”会有光标闪动,按“加”或者“减”键可

20、设置最低温度。同理,再按下“设置”键,可设置最高温度。设置完成后,再次按下设置键,装置初始化完成,通过调节DS18B20的温度值模拟环境温度变化,同时在显示屏上显示当前温度,绿灯亮,表示环境在设定温度范围之内,红灯亮以及蜂鸣器响表示环境温度在温度范围之外。五总结本次课程设计花费了两周的时间去去学习相关软件和程序,获得了很多心得与体会,刚开始做课程设计真的有点郁闷,程序里面的好多内容不懂,自我感觉是单片机我们所学的内容还不足以编出这两个程序,但是只好硬着头皮去看去理解。但在学习过程中也充满了乐趣,当看懂了程序的一些语句,画出了要求的设计图,那我喜悦那种成就感油然而生。这次课程设计让我受益匪浅,无

21、论从知识上还是其他的各个方面。上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。但在课程设计中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。在这次课程设计中又让我体会到了合作与团结的力量,当遇到不会或是设计不出来的地方,我们就会在QQ群里讨论或者是同学之间相互帮助。团结就是力量,无论在现在的学习中还是在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、更多的情感。单片机是很重要的一门课程,老师和一些工作的朋友都曾说过,如果学好一门单片机,就凭这个技术这门手艺找一个好工作也不成问题。尽管我们在课堂学到的

22、内容很有限,但在以后的学习中单片机还需要好好的深入研究和学习,学好了单片机也就多了一项生存的本钱。最后感谢老师对我们的精心指导和帮助,感谢同学们对我的帮助。六、电路仿真图五、源程序代码#include reg51.h #include 18b20.h #define uchar unsigned char #define uint unsigned int uchar code table=Wendu is: ;/初始化日期和星期 uchar code table1=Max:10 Min:00;/初始化时间 uchar CNT; /以下三个是定义LCD的引脚sbit lcden=P22; sb

23、it lcdwrite=P21; sbit lcdrs=P20; /定义四个功能开关sbit s1=P14;sbit s2=P15; sbit s3=P16; sbit s=P17; /定义二极管 sbit LED1=P10;sbit LED2=P11; uchar time; char hour,min,sec,day,mon,year1,year2,num,wendu,tec=35,flag=0; char shangxian=10,xiaxian=0; /延时程序 void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);

24、/lcd的写指令void write_com(uchar com) lcdrs=0; lcden=0; P0=com; delay(5); lcden=1; delay(5);lcden=0; /lcd的写数据void write_data(uchar da) lcdrs=1;lcden=0;P0=da;delay(5);lcden=1;delay(5);lcden=0; /初始化void init()lcdwrite=0;lcden=0;write_com(0x38); /16*2显示,5*7点阵,8位数据write_com(0x0c);/显示开,关光标write_com(0x06); /移

25、动光标write_com(0x01);/清除LCD的显示内容TMOD=0x01;TL0=(65536-50000)%256;/定时50msTH0=(65536-50000)/256;EA=1;ET0=1;TR0=0; void write_wendu(uchar add, char da) uchar shi,ge;shi=da/10;ge=da%10;write_com(0x80+add);write_data(0x30+shi);write_data(0x30+ge);write_data(0xdf);void write_wendu1(uchar add, char da) uchar

26、shi,ge;shi=da/10;ge=da%10;write_com(0x80+0x40+add);write_data(0x30+shi);write_data(0x30+ge);/键盘扫描void keyscan() if(s1=0)/如果S1按下去,执行相应的操作 delay(5);/消除抖动 if(s1=0) flag=1; num+; while(!s1); if(num=1) TR0=0;/关定时器 write_com(0x80+0x40+14);/选定秒 write_com(0x0f); if(num=2)/选定分 write_com(0x80+0x40+5); if(num=

27、3)/恢复 num=0; write_com(0x0c); TR0=1;/重复开定时器 if(num!=0) if(s2=0)/如果s2按下调理参数 delay(5); if(s2=0) while(!s2);if(num=1) xiaxian+;/调秒并显示加 if(xiaxian=99) xiaxian=0;write_wendu1(13,xiaxian); write_com(0x80+0x40+14); if(num=2)/调分并显示加 shangxian+; if(shangxian=99) shangxian=0; write_wendu1(4,shangxian); write_

28、com(0x80+0x40+5); if(s3=0) delay(5); if(s3=0) while(!s3); if(num=1)/调秒并显示减 xiaxian-; if(xiaxian=-1) xiaxian=99; write_wendu1(13,xiaxian); write_com(0x80+0x40+14); if(num=2)/调分并显示减 shangxian-; if(shangxian=-1) shangxian=99; write_wendu1(4,shangxian); write_com(0x80+0x40+5); void disp() uchar num;writ

29、e_com(0x80);for (num=0;num8;num+) write_data(tablenum);delay(5); write_com(0x80+0x40);for (num=0;numshangxian|wendu99)CNT=0; if(s3=0) /调整下限 while(s3=0); CNT-;if(CNT0;CNT-) write_wendu1(5,CNT); delay(1000); disp();/显示字符 TR0=1;/开启定时器,定时采集温度 while(1) keyscan(); baojing(); /中断定时void timer0() interrupt 1 TL0=(65536-50000)%256;/定时50ms TH0=(65536-50000)/256; wendu=ReadTemp(); write_wendu(9, wendu); /*ds18b20子程序*/*ds18b20延迟子函数(晶振12MHz )*/ #include#define uchar unsigned charsbit DQ=P12;int xs;void delay_18B20(unsigned int i)while(i-);/*ds18b20初始化函数*/void Init_DS1

温馨提示

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

评论

0/150

提交评论