单片机课程设计-温度采集报警系统设计(14页).doc

上传人:1595****071 文档编号:37315610 上传时间:2022-08-30 格式:DOC 页数:14 大小:149KB
返回 下载 相关 举报
单片机课程设计-温度采集报警系统设计(14页).doc_第1页
第1页 / 共14页
单片机课程设计-温度采集报警系统设计(14页).doc_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《单片机课程设计-温度采集报警系统设计(14页).doc》由会员分享,可在线阅读,更多相关《单片机课程设计-温度采集报警系统设计(14页).doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-单片机课程设计-温度采集报警系统设计-第 13 页机电工程学院单片机课程设计任 务 书设计(论文)名称: 温度采集报警系统设计专 业: 通信工程 学生姓名: 指导教师: 下达时间:2015年 12 月7 日 一、 课程设计任务:1. 加深对单片机硬件电路设计和软件编程的理解,结合实践进一步加深对单元电路基本功能的掌握和应用。2. 通过具体任务要求,掌握一种常用电子电路仿真的软件,使学生能利用所学理论知识完成实际电路的设计、仿真和制作。3. 学会利用单片机设计频率,了解单片机ADC的应用、LED数码管显示的设计等知识。4. 掌握51单片机软件开发环境,学会KEIL软件的使用和程序的调试方法。二

2、、 课程设计的基本要求:1. 设计51单片机最小系统。2. 完成至少4路温度信号采集。3. 能实时显示各路温度信号值。4. 具有温度上、下限报警功能。5. 可设定系统报警温度上、下限。6.撰写课程设计论文要求符合模板的相关要求,字数要求4000字以上。 目录 一、 设计任务与要求1二、 总体方案设计1三、 单元电路设计与参数计算1四、 总原理图6五、 仿真与调试15六、 性能测试与分析17七、 结论与心得18八、 参考文献19温度采集报警系统设计一、 设计任务与要求(一) 设计任务 (1) 以单片机为核心,设计一个温度采集报警系统设计; (2) 完成至少4路温度信号采集。 (3) 能实时显示各

3、路温度信号值。 (4) 具有温度上、下限报警功能。 (5) 可设定系统报警温度上、下限。(二) 设计要求 (1)根据功能要求选择设计方案,并进行论证; (2)画出电路的总体方框图和电路原理图; (3)说明系统工作原理,对系统进行调试; (4)写出课程设计报告。二、 总体方案设计1 总体设计思路(1)采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制温度传感器,把温度信号通过模数转换模块(ADC0808)从温度传感器传递到单片机.单片机进行数据处理之后发出控制信号改变报警和控制执行模块的状态,同时将当前温度信息发送到数码管进行显示.(2)通过四个按键控制四路温度采集的切换.(3)通过

4、两个按键来调节温度上下限,当采集到的温度超过设定的数值是,启动蜂鸣器发出报警信号,同时点亮发光二极管.2 总体设计原理八路模拟信号数值测量显示电路由A/D转换、数据处理及显示控制等组成。三、 单元电路设计与参数计算(一) AT89C51单片机介绍图(一)AT89C51单片机最小系统及其连接图(二)AT89C51单片机片内结构 1 AT89C51简介AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机,AT89C51 提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构

5、,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。 2 AT89C51单片机的并行I/O端口(1)P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P

6、0输出原码,此时P0外部必须接上拉电阻。(2)P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。(3)P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存

7、取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。(4)P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。(二)ADC0808的介绍图(三)ADC0808及其连接ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁

8、存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。ADC0808是ADC0809的简化版本,功能基本相同。一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。有28条引脚,采用双列直插式封装,如图(三)所示. (三)LED数码管简介图(四)led数码管LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。右图是共阳极数码管及其的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。将多只LED的阴极连在一起即为共阴式,而将多只

9、LED的阳极连在一起即为共阳式。 (三)温度采集电路:图(五)温度采集电路本系统采用铂热电阻PT100作为温度传感器,它的阻值会随着温度的变化而改变。PT后的100即表示它在0时阻值为100欧姆,在100时它的阻值约为138.5欧姆。当PT100在0摄氏度的时候他的阻值为100欧姆,它的阻值会随着温度上升而成近似匀速的增长。向PT100输入稳恒电流,再通过转换后测得PT100两端的电压,即可得到PT100的阻值。本系统采用2.55mA的电流源对PT100进行供电,然后用运算放大器LM324搭建的同相放大电路将其电压信号放大10倍后输入到ADC0808中,利用电阻变化率0.385/的特性,可计算

10、出当前的温度值。(四) 按键电路图(五)按键电路连接 如图所示,k1,k2为四路温度采集电路的切换按键。当无按键按下时时,第一路采集电路导通;当K1按下时,第二路采集电路导通;当K2按下时,第三路采集电路导通;当K1和K2同时按下时,第四路采集电路导通。JIA按键为调节温度上限按键,JIAN按键为调节温度下限按键。(五) 报警电路图(六)报警电路当前采集到的温度如果超过或者低于设定的温度上下限,则led灯发光同时蜂鸣器发出报警信号。四、 总原理图(一)硬件电路图(七)整体模块图(八)总体硬件电路图(二) 软件程序#includesbit START=P20; /IO口定义sbit EOC=P2

11、1;sbit OE=P22;sbit adda=P24;sbit addb=P25;sbit addc=P26;sbit buzzer=P23; /蜂鸣器定义sbit led=P27;/LEd定义sbit wei1=P03;/位选定义sbit wei2=P02;sbit wei3=P01;sbit wei4=P00;sbit k1=P04;sbit k2=P05;sbit Jia=P06;/加键定义sbit Jian=P07;/减键定义unsigned char ad_data,t;char count;unsigned char keynum;unsigned char dis4=0x00,

12、0x00,0x00,0x00;/*用来放AD转换处理结果值*/unsigned char code dis_712=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x40;/* 共阴LED段码表对应 0 1 2 3 4 5 6 7 8 9 不亮 - */ void delay(unsigned int t) /11微秒延时函数 for(;t0;t-)void delay10ms(void) /误差 0us unsigned char a,b,c; for(c=5;c0;c-) for(b=4;b0;b-) for(a=248;a0

13、;a-);void AdDisplay() /AD转换显示wei4=0;P3=dis_7dis0; delay(90);wei4=1;wei3=0;P3=dis_7dis1|0x80; delay(90);wei3=1;/加入小数点wei2=0;P3=dis_7dis2; delay(90);wei2=1;wei1=0;P3=dis_7dis3; delay(90);wei1=1; void adc0809()/AD转换 P1=0xff; /读取P1口之前先给其写全1 START=0; START=1; START=0; while(EOC=0); OE=1; ad_data=P1;/AD数据

14、读取赋给P1口 OE=0;/*-AD转换结果处理-*/void ad_compute() /u=2.55+T/100, 2.55反映在AD上为0x83 char t_temp;unsigned char i; ad_data=ad_data-0x83; t_temp=ad_data*2-4;if(t_tempcount)&(count0)/大于上限设定值,则开启报警装置for(i=0;i50;i+)led=led;buzzer=buzzer;led=0;buzzer=1;elseled=1;buzzer=0;if(t_tempcount)&(count0)/小于下限设定值,则开启报警装置 fo

15、r(i=0;i0)dis3=t_temp/100;/最高位dis2=t_temp/10%10;dis1=t_temp%10;dis0=t%5*2;/最低位elset_temp=(t_temp-1);dis3=11;dis2=t_temp/10;dis1=t_temp%10;dis0=t%5*2;void CountDisplay()/count显示函数if(count0)wei4=0;P3=dis_7count%10; delay(90);wei4=1;wei3=0;P3=dis_7count/10%10; delay(90);wei3=1;wei2=0;P3=dis_7count/100;

16、delay(90);wei2=1;elsecount=(count-1); /将负数转变为正数wei4=0;P3=dis_7count%10; delay(90);wei4=1;wei3=0;P3=dis_7count/10; delay(90);wei3=1;wei2=0;P3=dis_711; delay(90);wei2=1;count=(count)+1; /将正数转变为负数void keyscan()unsigned char i;if(keynum=0) /当设置限定值时,不能进入显示电路 if(k1!=0)&(k2!=0) /K1和K2都没有按下时,显示第一路adda=0;add

17、b=0;addc=0;adc0809();ad_compute();AdDisplay();if(k1=0)&(k2=1) /K1键按下,K2没按,显示第二路delay10ms();if(k1=0)&(k2=1)adda=1;ddb=0;addc=0; adc0809();ad_compute();AdDisplay();if(k1=1)&(k2=0)/K1键没按下,K2按下,显示第三路delay10ms();if(k1=1)&(k2=0)adda=0;addb=1;addc=0;adc0809();ad_compute();AdDisplay();if(k1=0)&(k2=0) /K1键按下

18、,K2也按下,显示第四路delay10ms();if(k1=0)&(k2=0)adda=1;addb=1;addc=0;adc0809();ad_compute();AdDisplay();if(Jia=0) /设置上限值(即加键)delay10ms();if(Jia=0)count+=10;keynum+=1;if(count=200)count=10;i=0;while(i50)&(!Jia)/判断加键松开没有i+;delay10ms();wei4=0;P3=dis_7count%10; delay(90);wei4=1;wei3=0;P3=dis_7count/10%10; delay(

19、90);wei3=1;wei2=0;P3=dis_7count/100; delay(90);wei2=1;if(Jian=0)/设置下限值(即减键)delay10ms();if(Jian=0)count-=10;keynum+=1;if(count=-60)count=0;i=0;while(i50)&(!Jian) /判断减键松开没有i+;delay10ms();CountDisplay(); /显示count值if(keynum!=0)if(k2=0) /k2此时为设定值确认键(即K2按下才能结束设置)delay10ms();if(k2=0)keynum=0;i=0;while(i50)

20、&(!k2) /判断K2键松开没有i+;delay10ms();CountDisplay(); /显示count值void main() /主程序count=70;while(1)keyscan();五、 仿真与调试(一) 第一路采集系统工作(二) 第二路温度采集系统工作(三) 第三路采集系统工作(四) 第四路采集系统工作六、 性能测试与分析把硬件电路连接完成后,进行运行,看电路连接是否正确,无开关按下时,第一路采集电路导通;当K1按下时,第二路采集电路导通;当K2按下时,第三路采集电路导通;当K1和K2同时按下时,第四路采集电路导通,再通过jia和jian调解温度上限及下限,K2充当确认值,

21、当温度达到上限值或下限值时,LED灯点亮同时蜂鸣器发出声音。 在调试过程中主要是对程序的修改,特别是延时程序,开始延时程序较短时,数码管显示但不稳定显示温度。通过修改程序,将延时调到适中,系统正常工作。七、 结论与心得本次课程设计,让我受益匪浅。对c51程序设计加深了理解和掌握,我们这次设计的要求主要单片机原理及其运用,掌握它们的初始化编程,这是一个比较全面的设计,和以前的实验相比较复杂很多,一方面要求我们设计硬件电路,另一方面需要对设计的硬件电路进行编程,这就需要软件和硬件相结合,将它们进行联调,具体的电路具体分析,让我们更加的了解AT89C51的运用,还有如何的进行A/D转换。在此设计中遇

22、到了很多困难,一开始的时候,硬件电路测试都没成功,最后把所有的电路都拆了,一个一个测试,进行数据转换的时候,开始转换出来的数据都一样的,无论温度是否发生变化,经过仔细分析才知道是了一定的体会,它要求我们认真仔细的做好每个环节。 当我们接手一个课题或项目的时候,不是马上动手,而是先进行可行性论证。首先提出方案,然后根据方案去实施,方案中的不足之处,在操作的时候进行改进,最后得到更加完美的方案。 在设计过程中,同时还加深了对单片机的了解及其运用。将书本上的知识与实际相联合,会更好的掌握知识,学到在书本上更本学不到的内容,提高了我们的分析问题和解决问题的能力,强化了创新认识,为将来激烈的竞争打下基础

23、,也培养了我们严肃认真的科学态度,优良的思维模式,和严谨求实的工作风。八、 参考文献1张俊谟.单片机中级教程原理与应用.北京航天航空大学出版社2刘大茂.智能仪器与设计.国防工业出版社3谭浩强.C程序设计.北京:清华大学出版社4李伯成.微型计算机原理及应用技术.西安电子科技大学 九课程设计进度安排起 止 日 期工 作 内 容2015年12月7日12月8日12月8日6月9日12月9日12月11日12月11日12月13日 题目分析,查阅资料与方案选择原理图的绘制编写软件程序并与仿真撰写设计报告十成绩考核办法根据学生在实习中的表现、实习报告的质量,以及各项目实习老师给予的实习鉴定综合考核评分,按按优秀、良好、中等、及格和不及格五级计分。教研室审查意见:教研室主任签字: 年 月 日二级学院意见:主管领导签字: 年 月 日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁