电子电信单片机毕业课程设计.doc

上传人:坚持 文档编号:3671959 上传时间:2019-07-05 格式:DOC 页数:11 大小:149.50KB
下载 相关 举报
电子电信单片机毕业课程设计.doc_第1页
第1页 / 共11页
电子电信单片机毕业课程设计.doc_第2页
第2页 / 共11页
电子电信单片机毕业课程设计.doc_第3页
第3页 / 共11页
电子电信单片机毕业课程设计.doc_第4页
第4页 / 共11页
电子电信单片机毕业课程设计.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、一、实习目的与要求1、本设计是利用 AT89C52 系列单片机实现温度自动检测与报警,温度范围在 0至+100之间。DS18B20 可以程序设定 912 位的分辨率,精度为0.5。随机显示所采集的温度,可以设定温度的范围,对周围环境的温度进行有效检测与报警。数码管显示温度。上限为 36下限为 20。超过上限或低于下限则开始报警。通过设计,进一步熟悉和掌握 8052 单片机的结构及工作原理掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。掌握单片机的接口技术及相关外围芯片的外特性,控制方法。通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。 通过完成一个包括电路

2、设计和程序开发的完整过程,使了解开发一单片机应用系统的全过程,为今后从事相应打下基础。2、具体设计思想是:先设定上限温度和下限温度,然后计算最适温度,再利用温度传感器采集周围环境中的温度值。再将采样值和设定值进行比较,如果超出设定范围就进行报警提示操作人员予以处理,如果高于最适温度就提示降温,低于最适温度就提示加温。用户设定的报警温度存储在EEPROM 中,掉电后依然保存本设计基本上满足了温度检测与报警的要求,采样值与设定值基本一致,易于操作。 二、单片机开发板原理及各部分功能说明1、单片机开发板原理单片机AT89C52 LED 数码管显示DS18B20 温度传感器时钟振荡蜂鸣器报警定时器22

3、、各部分功能说明具体分析如下1).DS18B20DS18B20 的引脚排列 :(底视图)DS18B20 引脚功能描述: 1. GND 电源地 2. DQ 数据输入/输出引脚。开漏单总线接口引脚。3. VDD 电源正极引脚。工作电压为 35.5V。DS18B20 的使用方法: 由于 DS18B20 采用的是一线总线协议方式,而对 AT89S52 单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对 DS18B20 芯片的访问。由于 DS18B20 是在一根 I/O 线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20 有严格的通信协议来

4、保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是以主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求 DS18B20 回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。 单片机(主机)控制 DS18B20 完成温度转换必须经过每一次读写之前都要对 DS18B20 进行复位操作,复位成功后发送一条 ROM 命令,最后发送 RAM 命令,这样才能对 DS18B20 进行预定的操作。复位要求主 CPU 将数据线下拉 500us,然后释放,收到信号后等待 1660

5、us 左右,后发出 360240us 的存在低脉冲,主 CPU 收到此信号表示复位。DS18B20 的温度计算: 温度转换后存放在寄存器的第 1第 2 个字节内容中,DS18B20 的温度数据输出是以 16 位符号扩展的二进制补码格式表示。2).LED 显示电路设计LED 数 码 管 是 一 种 半 导 体 发 光 器 件 , 其 基 本 单 元 是 发 光 二 极 管 ,通 过 对 其 不 同 的 管 脚 输 入 相 对 的 电 流 , 会 使 其 发 亮 , 从 而 显 示 出 数 字 。数 码 管 按 段 数 按 发 光 二 极 管 单 元 连 接 方 式 分 为 共 阳 极 数 码 管

6、 和 共 阴 极数 码 管 。 共 阳 极 数 码 管 是 指 将 所 有 发 光 二 极 管 的 阳 极 接 到 一 起 形 成 公 共阳 极 (COM)的 数 码 管 。 共 阳 极 数 码 管 在 应 用 时 应 将 公 共 极 COM 接 到+5V, 当 某 一 字 段 发 光 二 极 管 的 阴 极 为 低 电 平 时 , 相 应 字 段 就 点 亮 。 当某 一 字 段 的 阴 极 为 高 电 平 时 , 相 应 字 段 就 不 亮 。动 态 驱 动 是 将 所 有 数 码 管 的 8 个 显 示 笔 划 “a,b,c,d,e,f,g,dp“的同 名 端 连 在 一 起 , 另 外

7、 为 每 个 数 码 管 的 公 共 极 COM 增 加 位 选 通 控 制 电路 , 位 选 通 由 各 自 独 立 的 I/O 线 控 制 , 当 单 片 机 输 出 字 形 码 时 , 所 有数 码 管 都 接 收 到 相 同 的 字 形 码 , 但 究 竟 是 那 个 数 码 管 会 显 示 出 字 形 , 取决 于 单 片 机 对 位 选 通 COM 端 电 路 的 控 制 , 所 以 我 们 只 要 将 需 要 显 示 的 数码 管 的 选 通 控 制 打 开 , 该 位 就 显 示 出 字 形 , 没 有 选 通 的 数 码 管 就 不 会 亮 。通 过 分 时 轮 流 控 制

8、各 个 数 码 管 的 COM 端 , 就 使 各 个 数 码 管 轮 流 受 控 显示 , 这 就 是 动 态 驱 动 。 动态扫描就是所要工作的若干个数码管轮流显示,只要轮流显示的速度足够快,每秒约 50 次以上,由于人眼的 “视觉暂留” 特性,看起来就像是连续显示,这样称为动态扫描。43).蜂鸣器报警蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它, S52 增强型单片机实验板通过一个三极管来放大驱动蜂鸣器,蜂鸣器的正极接到 VCC(5V)电源上面,蜂鸣器的负极接到三极管的发射极 E,三极管的基级 B 经过限流电阻 R1 后由单片机的

9、P2.1 引脚控制,当 P2.1 输出高电平时,三极管 T1 截止,没有电流流过线圈,蜂鸣器不发声;当 P2.1 输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制 P2.1 脚的电平来使蜂鸣器发出声音和关闭。 程序中改变单片机P2.1 引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。4).89C52 单片机主要特性a). 一个 8 位的微处理器(CPU)。b). 片内数据存储器 RAM(128B),用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据等,SST89 系列单片机最多提供 1K 的 RAM。c). 片

10、内程序存储器 ROM(4KB),用以存放程序、一些原始数据和表格。单片机分别集成了 16K、32K、64K Flash 存储器,可供用户根据需要选用。d). 四个 8 位并行 IO 接口 P0P3,每个口既可以用作输入,也可以用作输出。e). 两个定时器计数器,每个定时器计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。为方便设计串行通信,目前的 52 系列单片机都会提供 3 个 16 位定时器/计数器。f). 五个中断源的中断控制系统。现在新推出的单片机都不只 5 个中断源,。g). 一个全双工 UART(通用异步接收发送器)

11、的串行 IO 口,用于实现单片机之间或单机与微机之间的串行通信。5h). 片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率为 12MHz。最高允许振荡频率达 40MHz,因而大大的提高了指令的执行速度。时钟振荡AT89C52 中 有 一 个 用 于 构 成 内 部 振 荡 器 的 高 增 益 反 相 放 大 器 , 引 脚XTAL1 和 XTAL2 分 别 是 该 放 大 器 的 输 入 端 和 输 出 端 。 振 荡 器 就 是 可 以产 生 一 定 频 率 的 交 变 电 流 信 号 的 电 路 . 看 门 狗 就 是 其 中 一 种 。定时器80C52 内部设有两

12、个 16 位的可编程定时器/计数器。16 位的定时/计数器分别由两个 8 位专用寄存器组成,即:T0 由 TH0 和 TL0 构成;T1 由TH1 和 TL1 构成。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个 8 位的定时器方式寄存器 TMOD 和一个 8 位的定时控制寄存器 TCON。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。TMOD 主要是用于选定定时器的工作方式; TCON主要是用于控制定时器的启动停止,此外 TCON 还可以保存 T0、T1 的溢出和中断标志。输 出 时 钟 频 率 =振 荡 器 频 率 /4*65536-(RCP2H

13、,RCP2L)初始化的步骤一般如下:1).确定工作方式(即对 TMOD 赋值) ;2).预置定时或计数的初值(可直接将初值写入 TH0、TL0 或 TH1、TL1) ;3).根据需要开放定时器/计数器的中断(直接对 IE 位赋值) ;4).启动定时器/计数器三、硬件调试根据电路图焊接单片机,单片机焊接完成后,开始进行硬件调试,用KEIL 编程,用 STC-ISP 冷下载 test 程序到单片机上, 观察流水灯现象,数码管显示,蜂鸣器救护声音,温度传感器测温,现象正常,说明硬件没有问题。下面进行自己的编程与调试。61 2 3 4 5 6 7 8ABCD87654321DCBATitleNumbe

14、r RevisionSizeA3Date: 12-Jul-2010 Sheet of File: H:习习习习习习习syb51习习.db Drawn By:A4 6f10 A3 8A1 12e1 c4DP3b7 a1g5A2 9d2 DIG1 DIG2 DIG3 DIG4DP2DP3DS2HDSP-B04EA4 6f10 A3 8A1 12e1 c4DP3b7 a1g5A2 9d2 DIG1 DIG2 DIG3 DIG4DP2DP3DS1HDSP-B04EW1W2W3W4W5W6W7W8 D1D2D3D4D5D6D7D8D1D2D3D4D5D6D7D8EA/VPP31XTAL119 XTAL2

15、18RST9 P3.7(RD)17P3.6(WR)16P3.2(INT0)12 P3.3(INT1)13P3.4(T0)14 P3.5(T1)15P1.0(T2)1 P1.1(T2EX)2 P1.23P1.34 P1.45 P1.5(MOSI)6P1.6(MISO)7 P1.7(SCK)8(AD0)P0.0 39(AD1)P0.1 38(AD2)P0.2 37(AD3)P0.3 36(AD4)P0.4 35(AD5)P0.5 34(AD6)P0.6 3(AD7)P0.7 32(A8)P2.0 21(A9)P2.1 2(A10)P2.2 23(A1)P2.3 24(A12)P2.4 25(A13

16、)P2.5 26(A14)P2.6 27(A15)P2.7 28PSEN 29ALE/PROG 30(TXD)P3.11(RXD)P3.0 10GND 20VC 40MU1AT89S52P10P1P12P13P14P15P16P17P0P01P02P03P04P05P06P07P20P21P2P23P24P25P26P27VCGNDP30P31P32P3P34P35P36P37RSTDIGIDB2 E1C3DQ1850 DQ2850 DQ3850 DQ4850 DQ5850 DQ6850 DQ7850 DQ8850K1SW-PB4K12SW-PB4K13SW-PB4K14SW-PB4K21SW

17、-PB4K2SW-PB4K23SW-PB4K24SW-PB4K31SW-PB4K32SW-PB4K3SW-PB4K34SW-PB4K41SW-PB4K42SW-PB4K43SW-PB4K4SW-PB4OSC32 INOSC32 OUTOSC32 INOSC32 OUTRTCTBATVC21 X12X23 GND4 RST 5I/O 6SCLK 7VC18TU1DS1302TVCGNDTC1104GNDTVCTX132KKEYK123DSU1DS18B20BEPBU1BEPBQ1850BR14K7VCBDSR14K7LED1LED2LED3LED4LED5LED6LED7LED8LEDL2315

18、46 SW1POWER-KEY12345678MP2P112345678MP4P312345678MP3P212345678MP1P0123PCON1POWER12345678910111213141516P21602P10P1P12P13P14P15P16P17P20P21P2P23P24P25P26P27P30P31P32P3P34P35P36P37P0P01P02P03P04P05P06P07R1 IN13 R2 IN8 T1 IN1T2 IN10 GND15V+2V-6VCC16R1 OUT 12R2 OUT 9T1 OUT 14T2 OUT 7C1+1 C1 -3 C2+ 4C2 -

19、 5SU1MAX232VCSC1104SC4104SC3104SC2104162738495SCON1RS232P31 P30DR14K7 DR24K7 DR34K7 DR44K7 DR54K7 DR64K7 DR74K7 DR84K7W1 W2 W3 W4 W5 W6 W7 W8DVCT2OUTT2OUTSerialSGNDPVCC2PVCC2GNDPR11KPORTPVCMK1RESETMR24K7RSTMC410U/16VSC5104K1SW-PB4K2SW-PB4K3SW-PB4K4SW-PB4P32 P3 P34 P35VBUS 1D- 2D+3GND 46 5UCON1 USBVC

20、1 VCVC1VC2DR91KDR101KDR11KDR121KDR131KDR141KDR151KDR161KD1D2D3D4D5D6D7D8P0 1 23 45 67 8JP1HEADER 4X2P01P02P03P04P05P06P07VCVCVCPVC1PVC2DVCPWRR11KMC1104VC GNDC120U/16V C2104DS18B20DS1 23 45 67 89 10IP1ISP GNDVCMOSIRSTSCKMISOP15P16P17VCX112MMC330P MC230POSC_INOSC_OUTOSC_INOSC_OUTP00P01P02P03P04P05P06P

21、071234567891011121314151617181920P112864PVCC1GNDGNDPVCC1PR310K PR44K7123456789MR14K7x8VCVC2GNDGNDP10P11 P10P11 P12P10 P11 P12 P13 P14 P15 P16 P17LVCEPROMA01 A12 A23VS4 SDA 5SCL 6WP7VD 8EU124C08EVCER14K7 ER24K7E EC1104EVC GND1 23 45 67 8JP2HEADER 4X2DS1BEPBEPDS1VCVCVCLVCTVCEVCVCP30 P31 P32 P3P34P35P3

22、6P37P20P21 P2P23P24P25P26D1 D2 D3 D4 D5 D6 D7 D8LQ1850LR04K7LVCCP27VCGNDP00P01P02P03P04P05P06P07P12 P13P14P15123J3EN_1602ENEN GNDID11N4148123IU1IR 38KP32IR110VCIR38K12JP3CON2IR38K系统框图:系统初始化设置计数器 TO 中断发 DS18B20 复位命令发读温度命令存温度暂存器读出温度值温度计算处理显示数据是否报警?否 是 小灯不亮,蜂鸣器不响小灯亮,蜂鸣器响7四、软件开发1实现程序#include #include #i

23、nclude #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,0

24、xf9,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=

25、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) /定时读取当前温度 8temp=ReadTemperature(); flag_get=0; void tim(void) interrupt 1 using 1/中断,用于数码管扫描和温度检测间隔 TH0=0xef;/定时器重装值 TL0=0xf0; num+; if (num

26、=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; i

27、f(count=7) P1=0xfe;duanx=0xc6;count=0; 9if(temp36|temp0;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 delay(5); DQ = 1; dat=1; delay(5); unsigned char ReadTemperatu

28、re(void) /读取温度 10 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=ReadO

29、neChar(); b4; t=b; /tt=t*0.0625; /t= tt*10+0.5; /放大 10 倍输出 return(t); 五、总结及体会通过这次的实习,我在动脑方面和动手方面都得到了锻炼,在实习的前一阶段往电路板上安各个元器件,我明白了细心的重要性,因为元器件有的有正负管脚之分,如果不仔细难免按错。当然元器件和电路板上都有相应标识只要认真就能发现。在焊接过程中,前几个焊点也许会焊得不好,但是遇到问题不能退缩不能放弃,要积极想解决的方法。期间我找到了很多焊接的技巧,比如焊元器件是容易出现“踩高跷”现象,后来知道了,只要将一个管脚扳平就可以起到固定的作用。焊锡送入的不能多也不能少,多了容易两个粘连,少了容易虚焊。这一阶段让我们充分锻炼了动手能力。在实习的后一阶段是编程阶段,在我们以前学过的单片机的知识的基础上对单片机有跟深入的了解,对单片机编程知识有更熟练的掌握。而且学会了单片机与 C 语言的结合。学习单片机要有一定的基础:电子技术方面要有数字电路和模拟电路等方面的理论基础,特别是数字电路;编程语言要

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

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。