电子电信单片机毕业课程设计.doc_第1页
电子电信单片机毕业课程设计.doc_第2页
电子电信单片机毕业课程设计.doc_第3页
电子电信单片机毕业课程设计.doc_第4页
电子电信单片机毕业课程设计.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

一、实习目的与要求1、本设计是利用AT89C52系列单片机实现温度自动检测与报警,温度范围在0至+100之间。DS18B20可以程序设定912位的分辨率,精度为0.5。随机显示所采集的温度,可以设定温度的范围,对周围环境的温度进行有效检测与报警。数码管显示温度。上限为36下限为20。超过上限或低于下限则开始报警。通过设计,进一步熟悉和掌握8052单片机的结构及工作原理掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。掌握单片机的接口技术及相关外围芯片的外特性,控制方法。通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 通过完成一个包括电路设计和程序开发的完整过程,使了解开发一单片机应用系统的全过程,为今后从事相应打下基础。2、具体设计思想是:先设定上限温度和下限温度,然后计算最适温度,再利用温度传感器采集周围环境中的温度值。再将采样值和设定值进行比较,如果超出设定范围就进行报警提示操作人员予以处理,如果高于最适温度就提示降温,低于最适温度就提示加温。用户设定的报警温度存储在EEPROM中,掉电后依然保存本设计基本上满足了温度检测与报警的要求,采样值与设定值基本一致,易于操作。 二、单片机开发板原理及各部分功能说明1、单片机开发板原理单片机AT89C52DS18B20温度传感器蜂鸣器报警时钟振荡定时器LED数码管显示2、各部分功能说明具体分析如下1).DS18B20DS18B20的引脚排列 :(底视图)DS18B20引脚功能描述: 1. GND 电源地 2. DQ 数据输入/输出引脚。开漏单总线接口引脚。3. VDD 电源正极引脚。工作电压为 35.5V。DS18B20 的使用方法: 由于 DS18B20 采用的是一线总线协议方式,而对 AT89S52 单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对 DS18B20 芯片的访问。 由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是以主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求 DS18B20 回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。 单片机(主机)控制 DS18B20 完成温度转换必须经过每一次读写之前都要对 DS18B20进行复位操作,复位成功后发送一条 ROM 命令,最后发送 RAM 命令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500us,然后释放,收到信号后等待 1660us 左右,后发出 60240us 的存在低脉冲,主 CPU 收到此信号表示复位。DS18B20 的温度计算: 温度转换后存放在寄存器的第 1第 2 个字节内容中,DS18B20的温度数据输出是以 16位符号扩展的二进制补码格式表示。2).LED显示电路设计LED数码管是一种半导体发光器件,其基本单元是发光二极管,通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字。 数码管按段数按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳极数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。动态扫描就是所要工作的若干个数码管轮流显示,只要轮流显示的速度足够快,每秒约 50次以上,由于人眼的 “视觉暂留” 特性,看起来就像是连续显示,这样称为动态扫描。3).蜂鸣器报警蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它, S52增强型单片机实验板通过一个三极管来放大驱动蜂鸣器,蜂鸣器的正极接到VCC(5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P2.1引脚控制,当P2.1输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P2.1输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制P2.1脚的电平来使蜂鸣器发出声音和关闭。 程序中改变单片机P2.1引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。4).89C52单片机主要特性a). 一个8 位的微处理器(CPU)。b). 片内数据存储器RAM(128B),用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据等,SST89 系列单片机最多提供1K 的RAM。c). 片内程序存储器ROM(4KB),用以存放程序、一些原始数据和表格。单片机分别集成了16K、32K、64K Flash 存储器,可供用户根据需要选用。d). 四个8 位并行IO 接口P0P3,每个口既可以用作输入,也可以用作输出。e). 两个定时器计数器,每个定时器计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。为方便设计串行通信,目前的52 系列单片机都会提供3 个16 位定时器/计数器。f). 五个中断源的中断控制系统。现在新推出的单片机都不只5 个中断源,。g). 一个全双工UART(通用异步接收发送器)的串行IO 口,用于实现单片机之间或单机与微机之间的串行通信。h). 片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率为12MHz。最高允许振荡频率达40MHz,因而大大的提高了指令的执行速度。时钟振荡AT89C52 中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1 和XTAL2 分别是该放大器的输入端和输出端。振荡器就是可以产生一定频率的交变电流信号的电路. 看门狗就是其中一种。定时器 80C52内部设有两个16位的可编程定时器/计数器。16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1 构成。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器 TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。TMOD主要是用于选定定时器的工作方式; TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。输出时钟频率=振荡器频率/4*65536-(RCP2H,RCP2L)初始化的步骤一般如下:1).确定工作方式(即对TMOD赋值);2).预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1);3).根据需要开放定时器/计数器的中断(直接对IE位赋值);4).启动定时器/计数器三、硬件调试根据电路图焊接单片机,单片机焊接完成后,开始进行硬件调试,用KEIL编程,用STC-ISP冷下载test程序到单片机上, 观察流水灯现象,数码管显示,蜂鸣器救护声音,温度传感器测温,现象正常,说明硬件没有问题。下面进行自己的编程与调试。系统框图:小灯不亮,蜂鸣器不响小灯亮,蜂鸣器响 系统初始化设置计数器TO中断发DS18B20复位命令发读温度命令存温度暂存器读出温度值温度计算处理显示数据是否报警?否 是 四、软件开发1实现程序#include #include #include #define uchar unsigned char #define uint unsigned int; #define duanx P0 /数码管的段 sbit P27 = P27;/设置灯的端口sbit seg1=P13; /第1位数码管 sbit seg2=P14; /第2位数码管 sbit DQ=P20;/ds18b20 端口 sbit BEEP=P21;/设置蜂鸣器端口uint m = 0;uchar n = 0;uchar temp; uchar flag_get,count,num,minute,second; uchar code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/7段数码管段码表-共阳 uchar str4; /存温度数据 void delay1(uchar MS); unsigned char ReadTemperature(void); void Init_DS18B20(void); unsigned char ReadOneChar(void); void WriteOneChar(unsigned char dat); void delay(unsigned int i); main() TMOD|=0x01;/定时器设置 TH0=0xef; TL0=0xf0; IE=0x82; TR0=1; P1=0xff; count=0; while(1) str0=tabtemp/10; /十位温度 str1=tabtemp%10; /个位温度str2=tabtemp*10%10;/小数第一位str3=tabtemp*100%10;/小数第二位if(flag_get=1) /定时读取当前温度 temp=ReadTemperature(); flag_get=0; void tim(void) interrupt 1 using 1/中断,用于数码管扫描和温度检测间隔 TH0=0xef;/定时器重装值 TL0=0xf0; num+; if (num=50) num=0; flag_get=1;/标志位有效 second+; if(second=60) second=0; minute+; duanx = 0xff; count+; if(count=1) P1=0xdf; duanx=str0; if(count=2) P1=0xef; duanx=str1; /数码管扫描 if(count=3) P1=0xf7; duanx=str2; if(count=4) P1=0xfb; duanx=str3; if(count=5) P1=0xfd; duanx=0x9c; if(count=6) P1=0xef; duanx=0x7f; if(count=7) P1=0xfe;duanx=0xc6;count=0; if(temp36|temp20) for(m=0; m2; m+) for(n=0; n0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay(5); return(dat); void WriteOneChar(unsigned char dat) /写一个字节 unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat=1; delay(5); unsigned char ReadTemperature(void) /读取温度 unsigned char a=0; unsigned char b=0; unsigned char t=0; /float tt=0; Init_DS18B20(); WriteOneChar(0xCC); / 跳过读序号列号的操作 WriteOneChar(0x44); / 启动温度转换 delay(100); Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadOneChar(); b=ReadOneChar(); b4; t=b; /tt=t*0.0625; /t= tt*10+0.5; /放大10倍输出 return(t); 五、总结及体会通过这次的实习,我在动脑方面和动手方面都得到了锻炼,在实习的前一阶段往电路板上安各个元器件,我明白了细心的重要性,因为元器件有的有正负管脚之分,如果不仔细难免按错。当然元器件和电路板上都有相应标识只要认真就能发现。在焊接过程中,前几个焊点也许会焊得不好,但是遇到问题不能退缩不能放弃,要积极想解决的方法。期间我找到了很多焊接的技巧,比如焊元器件是容易出现“踩高跷”现象,后来知道了,只要将一个管脚扳平就可以起到固定的作用。焊锡送入的不能多也不能少,多了容易两个粘连,少了容易虚焊。这一阶段让我们充分锻炼了动手能力。在实习的后一阶段是编程阶段,在我们以前学过的单片机的知识的基础上对单片机有跟深入的了解,对单片机编程知识有更熟练的掌握。而且学会了单片机与C语言的结合。学习单片机要有一定的基础:电子技术方面要有数字电路和模拟电路等方面的理论基础,特别是数字电路;编程语言要求汇编语言或C语

温馨提示

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

评论

0/150

提交评论