《一款基于单片机控制的多路数字抢答器.doc》由会员分享,可在线阅读,更多相关《一款基于单片机控制的多路数字抢答器.doc(17页珍藏版)》请在三一办公上搜索。
1、目 录1 前言12 需求分析121原理122要求123任务124运行环境125开发工具13 概要设计231系统流程图232定时计数流程图333编号显示流程图434译码显示子程序535延时子程序536外部中断0程序64详细设计641设计思想642设计分析643设计实现源程序744设计测试结果125 课程设计的总结与体会15参考文献资料16致谢161前言现在社会中很多活动需要多个选手参加并竞争,其中抢答器是应用较多也较为广泛的工具之一。结合现实,设计一款基于单片机控制的多路数字抢答器,并满足一定得功能。2 需求分析21原理(1).74LS147译码器和80C51对选手的编号进行一一对应的显示(2)
2、.用80C51的内部时钟脉冲进行定时计数。(3).七段译码显示器显示时间和选手编号。(4).利用80C51的外部中断0来控制开启。22要求(1).抢答器可供多名(大于2)选手或队伍参加比赛。(2).抢答器分为选手控制端和主持人控制端。(3).主持人端控制抢答开始并进行系统清零。(4).当主持人启动开始键后,显示器上显示抢答倒计时。(5).参赛选手在设定的时间内进行抢答,抢答有效,显示器转而显示优先抢答的选手编号,同时亮灯提示。显示一直保持到主持人将系统清零为止。(6).如果设置的抢答时间已到,无人抢答,则本次抢答无效,系统报警并禁止抢答,显示器上显示00。(7).每次抢答完成后主持人可手动使系
3、统清零。23任务设计一款基于单片机控制的多路数字抢答器,并满足要求功能。24运行环境电子技术综合实验系统和电子通信与自动化创新实验系统。25开发工具个人计算机;PROTEUS仿真软件、伟福软件等。3 概要设计31系统流程图 图 3.132定时计数流程图 图 3.233编号显示流程图图 3.334译码显示子程序loop: mov a,p1 ;读取P1口数据 cjne a,#0f0h,loop1 ;比较a与0f0h,相等执行下一条 ;否则,跳转至loop1处 sjmp start ;返回开始loop1: jb p3.6, loop2 ;判断P3.6口,P3.6口为0,执行下一条 ; 否则,跳转至L
4、OOP2处 clr p3.3 ;点亮LED anl a,#0fh ;屏蔽高4位 mov dptr,#tab ;建表 movc a,a+dptr ;查表loop12: mov p2,a ;将查表所得值赋给P2 jb p3.5,stop jnb p3.1,start ;时间过,停止 jb p3.6, loop2 sjmp loop1235延时子程序time: mov r3,#14h ;延时1秒lp1: mov tmod,#01h mov th0,#3ch mov tl0,#0b0h setb tr0lp2: jbc tf0,loop1 sjmp lp2loop1: djnz r3,lp1 ;循环2
5、0次,即1秒 ret ;子程序返回3. 6外部中断0程序org 0003h ljmp rest ;外部中断的调用setb ex0 ;外部中断0开启 setb it0 setb ea4详细设计41设计思想 多人抢答时,对其抢答者编号,根据显示的抢答编号确定抢答者。在有效时间内,抢答有效,有选手抢答时LED点亮,显示优先按下抢答器对应的编号,同时屏蔽其他抢答按钮。时间到,扬声器报警,同时关闭抢答器。无效时间内,若有选手无规按钮,LED一直亮以示提醒。42设计分析(1).多人对号抢答显示,用译码器74LS147。mov a,p1 ;读取P1口数据cjne a,#0f0h,loop1 ;比较a与0f0
6、h,相等执行下一条 ;否则,跳转至loop1处anl a,#0fh ;屏蔽高4位(2).显示编号和定时计数时间采用查表:mov dptr,#tab ;建表movc a,a+dptr ;查表tab: db 3h,06h,5bh,4fh, ;所建表 db 66h,6dh,7dh,07h,7fh (3).主持人开启键,采用外部中断法: setb ex0 ;外部中断0开启 setb it0 setb ea43设计实现源程序 (1). U180C51的功能是对抢答者编号显示,和控制整个抢答过程。其程序如下:org 0 ;程序执行开始地址 ljmp start ;跳至start执行 org 0003hlj
7、mp rest ;外部中断的调用org 0030hstart: mov sp,#60h ;建立堆栈mov p2,#00h ;关闭显示器stop1: jnb p3.5,stop ;开启抢答器setb p3.0 ;关计时器setb p3.3 ; 熄灭LEDsjmp startstop:clr p3.0 ;开计时器setb ex0 ;外部中断0开启setb it0setb eaclr p3.6 ;清零P3.6口jb p3.6, loop2 ;判断P3.6口,P3.6口为0,执行下一条; 否则,跳转至LOOP2处lcall loop ; 调用子程序loopsjmp start ; 返回开始loop:m
8、ov a,p1 ;读取P1口数据cjne a,#0f0h,loop1 ;比较a与0f0h,相等执行下一条 ;否则,跳转至loop1处sjmp start ;返回开始loop1:jb p3.6, loop2 ;判断P3.6口,P3.6口为0,执行下一条; 否则,跳转至LOOP2处clr p3.3 ;点亮LEDanl a,#0fh ;屏蔽高4位mov dptr,#tab ;建表movc a,a+dptr ;查表loop12: mov p2,a ;将查表所得值赋给P2jb p3.5,stopjnb p3.1,start ;时间过,停止jb p3.6, loop2 ;判断P3.6口,P3.6口为0,执
9、行下一条; 否则,跳转至LOOP2处sjmp loop12loop2: setb p3.3 ; 熄灭LEDjb p3.5,stop ;开启抢答器jnb p3.1,startsjmp startrest: cpl p3.6 ;将p3.6口取反reti ;中断调用返回tab: db 3fh,06h,5bh,4fh, ;所建表db 66h,6dh,7dh,07h,7fhsjmp startend ;结束程序(2). U480C51的功能是显示、控制时间。其程序如下:org 00h ;程序执行开始地址ljmp start ;跳至start执行org 30hstart: mov sp,#60hmov p
10、1,#00h ;熄灭显示时间mov p2,#00hjb p3.0,start ;开始计时mov p2,#3fh ;定时60秒mov p1,#7dhlcall timemov r4,#00hhao1: ;每十秒减一mov dptr,#tabmov a,#04h待添加的隐藏文字内容1add a, r4movc a,a+dptr ;查表mov p1,a ;显示十位inc r4cjne a,#01h, s1 ;计时时间判断ljmp stop1loop: ; 每一秒减一mov dptr,#tabs1: mov a,#00hmovc a,a+dptrcjne a,#01h,s2lcall hao1 ;调用
11、延时ljmp loops2: mov p2,a ;显示个位jb p3.0,start ;判断计时lcall timeinc dptrljmp s1time: mov r3,#14h ;延时1秒lp1: mov tmod,#01hmov th0,#3chmov tl0,#0b0hsetb tr0lp2: jbc tf0,loop1sjmp lp2loop1: djnz r3,lp1rettab: db 6fh,7fh,07h,7dh,6dh,66h, ;表db 4fh,5bh,06h,3fh,01hstop1: clr p0.0 ;时间到报警clr p3.1 ;关抢答器mov p2,#3fh ;
12、关显示器mov p1,#3fhsjmp $end ;结束程序44设计测试结果 (1). 电路连接图根据设计要求,连接下图说明:只有开启键按下连通时,计数开始,同时选手抢答。图 4.1(2). 调试结果图 .有效时间内有选手抢答电路显示图 说明:当在有效时间内,有选手抢答时,对应的编号被显示,同时LED亮。按复位键后重新开始。图 4.2. 有效时间内无选手抢答电路显示图说明:当有效时间过后,时间显示器显示00,扬声器报警,抢答无效。图 4.3. 无效时间内选手按抢答器电路显示图说明:在无效时间内,若有选手无规抢答,LED会警告,一直亮。关掉开启键后复位。 图 4.45课程设计的总结与体会通过这次
13、单片机课程设计,我学到了许多新的知识,并且将这些知识应用在实践中,锻炼了自己的动手能力,但也发现了一些问题。(1).对于出现的调试错误要仔细分析错误原因,尤其是细节。只要做够细心,就一定能够找到错误所在。例如我在编程中有些问题没达到我理想的效果,我改了很久,就是没有找出错误,后来改变下程序的顺序,问题就解决了。(2).编程过程中加入必要的注释十分重要,这不仅是为了别人能够更容易看懂你的程序,更重要的是自己未来修改方便。在我的程序里面我就加入了不少注释,在后 来的调试和修改错误时很方便。(3).要善于利用各种资源,提高自己的编程效率。我在编程之前,我就仔细看了一遍教科书,对书中的知识点进行梳理,后来也上网查找了许多资料,大大丰富了我的编程思路。参考文献:1 张俊谟. 单片机中级教程原理与应用. 北京:北京航空航天大学出版社,2008.2 何桥,段清明,邱春玲单片机原理与应用北京:中国铁道出版社,2005.3 张克农数字电子技术基础北京:高等教育出版社,2008. 致 谢这次课程设计的完成,我首先要感谢我的指导老师陈老师,是他指明了我编程思路和方向。其次,我还要感谢张刘飘同学,在我编程过程中,她给我提出了许多建议。再次感谢帮助过我的老师和同学!