单片机应用系统设计说明书_第1页
单片机应用系统设计说明书_第2页
单片机应用系统设计说明书_第3页
单片机应用系统设计说明书_第4页
单片机应用系统设计说明书_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

单片机应用系统设计说明书设计题目温度控制系统设计自动化学院一、系统设计小组工作分工序号成员工作分工1LCD1602显示218B20温度检测3二系统设计目标我的设计是基于STC98C52系列单片机的温度控制系统,以DS18B20作为温度检测元件,实时监测温度;以LCD1602显示实时温度、预设温度以及PID调节参数的设定。三系统方案设计1单片机选型STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。单片机主要特性如下1增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统80512工作电压55V33V(5V单片机)/38V20V(3V单片机)3工作频率范围040MHZ,相当于普通8051的080MHZ,实际工作频率可达48MHZ4用户应用程序空间为8K字节5片上集成512字节RAM6通用I/O口(32个)复位后为,P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。7ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RXD/P30,TXD/P31)直接下载用户程序,数秒即可完成一片8具有EEPROM功能9具有看门狗功能10共3个16位定时器/计数器。即定时器T0、T1、T211外部中断4路,下降沿中断或低电平触发电路,POWERDOWN模式可由外部中断低电平触发中断方式唤醒12通用异步串行口(UART),还可用定时器软件实现多个UART13工作温度范围4085(工业级)/075(商业级)P0端口(P00P07P07,3932引脚)P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入每个引脚能驱动写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线位数据的复用总线。此时,P0口内部上拉电阻有效。在FLASHROM编在程时,P0端口接收指令字节端口接收指令字节;而在校验程序时,则输出指令字节则输出指令字节。验证时,要求外接上拉电阻。P1端口(P10P17,18引脚)P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。P2端口(P20P27,2128引脚)P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(I)。P3端口(P30P37,1017引脚)P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。RST(9引脚)复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/ROG(30引脚)地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8B位地址的输出脉冲。在FLASH编程时,此引脚(ROG)也用作编程输入脉冲。2温度传感器DS18B20单线数字温度传感器。提供计9位二进制温度读数,指示器件温度。信息经过单线接口送入DS18B20送出,因此从主机CPU到DS18B20仅需一条线(和地线)。DS18B20的电源可以有数据本身提供而不需要外部电源。以为每一个DS18B20在出厂时已经给定了唯一的序号,因此任意多个DS18B20可以放在同一条单线总线上。这允许在许多不同的地方放置温度敏感器件DSL820的测量范围从55到125增量值为05可在LS典型值内把温度变换成数字。DSL8B20中还有用于贮存测得的温度值的两个8位存贮器RAM编号为0号和1号。1号存贮器存放温度值的符号,如果温度为负,则1号存贮器8位全为1,否则全为0。0号存贮器用于存放温度值的补码,LSB最低位的“1”表示05将存贮器中的二进制数求补再转换成十进制数并除以2就得到被测温度值55125。每只DS18B20都可以设置成两种供电方式,即数据总线供电方式和外部供电方式。采取数据总线供电方式可以节省一根导线,但完成温度测量的时间较长;采取外部供电方式则多用一根导线,但测量速度较快。3液晶显示1602液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。管脚功能第1脚VSS为电源地第2脚VCC接5V电源正极第3脚V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚RW为读写信号线,高电平1时进行读操作,低电平0时进行写操作。第6脚E或EN端为使能ENABLE端,高电平(1)时读取信息,负跳变时执行指令。第714脚D0D7为8位双向数据端。第15脚背光正极。第16脚背光负极。四硬件电路设计及描述五软件设计及描述1主程序流程图开始系统初始化调用子函数发送指令到DS18B20读取温度值调用LCD1602显示键盘扫描键盘扫描是否有案件按下处理按键数据检测温度与预设温度数据处理否调用PID子函数处理结束单片机上电,LCD1602液晶初始化,定时器T0、T1初始化,之后进入循环函数,键盘扫描;读取温度;送去LCD1602显示。定时器T02秒终端一次,调用PID程序,即每两秒进行一次PID运算。定时器T1为PWM波形生成函数。2、源程序代码INCLUDEINCLUDEDEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINTSBITDQP23/DS18B20与单片机连接口SBITRSP25/1602SBITRWP26/1602SBITENP27/1602SBITOUTP17UNSIGNEDCHARCODESTR1“T“UNSIGNEDCHARCODESTR2“T“UNSIGNEDCHARCODESTR3“PID“CHARDATADISDATA5UINTTVALUE/温度值K为RETURN返回值UCHARK,FLAGUINTA/ATIMER1定时时间参数UCHARTFLAG/温度正负标志UCHARSETFLAG/模式标志UCHARFLAGDATCHARNUM,BAI,SHI,GE,XIAOSHU,KP_GE,KP_XIAO,KI_GE,KI_XIAO,KD_GE,KD_XIAOSBITSETKEYP32/模式键1SBITUP_KEYP33/加键SBITDOWN_KEYP34/减键UCHARCOUNT,EKFLAG3/输出时间单位计数器UINTEK3,RK,CK,UK,KP,KI,KD/RK设定值;CK实际值;UK输出电压/函数声明/VOIDPIDOUTPUTVOIDPIDOPERATION/PID调节程序/VOIDDELAY1MSUCHARMS/延时1毫秒(不够精确的)UCHARI,JFORI0ICK/设定值大于实际值否IFRKCK100/偏差大于10否UK100/偏差大于10为上限幅值输出全速加热ELSETEMP0RKCK/偏差0/如定时中断为40MS,40MS502S输出时间单位,加热周期20S100等份/每20SPID运算一次ET11TR11A655I3I/10/LCD1602程序/VOIDWR_COMUNSIGNEDCHARCOM/写指令/DELAY1MS1RS0RW0EN0P0COMDELAY1MS1EN1DELAY1MS1EN0VOIDWR_DATUNSIGNEDCHARDAT/写数据/DELAY1MS1RS1RW0EN0P0DATDELAY1MS1EN1DELAY1MS1EN0VOIDLCD_INIT/初始化设置/DELAY1MS15WR_COM0X38DELAY1MS5WR_COM0X08DELAY1MS5WR_COM0X01DELAY1MS5WR_COM0X06DELAY1MS5WR_COM0X0CDELAY1MS5VOIDDISPLAYUNSIGNEDCHARP/显示/WHILEP0WR_DATPPDELAY1MS1INIT_PLAY/初始化显示LCD_INITWR_COM0X80DISPLAYSTR1WR_COM0X88DISPLAYSTR2WR_COM0XC0DISPLAYSTR3NUM0BAI0SHI0GE0XIAOSHU0RETURNK/温度按键程序/VOIDKEYIFSETKEY0DELAY1MS100IFSETKEY0SETFLAGIFSETFLAG12SETFLAG0WHILESETKEY0IFUP_KEY0IFUP_KEY0NUMIFNUM10NUM0SWITCHSETFLAGCASE0BREAKCASE1IFNUM20WR_COM0X89WR_DAT0X20ELSEWR_COM0X89WR_DAT0X2DBREAKCASE2IFNUM0WR_COM0X8AWR_DAT0X20BAINUMELSEWR_COM0X8AWR_DATNUM0X30BAINUMBREAKCASE3IFBAI0WR_DAT0X20SHINUMELSEWR_COM0X8BWR_DATNUM0X30SHINUMBREAKCASE4WR_COM0X8CWR_DATNUM0X30WR_COM0X8DWR_DAT0X2E/显示小数点GENUMBREAKCASE5WR_COM0X8EWR_DATNUM0X30XIAOSHUNUMBREAKCASE6WR_COM0XC1WR_DATNUM0X30KP_GENUMWR_COM0XC2WR_DAT0X2E/显示小数点BREAKCASE7WR_COM0XC3WR_DATNUM0X30KP_XIAONUMBREAKCASE8WR_COM0XC6WR_DATNUM0X30WR_COM0XC7WR_DAT0X2E/显示小数点KI_GENUMBREAKCASE9WR_COM0XC8WR_DATNUM0X30KI_XIAONUMBREAKCASE10WR_COM0XCBWR_DATNUM0X30KD_GENUMWR_COM0XCCWR_DAT0X2E/显示小数点BREAKCASE11WR_COM0XCDWR_DATNUM0X30KD_XIAONUMBREAKIFDOWN_KEY0IFDOWN_KEY0NUMIFNUM0IDQ0/给脉冲信号DAT1DQ1/给脉冲信号IFDQDAT|0X80DELAY_18B2010RETURNDATVOIDDS1820WRUCHARWDATA/写数据/UNSIGNEDCHARI0FORI8I0IDQ0DQWDATADELAY_18B2010DQ1WDATA1READ_TEMP/读取温度值并转换/UCHARA,BDS1820RSTDS1820WR0XCC/跳过读序列号/DS1820WR0X44/启动温度转换/DS1820RSTDS1820WR0XCC/跳过读序列号/DS1820WR0XBE/读取温度/ADS1820RDBDS1820RDTVALUEBTVALUE8TVALUETVALUE|AIFTVALUE0X0FFFTFLAG0ELSETVALUETVALUE1TFLAG1TVALUETVALUE0625/温度值扩大10倍,精确到1位小数RETURNTVALUE/VOIDDS1820DISP/温度值显示UCHARFLAGDATDISDATA0TVALUE/10000X30/百位数DISDATA1TVALUE1000/1000X30/十位数DISDATA2TVALUE100/100X30/个位数DISDATA3TVALUE100X30/小数位IFTFLAG0FLAGDAT0X20/正温度不显示符号ELSEFLAGDAT0X2D/负温度显示负号IFDISDATA00X30DISDATA00X20/如果百位为0,不显示IFDISDATA10X30DISDATA10X20/如果百位为0,十位为0也不显示WR_COM0X81WR_DATFLAGDAT/显示符号位WR_COM0X82WR_DATDISDATA0/显示百位WR_COM0X83WR_DATDISDATA1/显示十位WR_COM0X84WR_DATDISDATA2/显示个位WR_COM0X85WR_DAT0X2E/显示小数点WR_COM0X86WR_DATDISDATA3/显示小数位/加热程序/VOIDINIT_TIME0TMOD0X11/T0初始化方式1,定时TH06553650000/256/TH0,TL0装入定时50MS的初值TL06553650000256TH16553620000/256TL06553620000256TR01/启动T0工作ET01/允许T0溢出中断EA1VOIDTIMER0_ISRVOIDINTERRUPT1STATICUCHARS0/秒计数器TH06553650000/256/TH0,TL0装入定时50MS的初值TL06553650000256SIFS40S0PIDOPERATIONIFRK0ELSEPIDOUTPUTTR11VOIDTIMER1_ISRVOIDINTERRUPT3IFFLAG1FLAG0OUT1TH165536A/256/TH0,TL0装入定时50MS的初值TL165536A256ELSEFLAG1OUT0TH1A/256/TH0,TL0装入定时50MS的初值TL1A256/主程序/VOIDMAINOUT0INIT_PLAY/初始化显示INIT_TIME0/定时器T0初始化WHILE1KEY/键盘温度扫描READ_TEMP/读取温度DS1820DISP/显示六设计调试过程及结果1调试结果2结果分析在运行仿真结果时通过改变温度传感器DS18B20的温度,然后调用各种子函数,可以改变液晶显示1602的第二行显示数据,说明程序编写正确。3系统设计电路的特点和方案的优缺点我们组设计的数字温度计系统知识运用简单的AT89S52芯片的I/O口传输功能,通过几个小的读数据、传递数据、延时子函数实现温度的读取传输功能,是比较简单,容易实现的,所以我们的系统只是实现了一些简单的功能,系统整体来说比较简易,但好像这个温度计没有多大的应用价值,所以我们后续分析觉得这个系统可以加一个温度复位系统提高AT89S52芯片的功能价值,也提高数字温度计的智能价值,还可以增加一个报警子函数,实现智能数字温度计更高的应用价值七系统设计体会1心得体会李键本次设计是基于STC89C52单片机的温度调节系统设计。刚开始打算用数码管显示实时温度、预设温度以及PID调节参数显示,可是由于数码管的位数限制显示不方便,就决定采用LCD1602进行显示,而且需要调节电阻来调节背光,使显示的字符更加清晰。PID的参数和预设温度是通过独立按键实现的。还有在编写数字PID程序时,定义的字符占用的空间太大导致超出了单片机的容量,通过降低精度的要求将变量位数定义减小,以达到减小占用的目的。由于整个系统的程序很长,导致单片机运行有时混不稳定,反映会很慢,有些参数的调节会出现显示与实际输入值不相符的现象。通过本次设计了解的更多关于单片机的知识,对书本上学到的东西进行了强化。1心得体会禹鑫通过这次对数字温度计的设计与制作,让我了解了设计电路的程序,也让我了解了关于数字温度计的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。通过这次学习,让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高。问题一改变环境温度时,LCD1602上的显示温度值有很大延迟;解决办法经过查找资料重新改写了LCD1602的驱动程序,并减少使用CASE语句,最终达到了较好的实时显示温度的效果。问题二LCD1602在显示温度的时候会偶尔出现乱码;解决办法认真阅读LCD1602说明书

温馨提示

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

评论

0/150

提交评论