《表决器的设计微机原理课程设计报告.doc》由会员分享,可在线阅读,更多相关《表决器的设计微机原理课程设计报告.doc(24页珍藏版)》请在三一办公上搜索。
1、微机原理课程设计报告题 目: 表决器的设计 学生姓名: 刘卫军 学 号: 201017010235 专业班级: 计科专业10102班 同组姓名: 彭蛟龙 指导教师: 杨红杰 设计时间: 2013年下学期第17周 指导老师意见:评定成绩: 签名: 日期: 年 月 日 目录目录11.设计目的和内容21.1实验目的21.2实验内容32.实验准备33.电路设计与比较44.设计原理54.1设计流程图54.2电路的总体原理框图74.3硬件框架图74.4表决器接口设计84.5.电路工作原理简述:85.软件设计说明105.1模块设计105.2硬件设计流程图106. 接口设计116.1 8253中断接口的设计1
2、16.1.1 8253接口的工作流程116.1.2 试验箱连线简介126.1.3芯片的引脚126.1.4实验整体布线图136.2.1 8255试验箱连线简介136.2.2 8255引脚连线图147程序清单158.心得体会219.参考文献231.设计目的和内容1.1实验目的本课程设计是在前导验证性认知实验基础上,进行更高层次的命题设计实验,要求学生在教师指导下独立查阅资料、设计、安装和调试特定功能的电子电路。培养学生利用模拟、数字电路知识,目的在于巩固基础、注重设计、培养技能、追求创新、走向实用。用已学过的知识和对数字电子技术的基本理论,基本概念,基本方法和单元电路,逻辑部件的深入认识,而拓宽思
3、路,扩大视野,进一步巩固,扩充所学知识,提高分析问题和解决问题的能力。提高自己的动手能力。1.2实验内容(1)用于七人以下会议表决。半数以上人同意通过。(2)应考虑弃权情况,有三人以上弃权,推迟会议再议。(3)根据表决情况显示“否决”“通过”“再议”字样。显示方式自己设计2.实验准备 根据七人表决器的原理,我们的准备过程如下:1.使用七个拨动开关(K1K7)作为输入变量来表示七个投票人,当拨动开关输入为1时,表示对应的人投同意票,否则当拨动开关输入为0时,表示对应的人投反对票。2. 使用一个七段数码管来显示同意的票数。3. 使用七个LED(LED2LED8)用来分别记录投票人的个人投票结果,当
4、LED亮起时就表示对应的投票人同意,否则就表示不同意。4. 使用一个LED(LED1)来表示最终的投票结果,当LED1亮起时表示表决通过,不亮时就表示表决不通过。5. 使用一个拨动开关(K8)来达到复位要求,即需要复位时能够达到同时清零数码管的显示结果和LED的显示情况。6. 软件仿真成功后,通过专用的连接线再用硬件进行测试,并将硬件测试的结果以照片的形式做记录。3.电路设计与比较3.1方案一:用数据选择器分别将通过、否决、弃权的高低电平进行选择,之后将七人的选择结果用T触发器构成的同步二进制加法计数器进行累加。然后用数字比较器进行比较,如果弃权的票数大于等于3,则输出为“再议”。如果弃权的票
5、数小于3且通过的票数大于3,则显示为“通过”。其余的则显示为“否决”。3.2方案二:将七人的通过、否决票数用移位寄存器进行寄存,弃权的票数用另一组移位寄存器进行寄存,然后用CLK脉冲信号使其移位寄存器进行右移,用T触发器构成的同步二进制加法计数器进行累加,如果弃权的票数大于等于3,则输出为“再议”。如果弃权的票数小于3且通过的票数大于3,则显示为“通过”。其余的则显示为“否决”。3.3方案对比:方案一用的数据选择器比较多而且反应速度较慢,方案二用器件较少,比较好一些。方案二:电路的总体结构4.设计原理4.1设计流程图由下图可知,所谓表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认
6、为此行为可行;否则如果否决的票数过半,则认为此行为无效。七人表决器顾名思义就是由七个人来投票,当同意的票数大于或者等于4人时,则认为同意;反之,当否决的票数大于或者等于4人时,则认为不同意。实验中用7个拨挡开关来表示七个人,当对应的拨挡开关输入为1时,表示此人同意;否则若拨挡开关输入为0时,则表示此人反对。表决的结果用一个LED表示,若表决的结果为同意,则LED被点亮;否则,如果表决的结果为反对,则LED不会被点亮。4.2电路的总体原理框图投票按键控制电路输入转换结果显示控制电路票数统计票数分析图2 总体原理图观众通过按键,来选择自己的投票结果,输入后,通过硬件方面电路的控制来进行转换和票数统
7、计,然后分析票数,最后将结果显示出来。4.3硬件框架图数码管显示电源系统 EL教学实验箱EL-JY-2电脑 LED显示开关按钮图3硬件框架是由:电源系统,开关按钮,数码管显示,LED显示,以及EL-JY-2来构成。其中EL-JY-2是设计中的重中之重。4.4表决器接口设计表决器SetSet1xin0:6selsel1xout0:6xout00:6xout10:6xout20:6 图4注释:set:选择是否记名 set1:选择是否显示投票人数及比例 xin0:6:表决输入,分别是七个拨动开关 sel:输出指示是否记名投票 sel1:输出指示是否显示投票人数及比例 xout0:6:译码用数码管输出
8、表决是否通过 xout00:6:译码用数码管输出同意的人数(set1=1) xout10:6:译码用数码管输出不同意同意的人数(set1=1) xout20:6:译码用七个LED输出记名结果4.5.电路工作原理简述:该电路是基于硬件电路,应用汇编语言来设计出其工作流程,硬件电路是用软件程序来检测表决器的开始按键是否被按下,如果开始键已按下,则利用软件程序来检测用于表决的按键是否被按下以及按下的按键是否有效,然后检测结束键是否被按下,如果按下则表决结束,并且显示最终的表决结果。硬件电路只能够用于表征表决是否开始以及每个人按下的是同意按键还是反对按键。工作流程:当主持人按下开始表决的开始按键(在电
9、路中用接在外部中断0上的按键来表示开始按键)后,七个人才开始表决,七个人分别按下同意按键或是反对按键,剩余的事情由软件来处理分析最终统计得到“同意”的人数和“反对”的人数,当主持按下结束按键后(在电路中用外部中断1上所接的按键来表示结束按键),软件中用外部中断1来表示结束(采用中断的方式),在中断程序中比较“同意”的人数与“反对”的人数的大小。当“同意”的人数大于“反对”的人数时,应用软件程序点亮绿灯;当“同意”的人数小于“反对”的人数时,应用软件程序点亮红灯;当“同意”的人数等于“反对”的人数时,则应用软件程序将红灯与绿灯同时点亮。5.软件设计说明5.1模块设计初始化模块:对系统进行初始化,
10、由于程序中有中断源,因此打开相应的中断也放在程序的初始化模块中。检测开始按键:检测开始按键是否被按下,按下则开始执行循环检测同意与反对按键,为消除按键抖动,此处需调用延时程序。循环检测同意/反对按键:循环检测同意与反对按键是否被按下,同时统计同意总数与反对总数,然后等待中断到来。延时程序:用于消除按键的机械抖动,调用0.5s的延时程序;中断处理:当中断源到来,首先熄灭黄灯,然后将同意总数与反对总数进行比较,并点亮对应的显示灯;调用延时程序开始按键的检测系统初始化开始5.2硬件设计流程图中断程序等待中断循环检测同意反对按键点亮绿灯比较同意与反对数的大小大于 点亮所有灯结束中断返回等于小于点亮红灯
11、1. 用于检测开始按键是否被按下,按下则表决按键按下才有效,即开始表决;2. 开始表决后循环检测对应的同意与反对按键是否被按下,并统计同意总数与反对总数。3. 等待中断,即等待结束按键被按下,在中断处理中将同意与反对数进行比较。6. 接口设计6.1 8253中断接口的设计6.1.1 8253接口的工作流程6.1.2 试验箱连线简介6.1.3芯片的引脚6.1.4实验整体布线图6.2 8255并行接口的设计6.2.1 8255试验箱连线简介6.2.2 8255引脚连线图7程序清单ORG0000HAJMPMAIN;/转主程序/ORG0013H;/外部中断1的入口地址/AJMPINT_1;/跳转到中断
12、/ORG0100HMAIN:MOVSP,#60H;/给地址指针赋初值/MOVA,#0FFHMOVP1,A;/给P1口赋初始值/MOVP2,A;/给P2口赋初始值/MOVP0,A;/给P0口赋初始值/SETBEA;/开中断/SETBEX1;/打开外部中断1/SETBIT1;/设置外部中断1为边沿触发方式/JBP3.2,$;/等待外部中断0上的按键按下/LCALLDEL05S;/调用延时程序/JNBP3.2,$;/等待按键弹起/CLRP0.5;/点亮黄灯/L10:JBP1.4,L11;/判断按键P1.4口上的按键是否被按下/JNBP1.4,$;/等待按键弹起/JNBP2.0,L11;/检测对应的反
13、对按键是否被按下/LCALLDEL05S;/调用延时程序/MOV21H,#00H;/将21H初始化/MOVA,21H;/21H中存储第一个同意按键的按下数/INCA;/对21H地址单元中的值加1/MOVB,AMOVA,#01HCJNEA,B,L11;/将寄存器A中的值与1比较,保证只有第一次按下才有效/MOV21H,A;/26H中存储第一个反对按键的按下数/MOV31H,#00HMOVA,31HINCAMOV31H,A;/对31H中的同意数加1/L11:JBP1.3,L12;/检测按键是否被按下/JNBP1.3,$;/等待按键弹起/JNBP2.1,L12;/判断对应的反对建是否被按下/LCAL
14、LDEL05S;/调用延时程序/MOV22H,#00HMOVA,22H;/同L10注释,下同/INCAMOVB,ACJNEA,B,L12MOV22H,AMOVA,31HINCAMOV31H,AL12:JBP1.2,L13;/同上/JNBP1.2,$JNBP2.2,L13LCALLDEL05SMOV23H,#00HMOVA,23HINCAMOVB,ACJNEA,B,L13MOV23H,AMOVA,31HINCAMOV31H,AL13:JBP1.1,L14;/同上/JNBP1.1,$JNBP2.3,L14LCALLDEL05SMOV24H,#00HMOVA,24HINCAMOVB,ACJNEA,B
15、,L14MOVA,31HINCAMOV31H,AL14:JBP1.0,S0;/同上/JNBP1.0,$JNBP2.4,S0LCALLDEL05SMOV25H,#00HMOVA,25HINCAMOVB,ACJNEA,B,S0MOV25H,AMOV30H,AMOVA,31HINCAMOV31H,AS0:JBP2.0,s1;/判断第一个反对建是否被按下/JNBP2.0,$;/等待按键弹起/JNBP1.4,s1;/判断对应的同意键是否被按下/LCALLDEL05S;/调用延时程序/MOV26H,#00H;/将26H初始化/MOVA,26H;/将值送入对应的存储空间/INCA;/寄存器A的内容加1/MO
16、VB,ACJNEA,B,S1;/与1比较/MOV26H,AMOVA,32HINCA;/对寄存器A的内容加1/MOV32H,A;/将寄存器A的值赋值给32H/S1:JBP2.1,S2;/同上面的S0程序的注释/JNBP2.1,$JNBP1.3,S2LCALLDEL05SMOV27H,#00HMOVA,27HINCAMOVB,ACJNEA,B,S2MOV27H,AMOVA,32HINCAMOV32H,AS2:JBP2.2,S3;/同上/JNBP2.2,$JNBP1.2,S3LCALLDEL05SMOV28H,#00HMOVA,28HINCAMOVB,ACJNEA,B,S3MOV28H,AMOVA,
17、32HINCAMOV32H,AS3:JBP2.3,S4;/同上/JNBP2.3,$JNBP1.1,S4LCALLDEL05SMOV29H,#00HMOVA,29HINCAMOVB,ACJNEA,B,S4MOV29H,AMOVA,32HINCAMOV32H,AS4:JBP2.4,RT;/同上/JNBP2.4,$JNBP1.0,RTLCALLDEL05SMOV30H,#00HMOVA,30HINCAMOV B,ACJNEA,B,RTMOV30H,AMOVA,32HINCAMOV32H,ART:AJMPL10;/跳转到L0程序循环检测各个按键是否被按下/DEL05S:MOVTMOD,#10H;/定时
18、器T1,方式1/MOVTL1,#0DCH;/送计数初值,保证定时时间为125ms/MOVTH1,#0BHMOVR2,#4;/设置软计数器,使4*125ms=0.5s/SETBTR1;/启动定时计数器/LOOP:JNBTF1,$;/等待1ms定时到/MOVTL1,#0DCH;/再送计数初值,保证定时时间始终为125ms/MOVTH1,#0BHCLRTF1;/清除溢出标志位,以便下次判断/DJNZR2,LOOP;/等待0.5S延时到/CLRTR1;/关闭定时器1/RET;/延时程序返回/INT_1:SETBP0.5;/熄灭黄灯/MOVA,31H;/将同意数赋值给寄存器A/MOVB,AMOVA,32
19、HCLRP0.0CJNEA,B,LP;/比较同意数与反对数的大小/MOVP0,#00H;/三个显示灯同时点亮/SJMPOUT;/跳转到OUT程序/LP:JCGREEN;/判断溢出标志位Cy/CLRP0.0;/点亮绿灯/SJMPOUT;/跳转到OUT程序/GREEN:CLRP0.2;/点亮红灯/OUT:NOP;/空操作指令/RETI;/中断返回/END8.心得体会本学期的微机原理和接口技术及其课程设计都已经结束。在这个过程中,我们有所付出,也有所回报,让我感受颇多。对于微机原理与接口技术这门课程而言,初学时,感觉摸不着头绪。面对着众多的术语、概念及原理性的问题不知道该如何下手。在了解课程的特点后
20、,我发现,应该以微机的整机概念为突破口,在如何建立整体概念上下功夫。“麻雀虽小,五脏俱全”,可以通过学习一个模型机的组成和指令执行的过程,了解和熟悉计算机的结构、特点和工作过程。微机原理与接口技术课程有许多新名词、新专业术语。透彻理解这些名词、术语的意思,为今后深入学习打下基础。一个新的名词从首次接触到理解和应用,需要一个反复的过程。而在众多概念中,真正关键的并不是很多。比如“中断”概念,既是重点又是难点,如果不懂中断技术,就不能算是搞懂了微机原理。在学习中凡是遇到这种情况,绝对不轻易放过,要力求真正弄懂,搞懂一个重点,将使一大串概念迎刃而解。学习过程中,我发现许多概念很相近,为了更好地掌握,
21、将一些容易混淆的概念集中在一起进行分析,比较它们之间的异同点。比如:微机原理中,引入了计算机由五大部分组成这一概念;从中央处理器引出微处理器的定义;在引出微型计算机定义时,强调输入/输出接口的重要性;在引出微型计算机系统的定义时,强调计算机软件与计算机硬件的相辅相成的关系。微处理器是微型计算机的重要组成部分,它与微型计算机、微型计算机系统是完全不同的概念。微处理器、微型计算机和微型计算机系统在微机中,最基础的语言是汇编语言。汇编语言是一个最基础最古老的计算机语言。语言总是越基础越重要,在重大的编程项目中应用最广泛。就我的个人理解,汇编是对寄存的地址以及数据单元进行最直接的修改。而在某些时候,这
22、种方法是最有效,最可靠的。比如,在当今的战争中,首先就是运用这方面的知识来修改地方的系统程序。让地方的卫星偏离轨道,从而不能发现目标。其威力可见一斑。然而,事物总有两面性,有优点自然缺点也不少。其中,最重要的一点就是,汇编语言很复杂,对某个数据进行修改时,本来很简单的一个操作会用比较烦琐的语言来解决,而这些语言本身在执行和操作的过程中,占有大量的时间和成本。在一些讲求效率的场合,并不可取。汇编语言对学习其他计算机起到一个比较、对照、参考的促进作用。学习事物总是从最简单基础的开始。那么学习高级语言也当然应当从汇编开始。学习汇编语言实际上是培养了学习计算机语言的能力和素养。个人认为,学习汇编语言对
23、学习其他语言很有促进作用。汇编语言在本学期微机学习中有核心地位。本学期微机原理课程内容繁多,还学习了可编程的计数/定时的8253,可编程的外围接口芯片8255A等。学的都是芯片逻辑器件,而在名字前都标有“可编程”,其核心作用不可低估。我认为,在学习中要考虑到“学以致用”,因此,在接下来我们又安排了微机原理与接口技术的课程设计。经过本次微机课题的设计与研究,我们深入的学习了除课本以外的很多微机附件的内容,掌握了很多实验室操作技能。我们在实际设计中遇到很多问题,但结合所学知识以及参考资料的帮助,不断地尝试,设计了一种能够解决实际问题的系统。同时也加深了我们对于现实生活中,实际的嵌入式操作系统的原理
24、的理解。在实际设计过程中,我们遇到了诸多设计的问题。例仿真系统中某些芯片没有,这一问题主要是因为我们所设计的功能诸多,刚开始对于这一设计在硬件方面设计不是非常的合理,后来通过使用所用仿真软件的绘画功能,新增加了一个芯片便解决了所有的按键和现实问题。在程序设计中,我们更加深入了解了8086的使用与本质。为了能设计成功,我们查阅了各种关于其硬件连接和软件设计的资料,同时也发现了理论资料与实践上的区别,通过多次尝试,成功完成了硬件和软件的设计。在这次课题设计过程中,我们合理的分工,适宜的规划进度的进展,不仅仅按时完成了预先设计的内容,而且学到了很多书本上没有的知识。在这一过程中,我们充分发挥我们的主观能动性,想象创造性,攻克了很多之前都没有想过的难关,真的受益匪浅。这次设计不仅仅耗时耗力,而且还要整天对着电脑进行仿真且不停的调试、修改,这次课程设计对我们理论和实验都有很大的提升,我想这些对于我们今后的学习生活都有很重要的意义,这将是我们在程序设计以及大学学习过程中的宝贵经验和财富。9.参考文献1 微型计算机系统原理及应用周明德,清华大学出版社2EDA技术与应用第二版,谭会生、张昌凡,西安电子科技大学出版社3可编程器件EDA技术与实践,李国洪、沈明山,机械工业出版社4基于QUARTUS II 的CPLD/FPGA设计,电子工业出版社5EDA技术与应用,朱正伟,清华大学出版社