课 程 设 计 报 告
单片机课程设计报告——温度报警器

4.2.1主程序软件设计
通过上述原理,已对密码锁整体运行环境有了充分认识,绘制主程序和子程序流程图,利用Keil软件,对单片机进行编程,如图4-1为主程序功能流程图:
4-1主程序功能流程图
4.2.2温度采集的软件设计
如图4-2为温度采集的软件设计,主要功能是完成DS18B20的初始化工作,并进行读温度,将温度转化成为压缩BCD码 并在显示器上显示传感器所测得的实际温度。读出温度子程序的主要功能是读出RAM中的9字节,在读出时需要进行CRC校验,校验有错时不进行温度数据的改写。
1.2温度报警器的背景与研究意义
在日常生活中,温度对于我们并不陌生,它是一个时时刻刻存在的物理量在我们的日常生活中占据了十分重要的地位。温度的大小时刻与我们的生产、生命、安全息息相关。因此对温度的测量与控制对各个行业领域有着很及其重要的作用尤其是在金属冶炼、化学研究、建材生产、食品加工、机械制作、石油提炼等工业领域,占据不可忽视的作用。众所周知,当我们进行陶瓷烧烤,制作陶瓷工艺时,必须很精确的控制其烧烤温度,只要我们控制好其温度,这样才能创造出完美的、无瑕疵的艺术品,一旦温度控制不佳,将会一件次品;另外当我们进行酿酒时,同样也需要对温度进行合理适当的控制,只有这样,我们才能够生产出大家公认的好酒。如此可见,对于温度的检测与把控在我们日常生活以及工业生产占据着举足轻重的地位。
1.DS18B20不断采集周围环境温度;
2.单片机处理温度的数据显示在DS18B20;
3.用户设定温度报警的上限和下限;
系统整体设计框图如图2-1所示:
图2-1系统整体设计框图
2.2系统的基本方案
2.2.1系统方案选择
采用单总线数字温度传感器DS18B20测量温度,直接输出数字信号。便于单片机处理及控制,节省硬件电路。且该芯片的物理化学性很稳定,此元件线形性能好,在0—100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89C51构成的温度装置,它直接输出温度的数字信号到微控制器。每只DS18B20具有一个独有的不可修改的64位序列号,根据序列号可访问不同的器件。这样一条总线上可挂接多个DS18B20传感器,实现多点温度测量,轻松的组建传感网络。
单片机交通灯课程设计报告

《单片机原理与应用》课程设计报告题目:学院:姓名:学号:日期:指导老师:交通灯的设计一、课程设计的目的1、进一步熟悉和掌握单片机的结构及工作原理。
2、掌握单片机的接口技术及相关外围芯片的特性,控制方法。
3、通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解有关电路参数的计算方法。
4、通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
5、通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应工作打下基础。
6、通过课程设计,培养学生综合运用所学专业知识分析问题和解决问题的能力。
二、仪器设备伟福Lab8000系列单片机仿真实验系统。
三、课程设计主要内容及技术指标基本要求:设计由红黄绿三色灯组成的交通信号灯,各灯逐次点亮,按照红灯亮63秒——绿灯亮60秒——黄灯亮3秒——红灯亮63秒的顺序反复循环。
利用单片机片内的定时计数器定时,红黄绿灯用发光二极管表示,计时值用数码管以十进制数字显示。
要求定时准确,数码管和二极管显示正确。
拓展要求:要有较好的人机对话界面;由单向路口的红绿灯循环点亮拓展为十字路口红绿灯的循环点亮;在十字路口的某一方向设定紧急通行开关,闭合开关时要求此方向绿灯点亮,另一方向红灯点亮,且倒计时的显示数码管停止计时。
四、系统工作原理该系统以89C51单片机为控制核心,由外接三色(红绿黄)LED灯同步八段数码管的倒计时显示,外接两开关电路控制两方向的应急中断。
单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到八段数码管上实时显示。
在此过程中随时通过开关调用LED灯常亮显示和清除数码管显示的中断。
五、系统的硬件设计注:单片机的晶振电路的复位电路略去连线时,伟福Lab8000系列单片机仿真实验系统的数码管显示打到外驱,P2口连接数码管的段码口,P3连接位选通口;用P1.0~P1.5分别选连两组红绿黄灯,P1.6~P1.7连接两控制开关key和key1.六、系统的软件设计1、系统工作过程(1) 在一个十字路口的两条主干道上,分别装上一套红、黄、绿3种信号灯。
单片机课程设计——交通灯

单片机课程设计报告书题目:交通信号灯学院:班级:姓名:学号:课程名称:指导老师:日期:一.设计任务:交通灯的硬件和软件设计二.设计目的课程设计是本专业集中实践环节的主要内容之一。
训练正确地应用单片机,培养解决工业控制、工业检测等领域具体问题的能力。
学生通过所做课题,熟悉单片机应用系统开发研制的过程,软硬件设计的工作方法、内容及步骤,对学生进行基本技能训练。
例如组成系统、编程、调试、绘图等。
使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。
通过本课程设计,主要达到以下目的:1.使学生增进对单片机的感性认识,加深对单片机理论方面的理解。
2.使学生掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通讯等。
3.使学生了解和掌握单片机应用系统的软/硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础三.设计思路交通灯的变化规律按照常规我们假设一个十字路口为东西南北走向。
初始状态为状态1,南北方向绿灯通车,东西方向红灯。
经过过一段时间(25S)转换状态2,南北方向绿灯闪几次转亮黄灯,延时5S,东西方向仍然红灯。
再转换到状态3,东西方向绿灯通车,南北方向红灯。
过一段时间(25S)转换到状态4,东西方向绿灯闪几次转亮黄等,延时5S,南北方向仍然红灯。
最后循环至南北绿灯,东西红灯。
在这些状态下,有时钟倒数计时。
四.硬件介绍基础知识交通灯控制器实例主要使用了89C51单片机的定时器/计数器,基础知识主要包括交通灯的变化规律、定时器/计数器的概念、定时器/计数器的相关寄存器、定时器/计数器的4种工作方式、以及定时器/计数器的变成。
4.1定时器/计数器定时器/计数器是单片机中最常用、最重要的功能模块之一,本节通过交通灯控制器实例来演示定时器的使用,并复习如何使用散转程序。
首先介绍交通灯以及定时器/计数器的基础知识,接着介绍本实例的硬件电路构成,然后逐步分析定时器的变成以及程序的全貌,最后总结一下本实例的技巧与注意点。
课程设计实验报告10篇

课程设计实验报告10篇(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如工作报告、合同协议、心得体会、演讲致辞、规章制度、岗位职责、操作规程、计划书、祝福语、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample texts, such as work reports, contract agreements, insights, speeches, rules and regulations, job responsibilities, operating procedures, plans, blessings, and other sample texts. If you want to learn about different sample formats and writing methods, please pay attention!课程设计实验报告10篇【第1篇】大学物理实验课程设计实验报告北方民族大学大学物理实验(设计性实验)实验报告指导老师:王建明姓名:张国生学号:XX0233学院:信息与计算科学学院班级:05信计2班重力加速度的测定一、实验任务精确测定银川地区的重力加速度二、实验要求测量结果的相对不确定度不超过5%三、物理模型的建立及比较初步确定有以下六种模型方案:方法一、用打点计时器测量所用仪器为:打点计时器、直尺、带钱夹的铁架台、纸带、夹子、重物、学生电源等.利用自由落体原理使重物做自由落体运动.选择理想纸带,找出起始点0,数出时间为t的p点,用米尺测出op的距离为h,其中t=0.02秒X两点间隔数.由公式h=gt2/2得g=2h/t2.将所测代入即可求得g.方法二、用滴水法测重力加速度调节水龙头阀门,使水滴按相等时间滴下,用秒表测出n个(n 取50—100)水滴所用时间t,则每两水滴相隔时间为t′=t/n,用米尺测出水滴下落距离h,由公式h=gt′2/2可得g=2hn2/t2.方法三、取半径为r的玻璃杯,内装适当的液体,固定在旋转台上.旋转台绕其对称轴以角速度ω匀速旋转,这时液体相对于玻璃杯的形状为旋转抛物面重力加速度的计算公式推导如下:取液面上任一液元a,它距转轴为X,质量为m,受重力mg、弹力n.由动力学知:ncosα-mg=0(1)nsinα=mω2X(2)两式相比得tgα=ω2X/g,又 tgα=dy/dX,∴dy=ω2XdX/g,∴y/X=ω2X/2g.∴ g=ω2X2/2y..将某点对于对称轴和垂直于对称轴最低点的直角坐标系的坐标X、y测出,将转台转速ω代入即可求得g.方法四、光电控制计时法调节水龙头阀门,使水滴按相等时间滴下,用秒表测出n个(n 取50—100)水滴所用时间t,则每两水滴相隔时间为t′=t/n,用米尺测出水滴下落距离h,由公式h=gt′2/2可得g=2hn2/t2.方法五、用圆锥摆测量所用仪器为:米尺、秒表、单摆.使单摆的摆锤在水平面内作匀速圆周运动,用直尺测量出h(见图(1)用秒表测出摆锥n转所用的时间t,则摆锥角速度ω=2πn/t 摆锥作匀速圆周运动的向心力f=mgtgθ,而tgθ=r/h所以mgtg θ=mω2r由以上几式得:g=4π2n2h/t2.将所测的n、t、h代入即可求得g值.方法六、单摆法测量重力加速度在摆角很小时,摆动周期为:则通过对以上六种方法的比较,本想尝试利用光电控制计时法来测量,但因为实验室器材不全,故该方法无法进行;对其他几种方法反复比较,用单摆法测量重力加速度原理、方法都比较简单且最熟悉,仪器在实验室也很齐全,故利用该方法来测最为顺利,从而可以得到更为精确的值。
包装控制器数电课设报告

等级:课程设计课程名称数字电子技术课题名称包装控制器专业电气工程及其自动化班级电气1201学号201201030218姓名许旺指导教师杨四秧2014年12月22日电气信息学院课程设计评分表评价项目优良中及格差设计方案合理性与创造性(10%)开发板焊接及其调试完成情况*(10%)硬件设计或软件编程完成情况(20%)硬件测试或软件调试结果*(10%)设计说明书质量(20%)答辩情况(10%)完成任务情况(10%)独立工作能力(10%)出勤情况(10%)综合评分指导教师签名:________________日期:________________注:①表中标*号项目是硬件制作或软件编程类课题必填内容;②此表装订在课程设计说明书的最后一页。
课程设计说明书装订顺序:封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。
目录一、设计总体思路,基本原理和框图 (3)二、单元电路设计 (4)1、倒计时电路 (4)2、74ls192级联电路 (6)3、译码显示模块 (7)4、扩展 (8)三、总电路设计 (9)四、安装调试步骤 (11)五、故障分析与电路改进 (11)六、总结与设计调试体会 (13)七、附录 (14)元器件清单 (14)八、参考文献 (14)一、设计总体思路,基本原理和框图根据设计要求设计一个食品包装控制器按顺序依次计数:12个为一袋,36袋为一盒,48盒为一箱。
用显示器显示个、瓶、盒数量。
(用倒计时方式);用一位显示器显示箱数。
(用顺计时方式)。
加入功能扩展(自选)。
控制器的设计方法有很多种,例如,可用组合逻辑电路电路组成控制器;也可以利用单片机来实现电子钟等等。
我们这里采用成本较低,设计较简单的中小规模集成电路组成药品包装控制器。
该交通灯控制系统的总体设计框图如下图所示。
本设计采用74ls192来倒计时计数,首先将要求的预制数预制入芯片,最低位芯片位由秒脉冲来控制倒计数。
然后将芯片级联,互相之间通过低位的借位脉冲来控制相应芯片置入数的倒计数。
机械原理课程设计报告书(四冲程内燃机设计) (2)

课程设计报告书题目:四冲程内燃机设计【目录】一、四冲程内燃机的运动分析及总体设计思路 (1)二、绘制内燃机运动简图(A4) (6)三、绘制连杆机构位置图(A2) (6)四、连杆机构15个位置速度、加速度分析及曲线绘制(A2) (7)i.绘制机构15个位置的速度及加速度多边形 (7)ii.绘制滑块B的位移曲线、速度曲线及加速度曲线 (10)五、动态静力分析(A1) (11)六、计算飞轮转动惯量(不计构件质量)(A4) (14)七、计算发动机功率 (18)八、对曲柄滑块进行机构部分平衡 (18)九、凸轮的轮廓设计(A4) (19)十、绘制内燃机工作循环图(A4) (24)十一、心得体会 (25)一、四冲程内燃机的运动分析及总体设计思路根据设计任务书,我们需要解决以下问题:凸轮的参数是多少?如何能让机构正常循环工作?为了解决这个问题,我们需要对整个机构从运动及力学的角度分析。
首先,需要明确四冲程内燃机的工作原理:内燃机是通过吸气、压缩、燃烧、排气四个过程不断重复进行的。
如果在四个冲程里完成吸气、压缩、做功(燃烧、膨胀)、排气的循环动作,就叫做四冲程。
相应的内燃机叫四冲程内燃机。
第一冲程,即吸气冲程。
这时曲轴向下转动,带动活塞向下,同时通过齿轮带动凸轮向下旋转,是凸轮的突起部分顶开进气阀门,雾状汽油和空气混合的燃料被吸入气缸。
第二冲程,即压缩冲程。
曲轴带动活塞向上,凸轮的突起部分已经转两个过去,进气阀门被关闭,由于凸轮只转了14周,所以排气阀门仍然处于关闭状态。
活塞向上运动时,将第一冲程吸入的可燃气体压缩,被压缩的气体的压强达到0.6~1.5兆帕,温度升高到300摄氏度左右。
第三冲程是做功冲程。
在压缩冲程末火花塞产生电火花,混合燃料迅速燃烧,温度骤然升高到2000摄氏度左右,压强达到3~5兆帕。
高温高压烟气急剧膨胀,推动活塞向下做功,此时曲柄转动半周而凸轮转过14周,两个气阀仍然紧闭。
第四冲程是排气冲程。
模电课程设计:低频功率放大器实验报告

课程设计课程设计名称:模拟电路课程设计专业班级:学生姓名:学号:指导教师:课程设计时间: 2015年6月电子信息科学与技术专业课程设计任务书说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页1、设计任务及要求这次的模拟电路课程设计题目为音频功率放大器,简称音频功放,作为模拟电子课程设计课题设计,本课题提出的音频功率放大器性能指标比较低,主要采用理论课程里介绍的运算放大集成电路和功率放大集成电路来构成音频功率放大器。
音频功率放大器主要用于推动扬声器发声,凡发声的电子产品中都要用到音频功放,比如手机、MP4播放器、笔记本电脑、电视机、音响设备等给我们的生活和学习工作带来了不可替代的方便享受。
2、设计方案整体电路的设计与工作原理是通过前置放大器的处理,使输入的音频信号与放大器的输入灵敏度相匹配,从而使放大器适应不同的输入信号,再通过音量控制,输入功率放大电路进行处理。
同时设计电源电路,为前置电路和功率放大电路提供电源,最后得到较为理想的信号。
音频功率放大器实际上就是对比较小的音频信号进行放大,使其功率增加,然后输出。
其原理如图1所示,前置放大主要完成对小信号的放大,使用一个同向放大电路对输入的音频小信号的电压进行放大,得到后一级所需要的输入。
后一级的主要对音频进行功率放大,使其能够驱动电阻而得到需要的音频。
设计时首先根据技术指标要求,对整机电路做出适当安排,确定各级的增益分配,然后对各级电路进行具体的设计。
3、模块设计与参数计算低频功率放大器原理图(1)前置放大器:音频功率放大器的作用是将声音源输入的信号进行放大,然后输出驱动扬声器。
声音源的种类有多种,如话筒、录音机、线路传输等,这些声音源的输出信号的电压差别很大,从零点几毫伏到几百毫伏。
单片机课程设计报告-电子时钟--完结篇

⑴ -芯片电源,接+5V;
⑵GND-接地端;
注:用万用表测试单片机引脚电压一般为0v或者5v,这是标准的TTL电平。但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速
度没这么快而已,在某一个瞬间单片机引脚电压
仍保持在0或者5v。
2
XTAL1、XTAL2 -当使用芯片内部时钟时,此二引线用于外界石英晶体振荡器和电容。当使用外部时钟时,用于接外部时钟脉冲信号。
关键字:单片机;子时钟;键盘控制。
一
单片计算机即单片微型计算机。(Single-Chip Microcomputer),是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。而51单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬件的能力。
三、总体方案及硬件设计
简易电子钟硬件系统的设计,关键是其键盘、显示器接口电路的设计,本设计采用直接利用单片机AT89C52的并行I/O口构成电子钟的键盘、显示接口电路,其硬件系统原理框图如图3-1所示,主要包括单片机、时钟电路。复位电路。键盘及显示接口电路。
四
AT89C51有40个引脚,按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。
定时器/计数器T0用于时间计时。选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把它们的值放到存储单元的指定位置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、问题描述 (2)二、课程设计目的 (2)三、概要设计 (2)四、问题实现的主要算法与分析 (3)五、数据信息 (3)六、源程序 (4)七、运行结果 (8)八、课程设计的小结 (9)九、参考文献 (10)一、问题描述1.若要在扬州大学的七个校区(广陵校区、盐阜校区、瘦西湖校区、农学院校区、工学院校区、水利学院校区、医学院校区)之间架设校园网,如何以最低的经济代价架设这个校园网。
2.利用二种方法(Prim算法和克鲁斯卡尔(Kruskual)算法生成校园网的架设方案3.分别对每种方法选定一组测试数据进行测试,验证程序的正确性。
二、课程设计目的课程设计的目的是培养学生综合程序设计的能力,训练学生灵活应用所学数据结构知识,独立完成问题分析、总体设计、详细设计和编程实现等软件开发全过程的综合实践能力。
巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的学习作风。
为今后学习其他计算机课程打下基础。
课程设计为学生提供了一个既动手又动脑,独立实践的机会,将书本上的理论知识和工作、生产实际有机地结合起来,从而锻炼学生分析问题、解决实际问题的能力,提高学生的编程序能力和创新意识。
三、概要设计1.Prim算法:ADT Graph{数据对象V:V是具有相同特性的数据元素的集合,成为顶点集。
数据关系R:R={VR}VR={(v,w)|v,w∈V,(v,w)表示v和w之间存在路径}基本操作P:min(closedge,n);初始条件:图G存在。
操作结果:求权值最小的弧尾顶点。
minspantree(u,n,closedge);初始条件:图G存在。
操作结果:求图G的最小生成数。
}ADT Graph2.Kruskal算法:ADT MGraph{数据对象V:V是具有相同特性的数据元素的集合,成为顶点集。
数据关系R:R={VR}VR={(v,w)|v,w∈V,(v,w)表示v和w之间存在路径}基本操作P:sort(edges,G)初始条件:图G存在。
操作结果:求按权值大小从小到大排序。
MinSpantree(G);初始条件:图G存在。
操作结果:求图G的最小生成数。
Find(parent,f);初始条件:parent是已经存在的集合,v是某个子集成员。
操作结果:查找函数。
返回父亲结点。
}ADT MGraph四、问题实现的主要算法与分析1.Prim算法(1)typedef struct{int adj,low;}edge:定义结构体edge,包含成员adj(顶点),low (权);(2)int min(edge closedge[],int n):求权值最小的弧尾顶点;(3)void minspantree(int u,int n,edge closedge[]):用Prim算法求最小生成树;(4)main():包括用文件打开方式调用数据创建一个图,并对其用Prim算法求最小生成树2.Kruskal算法(1)typedef struct{int begin;int end;int weight;}edge:定义结构体edge,包含成员begin(弧头),end(弧尾),weight(权值);typedef struct{int adj;int weight;}AdjMatrix[MAX][MAX]:定义结构AdjMatrix[MAX][MAX],包含成员包含成员adj(顶点),weight(权值);typedef struct{AdjMatrix arc;int vexnum,arcnum;}MGraph:定义结构体MGraph,包含成员AdjMatrix arc(AdjMatrix 型的成员),vexnum(顶点数),arcnum(边数);(2)void sort(edge edges[],MGraph *G):对权值进行从小到大的排序;(3)void MinSpanTree(MGraph *G):用Kruskal算法求最小生成树;(4)int Find(int *parent,int f):找尾;(5)void main():包括用文件打开方式调用数据创建一个图,并对其用Kruskal算法求最小生成树。
五、数据信息1:广陵校区 2:盐阜校区3:瘦西湖校区 4:农学院校区5:工学院校区 6:水利学院校区7:医学院校区;1 2 111 3 201 4 121 5 101 6 111 7 152 3 102 4 12 5 12 6 22 7 43 4 93 5 113 6 123 7 124 5 24 6 34 7 35 6 15 7 56 7 6六、源程序Prim算法:/* Note:Your choice is C IDE */#include"stdio.h"#define Max 200typedef struct{int adj,low;}edge;int G[20][20];int min(edge closedge[],int n){int i,t,l;t=100;for(i=1;i<=n;i++)if((closedge[i].low)&&(closedge[i].low<t)) {t=closedge[i].low;l=i;} return l;}void minspantree(int u,int n,edge closedge[]){int i,j,k;for(i=1;i<=n;i++)if(i!=u){ closedge[i].adj=u;closedge[i].low=G[u][i];}closedge[u].low=0;for(i=1;i<n;i++){k=min(closedge,n);printf("(%d,%d) %d\n",closedge[k].adj,k,closedge[k].low);closedge[k].low=0;for(j=1;j<=n;j++)if(G[k][j]<closedge[j].low){closedge[j].adj=k;closedge[j].low=G[k][j];}}}main(){edge closedge[20] ;int i,n,m,j,w,q;int u;FILE *fp;printf("1:广陵校区2:盐阜校区\n3:瘦西湖校区4:农学院校区\n5:工学院校区6:水利学院校区\n7:医学院校区\n");printf("please input vexnum and edgenum!\n");scanf("%d,%d",&n,&m);for(i=1;i<=n;i++)for(j=1;j<=n;j++)G[i][j]=100;if((fp=fopen("H:\\shuju.txt","r"))==NULL){printf("can not open file\n");exit(0);}printf("please input i,j,w:\n");for(q=1;q<=m;q++){fscanf(fp,"%d %d %d",&i,&j,&w);G[i][j]=G[j][i]=w;printf("%d %d %d\n",i,j,w);}fclose(fp);printf("please input start point!\n");scanf("%d",&u);minspantree(u,n,closedge);}Kruskal算法:/* Note:Your choice is C IDE */#include"stdio.h"#include"stdlib.h"#define M 20#define MAX 20typedef struct{int begin;int end;int weight;}edge;typedef struct{int adj;int weight;}AdjMatrix[MAX][MAX];typedef struct{AdjMatrix arc;int vexnum,arcnum;}MGraph;void sort(edge edges[],MGraph *G){int i,j,temp;for(i=1;i<G->arcnum;i++)for(j=i+1;j<=G->arcnum;j++){if(edges[i].weight>edges[j].weight) {temp=edges[i].begin;edges[i].begin=edges[j].begin;edges[j].begin=temp;temp=edges[i].end;edges[i].end=edges[j].end;edges[j].end=temp;temp=edges[i].weight;edges[i].weight=edges[j].weight;edges[j].weight=temp;}}}void MinSpanTree(MGraph *G){int i,j,n,m;int k=1;int parent[M];edge edges[M];for(i=1;i<G->vexnum;i++)for(j=i+1;j<=G->vexnum;j++)if(G->arc[i][j].adj==1){edges[k].begin=i;edges[k].end=j;edges[k].weight=G->arc[i][j].weight;k++;}sort(edges,G);for(i=1;i<=G->arcnum;i++)parent[i]=0;printf("最小生成树为:\n");for(i=1;i<=G->arcnum;i++){n=Find(parent,edges[i].begin);m=Find(parent,edges[i].end);if(n!=m){parent[n]=m;k++;printf("(%d,%d) %d\n",edges[i].begin,edges[i].end,edges[i].weight);}if(k==G->vexnum-1) break;}}int Find(int*parent,int f){while(parent[f]>0)f=parent[f];return(f);}void main(){int i,j,m,n;MGraph *G;FILE *fp;G=(MGraph *)malloc(sizeof(MGraph));printf("1:广陵校区2:盐阜校区\n3:瘦西湖校区4:农学院校区\n5:工学院校区6:水利学院校区\n7:医学院校区\n");printf("please input vexnum and edgenum!\n");scanf("%d,%d",&G->vexnum,&G->arcnum);for(i=1;i<=G->vexnum;i++)for(j=1;j<=G->vexnum;j++)G->arc[i][j].adj=G->arc[j][i].adj=0;if((fp=fopen("H:\\shuju.txt","r"))==NULL){printf("can not open file\n");exit(0);}printf("please input n,m,weight:\n");for(i=1;i<=G->arcnum;i++){fscanf(fp,"%d %d",&n,&m);G->arc[n][m].adj=G->arc[m][n].adj=1;fscanf(fp," %d",&G->arc[n][m].weight);printf("%d %d %d\n",n,m,G->arc[n][m].weight);}fclose(fp);MinSpanTree(G);}七、运行结果1.Prim算法:2.Kruskal算法:八、课程设计的小结这一个多星期一直在做程序设计,今天终于完成了,心里别提有多兴奋。