




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除单片机原理及应用 课程设计说明书设计题目:烤烟房环境参数采集与显示仪设计学 院:工学院专 业:电气工程及其自动化设 计 者:学 号:指导老师: 设计时间:2016年12月5日2016年12月25日此文档仅供学习与交流单片机原理及应用课程设计任务书一、目的意义单片机原理及应用是高校工程专业的一门专业基础课,该门课程具有很强的实践性。通过课程的学习,使学生掌握基本概念、基本理论和基本技能,为今后从事相应的生产设计和科研工作打下一定的基础。因此,除课程的理论教学和实验教学外,课程设计也是一个必要和重要的实践教学环节。通过课程设计,进一步培养学生理论联系实际的能力,学会正确地分析工程实际问题,善于查阅参考文献,准确地选择相应的数据、参数,具备全面地解决实际问题的素质,同时课程设计也为今后的毕业设计打下基础。二、设计时间、地点、班级时间:第16、17周(二周)地点: 三教433 、426 班级: 14电气工程及其自动化第二组 三、设计内容烤烟房环境参数采集与显示仪设计1、功能描述烟草行业在世界各国的经济中都占有非常重要的地位,提高烟叶质量的主要途径是烤烟的科学化,即在烤烟过程中控制烤烟房的温度。(1)采用单片机作控制器,模拟量输出的温度传感器、A/D转换器、键盘及显示电路等一起构成1路温度采集与显示仪。(2)由键盘输入设定值,采用LCD,显示整数值,开机或复位后,在最右端显示“PH”,以提示系统正常,正常运行时,不断采集温度并送显示;(3)可以通过串口将采集的温度实时数据送PC机显示;(单片机也可选用STC12C5A系列)(4)设计加热电路。2、设计要求:(1)、分析系统功能,选择单片机、传感器和功能模块;(2)、设计系统的硬件电路图;(3)、编写相应的软件,完成控制系统的控制要求;(4)、上机调试、完善程序;3、软件设计要求:可以用按键设置温度目标值,扫描按键采用查询方式,200ms启动一次AD转换,用定时器1,且AD转换结果在AD中断服务程序中读出,同时结果通过串口0发送到PC机。目录摘要11 总体设计方案11.1设计原理及相关说明11.2总体设计框图12 各模块电路的设计及其调用22.1 STC90C516RD+单片机主控模块22.2 AD/DA模块52.2.1 PCF8591的结构及工作原理52.2.2 引脚功能及结构52.3 LCD1602液晶显示模块62.3.1 LCD1602的主技术参数62.3.2 LCD1602的引脚功能说明62.4 键盘电路72.5 加热电路73 系统软件设计83.1 系统正常工作提示93.2 按键设定程序93.3 LCD显示温度程序 103.4 串口显示温度程序104 调试104.1 硬件部分104.2 软件部分105 性能分析11附录1 系统电路原理图12附录2 实物调试图12附录3元件清单15附录4 系统程序清单15烤烟房环境参数采集与显示仪设计作者: 指导老师:(安徽农业大学工学院 电气工程及其自动化 )摘要:该设计是基于STC90C516RD+单片机微处理器系统,采用LCD1602显示屏采集并显示烤烟房环境温度,能够用按键预设最低温度值,具备对烤烟房进行加热的功能,同时还可以将采集的温度数据上传PC机并记录保存相关数据。能实现控制烤烟房温度的功能。具有系统简单可靠,具有控制精准,成本低的特点。1 总体设计方案1.1设计原理及相关说明 该系统设计是利用PCF8591AD模块采集温度传感器的信号输出电压,再根据电压与温度之间关系式,将温度传感器采集的温度显示在LCD上,并能够利用按键设定最低温度,当实时温度小于最低温度时,能够启动继电器工作,从而启动加热设备。1.2总体设计框图烤烟房环境参数采集与显示仪系统设计框图如图1所示:图1 总体设计框图2 各芯片的设计及其调用2.1 STC90C516RD+单片机主控模块STC90C516RD+系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强干扰的新一代8051系列单片机,指令代码完全兼容传统的8051,但速度快8-12倍。12时钟周期/机器周期和6时钟周期/机器周期可任意选择,内部集成MAX810专用复位电路,时钟频率在12MHz以下时,复位管脚可以直接接地。该型号单片机具有以下特点: 1、增强型6时钟/机器周期,12时钟/机器周期8051 CPU。 2、工作电压:3.8V-5.5V(5V单片机)/2.4V-3.8V(3V单片机)。 3、工作频率范围:0-40MHz,相当于普通的8051的0-80MHz。 4、用户应用程序空间4K/6K/7K/8K/10K/12K/13K/16K/32K/40K/48K/56K/61K字节。 5、片上集成1280字节/512/256字节RAM。 6、通用I/O口(35/39个),复位后为:P1/P2/P3/P4是准双向口/弱上拉(普通8051传统I/O口)。P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。 7、ISP(在系统可编程)/IAP(在应用可编程),无需专用可编程/仿真器,可通过串口(P3.0/P3.1)直接下载用户程序。 8、EEPROM功能。 9、看门狗。 10、内部集成MAX810专用复位电路,外部晶振12M以下,可省外部复位电路,复位引脚可以直接接地。 11、共3个16位定时器/计数器,其中定时器0还可以当成两个8位定时器使用。 12、外部中断4路,下降沿中断或者低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒。 13、通用异步串行口(UART),还可以用定时器软件实现多个UART。 14、工作温度范围:0-75/-40-+85。该系统设计使用的单片机封装为DIP-40封装,引脚图如下: 图2:微处理器管脚分布图该系统用的晶振电路与传统的8051一样,都是用石英晶体起震,晶振频率为11.0592MHz,晶振的选择不同可能在程序编写的时候会有所不同,其主要就是定时器和串口波特率选择不同,在编写程序和利用串口察看数据的时候应当注意。晶振电路和复位如图3所示: 图3:单片机晶振电路和复位电路由图3可知,单片机的18和19管脚接时钟电路,19管脚接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,18管脚接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,9引脚是复位输入端,接上电容、电阻及开关后构成上电复位电路。2.2 AD/DA模块图3 AD/DA模块本设计的AD转化电路采用市场上比较流行的AD/DA转化模块PCF8591,能够同时进行四路AD采集,可以很大程度拓展本设计功能。该模块最大特点就是通过IIC总线串行输入输出。2.2.1 PCF8591的结构及工作原理 PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行IC总线接口。PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。PCF8591的最大转化速率由IIC总线的最大速率决定。2.2.2 引脚功能及结构 其中引脚 1、2、3、4 是 4 路模拟输入,引脚 5、6、7 是 I2C 总线的硬件地址,8 脚是数字地 GND,9 脚和 10 脚是 I2C 总线的 SDA 和 SCL。12 脚是时钟选择引脚,如果接高电平表示用外部时钟输入,接低电平则用内部时钟,该设计系统电路用的是内部时钟,因此 12 脚直接接 GND,同时 11 脚悬空。13 脚是模拟地 AGND,14 脚是基准源,15 脚是 DAC 的模拟输出,16 脚是供电电源 VCC。2.3 LCD1602液晶显示模块 LCD1602是市场上常见的液晶显示模块,该模块控制简单,寿命长,得到大多数人的喜爱。该设计系统的LCD1602接线图如图五 图五:LCD1602液晶显示模块 2.3.1 LCD1602的主技术参数(1)显示容量:162个字符(2)芯片工作电压:4.55.5V(3)工作电流:2.0mA(5.0V)(3)字符尺寸:2.954.35(WH)mm 2.3.2 LCD1602的引脚功能说明 第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线,在该设计系统中接到单片机P0口。第15脚:背光源正极。第16脚:背光源负极。2.4 键盘电路 键盘接口电路如图6,本次设计中,按键有3个,每个按键各占用一根I/O线,各按键相互独立,彼此的工作状态互不影响,STC单片机自带上拉电阻因此无需外接上拉电阻,用查询法完成按键功能。 图6 键盘电路2.5 加热电路 加热接口电路如图七所示,本设计中,利用继电器的启动与否来控制加热设备的工作与否。 图七 加热电路3 系统软件设计 图八:系统软件设计图3.1 系统正常工作提示 开机后,在LCD右下端显示“PH”字样来提示系统工作正常。该字样在开机后会一直显示,若系统出现故障,则不能正常显示。3.2 按键设定程序当开机后,LCD页面会显示“+00.00C”,该页面为按键设置最低温度页面,通过key_up按键来让显示温度的数字加一,通过key_down按键来让显示温度的数字减一,只能加减温度的个位,个位逢十进一。在程序中直接扫描按键,消抖时间由于硬件问题设置为100MS。当按下start按键就会停止设定,系统开始采集温度数据。在LCD第一行显示实时采集的温度数据,在第二行,显示的是通过按键设定的温度值。3.3 LCD显示温度程序 AD转换模块获取的是AD值,后变成int型数据,在LCD显示函数中再将int型数据转化为float型数据来增加数据精确度,后面再通过电压与温度之间关系式,将采集得到的电压转化为温度,最后将数据变成十位,个位,十分位,百分位,一个一个来通过LCD显示。3.4 串口显示温度程序 可以通过串口实时显示LCD显示的温度数据,其中波特率设置为4800,无校验位。串口发送通过系统上485接口与PC机进行连接,485串口传输距离长,速度快,适合工业上长距离的数据传输。4 调试 调试过程分为硬件和软件。4.1 硬件部分实验的时候选用的是型号为STC90C516RD+的单片机,但是在烧录程序的时候选择的其他的,导致出现的现象完全没有达到预期,后来经过同学提醒,完成了这个步骤。LCD接口问题,LCD的RS、RW、E控制端口需要特别注意,一定要和程序上的LCD控制端口定义要一致,否则不能正常工作。察看LCD数据端是否与程序上定义相符,不同的定义LCD无法工作。一定要检查PCF8591模块是否良好,可能在调试之前无法工作。中间修改程序后再次下载,握手不成功,COM端口未连接,后来卸载重装了驱动,该问题解决。4.2 软件部分让LCD能够显示PCF8591采集的电压值。之前设置温度时都只按了key_up键,后来在使用key_down键时出现问题,通过key_down按键来让显示温度的数字减一,只能加减温度的个位,个位逢十进一,11往下减时直接跳到了9,到0再往下减不是到99而直接到了9,后来修改程序后使其能正常工作。通过计算,找到电压与温度之间的线性关系式,让LCD显示出正常温度。增加按键设置程序,让LCD能够显示温度设定页面,按键能够正常设定温度。串口能够正常显示温度数据,增加加热程序。单片机上采集的温度数字与试验台上测量出来的真实温度不一样,这是因为电压与温度之间的关系要经过程序修正后,才能正确对应,反复调试后,基本上能与试验台上的温度对应,有时候有一些小波动,这个程序中温度只精确到个位,以调试的结果来看,误差在1度以内。5 性能分析将程序烧入单片机后,开机显示PH,表示系统正常工作,可以实现目标温度的设定,设定时可以任意进行加减操作,可以实现实际温度与目标温度的比较,达到设定温度时继电器动作。该系统能够200MS扫描一次AD,并将AD采样的电压读取出来,通过一定的关系式转化为温度,通过LCD显示,并且可以通过串口察看温度数据。单片机上的温度与试验台测量出来的温度误差在1度以内,最后可以将温度数据以文本模式发送到PC机。附录1 系统电路原理图附录2 实物调试图1、 当开机后,LCD页面会显示“+00.00C”,在右端显示“PH”,以提示系统正常2、 由键盘输入设定值,采用LCD,显示整数值3、 正常运行时,不断采集温度并送显示;以及试验台所测得温度此时发现试验台和单片机所检测到的温度并不一致,原因在调试过程中叙述。4、当采集温度高于设定温度,此时继电器动作附录3元件清单 1、单片机开发板 2、K/E型复合热电偶 3、温度传感器实验模块 4、传感器试验台附录4 系统程序清单#includereg52.h#includelcd.h /包含LCD的H文件#includetemp.h / 读取温度的H文件其中包含AD转换,直接输出温度值#include #define uint unsigned int#define uchar unsigned char/LED显示,后面用于功能拓展sbit led0=P10; /灯亮时,处于温度设定状态sbit led1=P11; /灯亮时,处于温度测量状态sbit led2=P23; /开始加热sbit relay=P22; /继电器动作,同样用于功能拓展sbit key_up=P13; /用于温度增加的设定按键 硬件电路中独立按键应该全部接GND。 K4sbit key_dowm=P14; /用于温度减少的设定按键 K5sbit start=P15; /确定按键定义 K6uchar flagstart; /确定按键按下标志位uchar tempsetmin; /定义设定最小温度uchar tempnow; /定义现在温度,用于和最小温度比较uchar CNCHAR6 = 摄氏度;uchar xdata datas = 0, 0, 0, 0; /定义数组uchar xdata setdata=0,0,0,0; uchar stop; /用于紧急停止,外部中断0按键控制 用于功能拓展uchar time_count; /定时器计数 AD扫描200MS一次uchar timer_count; /按键扫描 10ms一次#define delaytime 2void LcdDisplay(int);void UsartConfiguration();void delay(uchar);void keyset();void initial() ;void main()led2=0; /加热指示灯,先关闭relay=1; /先关闭继电器,在实际中避免误动作产生危险 实验室开发板继电器是低电平触发,则默认不触发UsartConfiguration(); /初始化串口LcdInit(); /初始化LCD1602initial(); /定时器和外部中断初始化LcdWriteCom(0x87); /写地址 80表示初始地址LcdWriteData(C); LcdWriteCom(0x40+0x88); /在LCD最右端显示PH字样,表示系统工作正常LcdWriteData(P); LcdWriteCom(0x40+0x89); LcdWriteData(H); while(1)LcdDisplay(ReadTemp();void delay(uchar z) /简单延时函数uchar x,y; for(x=110;x0;x-) for(y=z;y0;y-);void keyset(void) /按键设定温度值 /设定温度用的数组与实时显示温度的数组不一样,防止后面再次扫描按键的时候变化 key_up=1; if(!key_up) /如果温度加的按键按下 / delay(delaytime); /延时100MS用于消抖/if(!key_up)setdata1+; /个位温度值加1 if(setdata1=10) /如果加到了10 setdata1=0; /个位显示0 setdata0+; /十位加一 ,个位任然显示0 if(setdata0=10) /如果十位到10 setdata0=0; /十位显示0; while(!key_up); /这种按键消抖不是借助延时消抖的,可以设置短时间扫描按键一次,但不能连续按,一次最多加一或者减一if(!key_dowm) /如果温度加的按键按下 / delay(delaytime); /延时10MS用于消抖/if(!key_dowm) /减法到0时,出现错误,需要逐级判断才行!setdata1-; /个位温度值减1if(setdata1=-1) /如果减到了0 setdata1=9; /个位显示9 setdata0-; /十位减一 ,个位任然显示0 if(setdata0=-1) /如果十位10 setdata0=9; /十位显示0; while(!key_dowm); tempsetmin=setdata0*10.0+setdata1; /设定温度 if(!start) /如果启动测量按键按下 / delay(delaytime); /延时消抖/ if(!start) flagstart=1; /开始测量标志位 while(!start); void LcdDisplay(int temp) /lcd显示 此处temp类型应该与ReaTemp返回值类型一致,否则可能会出错 unsigned char i; float tp; /用于整型变量和浮点型变量转换 /keyset(); /按键先扫描一次if(!flagstart) /还没有开始测量 一开始LCD的显示,用于设定 led0=1; led1=0;LcdWriteCom(0x80);/写地址 80表示初始地址LcdWriteData(+); /显示正号LcdWriteCom(0x87); /写地址 80表示初始地址LcdWriteData(C); LcdWriteCom(0x81); /写地址 80表示初始地址LcdWriteData(0+setdata0); /十位LcdWriteCom(0x82); /写地址 80表示初始地址LcdWriteData(0+setdata1); /个位LcdWriteCom(0x83);/写地址 80表示初始地址LcdWriteData(.); /显示 .LcdWriteCom(0x84); /写地址 80表示初始地址LcdWriteData(0+setdata2); /显示十分位LcdWriteCom(0x85); /写地址 80表示初始地址LcdWriteData(0+setdata3); /显示百分位 if(flagstart) /启动测量 led0=0; led1=1; if(temp0.0) /当温度值为负数 LcdWriteCom(0x80);/写地址 80表示初始地址SBUF=+; /将接收到的数据放入到发送寄存器while(!TI); /等待发送数据完成TI=0; /清除发送完成标志位 LcdWriteData(+); /显示负tp=temp; /将int型temp转化为float型tp temp=tp*10.00; /将温度对应的电压放大10倍进行采集 ,可以提高灵敏度 temp=temp*1.85+7.0; / 电压与温度关系 datas0 = temp % 10000 / 1000; /十位datas1 = temp % 1000 / 100; /个位datas2 = temp % 100 / 10; /十分位datas3 = temp % 10; /百分位 tempnow=10.0*datas0+datas1; /目前的温度 if(tempsetmintempnow) /当目前温度小于设定温度时,启动加热装置,让继电器动作,指示灯亮relay=0; led2=1; if(tempsetmin=tempnow) /加热完成后记得关闭继电器 relay=1; led2=0; /指示灯灭 LcdWriteCom(0x80+0x40);/写地址 80表示初始地址 /在第二行显示设定温度LcdWriteData(s); LcdWriteCom(0x81+0x40);/写地址 80表示初始地址LcdWriteData(e); LcdWriteCom(0x82+0x40);/写地址 80表示初始地址LcdWriteData(t); LcdWriteCom(0x83+0x40);/写地址 80表示初始地址LcdWriteData(0+(tempsetmin/10); /显示正号LcdWriteCom(0x84+0x40);/写地址 80表示初始地址LcdWriteData(0+(tempsetmin%10); /显示正号LcdWriteCom(0x85+0x40);/写地址 80表示初始地址LcdWriteData(.); /显示 .LcdWriteCom(0x86+0x40);/写地址 80表示初始地址LcdWriteData(0+0); /显示正号LcdWriteCom(0x81); /写地址 80表示初始地址LcdWriteData(0x30+datas0); /十位 SBUF = 0+datas0; /将接收到的数据放入到发送寄存器while (!TI); /等待发送数据完成TI = 0;LcdWriteCom(0x82); /写地址 80表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吸叶机代销协议5篇
- 土地买卖中介费协议书7篇
- 建筑安全生产考核题库及答案解析
- 分手宠物协议书
- 房屋安全性鉴定培训试题及答案解析
- 养猫免责协议书
- a堡安全协议书
- 建造师从业资格证考试及答案解析
- 航空公司联运协议书
- 重庆考安全员证考试题库及答案解析
- GJB3243A-2021电子元器件表面安装要求
- 人教版小学英语单词表(完整版)
- 自家停车位申请按照充电桩四方协议书
- 生产组织供应能力说明
- 足金点钻工艺培训
- JJG 162-2019饮用冷水水表
- 山西省煤矿安全生产管理人员培训考试题库(浓缩500题)
- 空调负荷计算-空调负荷的计算(空调工程)
- 计算机视觉之图像分类课件
- 输电线路工程安全风险识别、评估、预控措施
- 大学英语三级词汇表(新版)
评论
0/150
提交评论