微机原理课程设计报告---抢答器的设计

《微机原理及接口技术》

课程设计报告

题目:竞赛抢答器的设计

学 院: 中北大学信息与通信工程 专 业: 小组成员:

指导教师: 丁永红

2008 年 06 月 23 日

1、设计目的

1)了解竞赛抢答器的设计原理和方法。

2)掌握定时/计数器、并行接口芯片和中断控制的工作原理与使用方法。

2、所用元器件

1)80X86系列微机一台。

2)定时、计数器、并行接口芯片。 3)基本TTL电路芯片,七段数码管。

3、设计内容及步骤

1)设计要求

(1)可供4组同时抢答,由按钮控制。

(2)能显示出最先抢答的组号,而对其他组的抢答不予理睬。

(3)对主持人未曾按启动扭之前就按抢答按钮的犯规组,亮红灯警告。 (4)对抢答后的回答时间进行计时控制,如回答超时,则以音响报警。

2) 撰写设计报告

(1)各个硬件模块设计和原理图 (2)各个软件模块设计和流程图

4、硬件设计

1)总体设计

由于本次实验要用到数码显示、中断控制、倒计时等功能,故初步分析,需要8255、8253等芯片。

经过小组成员讨论,认为本实验的关键是准确判断出最先抢答者的信号并锁存,而同时不理睬其他抢答者的信号。为此,可将4个抢答按钮信号通过一个4位并行输入口接至微机中。当主持人启动抢答过程后,微机通过该并行输入口循环对4路抢答信号进行采样。当采样到那一组的抢答信号已经发出,则立即停止采样,并记录下该组的组号,每路抢答按钮电路可以参考下图进行设计。

图1 路抢答按钮电路

由图可知,当4组均未按下抢答按钮时,送入到并行接口的4位抢答状态都是0,而当微机采样到这4位数据不为0时,则表示有一组获得了抢答机会,然后通过逐位口查询个位口状态,即可判断出哪一组抢答成功,最后利用并行输出接口将抢答成功的组号现实出来.在实验中,可以仅用一位7段数码管来显示抢答选手的组号.

为了对抢答后的回答时间进行计时控制,可以利用一个可编程定时计时器,先置计数初值,再计时,当计时时间到后,由并行接口输出一个响铃信号提示抢答选手的回答时间已到。

由于本系统要求对犯规的组亮红灯警告,所以要设置一个启动按键,在主持人按下启动按键之前,如果有抢答钮被按下,则该抢答选手犯规,可以通过并行接口输出一个信号使该组的红色发光二级管点亮以示该组选手犯规。

综上所述,本实验的硬件电路可参考下图3示的硬件结构示意图进行设计。

图2 硬件结构示意图

其中8255与8086连接图如下图

4

图3 8086与8255连接图

实验原理图见附录一。

2)芯片介绍

(1)8255芯片

8255A内部有3个相互独立的8位数据端口,即端口A﹑端口B﹑端口C。设计人员可以用程序是他们分别作为输入端口或输出端口。不过,每个端口有着各自的特点。

端口A对应1个8位数据输入锁存器/缓冲器和1个8位数据输出锁存器/缓存器。所以,用端口A作为输入或输出时,数据均可以受到锁存。

端口B对应1个8位数据输入锁存器/缓冲器和1个8位数据输出锁存器/缓存器。

端口C对应1个8位数据输入锁存器/缓冲器和1个8位数据输出锁存器/缓存器。这样,当端口C作为输入端口时,对数据不作锁存,而作为输出端口时,对数据进行锁存。

在使用中,端口A﹑端口B和端口C可以相互独立,分别作为输入或者输出端口,也可以由端口C配合端口A﹑端口B作输入端口或者输出端口,此时,端口A和端口B作为独立的输入端口或输出端口,而端口C则配合端口A和端口B工作。具体得讲,端口C常常通过控制命令被分成两个4位端口,每个4位端口包含1个4位的输入缓冲器和1个4位的输出锁存器/缓冲器,他们分别用来位端口A和端口B提供控制信号和状态信号。 方式选择控制字

(2)8253芯片

8253的主要性能:8253可编程定时/计数器芯片时Intel公司生产的微型计算机通用外围芯片之一。采用24个引脚,双列直插式封装,其主要特性如下:采用NMOS工艺,用单一的+5V电源供电。片内有3个独立的16位减法计数器(或计数通道),每个计数器又可分为两个8位的计数器。计数频率为0~5MHz。两种计数方式,即二进制和BCD方式计数。6种工作方式,即可对系统时钟脉冲计数实现定时,又可对外部事件进行计数。可由软件或硬件控制开始计数或停止计数。

图4 8253引脚图

5、软件设计

1)主程序设计

实验的软件设计可以分为主程序﹑启动中断服务程序和定时中断服务程序三部分。

启动中断服务程序完成的任务较单一,只需要对启动标志进行记录。例如,可以在主程序中设置一个启动标志并清0,当启动按钮被按下后,系统进入中断服务程序。这时,只需要在中断服务程序中将启动标志置1即可,系统在返回主程序后将查询该标志,以确定抢答是否开始。

在主程序中,当判断有抢答钮被按下时,需要判断启动标志是否为1,如果系统还没有启动,则抢答结果为无效,且判断该抢答组犯规。此时,将通过并行接口送出点亮该组红色发光二极管的信号,提示有犯规行为。另外在主程序中,还要对抢答回答时间进行初始化赋值,当回答开始后,如果回答超时,则要通过并行接口送出响铃警报信息以提示超时。

在定时中断服务程序中,主要是完成对回答问题时间的计时操作时间计数器,当定时器每发一次定时中断时,时间计数器加1。

图5 主程序流程图

2)主程序

显示最先抢答组号及是否犯规程序

AAA:MOV AL,85H ;8255A的方式控制字,A口输出,B口输入

MOV DX,04A6H ;控制口的地址送DX OUT DX,AL ;初始化8255A AA:MOV DX,04A2H

IN AH,DX ;读PC3是否为0

AND AH,40H ;如果为零,说明抢答开始 CMP AH,00H ; JZ AA0 ;PB JNZ AA6

AA0:MOV DX,04A2H ;IN AL,DX

CMP AL,FFH ;JZ AA0 ;CMP AH,FEH ;1JZ AA1

CMP AH,FDH ;2JZ AA2

CMP AH,FDH ;3JZ AA3

CMP AH,F7H ;4JZ AA4 AA1:MOV DX,04A0H

MOV AL,79H ;JMP AA5 AA2:MOV DX,04A0H

MOV AL,24H ;JMP AA5 AA3:MOV DX,04A0H

MOV AL,30H ;JMP AA5 AA4:MOV DX,04A0H

MOV AL,19H ;JMP AA5 AA5:MOV DX,04A6H

IN AH,DX ; OR AH,DFH ; CMP AH,FFH ; JZ AAA JNZ AA5

AA6: MOV DX,04A2H ;IN AL,DX

转到读PB口的程序 口低电平有效 读B口的数据

读PB口值是否为FFH

如果是,表示没人抢答,继续等 号抢答成功 号抢答成功 号抢答成功 号抢答成功 显示1 显示2 显示3 显示4 读PC3是否为1

如果为1说明已复位 转到初始状态,否者等待 读B口的数据

CMP AL,FFH ;读PB口值是否为FFH

JZ AA ;如果是,表示没人抢答犯规,继续等 CMP AH,FEH ;1号抢答犯规 MOV DX,04A6H

MOV AL,09H ;LED1亮

CMP AH,FDH ;2号抢答犯规

MOV DX,04A6H

MOV AL,0AH ;LED2亮

CMP AH,FDH ;3号抢答犯规 MOV DX,04A6H

MOV AL,0DH ;LED3亮 CMP AH,F7H ;4号抢答犯规 MOV DX,04A6H

MOV AL,0FH ;LED4亮 8253初始化程序 AA7:MOV AL,15H ;写方式控制字(设计数器0工作于方式2)

MOV DX,04B6H ;控制口地址

OUT DX,AL ;控制字送8253控制寄存器 MOV DX,04B0H ;计数器0端口地址

MOV AL,60 ;将计数初值N=60写入计数器0 OUT DX,AH

6、心得体会

在这一周的微机原理课程设计里,我们小组完成了竞赛抢答器的设计,基本实现所有功能,通过这短短一周的实践,我们锻炼了自己动手设计软硬件的能力,大家分工明确,合作愉快,虽然我们每个人的分工很细致,但是在编写程序以及调试过程中还是遇到了很多问题,在同组同学和其他同学以及老师的帮助下,我们发现问题的所在,并进行修改,按时完成设计内容。

通过这次课程设计,我们了解到,即使书本上的知识掌握的更好,在将它付诸实践时,还是会遇到各种各样的问题。这次课程设计就是一次对自己所学知识的总结和综合应用,使我们对微机原理这门课程有了更深的了解。

7、参考文献

[1]李顺增,《微机原理及接口技术》,机械工业出版社,2006年第一版 [2] 冯博琴,《微型计算机原理及接口技术》,清华大学出版社 [3]王远,《模拟电子技术》,机械工业出版社

8、任务分工(具体到某些模块)

0506240117 刘轩 负责用七段数码管显示出最先抢答组号 0506240141 孟令章 负责用七段数码管显示出最先抢答组号 0506240107 李影 负责犯规控制 0506240120 葛晶 负责犯规控制 0506240103 侯久俊 负责计时控制 0506240110

于佳 负责计时控制

附录

程序2

;程序名字:抢答器

;功能:用户键(即抢答者):p32,p33;主持人键:p34,

;用法:1.主持人按开启键,以示开始;2.用户抢答,若到了10秒还没有按键就退出;3.显示用户号 ;4.等待主持人清除显示;5.清除后蜂鸣,以示庆祝

xsdat bit p1.4 ;定义驱动74164的数据脚为p1.4

xsclk bit p1.5 ;74164的时钟

gw bit p1.0 ;个位显示控制脚

sw bit p1.1 ;十位

;#############################################

org 00h

ajmp main

org 0bh

ajmp t0rup ;定时10秒钟,预防主持人已经按了开启键后无用户按键而死机

org 1bh

ajmp t1rup ;用于喇叭响0.5秒钟

org 30h

main: mov sp,#4fh

mov r3,#0 ;用于显示

mov r4,#0 ;用于定时,r2:蜂鸣

mov p0,#0ffh

mov p3,#0ffh

mov ie,#8ah

mov tmod,#11h

mov th0,#3ch

mov tl0,#0b0h ;每50ms中断一次

mov th1,#3ch

mov tl1,#0b0h ;每50ms中断一次

mov a,p3

orl a,#11110011b

cjne a,#0ffh,main ;以免有一或多个用户一直按住键

loop0:jb p3.4,loop0

mov p0,#0 ;主持开启键:p3.4,表示抢答开始

setb tr0 ;定时10秒钟,预防主持人已经按了开启键后无用户按键而死机

loop1:cjne r4,#200,ll;检测用户按键,若定时10s时间到了,即结束本次抢答

ajmp main

ll: mov a,p3

orl a, #11110011b

cjne a,#0ffh,ff

ajmp loop1 ;等待用户按键

ff:clr tr0 ;若有用户按键,就清除定时

rrc a

rrc a

loop4:rrc a

inc r3

jc loop4 ;将对应用户按键转化成用户号

nn: acall display

jb p3.4,nn ;等待主持人清除

acall delay

kk: jnb p3.4,kk ;等待主持人放开,以免主持人开启键与清除键相混淆

acall delay

acall fm ;蜂鸣,以做庆祝,同时将p0口全灭

mov p0,#0ffh

ajmp main

;#############################

fm: ;蜂鸣

setb tr1

clr p3.7

loop2:cjne r5,#20,tt

mov r5,#0 ;清零以备下次使用

setb p3.7 ;关闭扬声器,以免使它处于导通状态而不能发声

;用 cpl 反转驱动三极管的通断来发声要注意, ;在停止发声时一定要关闭三极管,不要让三极管长期处在导通状态!

;否则耗电很大,三极管发热严重,从而引起声音变小或无声。

clr tr1

ret

tt: cpl p3.7

mov r1,#122

djnz r1,$ ; 蜂鸣器都有谐振频率,一般在2kHz左右,不在这个范围声音就很小 ajmp loop2

;#############################

t0rup:mov tl0,#0b0h ;用于防死机定时

mov th0,#3ch

inc r4

reti

;###############################

t1rup: ;用于蜂鸣定时

mov tl1,#0b0h

mov th1,#3ch

inc r5

reti

;#############################

display:

MOV DPTR,#XSTAB

MOV A,r3 ;取得数据

MOVC A,@A+DPTR ;提取字模

ACALL DSOUT ;调用送出子程序

CLR GW

ACALL DS1MS ;调用显示1MS延时程序 SETB GW

MOV A,#0

MOVC A,@A+DPTR ;提取字模

ACALL DSOUT ;送出

CLR SW

ACALL DS1MS ;显示1MS

SETB SW

acall delay

ret

;#############################

delay:

mov r6,#00h

dl1: mov r7,#00h

djnz r7,$

djnz r6,dl1

ret

;---送出循环----------

DSOUT:

MOV R0,#8 ;传送一个字节8位

DSLOOP: RLC A ;左移

MOV XSDAT,C ;送数据到数据口

SETB XSCLK ;送一时钟

CLR XSCLK

DJNZ R0,DSLOOP

RET

;---显示延时----------

DS1MS: MOV R1,#10

DS1LO: MOV R2,#100

DJNZ R2,$

DJNZ R1,DS1LO

RET ;延时返回

;---------------------------------------------------------

;显示字表(共阴)

XSTAB: DB 3FH,06H,5BH,4FH ;

DB 7FH,6FH,77H,7CH ;

DB 39H,5EH,79H,71H ;

;****************************************************** end

《微机原理及接口技术》

课程设计报告

题目:竞赛抢答器的设计

学 院: 中北大学信息与通信工程 专 业: 小组成员:

指导教师: 丁永红

2008 年 06 月 23 日

1、设计目的

1)了解竞赛抢答器的设计原理和方法。

2)掌握定时/计数器、并行接口芯片和中断控制的工作原理与使用方法。

2、所用元器件

1)80X86系列微机一台。

2)定时、计数器、并行接口芯片。 3)基本TTL电路芯片,七段数码管。

3、设计内容及步骤

1)设计要求

(1)可供4组同时抢答,由按钮控制。

(2)能显示出最先抢答的组号,而对其他组的抢答不予理睬。

(3)对主持人未曾按启动扭之前就按抢答按钮的犯规组,亮红灯警告。 (4)对抢答后的回答时间进行计时控制,如回答超时,则以音响报警。

2) 撰写设计报告

(1)各个硬件模块设计和原理图 (2)各个软件模块设计和流程图

4、硬件设计

1)总体设计

由于本次实验要用到数码显示、中断控制、倒计时等功能,故初步分析,需要8255、8253等芯片。

经过小组成员讨论,认为本实验的关键是准确判断出最先抢答者的信号并锁存,而同时不理睬其他抢答者的信号。为此,可将4个抢答按钮信号通过一个4位并行输入口接至微机中。当主持人启动抢答过程后,微机通过该并行输入口循环对4路抢答信号进行采样。当采样到那一组的抢答信号已经发出,则立即停止采样,并记录下该组的组号,每路抢答按钮电路可以参考下图进行设计。

图1 路抢答按钮电路

由图可知,当4组均未按下抢答按钮时,送入到并行接口的4位抢答状态都是0,而当微机采样到这4位数据不为0时,则表示有一组获得了抢答机会,然后通过逐位口查询个位口状态,即可判断出哪一组抢答成功,最后利用并行输出接口将抢答成功的组号现实出来.在实验中,可以仅用一位7段数码管来显示抢答选手的组号.

为了对抢答后的回答时间进行计时控制,可以利用一个可编程定时计时器,先置计数初值,再计时,当计时时间到后,由并行接口输出一个响铃信号提示抢答选手的回答时间已到。

由于本系统要求对犯规的组亮红灯警告,所以要设置一个启动按键,在主持人按下启动按键之前,如果有抢答钮被按下,则该抢答选手犯规,可以通过并行接口输出一个信号使该组的红色发光二级管点亮以示该组选手犯规。

综上所述,本实验的硬件电路可参考下图3示的硬件结构示意图进行设计。

图2 硬件结构示意图

其中8255与8086连接图如下图

4

图3 8086与8255连接图

实验原理图见附录一。

2)芯片介绍

(1)8255芯片

8255A内部有3个相互独立的8位数据端口,即端口A﹑端口B﹑端口C。设计人员可以用程序是他们分别作为输入端口或输出端口。不过,每个端口有着各自的特点。

端口A对应1个8位数据输入锁存器/缓冲器和1个8位数据输出锁存器/缓存器。所以,用端口A作为输入或输出时,数据均可以受到锁存。

端口B对应1个8位数据输入锁存器/缓冲器和1个8位数据输出锁存器/缓存器。

端口C对应1个8位数据输入锁存器/缓冲器和1个8位数据输出锁存器/缓存器。这样,当端口C作为输入端口时,对数据不作锁存,而作为输出端口时,对数据进行锁存。

在使用中,端口A﹑端口B和端口C可以相互独立,分别作为输入或者输出端口,也可以由端口C配合端口A﹑端口B作输入端口或者输出端口,此时,端口A和端口B作为独立的输入端口或输出端口,而端口C则配合端口A和端口B工作。具体得讲,端口C常常通过控制命令被分成两个4位端口,每个4位端口包含1个4位的输入缓冲器和1个4位的输出锁存器/缓冲器,他们分别用来位端口A和端口B提供控制信号和状态信号。 方式选择控制字

(2)8253芯片

8253的主要性能:8253可编程定时/计数器芯片时Intel公司生产的微型计算机通用外围芯片之一。采用24个引脚,双列直插式封装,其主要特性如下:采用NMOS工艺,用单一的+5V电源供电。片内有3个独立的16位减法计数器(或计数通道),每个计数器又可分为两个8位的计数器。计数频率为0~5MHz。两种计数方式,即二进制和BCD方式计数。6种工作方式,即可对系统时钟脉冲计数实现定时,又可对外部事件进行计数。可由软件或硬件控制开始计数或停止计数。

图4 8253引脚图

5、软件设计

1)主程序设计

实验的软件设计可以分为主程序﹑启动中断服务程序和定时中断服务程序三部分。

启动中断服务程序完成的任务较单一,只需要对启动标志进行记录。例如,可以在主程序中设置一个启动标志并清0,当启动按钮被按下后,系统进入中断服务程序。这时,只需要在中断服务程序中将启动标志置1即可,系统在返回主程序后将查询该标志,以确定抢答是否开始。

在主程序中,当判断有抢答钮被按下时,需要判断启动标志是否为1,如果系统还没有启动,则抢答结果为无效,且判断该抢答组犯规。此时,将通过并行接口送出点亮该组红色发光二极管的信号,提示有犯规行为。另外在主程序中,还要对抢答回答时间进行初始化赋值,当回答开始后,如果回答超时,则要通过并行接口送出响铃警报信息以提示超时。

在定时中断服务程序中,主要是完成对回答问题时间的计时操作时间计数器,当定时器每发一次定时中断时,时间计数器加1。

图5 主程序流程图

2)主程序

显示最先抢答组号及是否犯规程序

AAA:MOV AL,85H ;8255A的方式控制字,A口输出,B口输入

MOV DX,04A6H ;控制口的地址送DX OUT DX,AL ;初始化8255A AA:MOV DX,04A2H

IN AH,DX ;读PC3是否为0

AND AH,40H ;如果为零,说明抢答开始 CMP AH,00H ; JZ AA0 ;PB JNZ AA6

AA0:MOV DX,04A2H ;IN AL,DX

CMP AL,FFH ;JZ AA0 ;CMP AH,FEH ;1JZ AA1

CMP AH,FDH ;2JZ AA2

CMP AH,FDH ;3JZ AA3

CMP AH,F7H ;4JZ AA4 AA1:MOV DX,04A0H

MOV AL,79H ;JMP AA5 AA2:MOV DX,04A0H

MOV AL,24H ;JMP AA5 AA3:MOV DX,04A0H

MOV AL,30H ;JMP AA5 AA4:MOV DX,04A0H

MOV AL,19H ;JMP AA5 AA5:MOV DX,04A6H

IN AH,DX ; OR AH,DFH ; CMP AH,FFH ; JZ AAA JNZ AA5

AA6: MOV DX,04A2H ;IN AL,DX

转到读PB口的程序 口低电平有效 读B口的数据

读PB口值是否为FFH

如果是,表示没人抢答,继续等 号抢答成功 号抢答成功 号抢答成功 号抢答成功 显示1 显示2 显示3 显示4 读PC3是否为1

如果为1说明已复位 转到初始状态,否者等待 读B口的数据

CMP AL,FFH ;读PB口值是否为FFH

JZ AA ;如果是,表示没人抢答犯规,继续等 CMP AH,FEH ;1号抢答犯规 MOV DX,04A6H

MOV AL,09H ;LED1亮

CMP AH,FDH ;2号抢答犯规

MOV DX,04A6H

MOV AL,0AH ;LED2亮

CMP AH,FDH ;3号抢答犯规 MOV DX,04A6H

MOV AL,0DH ;LED3亮 CMP AH,F7H ;4号抢答犯规 MOV DX,04A6H

MOV AL,0FH ;LED4亮 8253初始化程序 AA7:MOV AL,15H ;写方式控制字(设计数器0工作于方式2)

MOV DX,04B6H ;控制口地址

OUT DX,AL ;控制字送8253控制寄存器 MOV DX,04B0H ;计数器0端口地址

MOV AL,60 ;将计数初值N=60写入计数器0 OUT DX,AH

6、心得体会

在这一周的微机原理课程设计里,我们小组完成了竞赛抢答器的设计,基本实现所有功能,通过这短短一周的实践,我们锻炼了自己动手设计软硬件的能力,大家分工明确,合作愉快,虽然我们每个人的分工很细致,但是在编写程序以及调试过程中还是遇到了很多问题,在同组同学和其他同学以及老师的帮助下,我们发现问题的所在,并进行修改,按时完成设计内容。

通过这次课程设计,我们了解到,即使书本上的知识掌握的更好,在将它付诸实践时,还是会遇到各种各样的问题。这次课程设计就是一次对自己所学知识的总结和综合应用,使我们对微机原理这门课程有了更深的了解。

7、参考文献

[1]李顺增,《微机原理及接口技术》,机械工业出版社,2006年第一版 [2] 冯博琴,《微型计算机原理及接口技术》,清华大学出版社 [3]王远,《模拟电子技术》,机械工业出版社

8、任务分工(具体到某些模块)

0506240117 刘轩 负责用七段数码管显示出最先抢答组号 0506240141 孟令章 负责用七段数码管显示出最先抢答组号 0506240107 李影 负责犯规控制 0506240120 葛晶 负责犯规控制 0506240103 侯久俊 负责计时控制 0506240110

于佳 负责计时控制

附录

程序2

;程序名字:抢答器

;功能:用户键(即抢答者):p32,p33;主持人键:p34,

;用法:1.主持人按开启键,以示开始;2.用户抢答,若到了10秒还没有按键就退出;3.显示用户号 ;4.等待主持人清除显示;5.清除后蜂鸣,以示庆祝

xsdat bit p1.4 ;定义驱动74164的数据脚为p1.4

xsclk bit p1.5 ;74164的时钟

gw bit p1.0 ;个位显示控制脚

sw bit p1.1 ;十位

;#############################################

org 00h

ajmp main

org 0bh

ajmp t0rup ;定时10秒钟,预防主持人已经按了开启键后无用户按键而死机

org 1bh

ajmp t1rup ;用于喇叭响0.5秒钟

org 30h

main: mov sp,#4fh

mov r3,#0 ;用于显示

mov r4,#0 ;用于定时,r2:蜂鸣

mov p0,#0ffh

mov p3,#0ffh

mov ie,#8ah

mov tmod,#11h

mov th0,#3ch

mov tl0,#0b0h ;每50ms中断一次

mov th1,#3ch

mov tl1,#0b0h ;每50ms中断一次

mov a,p3

orl a,#11110011b

cjne a,#0ffh,main ;以免有一或多个用户一直按住键

loop0:jb p3.4,loop0

mov p0,#0 ;主持开启键:p3.4,表示抢答开始

setb tr0 ;定时10秒钟,预防主持人已经按了开启键后无用户按键而死机

loop1:cjne r4,#200,ll;检测用户按键,若定时10s时间到了,即结束本次抢答

ajmp main

ll: mov a,p3

orl a, #11110011b

cjne a,#0ffh,ff

ajmp loop1 ;等待用户按键

ff:clr tr0 ;若有用户按键,就清除定时

rrc a

rrc a

loop4:rrc a

inc r3

jc loop4 ;将对应用户按键转化成用户号

nn: acall display

jb p3.4,nn ;等待主持人清除

acall delay

kk: jnb p3.4,kk ;等待主持人放开,以免主持人开启键与清除键相混淆

acall delay

acall fm ;蜂鸣,以做庆祝,同时将p0口全灭

mov p0,#0ffh

ajmp main

;#############################

fm: ;蜂鸣

setb tr1

clr p3.7

loop2:cjne r5,#20,tt

mov r5,#0 ;清零以备下次使用

setb p3.7 ;关闭扬声器,以免使它处于导通状态而不能发声

;用 cpl 反转驱动三极管的通断来发声要注意, ;在停止发声时一定要关闭三极管,不要让三极管长期处在导通状态!

;否则耗电很大,三极管发热严重,从而引起声音变小或无声。

clr tr1

ret

tt: cpl p3.7

mov r1,#122

djnz r1,$ ; 蜂鸣器都有谐振频率,一般在2kHz左右,不在这个范围声音就很小 ajmp loop2

;#############################

t0rup:mov tl0,#0b0h ;用于防死机定时

mov th0,#3ch

inc r4

reti

;###############################

t1rup: ;用于蜂鸣定时

mov tl1,#0b0h

mov th1,#3ch

inc r5

reti

;#############################

display:

MOV DPTR,#XSTAB

MOV A,r3 ;取得数据

MOVC A,@A+DPTR ;提取字模

ACALL DSOUT ;调用送出子程序

CLR GW

ACALL DS1MS ;调用显示1MS延时程序 SETB GW

MOV A,#0

MOVC A,@A+DPTR ;提取字模

ACALL DSOUT ;送出

CLR SW

ACALL DS1MS ;显示1MS

SETB SW

acall delay

ret

;#############################

delay:

mov r6,#00h

dl1: mov r7,#00h

djnz r7,$

djnz r6,dl1

ret

;---送出循环----------

DSOUT:

MOV R0,#8 ;传送一个字节8位

DSLOOP: RLC A ;左移

MOV XSDAT,C ;送数据到数据口

SETB XSCLK ;送一时钟

CLR XSCLK

DJNZ R0,DSLOOP

RET

;---显示延时----------

DS1MS: MOV R1,#10

DS1LO: MOV R2,#100

DJNZ R2,$

DJNZ R1,DS1LO

RET ;延时返回

;---------------------------------------------------------

;显示字表(共阴)

XSTAB: DB 3FH,06H,5BH,4FH ;

DB 7FH,6FH,77H,7CH ;

DB 39H,5EH,79H,71H ;

;****************************************************** end


相关文章

  • 四人抢答器的实验报告
  • 电气与自动化工程学院课程设计评分表 课程设计题目:微机原理与接口技术课程设计 班级:Y102101 学号:Y10210120姓名:王圣爽 指导老师: 年 月 日 常熟理工学院电气与自动化工程学院 课程设计说明书 课程名称: 微机原理与接口技 ...查看


  • 电子信息类毕业设计课题
  • 电子信息类毕业设计课题 [电子通讯] 出租车计价系统 [过程控制] 基于单片机实现单回路智能调节.. [电子通讯] 脉冲数字频率计 [机床仪表] 仪表机床数控系统的设计(论文.. 磁流体发电论文 [电子通讯] 基于VC++6.0的PC 机与 ...查看


  • 2013八路抢答器课程设计
  • 课程设计报告 课程名称: 微机原理课程设计 题 目: 八路抢答器 学 院: 环境与化学工程 系:过程装备与测控工程 专 业: 测控技术与仪器 班 级: 测仪111 学 号: 学生姓名: 起讫日期:指导教师: 杨俊清.杨大勇 .熊剑 摘要 目 ...查看


  • 多路抢答器课程设计报告
  • 课 程 设 计 说 明 书 题目: 多路抢答器设计 二级学院 年级专业 学 号 学生姓名 指导教师 教师职称 机械工程学院 14级机械设计制造及其自动化 1401210012 曾骏 洪云 讲师 目录 摘要·················· ...查看


  • 单片机 四路抢答器
  • 课程设计说明书 (2009/2010学年第二学期) 课程名称 :题 目 :专业班级 :学生姓名 :学 号 :指导教师 :设计周数 :设计成绩 : 单片机应用课程设计 四路抢答器 电气2班 韩昱 苗敬利 两周(10.6.28-10.07.09 ...查看


  • 09级计科专业毕业设计题目
  • 09级计算机科学与技术专业毕业设计题目指南 说明:1. 每个题目的选择人数最多不能超过2名同学,否则将退回重选.(如题目要求可多 人合作,则以题目要求为准),请各班级同学自行协调解决选题冲突问题. 2.学习委员上报题目请用EXCEL 表格, ...查看


  • 汇编竞赛抢答器的设计与实现实验报告
  • 成绩: 汇编及接口技术课程设计 题目:竞赛抢答器的设计与实现 班 级: 学 号: 姓 名: 时 间: 目 录 一.设计目的----------------------------------------------------------- ...查看


  • [六路抢答器课程设计报告]
  • 级计算机专业(本科)数字逻辑课程 课程设计报告 班 级: 姓 名: 学 号:同组成员: 指导老师: 日 期: 课程设计名称:六路抢答器的设计 课程设计地点:电子工程学院数字电路实验室.计算机学院机房 课程设计目的: 熟悉数字系统设计的一般方 ...查看


  • 自动化课程设计
  • 南 昌 工 程 学 院 课程设计(论文)任务书 I .课程设计(论文) 题目: 基于单片机的8路抢答器设计 II .课程设计(论文) 使用的原始资料(数据) 及设计技术要求: 1.同时供8名选手比赛,分别用8个按钮S0 ~ S7表示. 2. ...查看


热门内容