系统工程实验报告Word下载.doc
- 文档编号:7012459
- 上传时间:2023-05-07
- 格式:DOC
- 页数:18
- 大小:525KB
系统工程实验报告Word下载.doc
《系统工程实验报告Word下载.doc》由会员分享,可在线阅读,更多相关《系统工程实验报告Word下载.doc(18页珍藏版)》请在冰点文库上搜索。
本次认识实习采用一种用单片机控制的测取电缆工作情况的方法,给出硬件结构与软件程序框图,并附上完整的单片机软件程序。
指导老师为我们介绍的本方法具有电路简明易懂、检测速度快、操作简便等优点。
2.解决方案
现在电缆通断的快速检测系统已有基于不同技术下的多种不同种类,如基于单片控制、基于发送单脉冲波束或是结合单片机技术和其他如CPLD实现对多芯电缆的通断检测。
它们各有用途,各有优点,如基于脉冲波束的检测方法就可以大致判断出电缆故障距离测量点的距离等参数。
二、实验目的
1.培养系统设计能力;
2.培养自学习能力;
3.培养团结协作能力;
三、系统基本功能要求
1.完成外部电缆连线的通断检测;
2.电缆检测路数24路;
3.通过RS232将结果回送计算机显示结果;
4.系统具有开始、停止等控制按键。
四、课程要求
a)元器件:
l单片机:
89C52;
lRS232驱动器为ADM202;
l输出电缆驱动器2803;
l输出锁存器74HC377;
l单片机读数据驱动器74HC245;
l地址译码器74F138。
b)要求提供设计方案、原理图、PCB图、实物和实验报告。
五、硬件电路设计
1.系统总体设计
a)本次认识实习的基本思路是以硬件电路为基础,通过单片机实现所需的全部控制功能,完成对所给24路电缆的同时通断检测,并在对结果分析之后最终力求以最简明易懂的方式呈现出该电缆是否处于正常工作状态。
b)由于本次课程设计所设计电路中的关键器件已由老师限定给出,因此我们上网查找了其中部分不熟悉器件的技术参数,进行自主学习,具体参数及说明见附录5.3。
经过一周的初步了解和学习之后,我们对该系统的设计思路有了一些自己的想法,并用仿真软件AltiumDesigner进行了原理图和PCB板的初步绘制。
2.系统原理框图
根据系统的功能需求和实验室条件,我们对该电缆通断检测系统的大致框架结构进行了设计,主要的系统设计框图如下:
3.电路模块设计分析
完成对系统的各个模块原理设计后,我们根据具体的设计要求进行各个电路模块的设计,包括串口通讯电路、锁存电路、驱动电路等,具体设计如下:
1)由于需要检测24路电缆,必须将P0口加以扩展,使用三个74HC377芯片,将8个输出口扩展为24个输出,利用使能端及写信号WR分时选通,由于P0口为漏极开路,故需接上拉电阻。
2)单片机输出信号不能直接接入电缆,而要通过输出电缆驱动器2803进行电平转换,接入电缆。
3)考虑到芯片的数目较多,为了节约单片机的IO口,使用了138译码器对芯片的使能端进行控制。
4)单片机的P0口做分时复用,电缆输出信号通过三个74HC245接P0口,同样利用使能端及读信号RD分时选通接收信号,并能够与输出信号分开。
5)INT0与INT1用作接控制键盘,用于控制系统的开始、停止和单片机的工作状态。
6)通过AMD202驱动器将结果接入RS232接口,通过单片机与计算机相连的串口及虚拟软件窗口操作精灵对串口信号进行识别和显示,并最终以直观的方法显示电缆检测结果。
7)具体的设计原理图如下:
b)对于PCB板的设计,充分考虑了信号线比较多,单片机与锁存芯片及接口等的布局进行了合理的优化,设计的效果如下图:
六、软件设计
1.软件功能分析
a)考虑到芯片的电平反转作用,电缆输出信号为0,输入信号为1,则该路电缆正常;
如果仅一根电缆输入信号为1,其它电缆都输入信号为0,则在接收端电缆输出出现0,则该路电缆必然与其他某条电缆短路。
b)鉴于24路电缆间故障情形比较复杂,我们这里仅仅在检测后输出到PC端的显示软件中显示所有短路的电缆而不考虑具体的短接情况。
c)在完成主要功能后,对系统的辅助功能进行程序设计,包括按键控制、软件触发和功耗设置。
2.程序流程设计
a)检测方案思路
首先P0口作为输出,依次选通三个377锁存器,第一个锁存器输出01H;
其它两个输出00H,分别锁存到输出端,即进行从000001H到800000H的移位,同时将输入的量存放在临时变量里。
对第一片377进行输入移位,并保持其它两片输入为00H不变。
移位时实时监测输出端的值,存入数组变量的同时,将输入输出的值比较根据不同的变化值判断电路连接情况,如为了单纯测试置1的电缆的通断情况,进行输入输出位与,若位与结果为0,则表示该路电缆连通正常,否则电路断开,并将断开标志写入预先分配的数组。
电缆的短路检测比较复杂,由定义的三维数组根据同时性要求输出的结果组成,分别对应三片377、三片245与8路输入输出,这样可以根据每位的01分布判断短路情况。
判断短路情况的同时,输出短路显示到PC端,根据显示的三个16进制数判断短路连接的电缆,根据显示的三位16进制的个数与异同判断电缆的短路短路根数与短路的情况数。
然后显示电缆的通断情况,显示24个16进制数,为00,则为断路;
为01,则为通路。
b)执行控制与工作模式程序设计
为了方便系统的实际使用,设置了两个硬件的轻触按键对程序的开始、停止控制。
为了方便调试,我们将主要的检测扫描程序放在了外部中断服务程序及串行通信中断服务程序里,检测时更加方便快捷。
工作模式的选择可以降低单片机的功耗,考虑到工程实用,设置了空闲等待模式,可以在随时实用的时候硬件触发或复位唤醒单片机对电缆的进行检测。
七、实验调试与结果
我们将改动后的程序烧进单片机后,我们开始了实物检验,但是和仿真效果一样,虽然反应灵敏,不需等待就可一次性看到所有24路的通断与短路检测结果,利用自制的电缆线可以方便地对照看出PC显示的结果与实际的通断短路情况。
调试过程很复杂,程序稳定性及调试结果取得很好的效果。
八、实验总结与收获
从课设的讲解课开始,我们不断地查阅单片机的开发项目书籍以期尽快地完成任务,并积极向老师同学请教细节问题,熟悉系统设计的整个流程并在每个过程里学到很多知识和工程经验。
深刻地体会到细节决定成败,坚持就是胜利,的确程序的调试大多数都是忽略细节导致运行失败,放弃就是不自信。
运用以前所学的专业课知识,如:
altiumdesigner制图、汇编语言、模拟和数字电路知识等。
虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
这是第一次接触这样完整的硬件电路实验,虽然感觉不是很难,但是对于我们来说,实现起来所有的功能还不是一件容易的事。
接到题目设计要到小组讨论,一点一点地完成系统功能要求,一点一点地实现这个电路。
这个实验的综合性很强,当我们遇到问题时,我们互相讨论,并且在多次修改后,我们完成了自己的设计。
经过这个实验,我们深切的感受到,理论知识的重要性,学好课本知识是完成实验的前提条件。
然而理论和实际还是有很大差距的,很多理论上能实现的东西,在实际操作时却有问题,这更要求我们要灵活运用所学的理论知识和动手能力,并且要多积累实验经验。
九、附录
程序C代码:
/**************片选地址************/
//U377_en1P2=0X08;
//377_1使能
//U377_en2P2=0X09;
//377_2使能
//U377_en3P2=0X0A;
//377_3使能
//U245_en1P2=0X0B//245_1使能
//U245_en2P2=0X0C//245_2使能
//U245_en3P2=0X0D//245_3使能
//P2=0X0f;
//377和245禁止
/**********************************/
#include<
reg52.h>
math.h>
#defineuintunsignedint
#defineucharunsignedchar
#defineP_IOP0//P0//检测信号输出
//377和245清零
sbitU245_DIR=P3^7;
//245时钟 ---RD定为0
sbitU377_clk=P3^6;
//377时钟 ---WR对应CLK
uchartemp11,temp22,temp33,temp1,temp2,temp3,temp4,temp5,temp6,counter=0,counter1=0;
ucharflag_ok1=0;
//245_1OK
ucharflag_ok2=0;
//245_2OK
ucharflag_ok3=0;
//245_3OK
ucharflag_duan1=0;
ucharflag_duan2=0;
ucharflag_duan3=0;
ucharflag_int0=0;
ucharduan[3][3][8]={0};
ucharbre[3][8]={0};
voidinit_chuankou();
voidDelay();
voidsend();
voidP_SCAN();
voidDelay(uintx)//延时1ms
{
uchari;
while(x--)for(i=0;
i<
120;
i++);
}
voidinit_chuankou(){ //串口初始化
TMOD=0x20;
SCON=0x50;
TH1=0xF3;
TL1=TH1;
PCON=0x00;
TR1=1;
ES=1;
voidsend(unsignedcharDATA) //显示
{
SBUF=DATA;
//发送数据
while(TI==0);
//等待发送完毕,TI会变为1
TI=0;
//TI清零,方便下一次发送
/////////////////////////////////////////////////////
voidP_SCAN()//端口扫描
{
uchari;
U245_DIR=0;
//245方向
temp1=0;
temp2=0;
temp3=0;
temp11=0x01;
temp22=0x01;
temp33=0x01;
for(i=0;
8;
i++){ //U1--前八路
P2=0X08;
//377_1使能 //u377_1锁存数据
P_IO=temp11;
temp1=temp11;
U377_clk=0;
Delay(10);
U377_clk=1;
// Delay(10);
P2=0X0f;
temp11=temp11<
<
1;
P2=0X09;
//377_2使能 //u377_2锁存数据
P_IO=0;
U377_clk=1;
P2=0X0f;
//377_2清零
P2=0X0A;
//u377_3锁存数据
P2=0X0B;
//245_1使能 //释放u245_1数据
U245_DIR=0;
P_IO=0XFF;
temp4=P_IO;
if((temp4&
temp1)==0){ //判断断路:
为零则通
bre[0][i]=1;
//储存通路
if(temp4==~temp1){//判断短路
flag_ok1=1;
}else{
flag_duan1=1;
//duan[0][0][ii]=temp4;
}
}
P2=0X0c;
//245_2使能 //释放u245_2数据
temp5=P_IO;
// Delay(10);
if(temp5==0xFF){ //判断短路
flag_ok2=1;
}
else{
flag_duan2=1;
// duan[0][1][ii]=temp5;
}
P2=0X0d;
//245_3使能 //释放u245_3数据
temp6=P_IO;
if(temp6==0xFF){ //判断短路
flag_ok3=1;
flag_duan3=1;
// duan[0][2][ii]=temp6;
if(flag_duan1||flag_duan2||flag_duan3){
duan[0][0][i]=temp4;
//短路储存
duan[0][1][i]=temp5;
duan[0][2][i]=temp6;
flag_duan1=0;
flag_duan2=0;
flag_duan3=0;
flag_ok1=0;
flag_ok2=0;
flag_ok3=0;
}
//////////////////////////////////////////////////////////////
for(i=0;
i++){ //U2--中八路
P2=0X09;
//377_2使能
P_IO=temp22;
temp1=temp22;
// Delay(10);
P2=0X0f;
temp22=temp22<
//377_3使能
P2=0X0f;
//377和245清零
P2=0X08;
//377_1使能
P2=0X0c;
//245_2使能
temp5=P_IO;
// Delay(10);
if((temp5&
temp1)==0){ //判断断路
bre[1][i]=1;
if(temp5==~temp1){//判断短路
flag_ok2=1;
}
else{
flag_duan2=1;
}
P2=0X0D;
//245_3使能
if(temp6==0xFF){ //判断短路
//245_1使能
if(temp4==0xFF){ //判断短路
flag_ok1=1;
flag_duan1=1;
if(flag_duan1||flag_duan2||flag_duan3){
duan[1][0][i]=temp4;
duan[1][1][i]=temp5;
//短路储存
duan[1][2][i]=temp6;
//////////////////////////////////////////////////////////////
for(i=0;
i++){ //U3--后八路
P_IO=temp33;
temp1=temp33;
U377_clk=0;
U377_clk=1;
temp33=temp33<
//377_2使能
P2=0X0D;
//245方向
if((temp6&
bre[2][i]=1;
if(temp6==~temp1){//判断短路
}else{
flag_duan3=1;
P2=0X0C;
if(temp5==0xFF){ //判断短路
flag_duan2=1;
if(flag_duan3||flag_duan2||flag_duan1){
duan[2][0][i]=temp4;
duan[2][1][i]=temp5;
duan[2][2][i]=temp6;
}
voiddsp_send(){//数组处理及发送显示
uchari,ii;
for(ii=0;
ii<
3;
ii++){
i++){
if((duan[ii][0][i]||duan[ii][1][i]||duan[ii][2][i])!
=0){
send(duan[ii][0][i]);
//发送显示最好这三个在一行
send(duan[ii][1][i]);
send(duan[ii][2][i]);
}
//send(136);
//要换行
}
for(ii=0;
send(bre[i][ii]);
//断路情况发送一行
voidm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统工程 实验 报告