课程设计-单片机原理基于单片机的八路抢答器设计内容摘要:

间剩余 5秒时,蜂鸣器发出声响,直到时间为零时,恢复初始状态。 6)有选手违规抢答是,出现下图(图 f)的结果: 图 .f 如果有选手在主持人还未按下“开始”键就做抢答,显示管将显示出该选手的号码,同时开始闪烁,蜂鸣器发出声响。 六、心得体会 开始选择课程设 计题目是,看见这个题目觉得挺好弄得,但是想的总是美好的。 这次课程设计的仿真工具是从来没有使用过,是在老师和同学的指导下学会的,结合单片机设计电路更是从来没有接触过,但是没有办法,所以通过上网或去图书馆查阅资料了解了一些,经过两个星期的设计,从开始的什么都不会,慢慢的自己会更改电路,会仿真,导入程序后会自己进行一些修改。 虽然不是很系统的学习这些,但是基本的操作已经了解了。 通过这次课程设计,我们意识到,要想设计出好的电路,必须清楚明白的知道题目所要表达的意思,并且要了解各种元器件的用途,这次设计综合了我们所学 15 习 过的知识,也对这些知道进行了一定的扩展了解,这些对我们是很有帮助的。 七、参考文献 ( 1)吴亦峰,陈德为,单片机原理与接口技术,电子工业出版社, 2020 ( 2)程相波,卫安军,基于 MCS-51单片机的八路抢答器设计方法研究【 J】,北京工业职业技术学院学报 2020, 6( 2) 16 附录: 定时器 T1时间初值,设 50ms 时间初值为 X,X 的计算方法为 X=( 2 ^1650*10^3),X=15536D=3CB0H OK EQU 25H。 抢答开始标志位 RING EQU 27H。 响铃标志位 DATA0 EQU 40H。 抢答按键口数据存放地址 ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 001BH AJMP T1INT MAIN: MOV R1,30。 初设抢答时间为 30s MOV R2,60。 初设答题时间为 60s MOV TMOD,10H。 设置未定时器方式 2 MOV TH0,0ECH MOV TL0,0FFH。 越高发声频率越高 ,越尖 MOV TH1,3CH MOV TL1,0B0H。 50ms 为一次溢出中断 SETB EA SETB ET0 SETB ET1。 允二个中断 ,T0/T1 CLR OK CLR RING SETB TR1 SETB TR0。 =====查询 程序 ===== START: MOV DATA0,0FFH。 初始化 MOV R5,0BH MOV R4,0BH MOV R3,0BH ACALL DISPLAY。 未开始抢答时候显示 P00 JB ,NEXT ACALL DELAY JB ,NEXT。 抖动 ,如果 开始 键 按下就向下执行 ,否者跳到非法抢答查询 ACALL BARK MOV A,R1 MOV R6,A。 送 R1R6,因为 R1 中保存了抢答时间 SETB OK。 抢答标志位 ,用于 COUNT 只程序中判断是否查询抢答 MOV R3,0AH。 抢答只显示计时 ,灭号数 17 AJMP COUNT。 进入倒计时程序 ,查询有效抢答的程序 在 COUNT 里面 NEXT: JNB ,FALSE1 JNB ,FALSE2 JNB ,FALSE3 JNB ,FALSE4 JNB ,FALSE5 JNB ,FALSE6 JNB ,TZ1 JNB ,TZ2 AJMP START TZ1: JMP FALSE7 TZ2: JMP FALSE8。 =====非法抢答处理程序 ===== FALSE1: ACALL BARK。 按键发声 MOV R3,01H AJMP ERROR FALSE2: ACALL BARK MOV R3,02H AJMP ERROR FALSE3: ACALL BARK MOV R3,03H AJMP ERROR FALSE4: ACALL BARK MOV R3,04H AJMP ERROR FALSE5: ACALL BARK MOV R3,05H AJMP ERROR FALSE6: ACALL BARK MOV R3,06H AJMP ERROR FALSE7: ACALL BARK MOV R3,07H AJMP ERROR FALSE8: ACALL BARK MOV R3,08H AJMP ERROR。 =====倒计时程序 (抢答倒计时和回答倒计时都跳到该程序 )===== COUNT: MOV R0,00H。 重置定时器中断次数 MOV TH1,3CH 18 MOV TL1,0B0H。 重置定时器 RECOUNT: MOV A,R6。 R6 保存了倒计时的时间 ,之前先将抢答时间或回答时间给 R6 MOV B,0AH DIV AB。 除十分出个位 /十位 MOV 30H,A。 十位存于 (30H) MOV 31H,B。 个位存于 (31H) MOV R5,30H。 取十位 MOV R4,31H。 取个位 MOV A,R6 SUBB A,07H JNC LARGER。 大于 5s跳到 LARGER,小于等于 5s 会提醒 MOV A,R0 CJNE A,0AH,FULL。 1s 中 向下运行 CLR RING AJMP CHECK FULL: CJNE A,14H,CHECK。 下面是 1s 的情况 ,响并显示号数并清 R0,重新计时 SETB RING MOV A,R6 JZ QUIT。 计时完毕 MOV R0,00H DEC R6。 一秒标志减 1 AJMP CHECK LARGER: MOV A,R0 CJNE A,14H,CHECK。 如果 1s向下运行 ,否者跳到查 停 /显示 DEC R6。 计时一秒 R6自动减 1 MOV R0,00H CHECK: JNB ,QUIT。 如按下停止键退出 ACALL DISPLAY JB OK,ACCOUT。 如果是抢答倒计时 ,如是则查询抢答 ,否者跳过查询继续倒数 (这里起到锁抢答作用 ) AJMP RECOUNT ACCOUT: MOV A,DATA0 JNB ,TRUE1 JNB ,TRUE2 JNB ,TRUE3 JNB ,TRUE4 JNB ,TRUE5 JNB ,TRUE6 JNB ,TZ3 JNB ,TZ4 AJMP RECOUNT TZ3: JMP TRUE7 TZ4: JMP TRUE8 19 QUIT: CLR OK。 如果按下了 停止键 执行的程序 CLR RING AJMP START。 =====正常抢答处理程序 ===== TRUE1: ACALL BARK MOV A,R2 MOV R6,A。 回答时间 R2送 R6 MOV R3,01H CLR OK。 因为答题的计时不再查询抢答 ,所以就锁了抢答 ,回答倒计时开始 . AJMP COUNT TRUE2:ACALL BARK MOV A,R2 MOV R6,A MOV R3,02H CLR OK AJMP COUNT TRUE3:ACALL BARK MOV A,R2 MOV R6,A MOV R3,03H CLR OK AJMP COUNT TRUE4:ACALL BARK MOV A,R2 MOV R6,A MOV R3,04H CLR OK AJMP COUNT TRUE5: ACALL BARK MOV A,R2 MOV R6,A MOV R3,05H CLR OK AJMP COUNT TRUE6: ACALL BARK MOV A,R2 MOV R6,A MOV R3,06H CLR OK AJMP COUNT TRUE7: ACALL BARK MOV A,R2 20 MOV R6,A MOV R3,07H CLR OK AJMP COUNT TRUE8: ACALL BARK MOV A,R2 MOV R6,A MOV R3,08H CLR OK AJ。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。