ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:996.70KB ,
资源ID:8911554      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8911554.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计多路抢答器大学论文.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机课程设计多路抢答器大学论文.docx

1、单片机课程设计多路抢答器大学论文武汉理工大学华夏学院信息工程课程设计报告书课 程 名 称 单片微型计算机与接口技术 课程设计总评成绩 学生姓名、学 号 朱富鑫 10213314131 学 生 专 业 班级 物联网1141 指 导 教 师 姓名 苏明霞 课程设计起止日期 2016.6.132016.6.24 课程设计基本要求课程设计是工科学生十分重要的实践教学环节,通过课程设计,培养学生综合运用先修课程的理论知识和专业技能,解决工程领域某一方面实际问题的能力。课程设计报告是科学论文写作的基础,不仅可以培养和训练学生的逻辑归纳能力、综合分析能力和文字表达能力,也是规范课程设计教学要求、反映课程设计

2、教学水平的重要依据。为了加强课程设计教学管理,提高课程设计教学质量,特拟定如下基本要求。1. 课程设计教学一般可分为设计项目的选题、项目设计方案论证、项目设计结果分析、答辩等4个环节,每个环节都应有一定的考核要求和考核成绩。2. 课程设计项目的选题要符合本课程设计教学大纲的要求,该项目应能突出学生实践能力、设计能力和创新能力的培养;该项目有一定的实用性,且学生通过努力在规定的时间内是可以完成的。课程设计项目名称、目的及技术要求记录于课程设计报告书一、二项中,课程设计项目的选题考核成绩占10%左右。3. 项目设计方案论证主要包括可行性设计方案论证、从可行性方案中确定最佳方案,实施最佳方案的软件程

3、序、硬件电路原理图和PCB图。项目设计方案论证内容记录于课程设计报告书第三项中,项目设计方案论证主要考核设计方案的正确性、可行性和创新性,考核成绩占30%左右。4. 项目设计结果分析主要包括项目设计与制作结果的工艺水平,项目测试性能指标的正确性和完整性,项目测试中出现故障或错误原因的分析和处理方法。项目设计结果分析记录于课程设计报告书第四项中,考核成绩占25%左右。5. 学生在课程设计过程中应认真阅读与本课程设计项目相关的文献,培养自己的阅读兴趣和习惯,借以启发自己的思维,提高综合分和理解能力。文献阅读摘要记录于课程设计报告书第五项中,考核成绩占10%左右。6. 答辩是课程设计中十分重要的环节

4、,由课程设计指导教师向答辩学生提出23个问题,通过答辩可进一步了解学生对课程设计中理论知识和实际技能掌握的程度,以及对问题的理解、分析和判断能力。答辩考核成绩占25%左右。7.学生应在课程设计周内认真参加项目设计的各个环节,按时完成课程设计报告书交给课程设计指导教师评阅。课程设计指导教师应认真指导学生课程设计全过程,认真评阅学生的每一份课程设计报告,给出课程设计综合评阅意见和每一个环节的评分成绩(百分制),最后将百分制评分成绩转换为五级分制(优秀、良好、中等、及格、不及格)总评成绩。8. 课程设计报告书是实践教学水平评估的重要资料,应按课程、班级集成存档交实验室统一管理。一、课程设计项目名称多

5、路抢答器 二、项目设计目的及技术要求1. 四个独立的按键分为四路,每一个按键按下后对应的LED灯会亮。2. 在数码管上显示09到00后开始抢答,抢答时四个按键有一个按下了则对应的LED灯会亮,其它按键无效,并且会把对应的编号显示在数码管上面,同时把对应的编号通过串口显示在上位机的串口助手上。3. 抢答完毕后,如果重新开始,则在上位级的串口助手上发送A到单片机,单片机接受到后,开始新一轮的抢答,即继续完成第2个步骤。如:在K1,K2,K3,K4都开始按的情况下,先判断谁先按下,那么其他键无效。再按也无效。注:以上所有的功能都是用单片机来完成的。三、项目设计方案论证(分析项目要求和指标,给出总的设

6、计方案) 实际项目实现内容:当主持人向串口发送字符“A”后,单片机接收到开始信号,然后LED点阵移动显示3,2,1,GO后,数码管从09到00倒计时显示,当显示到00时,抢答器可以开始抢答,当其中任何一方先按下按钮后,将其代表的号码显示到数码管上,并发送到串口上,同时锁住其他的按钮,让其他选手无法再次抢答。然后通过选手的回答,主持人判断对错后,在串口上发送“Y”,则在LED点阵上显示“对号”,如若回答错误,在串口上发送“N”,则在LED点阵上显示“X”。设计方案:通过对单片机程序的编写,调用LED灯,数码管,LED点阵,按键,以及串口部分,控制好单片机的时序,实现设计要求,并加入适当的拓展模块

7、。流程框图: LED灯及数码管模块:由开发板原理图可知可以编写一个扫描函数,使用74HC138译码器实现对6个数码管以及LED灯的控制。代码如下:void LedScan()static unsigned char i = 0; P0 = 0xFF; P1 = (P1 & 0xF8) | i; P0 = LedBuffi; if (i 7) i+; else i = 0;LED点阵模块:由开发板原理图可知,使能U4的74HC138控制点阵,即在调用LED点阵时赋ADDR3 = 0即可,同理可以将LED点阵理解成8个数码管显示,使用取模软件,取出想要的图片显示,并存放在数组里,通过对LED点阵的

8、循环赋值,可以达到LED点阵纵向移动的功能。按键模块:由开发板原理图可知,将P23口置0,是KeyOut1输出低电平,即使K1K4转换为独立按键使用。串口模块:可以通过配置串行控制寄存器,调好通信的波特率,完成串口通信模块。配置方法: 1、配置串口为模式1。 2、配置定时器T1为模式2,即自动重装模式。 3、根据波特率计算TH1和TL1的初值,如果有需要可以使用PCON进行波特率加倍。 4、打开定时器控制寄存器TR1,让定时器跑起来。配置波特率的函数:void ConfigUART(unsigned int baud)SCON = 0x50; TMOD &= 0x0F; TMOD |= 0x2

9、0; TH1 = 256 - (11059200/12/32)/baud; TL1 = TH1; ET1 = 0; ES = 1; TR1 = 1; 设计完整代码:#include sbit ADDR3 = P13;sbit ENLED = P14;sbit KEY1 = P24;sbit KEY2 = P25;sbit KEY3 = P26;sbit KEY4 = P27;unsigned char code LedChar = 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1

10、, 0x86, 0x8E;unsigned char LedBuff8 = 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,0xFF;unsigned char code led = 0xFF,0xC1,0xDF,0xDF,0xC1,0xDF,0xDF,0xC1,0xFF,0xC1,0xDF,0xDF,0xC1,0xFD,0xFD,0xC1,0xFF,0xF7,0xF3,0xF7,0xF7,0xF7,0xF7,0xF7,0xC1,0xFF,0xFF,0xFF,0x10,0x5E,0x5E,0x52,0x56,0x10,0xF7,0xFF,0xFF,0xFF,0

11、xFF,0xFFF ;unsigned char image = 0xFF,0xFF,0x7F,0xBF,0xDF,0xEE,0xF5,0xFB;unsigned char no=0xFF,0x7D,0xBB,0xD7,0xEF,0xD7,0xBB,0x7D;unsigned char T0RH = 0; unsigned char T0RL = 0; unsigned char RxdByte = 0;unsigned char index = 0;unsigned char tmrs; unsigned int sec = 10;unsigned int cnt = 0;unsigned

12、int over = 0;unsigned int go = 0;unsigned int flag1s = 0;unsigned int flag250ms = 0;unsigned int begin = 1;void ConfigTimer0(unsigned int ms);void ConfigUART(unsigned int baud);void main() bit backup1 = 1; bit backup2 = 1; bit backup3 = 1; bit backup4 = 1; EA = 1; ENLED = 0; ADDR3 = 1; P2 = 0xF7; Co

13、nfigTimer0(1); ConfigUART(9600); while (1) if(go = 1) LedBuff0 = ledindex+0; LedBuff1 = ledindex+1; LedBuff2 = ledindex+2; LedBuff3 = ledindex+3; LedBuff4 = ledindex+4; LedBuff5 = ledindex+5; LedBuff6 = ledindex+6; LedBuff7 = ledindex+7; if(flag1s&begin = 1) if(sec = 0) begin = 0; over = 0; LedBuff0

14、 = LedCharsec; LedBuff1 = LedChar0; LedBuff2 = 0xFF; LedBuff3 = 0xFF; LedBuff4 = 0xFF; LedBuff5 = 0xFF; LedBuff6 = 0xFF; if(begin = 0) if(over = 0) if(KEY1 != backup1 ) over = 1; if(backup1 = 0) LedBuff6 = 0x7F; LedBuff0 = LedChar1; LedBuff1 = LedChar0; SBUF = 0x01; while(!TI); TI = 0; RI = 0; backu

15、p1 = KEY1; if(over = 0) if(KEY2 != backup2) if(backup2 = 0) over = 1; LedBuff6 = 0xBF; LedBuff0 = LedChar2; LedBuff1 = LedChar0; SBUF = 0x02; while(!TI); TI = 0; RI = 0; backup2 = KEY2; if(over = 0) if(KEY3 != backup3) if(backup3 = 0) over = 1; LedBuff6 = 0xDF; LedBuff0 = LedChar3; LedBuff1 = LedCha

16、r0; SBUF = 0x03; while(!TI); TI = 0; RI = 0; backup3 = KEY3; if(over = 0) if(KEY4 != backup4) if(backup4 = 0) over = 1; LedBuff6 = 0xEF; LedBuff0 = LedChar4; LedBuff1 = LedChar0; SBUF = 0x04; while(!TI); TI = 0; RI = 0; backup4 = KEY4; void ConfigTimer0(unsigned int ms) /定时器配置函数 unsigned long tmp; t

17、mp = 11059200 / 12; tmp = (tmp * ms) / 1000; tmp = 65536 - tmp; tmp = tmp + 18; T0RH = (unsigned char)(tmp8); T0RL = (unsigned char)tmp; TMOD &= 0xF0; TMOD |= 0x01; TH0 = T0RH; TL0 = T0RL; ET0 = 1; TR0 = 1; void ConfigUART(unsigned int baud) /波特率配置函数 SCON = 0x50; TMOD &= 0x0F; TMOD |= 0x20; TH1 = 25

18、6 - (11059200/12/32)/baud; TL1 = TH1; ET1 = 0; ES = 1; TR1 = 1; void LedScan() /数码管及LED扫描函数 static unsigned char i = 0; P0 = 0xFF; P1 = (P1 & 0xF8) | i; P0 = LedBuffi; if (i =250) tmrs = 0; flag250ms =1; index+; if(index = 32) if(go = 1) go = 0; ADDR3 = 1; begin = 1; flag1s = 1; sec = 9; index = 0;

19、if(tmr1s = 1000) tmr1s = 0; flag1s = 1; if (sec 0) sec-; else sec = 0; void InterruptUART() interrupt 4 /串口中断函数 if (RI) RI = 0; RxdByte = SBUF; SBUF = RxdByte; if( SBUF = A) ADDR3 = 0; go = 1; sec = 9; index = 0; if( SBUF = Y) ADDR3 = 0; LedBuff0 = image0; LedBuff1 = image1; LedBuff2 = image2; LedBu

20、ff3 = image3; LedBuff4 = image4; LedBuff5 = image5; LedBuff6 = image6; LedBuff7 = image7; if(SBUF = N) ADDR3 = 0; LedBuff0 = no0; LedBuff1 = no1; LedBuff2 = no2; LedBuff3 = no3; LedBuff4 = no4; LedBuff5 = no5; LedBuff6 = no6; LedBuff7 = no7; if (TI) TI = 0; 实验现象图:按下按钮2,其他按钮在重新开始之前无法使用判断对错:发送A重新开始:LE

21、D移动显示3,2,1,GO后从0900显示完后可以进入抢答环节四、项目设计结果分析(分析试验过程中,现象或问题的正确性和必然性,以及对有没有达到技术要求进行分析,写出整个调试经过和现象,并分析产生不正确结果的原因和处理方法。)1.不用倒计时显示到0,就可以开始抢答。解决方法:设置一个标志位,当显示到0后,给予可以抢答的标志,才可以进入抢答部分。2.LED点阵移动显示。解决方法:由于横向移动的取模过程较为繁琐,所以采用纵向移动的方式移动显示,参考数码管扫描,使用index索引动态刷新,来完成纵向移动的显示。3在使用LED点阵移动时,想达到良好显示效果。解决方法:在定时器中断中重新建立一个250m

22、s标志,index250ms刷新一次,即LED点阵250ms改变一帧图片。4.数码管和LED点阵被2块74HC138译码器控制,如何解决二者冲突。解决方法:查阅资料,发现控制2块74HC138译码器的是ADDR3,即在完成LED点阵显示后,ADDR3赋1,打开使能U3,开启数码管,需要用到LED时ADDR3赋0,打开使能U4,使用LED点阵显示模式。五、参考文摘(相关文摘不少于5篇,记录每篇文献的作者姓名.文献名称.文献发行城市:文献出版社,出版年;文献内容摘要, 每篇不少于100字)例:1秦志强,彭建盛,谭立新编著.AVR单片机与小型机器人制作M.北京:电子工业出版社,2009内容摘要:“”

23、1. 王振红,张常年;综合电子设计与实践【M】,第二版,北京:清华大学出版社,2008. 内容摘要:“关于仿真技术的详细讲解,各个部分都能够理解加记忆,第一章是关于电子技术的仿真,这个对于我们初学者来说,有了更简单易懂的理解模式,在电子这一方面的讲述,更多的是原理的分析。”2. 王小海,蔡忠法,电子技术基础实验教程【M】,北京:高等教育出版社2002. 内容摘要:“电子技术是现代重要的技术之一,其中的教程也让我们对电子技术有了很好的了解,不只是单层次的认识,对常见的设计电路也有了很详细的讲解,不单单都是理论的知识的灌输。”3. 宋雪松,李冬明,崔长胜,手把手教你学51单片机【M】,北京:清华大学出版社,2014.内容摘要:“通信的学习不像前边控制部分那么直观,通信部分的程序只能获得一个结果,而其过程无法看到。”课程设计评分表评 分 项 目评分成绩1选题合理、目的明确,平时表现积极(10分)2设计方案正确,具有可行性、创新性(30分)3设计报告规范化,参考文献不少于5篇(10分)4项目工艺水平及测试性能达到技术要求(25分)5答辩(25分)总 分(100分)答辩记录:指导教师综合评语:指导教师(签名) 日 期: 年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1