基于单片机的智能温度传感器的毕业设计.docx
- 文档编号:26736800
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:43
- 大小:186.37KB
基于单片机的智能温度传感器的毕业设计.docx
《基于单片机的智能温度传感器的毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的智能温度传感器的毕业设计.docx(43页珍藏版)》请在冰豆网上搜索。
基于单片机的智能温度传感器的毕业设计
基于单片机的智能温度传感器的毕业设计
1.1设计目的
我国是一个农业大国,粮食是一个国家生存的根本,为了防备战争、灾害及各种突发事件的发生,粮食的安全储藏具有重要的意义。
目前,我国各地区的各种大型粮库都还存在着程度不同的粮食储存变质问题,而影响粮食储藏的主要参数又是温度。
根据国家粮食保护法规定,必须定期抽样检查粮库各点的粮食温度,以便及时采取相应的措施,防止粮食的变质。
过去粮食温度的检测是靠人工手测进行,不但测试速度慢、测试精度低,而且人员劳动强度非常大。
随着计算机和信息技术的发展,计算机测量系统越来越多的场合得到了广泛应用。
传统的人工查看粮温的方法,已逐步被电子检温设备所取代,小的储粮设备一般采用小型测温仪检测粮温,大中型储粮设备已逐步配备微机测温系统。
前一种方式多数采用由拨动手动开关逐点查看粮温的方法,有些也采用自动巡检方式并配备小型打印机记录粮温数据。
后一种方式则可在微机机房监测粮温情况,并能利用微机对粮温数据进行分析对比。
保证粮库中储藏粮食的安全,一个十分重要的条件就是要求粮食储藏温度保持在18℃~20℃之间。
对于出现不正常升温或降温,要求能够迅速的测量并且报警使工作人员可以马上采取措施降温或升温。
本设计采用的DS18B20是美国DALLAS公司生产的智能温度传感器。
可以通过程序设定9~12位的分辨率,测量温度围为-55℃~+125℃,在-10℃~+85℃围精度为士0.5℃,DS18B20支持“一线总线”接口,用一根线对信号进行双向传输,具有接口简单容易扩展等优点,适用于单主机、多从机构成的系统。
DS18B20测量的现场温度直接以“一线总线”的数字方式传输,提高了系统的抗干扰性,适合各种恶劣环境的现场温度测量。
DS18B20支持3V~5.5V的电压围。
分辨率、报警温度可设定存储在DS18B20的E2PROM中,掉电后依然保存。
1.2设计容
(1)一线总线制单片机中的应用。
(2)点阵式液晶显示器的使用。
(3)高级语言对单片机编程技术。
1.3设计要求
(1)检测8个温度点数。
(2)精度要求正负0.5摄氏度
(3)体积在200*100毫米。
(4)数据传输约一公里左右。
(5)采用LCD显示。
1.4关于一线总线DS18B20的简介
DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。
与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
可以分别在93.75ms和750ms完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。
因而使用DS18B20可使系统结构更趋简单,可靠性更高。
他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。
DS18B20是美国DALLAS公司继DS1820之后推出的增强型单总线数字温度传感器。
它在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。
它采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位);独特的单线接口方式:
微处理器连接时仅需要一条线即可实现微处理器与DS18B20的双向通讯;可用数据线供电,电压围:
3.0~5.5V;测温围:
-55~+125℃,在-10~+85℃时精度为±0.5℃;可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃;含64位经过激光修正的只读存储器ROM;12位分辨率时最多在750ms把温度值转换为数字;适合于各种单片机或系统机;在使用中不需要任何外围元件;支持多点组网功能,多个DS18B20可以并联在唯一的线上,实现多点测温;用户可分别设定各路温度的上、下限;含寄生电源;负压特性:
电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
DS18B20的外形及引脚说明,其体积只有DS1820的一半,引脚定义相同。
图1-1DS1B20外形图1-2DS18B20引脚结构图
图1-3DS18B20部结构
我们成功地将DS18B20应用于控制系统中,其测温系统简单,测温精度高,连接方便,占用口线少,转换速度快,与微处理器的接口简单,给硬件设计工作带来了极大的方便,能有效地降低成本,缩短开发周期。
1.4.1DS18B20的特点
(1)独特的单线接口方式:
DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2)在使用中不需要任何外围元件。
(3)可用数据线供电,电压围:
3.05.5V。
(4)测温围:
-55125℃。
固有测温分辨率为0.5℃。
(5)通过编程可实现912位的数字读数方式。
(6)用户可自设定非易失性的报警上下限值。
(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。
(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
1.5单片机简介
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
不过,这种电脑,通常是指个人计算机,简称PC机。
它由主机、键盘、显示器等组成(如图1所示)。
还有一类计算机,大多数人却不怎么熟悉。
这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。
顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。
因为它体积小,通常都藏在被控机械的“肚子”里。
它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。
现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。
究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件。
单片机的应用领域:
1.单片机在智能仪器仪表中的应用;
2.单片机在工业测控中的应用;
3.单片机在计算机网络和通讯技术中的应用;
4.单片机在日常生活及家电中的应用;
5.单片机在办公自动化方面。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
第二章总体设计方案
这次设计主要由硬件电路和软件电路两部分组成。
其中软件主要用KEILC语言编写的,而硬件电路主要有模拟和数字两部分组成。
从功能模块上来分有:
键盘控制系统、模数转换、电压监视电路、串行通讯系统、数据采集、存储和液晶显示系统。
图2-1硬件结构
2.1AT89C52的选择
AT89C52采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
片的Flash存储器允许在系统可改编程序或用常规的非易失存储器编程器来编程。
它是一种功能强,灵活性高且价格合理的单片机,可方便地应用在各种控制领域。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
因此我选择AT89C52。
主机选用89系列单片机AT89C52来实现,他提供了8K字节FLASH闪存,
256字节部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片振荡器及时钟电路。
同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
可达到运算速度快,控制功能完善。
不需要外扩展存储器,可使系统整体结构更为简单、实用。
2.2keilc的选择
学习单片机实在不是件易事,一来要购买高价格的编程器,仿真器,二来要学习编程语言,还有众多种类的单片机选择真是件让人头痛的事。
在众多单片机中51架构的芯片风行很久,学习资料也相对很多,是初学的较好的选择之一。
51的编程语言常用的有二种,一种是汇编语言,一种是C语言。
汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C语言还可以嵌入汇编来解决高时效性的代码编写问题。
对于开发周期来说,中大型的软件编写用C语言的开发周期通常要小于汇编语言很多。
综合以上C语言的优点,我在学习时选择了C语言。
第三章89C51最小系统
3.1MCS-51系统扩展概述
MCS-51单片机集成了各种存储器和I/O功能部件,但有时根据应用系统的功能需求,片的资源还不能满足需要,还需要外扩存储器和I/O功能部件(也称I/O接口部件),这就是通常所说的MCS-51单片机的系统扩展问题。
MCS-51系统扩展的容主要有外部存储器的扩展(外部存储器又分为外部程序存储器和外部数据存储器)和I/O接口部件的扩展。
MCS-51扩展结构如图3-1所示。
图3-1MCS-51扩展结构
由图3-1可以看出:
系统扩展是以MCS-51单片机为核心进行的。
扩展容包括扩展程序存储器(ROM)、数据存储器(RAM)、I/O接口部件及I/O设备等。
MCS-51单片机外部存储器结构,采用的是哈佛结构,即程序存储器的空间和数据存储器的空间是截然分开的。
还有一种外部存储器的结构,它是程序存储器和数据存储器合用一个空间的结构:
普林斯顿结构。
例如,MCS-96单片机的存储器结构就是采用普林斯顿结构。
MCS-51单片机数据存储器和程序存储器的最大扩展空间各为64KB,扩展后,系统形成了2个并行的64KB外部存储器空间。
由图可以看出,扩展是通过系统总线进行的,通过总线把MCS-51单片机与各扩展部分连接起来,并进行数据、地址和控制信号的传送。
因此,要进行系统扩展首先要构造系统总线。
3.2程序存储器EPROM的扩展
程序存储器一般采用只读存储器,因为这种存储器在电源关断后,仍能保存程序(此特性称为非易失性的),在系统上电后,CPU可取出这些指令予以重新执行。
只读存储器简称为ROM。
ROM中的信息一但写入之后,就不能随意更改,特别是不能在程序运行的过程中写入新的容,故称之为只读存储器。
向ROM中写入信息叫做ROM编程。
根据编程的方式不同,ROM分为以下几种:
(1)掩模ROM
掩模ROM是在制造过程中编程。
因编程是以掩模工艺实现的,因此称为掩模ROM。
这种芯片存储结构简单,集成度高,但由于掩模工艺成本较高,因此只适合于大批量生产。
在批量大的生产中,一次性掩模生产成本才是很低的。
(2)EPROM
PROM(可编程只读存储器)芯片出厂时并没有任何程序信息,是由用户用独产的编程器写入的。
但PROM只能写入一次,写入容后,就不能再进行修改。
(3)EPROM
EPROM是用电信号编程,用紫外线擦除的只读存储器芯片。
(4)EEPROM
这是一种用电信号编程,也用电信号擦除的ROM芯片,对EEPROM的读写操作与RAM存储器几乎没有什么差别,只是写入的速度慢一些。
但断电后能够保存信息。
(5)FlashROM
FlashROM又称闪烁存储器,简称闪存。
3.2.1常用EPROM芯片介绍
程序存储器的扩展可根据需要来使用上述的各种只读存储器的芯片,但使用比较多的是EPROM、E
PROM,下面首先对常用的EPROM芯片进行介绍。
EPROM的典型芯片是27系列产品,例如,2716(2KB×8)、2732(4KB×8)、2764(8KB×8)、27128(16KB×8)、27256(32KB×8)、27512(64KB×8),型号名称“27”后面的数字表示其位存储容量。
如果换算成字节容量,只需将该数字除以8即可。
例如,“27128”中的“27”后面的数字为“128”,128÷8=16KB。
随着大规模集成电路技术的发展,大容量存储器芯片的产量剧增,售价不断下降。
大容量存储器芯片的性价比明显增高,而且由于有些厂家己停止生产小容量的芯片,使市场上某些小容量芯片的价格反而比大容量芯片还贵。
所以,在扩展程序存储器设计时,应尽量采用大容量的芯片。
这样,不仅可以使电路板的体积缩小,成本降低,还可以降低整机功耗和减小控制逻辑电路,从而提高系统的稳定性和可靠性。
3.2.2.EPROM芯片的工作方式
EPROM一般都有5种工作方式,由CE、OE、PGM各信号的状态组合来确定。
5种工作方式如表所示:
表3-1EPROM芯片的工作方式
引脚信号
方式
CE/PGM
OE
Vpp
D7~D0
读出
低
低
+5V
程序读出
未选中
高
×
+5V
高阻
编程
正脉冲
高
+25V(或+12V)
程序写入
程序校验
低
低
+25V(或+12V)
程序读出
编程禁止
低
高
+25V(或+12V)
高阻
(1)读出方式
一般情况下,EPROM工作在这种方式。
工作在此种方式的条件是使片选控制线CE为低,同时让输出允许控制线OE为Vpp端为+5V,就可将EPROM中的指定地址单元的容从数据引脚D7~D0上读出。
(2)未先中方式
当片选控制线CE为高电平时,芯片进入未选中方式,这时数据输出为高阻抗悬浮状态,不占用数据总线。
EPROM处于低功耗的维持状态。
(3)编程方式
在Vpp端加上规定好的高压,CE和OE端加上合适的电平,就能将数据线上的数据写入到指定的地址单元。
此时,编程地址和编程数据分别由系统的A15~A0和D7~D0提供。
(4)编程校验方式
在Vpp端保持相应的编程电压,再按读出方式操作,读出编程固化好的容,以校验写入的容是否正确。
(5)编程禁止方式
本工作方式输出呈高阻状态,不写入程序。
3.2.3静态数据存储器的扩展
MCS-51单片机部有128BRAM。
在实际应用中,仅靠片RAM往往不够用,必须扩展外部数据存储器。
常用的数据存储器RAM器件有两类,即静态RAM和动态RAM。
在单片机应用系统中,外扩的数据存储器都采用静态数据存储器,所以这里仅讨论静态数据存储器SRAM与MCS-51的接口。
所扩展的数据存储器空间地址由P2口提供高8位地址,P0口分时提供低8位地址和8位双向数据总线。
片外数据存储器RAM的读和写由8031的RD(P3.7)和WR(P3.6)
信号控制,而片外程序存储器EPROM的输出允许端(OE)由读选通PSEN信号控制.尽管与EPROM共处同一地址空间,但由于控制信号不同,故不会发生总线冲突。
3.2.4常用的静态RAM(SRAM)芯片
单片机系统中常用的SRAM芯片的典型型号有:
6116(2K×8),6264(8K×8),62128(16K×8),62256(32K×8)。
它们都用单一+5V电源供电,双列直插封装,6116为24引脚封装,6264、62128、62256为28引脚封装。
SRAM的各引脚功能如下:
A0~A14:
地址输入线。
D0~D7:
双向三态数据线。
CE:
片选信号输入线,低电平有效。
对于6264芯片,当引脚26(CS)为高电平时,且CE为低电平时才选中该片。
OE:
读选通信号输入线,低电平有效。
WE:
写允许信号输入线,低电平有效。
Vcc:
工作电源+5V。
GND:
地线。
3.36264和单片机的硬件连接
图3-36264和单片机的硬件连接
单片机的高三位地址线A13、A14、A15用来进行3-8译码,译码输出的接6264的片选线;剩余的译码输出用于选通其它的I/O扩展接口;
6264的片选线CE2直接接+5V高电平;
6264的输出允许信号接单片机的,写允许信号接单片机的。
3.4AT89C52芯片的介绍
3.4.1AT89C52芯片特点
●与MCS-51产品指令和引脚完全兼容
●8K字节可重擦写FLASH闪存
●1000次擦写周期
●全静态操作:
0Hz-24MHz
●三级加密程序存储器
●256X8字节部RAM
●32个可编程I/O口线
●3个16位定时/计数器
●8个中断源
●可编程串行UART通道
●低功耗空闲和掉电模式
3.4.2功能特性概述
AT89C52提供以下标准功能:
8K字节FLASH闪存,256字节部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片振荡器及时钟电路。
同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。
图3-4AT89C52的芯片管脚图
3.4.3引脚功能说明
VCC——电源电压
GND——地
P0口——P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活部上拉电阻。
在FLASH编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口——P1口是一个带部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过部的上拉电阻把端口拉到高电平,此时可作输出口。
作输入口使用时,因为部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),参见下表。
FLASH编程和程序校验期间,P1接收低8位地址。
表3-2P1.0和P1.1的第二功能
引脚号
功能特性
P1.0
T2(定时/计数器2外部计数脉冲输入),时钟输出
P1.1
T2EX(定时/计数2捕获/重装载触发和方向控制)
P2口——P2是一个带部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1”,通过部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器时,P2口输出P2锁存器的容。
FLASH编程或校验时,P2亦接收高位地址和一些控制信号。
P3口——P3口是一组带有部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被部上拉电阻拉高并可作为输入端口。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。
表3-3(P3.0-P3.7)的第二功能
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INTO(外中断0)
P3.3
INT1(外中断1)
P3.4
TO(定时/计数器0)
P3.5
T1(定时/计数器1)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG——当访问外部程存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
3.5中断/定时器
3.5.1中断
1.中断的概念
当MCS-51单片机的CPU正处在处理某件事情的时候,单片机外部或部发生的某一事件请求CPU迅速去处理,于是,CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事情。
中断服务中断处理程序完该事件后,再回到原来被中止的地方,继续原来的工作,这称为中断。
CPU处理事件的过程,称为CPU的中断响应过程。
对事件的整个处理过程,称为中断处理(或中断服务)。
能够实现中断处理功能的部件称为中断系统;产生中断的请求源称为中断请求源;中断源向CPU提出的处理请求,称为中断请求。
当CPU暂时中止正在执行的程序,转去执行中断服务程序时,除了硬件自动把断点地址压入堆栈之外,用户应注意保护有关的工作寄存器、累加器、标志位等信息,这称为保护现场。
在完成中断服务程序后,恢复有关的工作寄存器、累加器、标志位容,这称为恢复现场。
最后执行中断返回指令RETI,从堆栈中自动弹出断点地址到PC,继续执行被中断的程序,这称为中断返回。
如果没有中断技术,CPU的大量时间可能会被浪费在原地踏步的查询操作上,或者采用定时查询,即不论有无中断请求,都要定时去查询。
采用中断技术完全消失除了CPU在查询方式中的等待现象,大大地提高了CPU的工作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 智能 温度传感器 毕业设计