1、附录二 程序清单11 引言目前各种各样得竞赛越来越多,无论就是学校、工厂、军队还就是益智性电视节目,其中用到抢答器得概率非常大.目前很多抢答器基本上采用小规模数字集成电路设计,使用起来不够理想。因此设计一款更易于使用与区分度高得抢答器成了非常迫切得任务。现在单片机已进入各个领域,以其功耗小、智能化而著称。所以若利用单片机来设计抢答器,便使以上问题得以解决.针对以上情况,本课程设计出以T89C1单片机为核心得八路抢答器.它能根据不同得抢答输入信号,经过单片机得控制处理并产生不同得与输入信号相对应得输出信号,最后通过液晶显示屏显示相应得路数与答题时间以及各项命令等,使竞赛真正达到公正、公开、公平。
2、2 设计任务与要求概述2、1 题目路比赛抢答器2、2设计任务利用051单片机中断系统,制作一个有8个按键得比赛抢答器,可供8名选手比赛得抢答,每组设置一个抢答按钮,按钮得编号与选手得编号对应,主持人设置控制开关,用来控制系统得清零与抢答得开始,在有人按键时进行对应选手显示。2、3 设计要求1 完成系统得硬件电路设计与软件设计;2 采用汇编或C语言编程;3 采用rteus、Kei等软件实现系统得仿真调试;4 论文要求思路清晰,结构合理,语言流畅,书写格式符合要求。、4 设计目得1 综合运用相关课程中所学得理论知识去完成这一设计课题.2 通过查阅手册与相关文献资料,培养自己独立分析与解决问题得能力
3、。进一步熟悉单片机与常用接口电路,加深对专业知识与理论知识学习得认识与理解。4 学会电路得设计与程序得调试。 学会撰写课程设计论文。6培养严肃认真得工作作风与严谨得科学态度。 方案总体设计3、1 方案3、1、 控制芯片我们采用系列单片机T89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能得实现。单片机技术比较成熟,应用起来方便、简单并且单片机周围得辅助电路也比较少,便于控制与实现。整个系统具有极其灵活得可编程性,能方便地对系统进行功能得扩张与更改。CS51单片机特点如下:a、可靠性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般得PU,程序指令与数据都可以写在RM里,
4、许多信号通道都在同一芯片,因此可靠性高,易扩充。b、单片机有一般电脑所必须得器件,如三态双向总线,串并行得输入及输出引脚,可扩充为各种规模得微电脑系统.c、控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富得条件分支跳跃指令。3、1、2显示方式在实现基本功能时,我们采用了四位数码管显示,后两位显示倒计时时间,第一位显示抢答组号,第三位置空,在此基础上还在程序里加了更改抢答时间与倒计时时间得模块,也可通过数码管显示,成为一个比较完整得系统。后来在实现拓展功能时,我们想加入语音显示得模块,发现protus软件无法仿真,就改为用液晶显示屏1602显示.1602液晶显示屏也叫1602字符
5、型液晶,它就是一种专门用来显示字母、数字、符号等得点阵型液晶模块162液晶模块内部得字符发生存储器(CGOM)已经存储了160个不同得点阵字符图形,这些字符有:阿拉伯数字、英文字母得大小写、常用得符号、与日文假名等,每一个字符都有一个固定得代码,它可以通过简短得英文提示与数字使人明确瞧到比赛进行得整个过程。3、3 程序语言得选择一开始实现基本功能时,使用数码管作为显示,采用了汇编语言,比较高效,条理也清晰;后来做拓展功能时改用液晶显示屏显示,发现液晶显示屏使用c语言编程更便捷高效,就整体使用了c语言。3、 原理框图图3、1 原理框图4硬件电路设计4、 抢答器得工作原理 用单片机得两个外部中断作
6、为修改时间得选择按钮,选择修改抢答倒计时时间还就是回答问题时间;用定时器1作为时间得控制.4、2 单元电路设计4、2、 抢答器电路该电路有八个按钮分别接于1、0P1、7可实现两个功能:一就是分辨出选手按键得先后,并锁存优先抢答者得编号,同时译码显示电路显示编号;二就是禁止其她选手按键操作无效.如有再次抢答需由主持人将S开关重新置,“清除然后再进行下一次抢答。如图4、1图4、1 抢答器电路4、2 发声电路设计用P3、6口与扬声器相连,主持人将控制开关拨到开始”位置时,会发声,抢答电路与定时电路进人正常抢答工作状态;当参赛选手按动抢答键时,扬声器发声,抢答电路与定时电路停止工作.如图4、24、 开
7、始、复位按键输入电路得设计复位就是计算机得一个重要工作状态。开始与复位键分别接于P3、与P3、1口,在单片机工作时,接电之前,断电后也要复位。在抢答器中复位则为定时做铺垫,在抢答之前要复位,抢答完也要复位。按了复位键,显示屏得状态就是“start”。如图4、3 图、2 发声电路 图4、 开始、复位电路、2、4 时钟震荡电路CPU得操作需要精确得定时,可用一个晶体振荡器产生稳定得时钟脉冲来控制AT89C5单片机上得XTAL1与XAL2分别为振荡电路得输入与输出。如图4、4、2、 设定时间、加减时间电路设计该电路主要就是对答题时间与抢答时间调整设计得,抢答时间接P3、2,答题时间接P、3,加一秒接
8、P3、4,减一秒接P、5.如图4、5图4、4时钟振荡电路 图、5加减时间电路4、2、6 显示电路得设计本系统通过液晶显示屏来显示各提示信息.如图4、6图4、6 显示时间电路5软件设计5、1 抢答器工作流程为了能够达到抢答得公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答得时间,因而在编开始抢答前得程序得先编写设定时间得程序,当时间设好了之后,主持人发布抢答命令按下P3、0按键,程序开始打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。当在扫描到有人按下了答题键,马上关闭、调用显示程序、封锁键盘。接通电源后,液晶显示屏显示“Ready,抢答器处于禁止状态,处于等待开始
9、状态,此时有人抢答,会显示“error,也可以调整抢答时间与回答问题时间,;主持人将开关置,“开始”状态,宣布“开始抢答器工作,显示屏显示“!”,扬声器给出声响提示,定时器倒计时;选手在定时时间内抢答时,抢答器完成,显示组号,并且倒计时,时间到扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间.如果再次抢答必须由主持人再次操作开始、停止状态开关。5、 流程框图图、 流程框图6 电路仿真调试6、上电准备状态图、1 上电准备状态、2开始抢答图6、2开始抢答、3 非法抢答图6、3 非法抢答6、4 正常抢答图6、 正常抢答7 实验仪器及元器件清单表7-1 实验仪器及元器件清单器件
10、名称规格型号数量微处理器AT9C511极性电容uF电阻(排阻)ESPACK89电容0u2晶振12MHZ按钮15液晶显示屏LM020L扬声器BUZER设计总结 通过这次课程设计,我更进一步地认识了抢答器得工作原理,掌握了它得调整及测试方法。本系统通过采用AC1单片机作为核心,以八个按键输入抢答信号,以液晶显示屏显示,根据烧录到单片机中得程序控制整个系统得工作流程,整体性好,效率高,实现了抢答器得智能化。在这过程之中也遇到了一些问题,比如对汇编语言理解还不够,将其转化为C语言时在时序上出现一些问题,还有语言基础也需要加强,编程能力有待提高。9 致谢通过此次得课程设计,让我更进一步得巩固了单片机得各
11、种知识。但在设计得过程中,遇到了很多得问题,有一些知识已经不太清楚了,但就是通过一些资料又重新得翻阅并且认真得复习了相关教科书中得内容.此次得课程设计树立了对自己工作能力得信心,相信会对今后得学习工作生活都有非常重要得影响,而且大大得提高了动手能力,使我充分得体会到了创造过程中得探索得艰难与成功得喜悦。虽然这次做出得作品还存在很多需要改进得地方,但就是在整个设计过程中所学习到得东西就是这次实训所得到得最大收获跟财富,使我终身受益.最后,我要感谢指导老师老师与杨浩辉同学在我将系统得汇编语言改为语言时对我无私得帮助。0 参考文献【1】戴梅蕚 史嘉权编著,微型计算机技术及应用(第四版)清华大学出版社
12、,北京,08、3【2】(美)rue Ecke 著陈昊鹏 译JAV编程思想(第四版),机械工业出版社,北京,2、6(1、1重印)【】冯博琴 吴宁 主编,微型计算机原理与接口技术(第三版),清华大学出版社,北京密云胶印厂,011、【4】张毅刚等 编著,新编MC51单片机应用设计(第三版),哈尔滨工业大学出版社,哈尔滨东林印务有限公司,08、4附录一 系统电路图图附录 系统电路图附录二 程序清单#incude1、 /包含单片机得头文件nldeintrins、h /包含_o()函数定义得头文件bitRS=P0; /寄存器选择位,将位定义为P2、引脚sbit R=P21; /读写选择位,将RW位定义为2
13、、1引脚sitE=2;sbit n=P3;sbit statP;st ok3; sbit dd=P34;sbit s=P5;i D0P10;sbit D=11;sit 2=2;sbi D=13;bi4=14;sbtD5=15;sbit D6=P16;sbit D7=17;uniged cha nm=0;unsigned chaa=0,60,n=0,qd,d;vid disay();vod delay1ms() igned chari,; fr(;i10;i+) fo(j=;j;j+) ;od dey(siedcha n) unigned chari; fr(i;in;+) delay1();v
14、oid nopp(nsned chr n) unsignd hari;or(i=;in;i+) _nop_();bitcd_bz() b reult; RS0; 根据规定,R为低电平,W为高电平时,可以读状态 RW=; E; /E=1,才允许读写nop(4); /空操作四个机器周期,给硬件反应时间 resu(bt)(P0080); /将忙碌标志电平赋给esul E=0; returnrest;vod rieInsruio (unigne ha ctate) hie(lcd_z()=1); /如果忙就等待 RS=0; /根据规定,与R/同时为低电平时,可以写入指令 RW=; ; /置低电平 no
15、pp(2); /空操作两个机器周期,给硬件反应时间 Pdtt; /将数据送入P0口,即写入指令或地址 np(4); /空操作四个机器周期,给硬件反应时间 E1; /E置高电平(正跳变) nopp();/空操作四个机器周期,给硬件反应时间 =; /当由高电平跳变成低电平时,液晶模块开始执行命令id WrteDat(nigne char ) whle(lcd_bz()=1); RS=; /RS为高电平,RW为低电平时,可以写入数据 =0; =1; /E置低电平 0=y; /将数据送入P0口,即将数据写入液晶模块 nopp(4);/空操作四个机器周期,给硬件反应时间 E=; /置高电平(正跳变) n
16、opp(4);/空操作四个机器周期,给硬件反应时间 E0; /当由高电平跳变成低电平时,液晶模块开始执行命令voi LInitiae(voi) deay(5); /延时5m,首次写指令时应给CD一段较长得反应时间 Writesruction(030); /显示模式设置:8位数据,162显示,点阵, dely(); /延时5ms WiteInstrcion(0x38); ea(); iteIstucion(0x0c); /显示模式设置:显示开,有光标,光标闪烁 de(5); WreInstruction(0x6); /显示模式设置:光标右移,字符不移 ela(5); WriteInsrti(0x
17、01); /清屏幕指令,将以前得显示内容清除 ey();vodDilay(unsigned charsrg) unsigd hr i; =0; while(sri != 0) 显示字符 WteData(srngi); i+; /voidbark() rig=; dy(1); r=;*/oianer() ri=1; ela(0); rng=0; Wriestruction(01); elay(1); Display(” o! ); TR11 ; qd=1; =a; wil(1) /TR=; f(!D0)n=1;break; if(!D1)2; brk; i(!D2)n3; beak; i(!D)
18、=; bek; i(!D)n5; break; D5)n=; brea;6)=; beak; f(!7)=8; ak;rteInstti(0x01); sch(n) ae 1:Dilay( ner:1);hd=1;brea; case 2:Displa( numbe:2 ”);hd=;brea; cas 3:Display(” nuer: );break; cs 4:Display( number:4);d=1; case :Dplay(” numr:5 );=1;rea; ae6:isay(mbe:6 );beak; case 7:ipla( numbe:7 );hd=1; case 8:D
19、ispla( uer:8 );h1;break; n=0; /iItructio(00); dly(5000); d=b; hile(d+1) ; oi islay() unsigne tm=0x20,,0; unsigd cha ,b1;a1=/10;tm1=a1+0x30;b1;tm=b1+x; iteItrucion(x0);deay(1); Display(tm);vi mai(void) /主函数 TMOD=0X11; /选择定时器方式1 TH0=0X00; /给定时器赋处置 T0=0XF; 1=03C; 10XB0; EA=; ET1=1; /开总中断 EX0=; E0=1; X1
20、=; TR1=1; LcIntiate(); /调用LC初始化函数 Display(”ready、 wile(1) f(trt) i(!(D0&1D2&D&D45DD7) WiteIntruction(01); delay(1); Dslay(erro ”); rig=; day(500); g0; delay(50); WteInstruction(001); else an(); void In0()interru 0 /中断服务程序 WrIstution(00); isay( stting qd_tm”); ay(0); WriteInstrction(x0); a;displa();
21、whie(1) if(!ad) a+; da; dislay(); delay(0); else if(!sub) a;a; dspa(); dey(00); f(!ok) be; oi T0_time() itrrupt 1 /中断服务程序 TH0=X00; TL0XFF; rin0; vo nt()nterut 中断服务程序WrInstrucion(x01); deay(1);Dsplay( setnghdm”); dely(1000); WriteInstucion(0x01); d=b;pla(); wie(1) if(!add) b+; db; dply(); dly(500); lse if(!su) b;=; displa(); dela(00); if(!o)void T_timr() iterut3 /中断服务程序 TH1=0X3C; /重装初值 L1=0XB0; num+; if(nm=20) num=0; dspla(); d-; if(d=) R1= ; rig=1;delay(50);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1