《单片机原理及应用》课程设计报告--基于单片机的8组抢答器设计.doc_第1页
《单片机原理及应用》课程设计报告--基于单片机的8组抢答器设计.doc_第2页
《单片机原理及应用》课程设计报告--基于单片机的8组抢答器设计.doc_第3页
《单片机原理及应用》课程设计报告--基于单片机的8组抢答器设计.doc_第4页
《单片机原理及应用》课程设计报告--基于单片机的8组抢答器设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理及应用课程设计报告学 院: 源与动力工程学院_班 级:_建电1001_目 录任务书1第一章方案设计2第二章硬件系统设计3第三章软件设计4第四章系统调试5小 结6附录1:原理图7附录2:源程序8单片机原理及应用课程设计任务书题 目:基于单片机的8组抢答器设计设计要求:(1)抢答人数为八组,即有八个抢答按键,以及主持人复位按钮。(2)每次抢答有声音提示,提示显示抢答组号。第一章 方案设计主要设计内容如图所示复位电路:当一轮进行完时,由主持人按下,下一轮开始,复位电路接P3.2口。独立式按键键盘:用于输入高低电平,连接到P2口,由P2口检测电平的变化。选手组别显示电路:有1位数码管组成,显示成功抢答选手编号。蜂鸣电路:有选手抢答成功,P3.5口发出脉冲,使蜂鸣器发出声音。蜂鸣电路AT89C51复位电路/主持人案件选手组别显示电路独立式按键键盘第二章 硬件系统设计一 单片机最小系统微控制器采用AT89C51。AT89C51是美国ATMEL公司生产的与MCS-51系列单片机完全兼容的高性能CMOS 8位单片机,MCS-51系列单片机以其推出时间早、配套资源丰富、开发手段完善、性价比高等特点而得到了广泛的应用,是单片机的主流品种。AT89C51的内部资源主要包括:与MCS-51 系列完全兼容的高性能8位CPU;4K字节可重复编程的Flash存储器;256字节的SRAM;4个8位的并行口,共32条I/O口线;3个16位的定时器/计数器;6个中断源,2个中断优先级的中断系统;一个全双工的串行口;内部振荡器;可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路其最小系统主要包括复位电路等,如下图所示。二 硬件电路设计说明1 复位电路设计:本设计采用按键复位的方式进行复位,把SW1连接到P3.2,通过拨动SW1来改变高低电平,从而进行复位。2独立式按键键盘设计:键盘接口中使用多少根I/O线,键盘中就有几个按键,键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比较少,且键盘中各按键的工作互不干扰。因此可以根据实际需要对键盘中的按键灵活的编码。本设计将P2口连接到按键键盘,抢答时高低电平发生变化。3 显示电路设计:利用ZLG7290进行数码管显示。将P3.0和SDA连接,P3.1和SCL连接,P3.7和/RST连接。4 蜂鸣器电路设计:声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的巨型波,接上喇叭就能发出一定频率的声音。本设计将蜂鸣器与P3.5口连接,在选手抢答时,驱动蜂鸣器工作。第三章 软件设计系统软件分为主程序、中断服务程序和子程序三部分。抢答器的电路设计需要两个循环,当没有准备好的时候不能抢答,这里需要一个循环,知道准备好之后才能进行下面的程序。第二个循环是选手的抢答循环,利用标志位来进行,当标志位为零时,则向下运行,进行显示电路和蜂鸣器的工作,若是标志位不为零,则一个一个的循环八个选手,直到 有人抢答为止。第四章 系统调试说明调试中遇到的问题集解决方案1 程序编写完成运行没有错误后,进行了调试,但是第一次调试时什么效果都没有。我就考虑到不是程序上的错误,那就肯定是接线上的错误。查看了接线,果然是把P1口和P2口接反了。2 修改接线之后,数码管不亮,经过老师讲解才知道,我们要想点亮数码管,必须使用ZLG7290。于是我在程序中又插入了这段程序,使数码管点亮。3 修改完第二个错误之后,我的抢答器终于工作了,但是还是有问题,按键、LED灯、数码管显示效果不对应,总是反在里面。因为发现按动一号键是八号灯亮,而按动八号键是一号灯亮,在排除接线错误之后。我发现是在循环的那一部分出现了问题,把驱动LED的编码写反了,修正了之后抢答器终于正确工作了。小 结这次课程设计老师给我们安排了一个星期的时间,可以说是比较充裕的。虽然如此,我还是很用心的做设计程序,刚拿到题目,感觉太繁杂了,不知怎么下手,虽然这些知识以前都有接触过,但也只是分部分来接触,而这次的设计是要对前面几次实验的一个综合,真的很难。也翻阅了一些资料,到图书馆翻阅了很多资料,可是还是一片空白,于是也在网上参考一些个程序,然后自己事先编写好了程序,到了周一去到机房时候,把自己写的程序烧进去芯片里面,发现不行,才知是我把段码地址搞错了,所以不能在数码管上正常显示。通过运用单片机设计八路抢答器程设计,发现自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。附录1:原理图附录2:源程序OK BIT 20HKEY EQU 30HKEY1 BIT P2.0KEY2 BIT P2.1KEY3 BIT P2.2KEY4 BIT P2.3KEY5 BIT P2.4KEY6 BIT P2.5KEY7 BIT P2.6KEY8 BIT P2.7RING BIT P3.5SDA BIT P3.0SCL BIT P3.1RST BIT P3.6 MTDEQU 63H ZLG7290EQU70H ACKBIT10H SLADATA60H SUBADATA61H NUMBYTEDATA62HORG 000HSJMP MAINORG 003HLJMP INT_0ORG 030HMAIN :SETB EASETB EX0 SETB IT0 CLR OK CLR RINGLCALL RE7290DD:JNB OK,$ D0: MOV A,P2 CJNE A,#0FFH,D1 SJMP D0 D1: JB ACC.0,D2 MOV KEY,#1MOV P1,#0FEHSETB RINGSJMP D9 D2:JB ACC.1,D3 MOV KEY,#2MOV P1,#0FDHSETB RINGSJMP D9 D3: JB ACC.2,D4 MOV KEY,#3MOV P1,#0FBHSETB RINGSJMP D9 D4:JB ACC.3,D5 MOV KEY,#4MOV P1,#0F7HSETB RINGSJMP D9 D5:JB ACC.4,D6 MOV KEY,#5MOV P1,#0EFHSETB RINGSJMP D9 D6: JB ACC.5,D7 MOV KEY,#6MOV P1,#0DFHSETB RINGSJMP D9 D7: JB ACC.6,D8 MOV KEY,#7MOV P1,#0BFHSETB RINGSJMP D9 D8: JB ACC.7,D9 MOV KEY,#8MOV P1,#07FHSETB RINGSJMP D9 D9: CLR OK MOV 66H,KEY LCALL LEDDISP LJMP DD INT_0:SETB OK CLR RING MOV P1,#0FFH MOV KEY,#0 MOV 66H,KEY LCALL LEDDISP RETI leddisp:push psw push accsetb rs1setb rs0mov r0,#66Hmov r4,#8mov r5,#60hloop: MOV MTD,R5 MOV MTD+1,R0MOV SLA,#70HMOV SUBA,#07HMOV NUMBYTE,#02HLCALL IWRNBYTELCALL DELY1INC R0INC R5DJNZ R4,LOOPPOP ACCPOP PSWRETre7290: clr rst lcall delysetb rstlcall delyretdely :mov r7,#80Hmin :djnz r7,ys500 retys500 :lcall ys500us ljmp minys500us:mov r6,#80h djnz r6,$retdely1 :mov r7,#40h djnz r7,$ret;启动I2C总线子程序 START: nop nop nop SETB SDA NOP SETB SCL ;起始条件建立时间大于4.7us NOP NOP NOP NOP NOP CLR SDA NOP ;起始条件锁定时大于4us NOP NOP NOP NOP CLR SCL ;钳住总线,准备发数据 NOP nop nop RET;结束总线子程序STOP: NOP NOP NOP CLR SDA NOP SETB SCL ;发送结束条件的时钟信号 NOP ;结束总线时间大于4us NOP NOP NOP NOP SETB SDA ;结束总线 NOP ;保证一个终止信号和起始信号的空闲时间大于4.7us NOP NOP NOP nop nop RET;检查应答位子程序;返回值,ACK=1时表示有应答CACK:NOP NOP NOPSETB SDA NOP NOP SETB SCL CLR ACK NOP NOP MOV C,SDA JC CEND SETB ACK ;判断应答位CEND:NOP CLR SCL NOPnopnop RET;发送字节子程序;字节数据放入ACC ;每发送一字节要调用一次CACK子程序,取应答位 WRBYTE: MOV R7,#08HWLP: RLC A ;取数据位 JC WR1 SJMP WR0 ;判断数据位WLP1: DJNZ R7,WLP NOP RETWR1: SETB SDA ;发送1 NOP SETB SCL NOP NOP NOP NOP NOPCLR SCL SJMP WLP1WR0: CLR SDA ;发送0 NOP SETB SCL NOP NOP NOP NOP NOP CLR SCL SJMP WLP1;向器件指定子地址写N字节数据;入口参数: 器件从地址SLA、器件子地址SUBA 、发送数据缓冲区MTD、发送字节数NUMBYTE; 占用: A 、R0 、R1 、R3 、CY IWRNBYTE: MOV A,NUMBYTE MOV R3,A LCALL START ;起动总线 MOV A,SLA LCALL WRBYTE ;发送

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论