基于单片机实现智能4路抢答器的设计报告内容摘要:

.0 1 5 uC20 .0 1 5 uX11 2 M H Z 五、软件模块 本系统用了定时器 0和定时器 1。 6 7 开 始是 否 修 改 抢答 时 间。 抢 答 时 间 m a x减 一 倒 计 时 并显 示选 手 1 是 否抢 答。 选 手 2 是 否抢 答。 选 手 3 是 否抢 答。 选 手 4 是 否抢 答。 抢 答 倒 计 时m a x 是 否 为 0。 显 示 抢 答 时间 最 大 值增 量 键 是 否按 下。 抢 答 时 间 加 1减 量 键 是 否按 下。 是 否 按 下 了确 定 键。 抢 答 时 间 减 1YYYNNN显 示 回 答 倒 计 时n u m 并 且 相 应 的选 手 的 L E D 灯 点亮选 手 1 、 2 、3 或 4 是 否 按下 回 答 完 毕键。 N u m 是 否 递减 到 零。 选 手 应 停 止 作答 声 音 响 起 ,超 时 间 L E D 点 亮是 否 按 就 绪键。 显 示 回 答 所 剩时 间是 否 按 就 绪键。 主 持 人 是 否 宣布 开 始 作 答。 初 始 化 显 示YNYYYYYYNNNN选 手 停 止 抢答 , 声 音 响起 , 超 时 L E D 响起是 否 按 复 位键。 NNNNNYYYY四 人 抢 答 器 主 流 程 图惠 州 学 院 东 图 5 6 8 六 、结论 本次设计按照题目要求,基于单片机,利用较合适的控制算法,成功的实现了抢答器的基本功能。 硬件原理结构简单,减少硬件成本和繁琐的电路连接;软件设计方面,设计简单,可塑造性强,便于维护。 因此选择使用单片机实现四人抢答器的设计具有很强的效益,能任意地修改抢答时间,使此抢答器适合在很多场合使用且成本低。 通过此课程设计让我真正的了解到了程序设计的难点所在,难的并不是程序框架的搭建、理论上的思考此方法是否可行、代码的写入、调试其结果,真正难的是在调试的过程中,明明知道是有些问题的,但是又无法锁定问题所在,造成的结果是心理的成就感受到抨击,反复的对可能存在的问题反复修改,一次又一次的修改,可怕的是代码越修越错,结果该不会来。 折腾一段时间后,一不小心才发现开始的时候问题仅仅时非常简单、愚蠢的错误。 从这程序设计过程中不断的提醒我,必须步步为营,步步小心,耐心加细心即等于完美的程序设计的实现。 七、程序代码: //实现功能:四人抢答器 /*只有主持人宣布开始抢 答时,选手才能进行抢答,抢答有一定的时间限制,超过一定时间就会出现报警声。 选手回答时必须在规定的时间里面回答,否则就会出现报警声 数码管会显示时间 各通道的规定: 抢答时间是可以设置的 */ include include define uint unsigned int define uchar unsigned char sbit beep=P3^6。 //making voice(低电平有效) sbit LED1=P2^7。 //petitor 1(低电平有效) sbit ONE=P1^0。 //(高电平有效) sbit LED2=P2^6。 //petitor 2(低电平有效) sbit TWO=P1^1。 //(高电平有效) sbit LED3=P2^5。 //petitor 3(低电平有效) sbit THREE=P1^2。 sbit LED4=P2^1。 //petitor 4 sbit FOUR=P1^3。 sbit LED5=P2^0。 //host announced beging sbit HOST=P1^5。 //低电平有效 sbit OVER=P3^7。 //overtime sbit CHANG=P1^4。 //change the overtime(低电平有效) sbit UP=P1^6。 //(低电平有效) sbit DOWN=P1^7。 //低电平有效 sbit LS138A = P2^2。 //定义译码器输入端 A 在 管脚上 6 9 sbit LS138B = P2^3。 //定义译码器输入端 B 在 管脚上 sbit LS138C = P2^4。 //定义译码器输入端 C 在 管脚上 static uint max1=10,num1=20。 uint max,num,temp,tt=0,dd=0x00。 //max用于表示选手抢答的时间 //uint i,LedNumVal=1。 //uint LedOut[10]。 unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}。 void delay(uint x)。 void display(uint Key_Val)。 void change()。 void press(void)。 void time1_max()。 void time0_num()。 //unsigned long uint LedOut[5],LedhdsjVal。 void display(uint Key_Val) { uchar i。 /********以下将键值送到 LED数码管显示 *************/ LedhdsjVal=Key_Val。 //把键值送到 LedhdsjVal变量中。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。