ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:484.05KB ,
资源ID:24877331      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24877331.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计报gao.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课程设计报gao.docx

1、课程设计报gao沈阳航空航天大学电子信息工程学院电子设计应用软件训练总结报告学生姓名: 专 业: 通信工程 班 级: 14020201 学 号: 指导教师: 房启志 训练时间:2013年 7月1日至 2013年7月12日PROTEL部分1. 任务说明(1) 熟练掌握PROTEL软件的使用;(2) 按要求绘制电路原理图和PCB版图(能够用自动布线和手动布线相结合);(3) 能够按要求建立元件库和封装库。2. 原理图绘制说明并新建一个元件库原理图设计最基本的要求是正确性,其次是布局合理,最后是在正确性和布局合理的前提下力求美观。根据以上所述的电路原理图设计步骤,电路原理图设计过程如下:(1) 启动

2、原理图设计服务器 进入Protel 99 SE,创建一个数据库,执行菜单File/New命令,从框中选择 Schematic Document 图标,双击该图标,建立原理图设计文档。双击文档图标,进入原理图设计服务器界面。图1:原理图设计界面(2) 设置原理图设计环境执行菜单Design/Options,设置图纸大小为A4纸 。图2:设置纸张大小界面(3) 装入所需的元件库 在设计管理器中选择Browse Sch页面,在Browse区域中的下拉框中选择Library,然后单击Add/Remove按钮,在弹出的窗口中寻找Protel 99 SE子目录,在该目录中选择LibrarySch路径,在元

3、件库列表中选择所需的元件库,单击Add按钮,即可把元件库增加到元件库管理器中。图3:添加元器件库(4) 放置元件根据实际电路的需要,到元件库中找出所需的元件,若找不到,可以点击Edit按键制作一个新元器件,然后用元件管理器的Place按钮将元件放置在工作平面上,再根据任务原理图把元件调整好。 图4:放置CON3元件 图5:查找2N2222元器件(5) 原理图布线 利用Protel 99 SE提供的各种工具、指令进行布线,将工作平面上的器件用具有电气意义的导线、符号连接起来,构成一个完整的电路原理图。 图6:对各元器件连线(6)元器件位置调整和编辑元器件属性 利用Protel提供的功能对原理图做

4、进一步的修改,同时对元件编号及封装号进行定义。 图7:对4093元件封装号进行定义(7)元器件检测使用Protel 99 SE提供的电气法则检测,执行Tool/REC命令,若有错误,则进行修改。 图8:电气法则检测 图9:电气法则检测结果 图10:检测错误提示(8)生成网络表网络表是电路原理图或印制电路板元器件连接关系的文本文件,是原理图设计和PCB设计的接口网络表可以由原理图生成,执行Design/Create Netlist可以生成具有元件名、元件封装、参数及元件之间连接关系的网络表。1KAXIAL0.3R12KAXIAL0.3R33KAXIAL0.3R25KAXIAL0.3R4J1SIP

5、2CON2J2SIP3CON3JP1SIP44 HEADERQ1SAN2N2222U1DIP64N25U2DIP-1474LS14U3SOP-144093(GNDJ1-2J2-3JP1-1Q1-3U1-2U1-4U2-7U3-7)(Net5K_25K-2Q1-1)(NetJ1_11K-1J1-1)(NetU2_1U2-1U3-1U3-2)(VCC3K-1JP1-3U2-14U3-14)(VDD2K-1JP1-4)3.印制版图绘制说明 Protel 99 SE提供了完整的电路板设计环境,使得设计电路版更加方便高效,应用该软件设计的电路板过程如下:(1)启动电路板设计服务器 执行菜单File/Ne

6、w命令,从框中选择PCB Document图标,双击该图标,建立PCB设计文档。双击文档图标,进入PCB设计服务器界面。图11:PCB服务器界面(2)装入元件封装库执行菜单命令Design/Add/Remove Library,在“Add/Remove”对话框中选取所有元件所对应的元件封装库,例如:PCB Footprint ,International Rectif 图12:添加对应的元件封装库(3)建立元件封装库iers等。根据老师给的相关数据对三极管2N2222进行自制封装,图形如下。图13:2N2222对应的封装 图14:74LS14对应的封装 图15:更新PCB 图16:更新后的PC

7、B图(4)元器件布局可以采用自动布局和手动布局相结合的方式,执行菜单命令Tools/Auto Placement/Auto Placer可以自动布局。(5)自动布线执行菜单命令Auto Routing/All,并在弹出的窗口中单击Route all按钮,程序即对印刷电路板进行自动布线。只要参数,元件布局合理,自动布线的成功率几乎是100%。 图17:自动布线的提示 图18:自动布线后的图(6)手动布线对于自动布线不太满意的地方可以采取手动布线的方式,这样可以是电路板设计的更加合理。4.总结通过这次的实习,对Protel有了一定的了解和认识,掌握了该软件的基本操作。在实习的过程中,有过许多错误的

8、操作,在这次设计中还是走了很多弯路,运用Protel 99SE软件不熟悉,但在老师的指导下以及同学的帮助下,现在基本能够熟练运用。通过本次实习,我明白了Protel 99SE的许多用途,特别是在仿真领域里的运用。实习过程中,遇到不少问题在电器检查时,开始有很多错误,是由于引脚或元器件没标注好的原因。封装过程中,有的元件需要自己手工绘制,对于自制的封装元件库还是会出现由于名称不对而无法封装的情况,制作PCB要以元件实物的型号和大小为依据,由于元件种类繁多,所以要具体情况具体来制作PCB封装,PCB封装尺寸的大小更注重在管脚的距离上,管脚距离的大小决定了实物元件能否装在PCB板上,要从原理图生成P

9、CB就要保证每个元件都有对应的封装,大小要对应,符号也要对应。Protel 99SE软件对以后我们专业课的学习具有很大的辅助作用,当然,这几天的学习并不能完全掌握PROTEL,我们只是初步掌握了它的基本功能,它的其它功能我希望能在以后的学习中逐步掌握。相信在以后我能熟练地掌握这一软件。5.参考文献1曹丙霞,赵艳华.Protel 99 SE原理图与PCB设计.北京:电子工业出版社,2007(5).2邢增平.Protel 99 SE设计专家指导.北京:中国铁道出版社,2004(2).3李东生,张勇,许四毛编著.Protel 99 SE电路设计教程.北京:北京工业出版社,2007(1).4刘坤,高征

10、红,晁阳编著,Protel 99 SE电路设计实例教程.北京:清华大学出版社,2008(5).5程露,郑毅,向先波编著,Protel 99 SE多层电路板设计与制作.北京:人民邮电出版社,2007(5).附录I 电路原理图附录II 印制板图软件设计部分1.任务说明(1)这个实验要求我用栈实现车厢调度。(2)车厢的个数是由用户输入的。(3)程序会自动给车厢进行从1到 n的编号。(4)用户输入车厢个数后,程序打印出所有可能的车厢出站顺序。2.任务设计过程(1)对算法的描述这个实验中, 要求用到栈. 实现栈的基本操作,即实现类型。程序对栈的任何存取(即更改,读取和 状态判别等操作)必须借助于基本操作

11、。在操作过程中的任何状态下都有两种可能的操作:“入”“出”。每个状态下处理问题的方法都是相同的,具有递归特性,栈实现是方便的在算法中还要用到递归算法,其本质为:一个数的进栈以后有两种处理方式: 要么立刻出栈,或者下一个数的进栈。 一个数的出栈以后也有两种处理方式:要么继续出栈(栈不为空),或者下一个数的入栈。车厢调度题目,题目的目的是有n辆车依次进入一个车站,把所有可能的出站的序列输出,题目要求使用栈数据结构完成出站和入站操作。根据栈的数据特性,最先进栈的最后出栈。而且对问题进行分析可知对栈来说只有出栈和入栈两种操作,所以问题具有递归的特性,所以对这个题目的核心解法就是采用递归的操作。问题着眼

12、于进栈的n辆车,当这n辆车完成进栈操作,所有的出栈的可能都已经出来了。首先从第一辆进行分析,它只有一种可能:进栈。对于后面的n-1辆车,如果栈不为空,则有两种可能,一种是它进栈,另一种是栈中的顶元素出栈。所以整个过程可以的结果就是一颗二叉树,只要完成对这棵二叉树的遍历,就可以把所有的结果输出,下面我用n=3来说明这个例子。(2)栈的基本操作构造一个栈void InitStack2(SqStack *S,int base_size) S-base=(int *)malloc(base_size * sizeof(int); if(!S-base) puts(ERROR!); return ; S

13、-top=S-base; S-stacksize=base_size; /*构造一个空栈*/ 插入新的栈顶元素void Push2(SqStack *S, int e) *(S-top+)=e; /*插入元素e为新的栈顶元素*/输出栈顶元素void Pop2(SqStack *S) int e; if(S-top=S-base) puts(ERROR); return ; e=*-S-top; printf(%d ,e); /*若栈不空,则删除s的栈顶元素,用e返回其值*/主函数的源代码void main() int i; int k; stack input, s, output; init

14、stack(&input, N); initstack(&s, N); initstack(&output, N); printf(请输入车厢数量:n); scanf(%d,&k); printf(可能的出站序列为:n); for(i=k; i0; i-) push(&input, i); stackseq(&input, &s, &output); (3)程序流程图主要是对main函数和Stacksep函数画流程图。 图2:Main函数流程图:图3:Stackseq函数流程图3.程序调试过程以及实验结果(1)调试分析此车厢调度的基本要求比较简单,只要掌握好栈的基本特性和基本操作,一般都能顺利

15、完成。此系统需要运用递归算法,所以还必须对整个系统有个清晰的认识和思路,这样才能更好的掌握运行的详细过程与结果。每个步骤都有两种可能,那怎样解决操作问题呢?我决定先以入栈为主,能入先入,操作完毕后恢复至分步时的状态,再进行出栈的操作,这样两种可能就都完成了。此系统中还有一个要求就是显示出操出作序列的状态的变化过程,因此,必须弄清楚栈的基本性质,谁先入栈,谁先出栈,每一步的过程必须清晰明了。数据存储是用了一个数组,便于存储。(2)运行结果新建一个程序,输入相应的程序,编译链接无误后,运行程序,按界面提示输入车厢数量,以车厢数n=4为例。图4:运行界面输入车厢数量为4后,程序实行车厢调度,并将所有

16、可能的车厢出站顺序打印出来,有下面的显示界面可知一共有14种车厢出站顺序。图5:运行结果显示4.结论通过本次软件实习,不仅加深了对以前所学知识的认识,而且我学到很多书本上未曾涉及的知识点,在实习时发现了很多问题,这些问题都是我们最常见的也是经常犯的。经过从书本及利用互联网资源和老师及同学的帮助,终于完成了本次试验任务,基本达到实习要求,可以实现输出火车车厢的调度情况,这次实习对自己的编程及调试程序的能力有很大的帮助。同时,体会到对于我们学过的知识,我们不仅要尽量深入而透彻地去理解以及渗透,因为,在我看来,只有充分的了解渗透才能更好的将课本所学的知识运用到实验和生活中去。总体来说栈结构是比较容易

17、的结构,所以现在能对栈的基本操作能比较熟练的运用了。但是由于此次设计用到了递归算法,基于对递归算法平时训练不是很多,故存在一些设计的问题同时,在此过程中,我发现了一些自己的不足。5.参考文献1刘彦明编著,计算机软件技术基础教程.西安:西安电子科技大学出版社,2008(3).2谭浩强著,C程序设计(第三版),北京:清华大学出版社,2005.3张桂芳著,广西民族学院学报(自然科学版),2002(02)第8卷,40-45.4严蔚敏,吴伟民著. 数据结构(C语言版),北京:清华大学出版社. 2010(3).5 严蔚敏,吴伟民著,数据结构习题集,北京:清华大学出版社,1998.6.程序清单#includ

18、e #include #define N 20typedef struct int *stk; int top; int size; stack;void initstack(stack *s, int n) s- stk = (int*)malloc (s- size=n) * sizeof(int); s- top = 0; void copystack(stack *ss, stack *s) int i; if(ss- stk) free(ss- stk); ss- stk = (int*)malloc(ss- size=s- size) * sizeof(int); ss- top

19、= s- top; i=s- top-1; for(;i=0;i-) ss- stki=s- stki; void outputstack(stack* s) int i; for(i=0; i top; i+) printf( %5d, s- stki); printf( n); int stackempty(stack* s) return !s- top; void push(stack* s, int x) s- stks- top+ = x; int pop(stack* s) return s- stk-s- top; void stackseq(stack *input, sta

20、ck *s, stack *output) /*初始状态:栈input中存放要输入的元素,s, output为空 结束状态:input 和 s 均为空 */ stack ii, ss, oo; if(stackempty(input) /*如果数据已经全部输入完毕*/ if(stackempty(s) outputstack(output); /*而且栈中也没有剩余,则输出序列*/ else push(output, pop(s); /*栈中元素进入输出序列*/ stackseq(input, s, output); /*重新调度*/ else /*还有元素要输入*/ if(!stackemp

21、ty(s) /*我们需要保存现有状态*/ initstack(&ii, 1); copystack(&ii, input); initstack(&ss, 1); copystack(&ss, s); initstack(&oo, 1); copystack(&oo, output); push(&oo, pop(&ss); stackseq(&ii, &ss, &oo); push(s, pop(input); /*再输入一个元素*/ stackseq(input, s, output); void main() int i; int k; stack input, s, output; initstack(&input, N); initstack(&s, N); initstack(&output, N); printf(请输入车厢数量:n); scanf(%d,&k); printf(可能的出站序列为:n); for(i=k; i0; i-) push(&input, i); stackseq(&input, &s, &output);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1