微机原理与接口技术研究型实验报告(竞赛抢答器).doc_第1页
微机原理与接口技术研究型实验报告(竞赛抢答器).doc_第2页
微机原理与接口技术研究型实验报告(竞赛抢答器).doc_第3页
微机原理与接口技术研究型实验报告(竞赛抢答器).doc_第4页
微机原理与接口技术研究型实验报告(竞赛抢答器).doc_第5页
免费预览已结束,剩余5页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与接口技术研究性综合训练实验报告竞赛抢答器设计实验报告学生: 班级: 任课教师: 一、 实验设计设计一个七路抢答器,以模拟竞赛中的抢答器功能。当主持人按开始键后,选手才可抢答,否则违规。该抢答器具有如下功能: 1、 该抢答器有一个开始键,由拨动开关控制,由主持人使用; 2、 该抢答器可供7人同时抢答,由拨动开关控制,选手使用; 3、 当选手违规时,红灯亮和扬声器报警,数码管显示最先违规的选手号码; 4、 当选手抢答成功,绿灯亮和扬声器鸣叫,数码管显示最先抢答到的选手号码; 5、 抢答前,所有的波动开关必须拨到下方,新一轮的抢答才可以开始。二、 研究方案设计 1、 方案分析 本实验的关键点是如何判断出哪个选手首先抢答成功,可考虑下述方案: 利用标志位和8255 A口的状态值作判断。令PA0 PA7接K0K7拨动开关,其中PA0PA6接选手的开关,PA7接主持人的开关。每次查询8255 A口状态时,只有当PA0PA7值全为0,程序才可向下执行,否则将一直处于等待状态。当新一轮抢答开始,即由PA7由0变为1(主持人拨动开始键时),直到PA0PA6中有一个值由0变为1时(某个选手最先拨动抢答键时),才会执行LED显示、二极管发光和扬声器发生的程序段,否则再次处于等待状态。 2、 所需器件 可编程并行接口接口芯片8255、可编程定时器计数器8254,红、绿两个发光二极管,扬声器,LED八段数码管,8个拨动开关。 3、 拨动开关、扬声器及显示功能的定义 拨动开关:8个拨动开关中,K7作为开始键,另外K0K6七个拨动开关用做7位选手的抢答按键。 扬声器:用与红、绿两个发光二极管配合使用。抢答成功时绿灯亮扬声器鸣叫,抢答违规时红灯亮扬声报警。 LED:显示的内容与选手号对应,抢答成功或违规都要显示。 4、 系统所选用各芯片的工作方式 8255A编程方法: (1)A口工作在方式0,作为输入端口用于连接选手按键(PA7PA0依次对应拨动开关07); (2)C口工作在方式0,均作为输出端口(PC2接绿灯,PC3接红灯,PC4连接8253的GATE0)。 8253编程方法: 选择通道0:操作类型为先读写低字节再读写高字节,工作在方式3即方波发生器。当抢答成功,计数初值设为1000H;当违规抢答,计数初值设为2000H。 5、 芯片连接 8255连接方式: PA0 PA7接K0K7拨动开关;PC2接绿灯,PC3接红灯,PC4连接8253的GATE0 8253连接方式: CLK0-1MHZ,OUT0-扬声器,GATE0连接8255的PC4。三、 程序代码编辑思路及具体分析1. 我们小组认真阅读了实验指导书,第一感觉是代码实现不太困难,8255A实现核心部分(主要是PA0到PA7的各开关实现以及与红绿灯、8253等的连接),8253再来实现扬声器部分因此,我们首先完成除了扬声器的部分(也就是先不使用8253,只使用8255A)2. 我们的思路是把各抢答者的实现部分分开做(即:对于7名抢答者而言,代码片段主要由犯规时的wrong01wrong07部分和抢答成功时的right01right07部分组成),然而其实很多代码是重复的这一点老师在点评的时候有提及,说是我们代码写太多了,我们认为可以改成调用子程序,不过反观整体代码,虽然看似很多其实核心实现部分既不困难也不复杂,所以我们小组最后决定并不再做修改3. 代码编程大体结构是:A 初始化(关闭红绿灯和扬声器并且其他变量、寄存器均置0)B 首先判断主持人开关PA07状态高电平不允许抢答并进入判断(judge)部分;低电平允许抢答并进入正式阶段(nextstart)C 如果进入judge部分,判断是否有人违规抢答(PA0到PA6是否有高电平),如果有则进入相应号码的wrong处理部分;如果进入nextstart部分,判断是否有人抢答了,如果没有抢答则一直等待直到有人抢答为止,而且如果有人抢答,则进入相应号码的right处理部分D 无论是进入哪个号码对应的right或者wrong部分,都是首先在数码管上显示对应号码(通过查书上表可得对应值),right部分则亮绿灯,wrong部分则亮红灯再添加了扬声器部分(即8253参与之后),如果是right部分则用计数初值为1000H的方波来产生扬声器声音,如果是wrong部分则用2000H的E 最后的复位部分的实现,其实是通过检查当前PA0到PA7的情况来跳转的最初的starting部分四、 实验结果及分析通过全组成员几天的编程设计与实验平台上的实践,最终成功达到了本实验的设计要求与功能要求!其中遇到的问题有:1. 如何让数码管上显示对应的号码2. 扬声器应该如何使用3. 如何在多人接连抢答或犯规的情况下,保证数码管只会一直显示第一个抢答或犯规的选手的号码4. 开始键(主持人键)状态无法复位;5. 如何正确复位并且关闭红绿灯以及扬声器 附件:程序代码code segmentassume cs:code start:begin:mov dx,203h ;8255A控制端口地址为203hmov al,10010000b ;8255A工作方式:A口0方式输入,B口0方式输出,C口输出out dx,alstarting:mov dx,202hmov al,0out dx,al ;一开始的时候,无论是绿灯还是红灯都不让亮,并且让扬声器关闭mov dx,210hmov al,0out dx,al ;一开始的时候,数码管不显示mov dx,211hmov al,00000001bout dx,almov dx,200h ;A口地址为200hin al,dx and al,10000000b cmp al,0 ;判断PA7是否为0(PA7对应主持人键)jz nextstart ;为0表示主持人允许开始抢答jnz judge ;不为0表示主持人没说开始,不许抢答,并开始判断是否有人违规judge: mov dx,200hin al,dxcmp al,10000001bjz wrong01 ;1号抢答违规cmp al,10000010bjz wrong02 ;2号抢答违规cmp al,10000100bjz wrong03 ;3号抢答违规cmp al,10001000bjz wrong04 ;4号抢答违规cmp al,10010000bjz wrong05 ;5号抢答违规cmp al,10100000bjz wrong06 ;6号抢答违规cmp al,11000000bjz wrong07 ;7号抢答违规jmp starting ;虽然没有开始,但也没有人犯规,则返回到初始化部分wrong01:mov dx,210h ;数码管地址为210hmov al,06h ;显示出1out dx,almov dx,211h ;让数码管第一位显示mov al,00000001bout dx,almov dx,202h ;C口地址为202hmov al,00011000b ;红灯接PC3,报警out dx,alcall ring02 ;并且让扬声器报警CW1: ;复位操作的判断(要求PA6到PA0置低)mov dx,200h in al,dxcmp al,80hjz startingcmp al,00hjz startingjnz CW1wrong02:mov dx,210h ;数码管地址为210hmov al,5bh ;显示出2out dx,almov dx,211h ;让数码管第一位显示mov al,00000001bout dx,almov dx,202h ;C口地址为202hmov al,00011000b ;红灯接PC3,报警out dx,alcall ring02 ;并且让扬声器报警CW2: ;复位操作的判断(要求PA6到PA0置低)mov dx,200h in al,dxcmp al,80hjz startingcmp al,00hjz startingjnz CW2wrong03:mov dx,210h ;数码管地址为210hmov al,4fh ;显示出3out dx,almov dx,211h ;让数码管第一位显示mov al,00000001bout dx,almov dx,202h ;C口地址为202hmov al,00011000b ;红灯接PC3,报警out dx,al call ring02 ;并且让扬声器报警CW3: ;复位操作的判断(要求PA6到PA0置低)mov dx,200hin al,dxcmp al,80hjz startingcmp al,00hjz startingjnz CW3wrong04:mov dx,210h ;数码管地址为210hmov al,66h ;显示出4out dx,almov dx,211h ;让数码管第一位显示mov al,00000001bout dx,almov dx,202h ;C口地址为202hmov al,00011000b ;红灯接PC3,报警out dx,alcall ring02 ;并且让扬声器报警CW4: ;复位操作的判断(要求PA6到PA0置低)mov dx,200hin al,dxcmp al,80hjz startingcmp al,00hjz startingjnz CW4wrong05:mov dx,210h ;数码管地址为210hmov al,6dh ;显示出5out dx,almov dx,211h ;让数码管第一位显示mov al,00000001bout dx,almov dx,202h ;C口地址为202hmov al,00011000b ;红灯接PC3,报警out dx,alcall ring02 ;并且让扬声器报警CW5: ;复位操作的判断(要求PA6到PA0置低)mov dx,200hin al,dxcmp al,80hjz startingcmp al,00hjz startingjnz CW5wrong06:mov dx,210h ;数码管地址为210hmov al,7dh ;显示出6out dx,almov dx,211h ;让数码管第一位显示mov al,00000001bout dx,almov dx,202h ;C口地址为202hmov al,00011000b ;红灯接PC3,报警out dx,alcall ring02 ;并且让扬声器报警CW6: ;复位操作的判断(要求PA6到PA0置低)mov dx,200hin al,dxcmp al,80hjz startingcmp al,00hjz startingjnz CW6wrong07:mov dx,210h ;数码管地址为210hmov al,07h ;显示出7out dx,almov dx,211h ;让数码管第一位显示mov al,00000001bout dx,almov dx,202h ;C口地址为202hmov al,00011000b ;红灯接PC3,报警out dx,alcall ring02 ;并且让扬声器报警CW7: ;复位操作的判断(要求PA6到PA0置低)mov dx,200hin al,dxcmp al,80hjz startingcmp al,00hjz startingjnz CW7nextstart:mov dx,200hin al,dxcmp al,0 ;判断A口是否为0jz nextstart ;为0表示还没有人抢答,继续等待,直到有人抢答为止cmp al,00000001bjz right01 ;1号抢答成功cmp al,00000010bjz right02 ;2号抢答成功cmp al,00000100bjz right03 ;3号抢答成功cmp al,00001000bjz right04 ;4号抢答成功cmp al,00010000bjz right05 ;5号抢答成功cmp al,00100000bjz right06 ;6号抢答成功cmp al,01000000bjz right07 ;7号抢答成功right01:mov dx,210h ;数码管地址为210hmov al,06h ;显示出1out dx,almov dx,211h ;让数码管第一位显示mov al,00000001bout dx,almov dx,202h ;C口地址为202hmov al,00010100b ;绿灯接PC2,鸣叫out dx,alcall ring ;并且让扬声器鸣叫CR1: ;复位操作的判断(要求PA6到PA0置低)mov dx,200hin al,dxcmp al,0jz startingcmp al,80hjz startingjnz CR1right02:mov dx,210h ;数码管地址为210hmov al,5bh ;显示出2out dx,almov dx,211h ;让数码管第一位显示mov al,00000001bout dx,almov dx,202h ;C口地址为202hmov al,00010100b ;绿灯接PC2,鸣叫out dx,alcall ring ;并且让扬声器鸣叫CR2: ;复位操作的判断(要求PA6到PA0置低)mov dx,200hin al,dxcmp al,0jz startingcmp al,80hjz startingjnz CR2right03:mov dx,210h ;数码管地址为210hmov al,4fh ;显示出3out dx,almov dx,211h ;让数码管第一位显示mov al,00000001bout dx,almov dx,202h ;C口地址为202hmov al,00010100b ;绿灯接PC2,鸣叫out dx,alcall ring ;并且让扬声器鸣叫CR3: ;复位操作的判断(要求PA6到PA0置低):mov dx,200hin al,dxcmp al,0jz startingcmp al,80hjz startingjnz CR3right04:mov dx,210h ;数码管地址为210hmov al,66h ;显示出4out dx,almov dx,211h ;让数码管第一位显示mov al,00000001bout dx,almov dx,202h ;C口地址为202hmov al,00010100b ;绿灯接PC2,鸣叫out dx,alcall ring ;并且让扬声器鸣叫CR4: ;复位操作的判断(要求PA6到PA0置低)mov dx,200hin al,dxcmp al,0jz startingcmp al,80hjz startingjnz CR4right05:mov dx,210h ;数码管地址为210hmov al,6dh ;显示出5out dx,almov dx,211h ;让数码管第一位显示mov al,00000001bout dx,almov dx,202h ;C口地址为202hmov al,00010100b ;绿灯接PC2,鸣叫out dx,alcall ring ;并且让扬声器鸣叫CR5: ;复位操作的判断(要求PA6到PA0置低)mov dx,200hin al,dxcmp al,0jz startingcmp al,80hjz startingjnz CR5right06:mov dx,210h ;数码管地址为210hmov al,7dh ;显示出6out dx,almov dx,211h ;让数码管第一位显示mov al,00000001bout dx,almov dx,202h ;C口地址为202hmov al,00010100b ;绿灯接PC2,鸣叫out dx,alcall ring ;并且让扬声器鸣叫CR6: ;复位操作的判断(要求PA6到PA0置低)mov dx,200hin al,dxcmp al,0jz startingcmp al,80hjz startingjnz CR6right07:mov dx,210h ;数码管地址为210hmov al,07h ;显示出7out dx,al

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论