四位竞赛抢答器单片机课程设计实验报告_第1页
四位竞赛抢答器单片机课程设计实验报告_第2页
四位竞赛抢答器单片机课程设计实验报告_第3页
四位竞赛抢答器单片机课程设计实验报告_第4页
四位竞赛抢答器单片机课程设计实验报告_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、电气工程学院单片机课程设计实验报告班级级别:姓氏:学生编号:.设计名称:四人竞赛抢答器设计时间:评估结果:评估教师:目录摘要1一、调试过程31.1调试的详细步骤和流程31.2软件调试中遇到的问题及解决过程说明51.3软件模拟运行与硬件实际验证的区别6二、操作效果61.Proteus电路图62.当滑动变阻器为0%时,倒计时最长时间。63.当滑动变阻器处于50%时,倒计时最大时间74.当滑动变阻器处于100%时,倒计时最大时间75.竞争对手先回答86、无人接听,系统警告97.硬件模拟10第一个答案,得分,计时结束11三。系统优化113.1软件设计113.2硬件设计11摘要自20世纪70年代单片机问

2、世以来,它已广泛应用于电子信息、电气工程、工程自动化控制、机电一体化、智能仪器仪表、家用电器等诸多领域,并对人类社会产生了巨大影响。由于英特尔8051核微控制器的巨大成功,以8051核技术为主导的微控制器也成为中国大多数大学的教学模式。尽管各种新的8位、16位和32位单片机不断推出,但8位单片机,尤其是各种8051核单片机,在当前的应用中仍处于主导地位。本设计采用8051芯片、44矩阵键盘(仅使用23)、串行AD、DA转换芯片PCF8591、8位共用阴极数码管(仅使用4位)、音频放大芯片LM386和扬声器实现四人比赛首答单片机系统,可用于四人或四队同时参加比赛,每队一个首答。应答机具有号码锁定

3、、答题计分、时间显示和音频功能本课程设计使我掌握了竞赛答题卡单片机系统的工作原理和基本思想,同时也让我对书本知识有了更深的理解。关键词:AT89C51单片机;矩阵键盘。数字管;PCF8591LM386Keil5软件;Proteus仿真软件1.调试过程1.1调试的详细步骤和过程(1)在Keil中编程后,点击编译运行。图1编译结果(2)编译运行无误后,需要进一步设置项目以满足要求。图2晶体频率设置图3检查创建十六进制文件图4生成十六进制文件(3)生成HEX文件后,导入到Proteus中的AT89C51芯片中。图5将十六进制文件导入AT89C51(4)点击运行按钮进行软件模拟。在模拟过程中,显示值与

4、旋钮的抽头电压有关。当调节旋钮并按下复位键时,该值发生变化,表明PCF8591工作正常。按下玩家的第一个应答按钮,系统通常会提示2s警告;主持人按下“开始”键后,选手答对,计分并显示号码,程序正常。当主持人按下系统清除按钮时,玩家编号和分数消失,显示最大倒计时时间,程序正常。(5)记录软件仿真结果,到机房进行硬件调试。1.2软件调试问题及解决方案(pcf8591芯片与单片机之间的通信有错误。在I2C调试器中,无论程序使用响应还是不响应,它都显示它正在响应,并且发送的最后一位数据是不正确的。图6 I2C调试器发现错误经过仔细调查,发现代码中有一个for循环i=1,程序是错误的。修改后,发送的数据

5、是正确的,但响应位仍然不正确。再次对错误进行故障排除后,发现在Noack程序中sda未设置为1,当它更改为0后,I2C调试器按预期显示。(2)经过仿真,发现立体声根本没有声音,无论给定什么频率,都不会发出任何声音。图7使用该设备时没有声音检查电路后,发现电路没有问题。在认为这可能是一个组件问题后,它被改为SPEAKER,发现声音听起来正常,问题得到了解决。(3)7段数码管显示不正确,实验箱中未使用普通阴极数码管。在修改了位7SEG-MPX4-CC-BLUE之后,问题得到了解决。1.3软件模拟运行与硬件实际验证的区别Proteus仿真软件使用方便,但当程序复杂且定时器溢出频率高时,仿真容易堵塞和

6、变慢。Proteus仿真软件不需要绘制晶振电路和复位电路,有效减少了工作量。虚拟示波器、I2C调试器等设备可以用来查找问题和确认结果,非常方便快捷。然而,它只在理想的条件下运行,缺乏现实中许多因素的影响,这很容易导致我们思维的简单化。在硬件的实际验证过程中,发现了许多在软件模拟过程中没有发现的问题。执行程序时,速度比仿真软件快得多,响应也非常快。无论计时器的溢出频率有多高,它都不会停滞或变慢。相比之下,结果更舒适。在硬件的实际验证中,需要考虑硬件的局限性,将程序与实际的晶振频率相匹配,并将输入输出端口与相应的模块相连接,这已经不是一个理想的情况。2.操作效果1.Proteus电路图图8 Pro

7、teus接线图2.当滑动变阻器为0%时,倒计时最长时间。时间=20 255*30/255=50图9倒计时最长时间3.当滑动变阻器处于50%时,倒计时最长时间时间=20 128*30/255=344.当滑动变阻器为100%时,倒计时最长时间时间=20 0*30/255=205.玩家先回答图10第一名玩家抓住它图11 3号选手抓住了它图12第三个玩家第二次抓住了它6、无人接听,系统警告图13倒计时结束时无人应答,系统发出警告7.硬件模拟图14旋钮调节到最小,显示为20图15调节旋钮,时间变化第一个答案,得分,计时结束在硬件模拟中,实际的晶体振荡器频率不同于程序中使用的频率,这导致快速倒计时。修改程

8、序后,时间正常。3.系统优化3.1软件设计在设计之初,在主要功能中发送方波以驱动扬声器发声,然后发现声音频率发生变化,这可能是因为主要功能在不同的时间执行。修改后,定时器T1产生的方波信号用于驱动扬声器发声。修改后,声音频率正常,但模拟非常卡住。在问了老师之后,我了解到是模拟软件发出了脉冲,而脉冲是无法移除的。最初,我打算使用独立键盘。阅读实验说明后,我了解到实验盒上只有四个独立的按钮,然后调整到2*3矩阵键盘,并修改相应的程序完成硬件验证。3.2硬件设计最初,Proteus中的电路图用于硬件连接。连接后,硬件验证发现数码管的A段始终打开。经过仔细检查,发现实验箱的输入输出端口出现故障。连续更

9、换三四个实验盒后,最终发现一个实验盒的数码管显示正确,但有一个数码管没有打开。在确认输入/输出端口失败后,程序中的循环变量0x7f变为0x77,第一条位线连接到另一条位线。此后,程序正常运行,但倒计时不符合要求。经过仔细检查,发现实验箱的晶振频率为11.0592兆赫,我的程序使用的是12兆赫。修改每个定时器的初始值,再次执行硬件验证,现象变得正常。由于实际运行中存在许多不确定因素,软件仿真不能完全满足实际要求,具体优化需要通过实际电路验证来完成。4.设计总结本课程设计成功实现了四位竞赛抢答器的功能,对I2C通信协议有了更深的理解,也更清楚地了解了Proteus软件仿真的局限性和硬件验证的复杂性

10、。虽然本课程设计中使用的AT89C51芯片比较陈旧,但它也能实现如此简单实用的功能,这也让我明白了编写程序的重要性。其次,我们还知道74LS244和74LS240芯片的功能和用途。虽然在编程过程中存在许多问题,但我们已经成功地编译了源程序,并通过搜索数据和反复修改实现了设计要求的功能。对一些典型算法和应用的深入理解也有助于以后的编程,大大促进了单片机和C51编程的学习。在本次设计中,我分四个模块进行分析,第一部分是矩阵键盘扫描,第二部分是倒计时功能,第三部分是音频提示功能,第四部分是模数转换功能。在这四个部分中,只有第四部分很难将模拟转换成数字,这需要我花很多时间来完成。另外三个部分单独实现起

11、来相对简单,但是当它们组合在一起时,程序之间的关系就变得复杂了,这使得我花了很多时间成功地将它们组合在一起。虽然在这个过程中有很多问题,但是这些问题已经通过不断的调试和分析得到了解决。系统的调试是一个非常繁琐的过程,需要耐心和仔细的调试。在代码设计阶段,我们最大的问题是前期没有整体把握,前后代码冗余混乱。在参考了大量的代码之后,我们改进了我们的代码编写方法,比如使模块便于调用、添加注释、整洁等。代码中仍存在一些问题,如寄存器中数据的比较和输出,特别是编程语句的理解和应用,这些问题不能完全理解每条语句的具体含义,需要在这里进一步研究。经过本次课程设计,我总结出绘图电路不仅要实现功能,还要符合实验

12、箱上的硬件原理图,以便以后的硬件验证。事实证明,我的硬件验证比其他没有按照原理图连接的学生简单得多,也没有大规模的修改程序。最重要的是如何根据期望的功能选择合适的芯片模块,实现正确的功能。在这个设计的开始,已经走了很多弯路。幸运的是,思路很清晰:键号采集、模数转换、I2C通信、中央处理器处理、控制输入、音频提示,这些现在不难回忆。本课程设计采用Proteus软件独立设计,教师给出的参考图纸完全依赖于自己的参考资料,在设计之初就遇到了很多弯路和困难。开始时,思路很不清晰,没有办法开始。经过一天的思考,制定出一套理论上可行的方案,只能实现矩阵键盘读取数值,而不能减少计数和显示。在电路设计中,我们也

13、遇到了许多原则性问题,如如何用单片机编写定时器工作代码,如何用矩阵键盘读取键值以便调用。为了解决这些问题,我复习了课堂上学到的单片机知识,查阅了很多芯片文件,查阅了百度上的很多文档,这逐渐丰富了我在这方面的知识,明显提高了我的水平。然而,仍有许多未解决的问题,理论上可以实现的功能在硬件验证中难以实现。有许多问题:持续的源代码错误、布线错误、无法实现功能等。这一切都导致了实验的失败。而且,经过这次实验,我明白了以下两点:第一,前期的布局尽可能的合理,这样可以为以后的调试节省大量的精力;其次,我们必须小心操作,注意避免在实验中犯小错误;最后,并非所有的实验在理论上都是可行的,在实践中也是可行的。学

14、习调试和发现问题远比接线操作重要。经过本课程的设计,我对单片机系统的设计和调试过程有了更深的了解,了解了调试的顺序,了解了功能的模块化实现,了解了问题的查找和解决,更重要的是,我了解了前期准备的重要性。早期准备越充分,就越快越顺利。在这个班里,我学到了一些我不能在课堂上教的东西,并且收到了很多货物。附件:#包括#包括#定义uchar无符号字符#定义uint无符号整数sbit x1=p10;sbit x2=p11;sbit y0=p12;sbit y1=p13;sbit y2=p14;/矩阵键盘使用的2*3端口sbit scl=p30;/定义scl端口sbit sda=p31;/定义sda端口s

15、bit sound=p35;/定义音频输出端口char代码dx5163_ at _0x 003 b;/硬件调试时必须添加的代码uchar显示4=10,10,10,10 ;/4位数码管显示阵列uchar评分4=0,0,0,0 ;/记录四个玩家的分数uchar seg12=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf。/普通阳极数字管段代码uchar keyval=10,倒计时,t=20,CT=3;迷人的时髦;位clrflag=0,startflag=0,keyflag=0,one=1,two=1;/定义各种标志位void delay 5 us();/函数声明void I2C _ init();void I2C _ start();void I2C _ stop();void I2C _ ack();void I2C _ noack();void I2C _ SendByte(uchar data 1);void send();uchar gettime();uchar I2C _ RecByte();void key scan();无效延迟(单位x)/延迟函数uchar z;而对于(z=0;

温馨提示

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

评论

0/150

提交评论