单片机课程设计(仅供参考,排版一般,内容基本完整,得分70)

更新时间:2023-07-28 14:59:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机课设

大 庆 石 油 学 院

课 程 设 计

2009年2月 日

单片机课设

大庆石油学院课程设计任务书

课程 单片机原理及应用课程设计 题目 温度采集报警系统的设计 专业

电子科学与技术 姓名 杨 光 学号 030901240319

主要内容、基本要求、主要参考资料等 1、主要内容:

根据单片机课程所学内容,结合其他相关课程知识,设计一个温度采集报警系统,以加深对单片机知识的理解,锻炼实践动手能力,为以后的毕业设计和工作打下坚实基础。 2、基本要求:

本设计以MCS-51系列单片机为核心,采用常用电子器件设计。要求可以显示被测的温度并存储,可以设置报警温度,到达报警温度时声光报警。 3、主要参考资料:

[1] 张毅坤,陈善久.单片微型计算机原理及应用[M].西安:西安电子科技大学

出版社,2002.

[2] 张友德,赵志英,徐时亮.单片微机原理应用与实验[M].上海:复旦大学出

版社,2000.

[3] 蔡美琴,张为民,沈新群,张荣娟.MCS-51系列单片机系统及其应用[M].北

京:高等教育出版社,1992.

完成期限 2007年3月9日 指导教师 专业负责人

2007年3 月2日

单片机课设

目 录

第1章 系统设计 ..................................................... 1

1.1温度采集报警系统 .............................................. 1 第2章 硬件设计 ..................................................... 2

2.1测温和控制电路 ................................................ 2 2.2 显示控制电路 ................................................. 5 2.3 声光报警电路 ................................................. 6 第3章 软件设计 ..................................................... 8 总结 ................................................................. 9 参考文献 ............................................................ 10 附录1 整体电路图 ................................................... 11 附录2 源程序 ....................................................... 12

单片机课设

第1章 系统设计

1.1温度采集报警系统

如图1.1所示为温度采集报警系统框图。该课程设计将以单片机控制的温度采集系统为主,利用单片机完成对温度的检测,实现安全温度内正常显示温度值,超出设定的温度上限则进行声光报警。

系统在温度采集时主要应用了DS18B20芯片,该器件经过初始化后单片机首先进行ROM匹配,当受到测温器件发回的信号时证明该器件正常工作,接着单片机发送温度转换命令进行温度采集,测温的精确度很高,可以精确到小数点后四位。设计中还应用了HD7279芯片进行数码管显示的驱动,一共应用了6位数码管。报警电路采用由NE555所组成多谐振荡电路。

图1.1系统框图

单片机课设

第2章 硬件设计

2.1测温和控制电路

(1) 测温

测温使用的DS18B20是典型的应用单总线技术的器件。1-wire单总线是Maxim全资子公司Dallas的一项专有技术。与目前多数标准串行数据通信方式,如SPI/I2C/MICROWIRE不同,它采用单根信号线,既传输数据位,又传输数据位的定时同步信号,而且数据传输是双向的。大多数1-wire器件不需要额外的供电电源,可直接从单总线上获得足够的电源电流(即寄生供电方式)。它具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。

1-wire单总线适用于单个主机系统,能够控制一个或多个从机设备。当只有一个从机位于总线上时,系统可按照单节点系统操作;而当多个从机位于总线上时,则系统按照多节点系统操作。

为了较为全面地介绍单总线系统,将系统分为三个部分讨论:硬件结构、命令序列和信号方式(信号类型和时序)。 硬件结构:

顾名思义,单总线只有一根数据线。设备(主机或从机)通过一个漏极开路或三态端口,连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其它设备所使用。单总线端口为漏极开路,其内部等效电路如图1所示。

单总线要求外接一个约5k的上拉电阻;这样,单总线的闲置状态为高电平。不管什么原因,如果传输过程需要暂时挂起,且要求传输过程还能够继续的话,则总线必须处于空闲状态。位传输之间的恢复时间没有限制,只要总线在恢复期间处于空闲状态(高电平)。如果总线保持低电平超过480μs,总线上的所有器件将复位。另外,在寄生方式供电时,为了保证单总线器件在某些工作状态下(如温度转换期间、EEPROM写入等)具有足够的电源电流,必须在总线上提供强上拉[1]。 (2) 控制

At89S51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机;片内含有4k字节的可反复擦写的只读程序存储器(PEROM)和128字节的随机存取数据存储器(RAM);器件采用AMTEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统;片内置通用2位中央处理器(CPU)和Flash存储单元,功

单片机课设

能强大的AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。功能特性概述

AT89S51提供以下标准功能:4k字节Flash闪速存储器、128字节内部RAM、32个I/O口线、两个16位定时/计数器、1个5向量两级中断结构、一个全双工串行通信口、片内振荡器及时钟电路,同时,AT89S51可降至0Hz的静态逻辑操作并支持两种软件可选的节电工作模式;空闲方式停止CPU的工作,但允许RAM、定时/计数器、串行通信口及中断系统继续工作;掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作一直到下个硬件复位[2]。 引脚功能说明 Vcc:电源电压 GND:地

P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口;作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。

在访问外部数据存储器或者程序存储器时,这组口线分时转换地址(低8位)和数据总线复用;在访问期间激活内部上拉电阻。

在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻

P1口:P1是一个带内部上拉电阻的8位双向I/O口;P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。 Flash编程和程序校验期间,P1接收低8位地址

P2口:P2口是一个带有内部上拉电阻的8位双向I/O口;P2的输出缓冲级可驱动个(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。

在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX @DPTR指令)时,P2口送出高8位地址数据;在访问8位地址的外部数据存储器(如执行MOVX @RI)时,P2口线上的内容(即特殊功能寄存器(SFR)区中的R2寄存器的内容),在整个访问期间不改变;

Flash编程或校验时,P2亦接收高位地址和其它控制信号。

P3口:P3口是一个带有内部上拉电阻的8位双向I/O口;P2的输出缓冲级可驱动个(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,通过内部的

单片机课设

上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。

P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能;如下表2-1所示:

P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。 RST:复位输入;当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位

ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节;即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的;要注意的是,每当访问外部数据存储器时将跳过一个ALE脉冲。

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作,该位置位后,只有一条MOVX和MOVC指令ALE才会被激活,此外该引脚会被微弱拉高,单片机执行外部程序时,应该置ALE无效。

EA/VPP:外部访问允许;欲使CPU仅访问外部程学存储器(地址为0000H FFFFH),EA端必须保持低电平(接地)。需要注意的是,如果加密位LB1被编程,复位时内部会锁存EA端的状态[3]。

如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。

单片机课设

Flash存储编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。

XTML1:振荡器反相放大器的及内部时钟发生器的输入端。 XTML2: 振荡器反相放大器的输出端。

图2.1测温和控制电路

2.2 显示控制电路

HD7279A是一片具有串行接口的,可同时驱动8位共阴式数码管(或64个LED点阵)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵。该芯片内部含有译码器,可直接接受16进制码,HD7279A还同时具有2种译码方式,HD7279(A)还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。HD7279与单片机仅需4条接口线,其中CS为片选信号。当MCU访问HD7279时,应将片选端置为低电平。DATA为串行数据/输出端,当向HD7279发送数据时,DATA为输入端;当HD7279A输出键盘代码时,DATA为输出端。其特点为:

-串行接口,无需外围元件可直接驱动LED -各位独立控制译码/不译码及消隐和闪烁属性

单片机课设

-(循环)左移/(循环)右移指令 -具有段寻址指令,方便控制独立LED -64键键盘控制器,内含去抖动电路 -有DIP和SOIC两种封装形式供选择

图2.2显示控制电路

2.3 声光报警电路

555集成定时器是一种模拟和数字电路相混合的集成电路。它结构简单,使用灵活,用途十分广泛,可以组成多种波形发生器、多谐振荡器、定时延时电路、双稳触发电路、报警电路、检测电路、频率变换电路等。

555定时器的电路原理图及管脚排列图分别如图2.3和2.4所示。

单片机课设

电压控制端

VC TH

5 6

高触发端

TL 低触发端

DIS 放电端

1 GND 电源地

图2.3 555定时器的原理图

图2.4 555定时器的引脚图

555含有两个比较器A1、A2,其中5端为电压控制端,通过外接一个参考电源,可以改变上、下触发电位值,不用时,可通过一个0.01μF旁路电容接地。4端为触发器复位端,不用时应接高电平。总之,555相当于一个可用模拟电压来控制翻转的R-S触发器。图2.5就是用555构成的多谐振荡电路,产生的振荡脉冲信号经过三极管放大后驱动扬声器报警,由单片机的P1.5端口输出高电平发出报警。

图2.5 报警电路

单片机课设

第3章 软件设计

该课程设计中主要利用了DS18B20芯片进行测温,该芯片是单总线器件,顾名思义单总线只有一根数据线,因此在通信时时序就显得十分重要,我们在编程时也要十分注意这一点。在程序中测温时首先要对DS18B20进行初始化,初始化过程由单片机发出的复位脉冲和芯片响应的应答脉冲组成,应答脉冲使主机知道,总线上有从机设备,且准备就绪。由于总线上只挂接了一片测温芯片,因此可直接跳过ROM匹配发出测温命令。该设计可实时显示温度值,便于连续观测。系统源程序见附录2。软件流程图如下所示:

图3.1 软件流程图

单片机课设

总结

这次课程设计使我掌握了很多实践知识,在老师和同学的帮助下对单片机有了进一步的了解。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,进而提高自己的实际动手能力和独立思考的能力。整个设计过程可以说不是很顺利,因为有很多知识已经淡忘,还有很多新的东西没有掌握,所以这次设计在不断的复习、学习中度过,使我受益匪浅,也使我对单片机的运用有了进一步的了解和掌握,也为今后的学习生活和工作打下良好的基础。最后我要衷心感谢老师的辛勤指导,感谢帮助我同学。

单片机课设

参考文献

[1] 张毅坤,陈善久.单片微型计算机原理及应用[M].西安:西安电子科技大学出版社,2002.

[2] 张友德,赵志英,徐时亮.单片微机原理应用与实验[M].上海:复旦大学出版社,2000.

[3] 蔡美琴,张为民,沈新群,张荣娟.MCS-51系列单片机系统及其应用[M].北京:高等教育出版社,1992.

单片机课设

附录1 整体电路图

单片机课设

附录2 源程序

TEMPH EQU 35H TEMPL EQU 34H

DQ EQU P1.2 ;18B20 BIT_COUNT EQU 30H TIMER EQU 31H TEN EQU 32H DATA_IN EQU 20H DATA_OUT EQU 21H TIMER1 EQU 33H DAT BIT P1.0 CLK BIT P1.1 CS BIT P1.3 ORG 0000H AJMP START ORG 0003H LJMP INT0 ORG 0030H MAIN:

MOV SP,#60H MOV P1,#11011101 START:

LCALL GET_TEMPER

LCALL CHULI_1 LCALL DELAY LCALL DELAY

SETB P1.4 CLR P1.5 AJMP START

;-------------------------------------------- GET_TEMPER: SETB DQ

LCALL INIT_1820 ;36H-37H-38H存有温度值 ;报警灯灭 ;报警铃停 ;复位

单片机课设

MOV A,0CCH ;跳过ROM LCALL WRITE_1820 MOV A,#44H LCALL WRITE_1820 LCALL DELAY

LCALL INIT_1820 ;复位 MOV A,0CCH LCALL WRITE_1820

MOV A,#0BEH LCALL WRITE_1820

LCALL READ_1820 ;29H(低),28H(高) RET

;---------------------------------------- INT0: PUSH PSW PUSH ACC MOV DATA_OUT,#15H LCALL SEND LCALL RECEIVE SETB CS

MOV R2,DATA_IN POP ACC POP PSW RETI

;-------------发射子程------------------ SEND:

MOV BIT_COUNT,#8 CLR CS

CALL LONG_DELAY SEND_LOOP:

MOV C,DATA_OUT.7 MOV DAT,C SETB CLK MOV A,DATA_OUT

;跳过ROM ;读取温度值

单片机课设

RL A

MOV DATA_OUT,A CALL SHOUT_DELAY CLR CLK

CALL SHOUT_DELAY

DJNZ BIT_COUNT,SEND_LOOP CLR DAT RET

;--------------------------------------- RECEIVE:

MOV BIT_COUNT,#8 SETB DAT

CALL LONG_DELAY RECEIVE_LOOP: SETB CLK

CALL SHOUT_DELAY MOV A,DATA_IN RL A

MOV DATA_IN,A MOV C,DAT MOV DATA_IN.0,C CLR CLK

CALL SHOUT_DELAY

DJNZ BIT_COUNT,RECEIVE_LOOP CLR DAT RET

;------------------------------------- LONG_DELAY:

MOV TIMER,#25 ;50US DELAY_LOOP:

DJNZ TIMER,DELAY_LOOP RET

SHOUT_DELAY: MOV TIMER,#4 ;8US

单片机课设

DELAY_LOOP1:

DJNZ TIMER,DELAY_LOOP1 RET

;-------------处理的数据从36H 起始------------- CHULI_1: MOV 36H,#00H MOV 37H,#00H MOV 38H,#00H MOV C,28H.7 JC FUSHU

MOV TEMPH,28H MOV TEMPL,29H INC TEMPH S1: MOV A,36H ADD A,#25H DA A MOV 36H,A MOV A,37H ADDC A,#06H DA A MOV 37H,A MOV A,38H ADDC A,#00H DA A MOV 38H,A DJNZ TEMPL,S1 DJNZ TEMPH,S1 LCALL DISPLAY_1 RET FUSHU:

MOV TEMPH,28H MOV TEMPL,29H

XRL TEMPL,#0FFH ;高位 ;低位 ;修正 ;变为原码

单片机课设

XRL TEMPH,#0FFH MOV A,TEMPL ADD A,#01H MOV TEMPL,A MOV A,TEMPH ADDC A,#00H MOV TEMPH,A

INC TEMPH S2: MOV A,36H ADD A,#25H DA A MOV 36H,A MOV A,37H ADDC A,#06H DA A MOV 37H,A MOV A,38H ADDC A,#00H DA A MOV 38H,A DJNZ TEMPL,S2 DJNZ TEMPH,S2 LCALL DISPLAY_2 RET

;----------------------复位子程序---------------- INIT_1820: SETB DQ NOP CLR DQ ;主机发出延时480微秒的复位低脉冲

MOV R1,#3

TSR1: MOV R0,#80

修正 ;

本文来源:https://www.bwwdw.com/article/0hhm.html

Top