软件课程设计课程设计.docx
- 文档编号:29655828
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:24
- 大小:692.70KB
软件课程设计课程设计.docx
《软件课程设计课程设计.docx》由会员分享,可在线阅读,更多相关《软件课程设计课程设计.docx(24页珍藏版)》请在冰豆网上搜索。
软件课程设计课程设计
软件课程设计课程设计
沈阳航空航天大学电子信息工程学院
电子设计应用软件训练
总结报告
专业:
电子信息工程学院
训练时间:
2013年7月1日至2012年7月12日
电子信息工程学院
电子设计应用软件训练任务
一、训练任务
1、PROTEL部分
(1)熟练掌握PROTEL软件的使用;
(2)按要求绘制电路原理图和PCB版图(能够用自动布线和手动布线相结合);
(3)能够按要求建立元件库和封装库。
2、软件设计部分
按照给定的软件设计任务完成相应的软件设计(见软件设计任务部分)。
二、基本要求及说明
1、PROTEL部分
(1)电路原理图图纸尺寸按照给定的任务作相应的设置;
(2)电路原理图见PROTEL训练任务部分;
(3)按指定电路图在PROTEL99中绘制原理图和印制板图;
(4)按照给定要求创建原理图器件和该器件的相应的封装(见PROTEL训练任务部分)。
查找资料,按资料创建原理图中某一元件及其封装形式;
2、软件设计部分
按软件设计要求实现相应的功能(见软件设计任务部分)
三、按照要求撰写总结报告
成绩评定表
评语、建议或需要说明的问题:
指导教师签字:
日期:
成绩
PROTEL训练任务
Protel部分
一、任务说明
1.熟练掌握PROTEL软件的使用;
2.按要求绘制电路原理图和PCB版图(能够用自动布线和手动布线相结合);
3.能够按要求建立元件库和封装库。
二、原理图绘制说明并新建一个元件库
1.新建设计数据库文件
打开Protel99,应先建立数据库,点击File中的new,DatabaseFileName处可输入设计库存盘文件名,点击Browse改变存盘目录,单击OK,即可建立设计数据库。
如下图1。
图1 新建设计数据库
选取File/New...打开NewDocument对话框,如图,选取SchematicDocument建立一个新的原理图文档。
如图2。
图2 新建原理图文档
选择菜单中的Ddesign/Options命令,系统将弹出DocumentOptions对话框,并在其中选择SheetOptions选项卡进行设置接下来要设置电路图图纸信息,将电路原理图图纸设置为A4尺寸。
如图3所示。
图3页面大小设置
Win7系统无法添加库,在EDA实验中心如果在library找不到对应元件,点击Add/Remove按钮,屏幕将出现“元件库添加、删除”对话框。
在DesignExplorer99\Library\Sch文件夹下选取元件库文件,然后点击Add按钮,此元件库就会出现在SelectedFiles框中,然后点击OK按钮,完成该元件库的添加。
如图4所示。
图4元件库添加、删除
2.元件库的建立
由于有的元件在库中找不到,我们可以自己新建元件库,建好后的元件库如图5所示,共自建三个原件
图5自建的元件库
3绘制导线
单击WiringTools工具栏中的有两条线的图标,光标变成十字形,单击鼠标左键确定导线的起点,在导线的终点处单击鼠标左键确定终点,单击鼠标右键,则完成了一段导线的绘制,此时仍为绘制状态,将光标移到新导线的起点,单击鼠标左键,按前面的步骤绘制另一条导线,最后单击鼠标右键两次退出绘制状态。
绘制好的原理图如图附录I所示。
三、印制板图绘制说明
1.生成网络表文件
打开原理图文件,执行菜单命令Design|CreateNetlist,系统弹出NetlistCreation网络表设置对话框,如图6所示。
图6电气规则检查
如果此时检查没有错误,检查结果如图7所示
图7电气规则检查结果
当我们设计好原理图,在进行了ERC电气规则检查正确无误后,就要生成网络表,为PCB布线做准备。
在“Design”下选取“CreateNetlist”对话框,设置为那种格式的网络表。
网表生成后,就可以进行PCB设计了。
如图8所示。
图8网络表的生成
生成的网络表如图9所示
图9生成的网络表
2.元件封装的创建
如果原理图中的元件的封装形式在封装库中没有,需要自己建立,在自己的封装库中建立如下:
首先根据任务书中给的尺寸距离,开始在封装库中放置焊点,放置焊点时光标变为十字,中间带有一个焊盘,移动光标使焊盘到达合适的位置后,单击鼠标将其定位,将工作层面切换到顶层布线层,执行菜单命令画线,然后画出绘制元件的外形轮廓——方形。
将原件重新命名,这样该元件的封装就成功创建了。
3.绘制印制板图
新建PCB文件,在“Documents”中新建“Sheet1.Pcb”,如图10所示。
图10新建Sheet1.Pcb
在PCB文档界面下点击“Design”菜单下的“Netlist”,然后通过浏览找到自己新建的扩展名为.NET的文件,这样就把网络表导入到PCB文件中了,如果没有错误就开始布线,选择自动布线。
完成布线结果见附录Ⅱ图。
四、总结
通过这次protel课程设计,我基本了解了软件的使用,同时在老师的指导下能够完成两张图的制作,学到了不少知识,也开拓了视野。
五、参考文献
1. 赵建领.Protel99SE设计宝典.第2版,[M]北京:
电子工业出版社,2011
2. 邓奕.Protel99SE原理图与PCB设计,[M]北京:
人民邮电出版社,2011
3. 杜刚.电路板设计与制作:
Protel应用教程主编,[M]清华大学出版社2010
4. 陈强.Protel电路设计入门与实例,[M]中国电力出版社2009
5. 蔡杏山.零起步轻松学Protel99SE电路设计,[M]人民邮电出版社2007
附录I电路原理图
附录II印制板图
软件设计任务
题目猴子吃桃子问题
内容及要求:
有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。
用多种方法实现求出原来这群猴子共摘了多少个桃子。
要求:
1.采用数组数据结构实现上述求解
2.采用链数据结构实现上述求解
一、任务说明
根据题目要求,设猴子共摘的桃子个数为n即是第一天桃子的个数n1,第第二天时桃子个数n2,第三天时桃子个数n3,第四天时桃子个数n4,第五天时桃子个数n5,第六天时桃子个数n6,第七天时桃子个数n7,第八天时桃子个数n8,第九天时桃子个数n9,第十天时桃子个数n10。
由题中“每天都吃当前桃子的一半且再多吃一个”很容易知道n10=1,n9-(n9/2+1)=n10,n8-(n8/2+1)=n9……依
次推出公式:
ni-1-(ni-1/2+1)=ni(0
。
即ni-1=2*(ni+1)(0
。
二、软件设计过程及流程图
1.软件设计过程
数组求解法分析
分析:
声明一个长度为10的整形数组a[10],分别存放各天猴子吃前的桃子数。
下图1所示:
n1
n2
n3
n4
n5
n6
n7
n8
n9
n10
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]
图1数组元素分布图
先将a[9]赋值为1,用一个循环语句
for(inti=8;i>=0;i--)
a[i]=2*(a[i+1]+1);为其余各数组元素赋值,则数组元素a[0]的值便是该问题的解。
数据类型定义:
inta[10];
a[9]=1;
链表求解法分析
分析:
建立单链表,声明一个类用来对链表的结点指针进行定义,在初始化函数中利用头插法创建具有10个元素的链表,并依次安公式ni-1=2*(ni+1)(0
。
赋值得到一个如图2所示的链表。
head
图2链表结点逻辑结构图
那么N1便是要求问题的解。
数据类型定义:
classlist
{
public:
intdata;
classlist*next;
voidpush();
};typedefclasslistnode;//建立单链表(将class重定义为node)
typedefnode*link;//定义结点指针
2.流程图
数组求解法
N
Y
图三
链表求解法
N
Y
图四
三、程序调试过程以及实验结果
数组求解法
图五
链表求解法
图六
调试分析
数组求解模块的时间复杂度:
因为其中循环for(i=8;i>=0;i--),因此其时间复杂度为O(9).数组求解模块的空间复杂度:
因为不需要输入任何数据,所以该算法为原地工作。
链表求解模块的时间复杂度:
因为算法中用到一个循环来输出,因此其时间复杂度为O(9).链表求解模块的空间复杂度:
原地工作。
调试基本无错误,仅字体及符号的错误,很容易便改正过来。
软件可以很快算出猴子吃桃的个数
四、结论
各算法特点及在例题功能扩展:
数组的使用要先确定其长度,有时候会造成空间浪费,但是存取方便;用链式存储方式是一种动态的存储,长度是不用规定的,需要用指针来找到元素所在存储单元;而递归算法,存储空间要得少,但要知道准确计算函数,相对比较难。
在本例题中,我们可以通过对各种方法,利用for循环进行输出,就得到每一天桃子的剩余量。
五、参考文献
[1]李云清,杨庆红.数据结构(C语言版).北京:
人民邮电出版社,2004.
[2]严蔚敏,吴伟民.数据结构(C语言版).北京:
清华大学出版.1997.
[3]苏光奎,李春葆.数据结构导学.北京:
清华大学出版.2002.
[4]周海英,马巧梅,靳雁霞.数据结构与算法设计.北京:
国防工业出版社,2007.
[5]张海藩.软件工程导论.北京:
清华大学出版社.2003.
六、程序清单
用数组数据结构实现上述求解
#include
voidmain()
{
inti,tao[10];
tao[9]=1;//tao[9]代表第10天剩的桃子数
for(i=8;i>=0;i--){
tao[i]=2*(tao[i+1]+1);
}
printf("共摘了%d个桃子!
\n",tao[0]);
}
用链数据结构实现上述求解
#include
#include
#defineNULL0
typedefstructlinknode
{
intdata;
structlinknode*next;
}node;
node*head;
voidcreat()
{
node*p,*s;
intpeaches=1;
intday=10;
head=(node*)malloc(sizeof(node));
p=head;
while(day>0)
{
s=(node*)malloc(sizeof(node));
s->data=peaches;
p->next=s;
p=s;
peaches=(peaches+1)*2;
day--;
}
p->next=NULL;
p=head;
head=head->next;
free(p);
}
voidprint()
{
node*p;
p=head;
intday=10;
while(p&&day>0)
{printf("%d:
%d\n",day,p->data);
p=p->next;
day--;
}
}
voidmain()
{
creat();
print();
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 课程设计