单片机四路抢答器课设说明书.doc

上传人:wux****ua 文档编号:8582268 上传时间:2020-03-30 格式:DOC 页数:15 大小:283KB
返回 下载 相关 举报
单片机四路抢答器课设说明书.doc_第1页
第1页 / 共15页
单片机四路抢答器课设说明书.doc_第2页
第2页 / 共15页
单片机四路抢答器课设说明书.doc_第3页
第3页 / 共15页
点击查看更多>>
资源描述
信息与电气工程学院课程设计说书(2010 /2011 学年第 二 学期)课程名称 : 单片机课程设计 题 目 : 四路抢答器 设计成绩 : 2013 年 6 月 23 日目 录第一节 课程设计目的2 1.1 概述2 1.2 设计要求2第二节 四路抢答器设计正文2 2.1 总体设计2 2.1.1 抢答器的工作原理2 2.1.2 抢答器的总体设计3 2.2 硬件电路详细设计3 2.2.180c51芯片3 2.2.2 芯片的选择6 2.2.3 复位电路的设计6 2.2.4 晶振电路的设计7 2.2.5 数码显示电路的设计8 2.2.6 报警电路的设计8 2.2.7 总电路的设计9 2.2.8 PCB版图的绘制9 2.3 软件详细设计10 2.3.1 主程序的设计10 2.3.2 显示子程序的设计10 2.3.3 定时器T0、T1中断服务程序的设计11 2.3.4 抢答处理程序的设计11 2.3.5 总程序11第三节 实验结果及结论14第四节 参考文献15第一节 课程设计目的1.1概述单片机原理及应用课程设计是学生综合运用所学知识,全面掌握单片微型计算机及其接口的工作原理、编程和使用方法的重要实践环节。通过独立或协作提出并论证设计方案,进行软、硬件调试,最后获得正确的运行结果,可以加深和巩固对理论教学和实验教学内容的掌握,进一步建立计算机应用系统整体概念,初步掌握单片机软、硬件开发方法,为以后进行实际单片机软、硬件应用开发奠定良好的基础。课程设计的主要内容:根据单片机原理及应用课程的要求,主要进行两个方面的设计,即单片机最小系统和接口技术应用设计。其中,单片机最小系统主要要求学生熟悉单片机的内部结构和引脚功能、引脚的使用、复位电路、时钟电路、4个并行接口和一个串行接口的实际应用,从而可构成最小应用系统,并编程进行简单使用。接口技术应用设计主要要求学生能综合运用单片机、存储器、常用接口芯片构成单片机应用系统,有针对性地进行软、硬件设计与开发。1.2设计要求:1、设置4个抢答台和四个抢答成功指示灯,1个比赛主持人开始按键和1个抢答指示灯以及1个LED显示器。 2、采用中断和查询结合的方法确定按键动作。 3、主持人按下“开始”键后,若有人抢答,则对应选手的指示灯点亮,并用7段LED显示抢答者的号码(1-4),同时蜂鸣器发出3声间隔一秒的警告音;若9秒内无人抢答,则发出超时报警声,此题作废,主持人可按下“开始”键开始下一题的抢答。 第二节 四路抢答器设计正文2.1 总体设计2.1.1 抢答器的工作原理抢答器的工作原理是利用单片机的定时器T0、T1中断完成,其余状态循环调用显示子程序,用2个共阴极LED数码管来显示,用P2.0、P2.1、P2.2、P2.3口作为CD4511译码器的数据输入口,P1.0、P1.1、P1.2、P1.3口接4个选手按键,提供选手抢答,P1.4、P1.5、P1.6、P1.7 接四个发光二极管作为抢答成功指示灯;P0.0接蜂鸣器,超时报警,和提示抢答。2.1.2 抢答器的总体设计倒计时方案方面利用MCS-51的内部的定时/计时器进行中断计时,配合软件延时实现倒计时。该方案节省硬件成本,并且能够在定时器/计数器的使用、中断及程序设计方案方面得到锻炼与提高,显示方面采用穿行传输实现动态显示,该方案的硬件连接简单,但动态扫描的显示方式需占用CPU较多的时间,适用于单片机没有太多实时测控的任务场合。抢答功能:通过四路按键配合程序来实现抢答功能。当主持人按下抢答键开始抢答后,此时任一路按下按钮均闭锁其它各路,由程序对键盘译码并显示最先按下抢答键的选手号。并亮起主持人台和对应选手台上的抢答成功指示灯。抢答限时:主持人按下抢答键后,设置9秒为抢答时间。若9秒内无人抢答,倒计时为0时发出报警,说明该抢答题目作废。此时闭锁所有抢答按键,只有当主持人再次按下抢答键开始下一次抢答方可抢答。2.2 硬件电路详细设计2.2.1 80C52芯片80C52系列中,用CHMOS工艺制造的单片机都采用双列直插式(DIP)40脚封装,引脚信号完全相同。1、为一般控制应用的 8 位单片机2、晶片内部具有时钟振荡器(传统最高工作频率可至 33MHz)3、内部程式存储器(ROM)为 8KB4、内部数据存储器(RAM)为 256B5、外部程序存储器可扩充至 64KB6、外部数据存储器可扩充至 64KB7、32 条双向输入输出线,且每条均可以单独做 I/O 的控制8、5 个中断向量源9、3 组独立的 16 位定时器10、1 个全双工串行通信端口各引脚功能介绍:1电源VCC(引脚号40):电源正端输入,接+5V。VSS(引脚号20):电源地端。2时钟 XTAL1(引脚号18)内部振荡电路反相放大器的输入端,是外接晶振的一个引脚。当采用外部振荡器时,此引脚接地。XTAL2(引脚号19)内部振荡器的反相放大器输出端,是外接晶振的另一端。当采用外部振荡器时,此引脚接外部振荡源。3控制总线 (1)ALE/ (引脚号30): 正常操作时为ALE功能(允许地址锁存),用来把地址的低字节锁存到外部锁存器。ALE引脚以不变的频率(振荡器频率的1/6)周期性地发出正脉冲信号。因此,它可用作对外输出的时钟信号或用于定时。但要注意,每当访问外部数据存储器时,将跳过一个ALE脉冲。ALE端可以驱动(吸收或输出电流)8个LSTTL电路。在8751单片机EPROM编程期间,此引脚接编程脉冲( 功能)。 (2) (引脚号29):外部程序存储器读选通信号。在从外部程序存储器取指令(或数据)期间, 在每个机器周期内两次有效。 可以驱动8个LSTTL电路。(3)RST/VPD(引脚号9):复位信号输入端。振荡器工作时,该引脚上持续2个机器周期的高电平可实现复位操作。此引脚还可接上备用电源。在Vcc掉电期间,由 向内部RAM提供电源,以保持内部RAM中的数据。(4) /Vpp(引脚号31): 为内部程序存储器和外部程序存储器的选择端。当 为高电平时,访问内部程序存储器(PC值小于4K);当 为低电平时,访问外部程序存储器。对于87C51单片机,在EPROM编程期间,此端为21V编程电源输入端。4I/O线(1)P0口(引脚号3239):单片机的双向数据总线和低8位地址总线。在访问外部存储器时实现分时操作,先用作地址总线,在ALE信号的下降沿,地址被锁存;然后用作为数据总线。它也可以用作双向输入/输出口。P0口能驱动8个LSTTL负载。(2)P1口(引脚号18):准双向输入/输出口,它能驱动4个LSTTL负载。(3)P2口(引脚号2128):准双向输入/输出口。在访问外部存储器时,用作高8位地址总线。P2口能驱动4个LSTTL负载。(4)P3口(引脚号1017):准双向输入/输出口,它能驱动4个LSTTL负载。P3口的每一引脚还有另外一种功能: P3.0RXD:串行口输入端 P3.1TXD:串行口输出端 P3.2 :外部中断0中断请求输入端 P3.3 :外部中断1中断请求输入端 P3.4T0:定时器/计数器0外部输入端 P3.5T1:定时器/计数器1外部输入端 P3.6 :外部数据存储器写选通信号 P3.7 :外部数据存储器读选通信号5时钟电路 80C52单片机内有一个高增益反相放大器,其频率范围为1.2MHz12MHz,XTAL1和XTAL2分别为放大器的输入端和输出端。时钟可以由内部方式或外部方式产生。 80C52内部方式时钟电路如图2-10(a)所示。在XTAL1和XTAL2引脚上外接定时元件,就能构成自激振荡电路。定时元件通常采用石英晶体和电容组成的并联谐振电路。电容器C1和C2主要起频率微调作用,电容值可选取为30pF左右(外接晶体时)或40pF左右(外接陶瓷谐振器时)。80C52外部方式时钟电路如图2-10(b)所示。XTAL1接外部振荡器,XTAL2悬空。对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于12Hz的信号。2.2.2 芯片的选择抢答器电路的核心是89C52单片机,其内部带有8KB的FLASH ROM,无需外扩程序存储器;抢答器没有大量的运算和暂存数据现有的256B篇内RAM已经能满足容量需求,故不需外扩片外RAM,系统配有2个8段数码显示管共用一个CD4511驱动,管采用共阴数码管,作为选手号的显示输出。2.2.3 复位电路的设计复位电路的设计如图2-1所示:图2-1 复位电路原理图该复位电路采用上电自动复位和手动复位两种复位方式,图中右侧引脚接到单片机的复位引脚。要实现复位只需在,52系列单片机的RESET引脚上加上5ms的高电平就可以了。上电复位是利用电容的充电来实现的,即上电瞬间RESET端的电位与Vcc相同,随着电容上储能增加,电容电压也逐渐增大,充电电流减小,RESET端的电位。这样就会建立一个脉冲电压,调节电容与电阻的大小可对脉冲的持续时间进行调节。通常若采用12MHz的晶振时,复位元件参数为22F的电解电容和10k的电阻。按钮复位电路是通过按下复位按钮时,电源对RESET端维持两个机器周期的高电平实现复位的。2.2.4 晶振电路的设计图2-2 晶振电路原理图MSC-52单片机的定时控制功能是用时钟电路和振荡器完成的,而根据硬件电路的不同,连接方式分为内部时钟方式和外部时钟方式。本设计中采用内部时钟方式。单片机内部有一个反相放大器,XTAL1、XTAL2分别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各元件。时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就可组成振荡器,如图2-2所示。加电以后延时一段时间(约10ms)振荡器产生时钟,不受软件控制,图中Y1为晶振,震荡产生的时钟频率主要由Y1确定。电容C1,C2的作用有两个:一是帮助振荡器起振,二是对振荡器的频率起微调作用,典型值为30pF。2.2.5 数码显示电路的设计图2.3 数码显示管电路图数码显示管用来作为9秒倒计时显示和选手号,两个共阴极数码管共用一个CD4511驱动,每个数码管有一个位选端分别接P3.2、P3.3口。P2.0、P2.1、P2.2、P2.3作为CD4511数据输入端。2.2.6 报警电路的设计图2.4报警电路图使用蜂鸣器作为报警电路, NPN三极管的基极通过电阻与单片机的P0.0引脚连接,再用330的上拉电阻接电源,三极管的集电极接电源,发射极接蜂鸣器的正极。当P0.0输出低电平时蜂鸣器响。2.2.7 总电路的设计图2.5 总电路原理图2.2.8 PCB板的制作画好原理图检查无误后,画PCB版图,本设计由于电路连接比较简单,接线较少,所以用明线直接连接,不用制版,画出PCB版图的目的是便于插板时的布局和链接。2.3 软件详细设计2.3.1 主程序的设计此程序的及时采用定时器T0和T1中断完成,其余状态循环调用显示子程序。系统主程序流程图如图3-1所示。图2-3-1 系统主程序流程图2.3.2 显示子程序的设计2.3.3 定时器T0、T1中断服务程序的设计定时器T0用于复位程序,当给RST口加10ms的复位信号时,单片机复位。定时器T1用于计时程序,当主持人按下开始抢答按钮9秒内无人抢答时,蜂鸣器发出报警信号。2.3.4 抢答处理程序的设计当有选手第一个按下抢答器按扭时数码管显示选手号码,同时选手指示灯点亮,蜂鸣器发出三声间隔1秒的警告,并锁定抢答。当在此选手之后再有选手按下按扭时无效,数码管不变。2.3.5 四路抢答器程序 #include#define uchar unsigned char#define uint unsigned intsbit start=P34;sbit buzzer=P00; sbit key1_led=P14;sbit key2_led=P15;sbit key3_led=P16;sbit key4_led=P17;sbit key5_led=P36;uchar temp;uchar code wei=0xfb,0xf7;uchar code duan=0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09;uchar tt=0,key=0,sw=0,key_flag=0,start_flag=0, buzz_flag=0,x=0,y=0,j=9,m=0; /*/延时函数 /*/void delay(unsigned int t) unsigned int i,j; for(i=1000;i0;i-) for(j=t;j0;j-);/*/定时器初始化/*/void init_timer() TMOD=0x01; TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=0;TR0=0;/*/按键检测/*/void key_jc()temp = P1;sw = 0x0f&temp;if(sw!=0x0f) delay(1);if(sw!=0x0f)temp = P1; sw=0x0f&temp;while(sw=0x0f);switch(sw)case 0x0e:key_flag=1;key1_led=1;key=2;break; case 0x0d:key_flag=2;key2_led=1;key=2;break;case 0x0b:key_flag=3;key3_led=1;key=2;break;case 0x07:key_flag=4;key4_led=1;key=2;break;default:break; /*/动态数码管显示 /显示按键值和计时值/*/void xianshi(uchar n)uchar i=0;for(i=0;i0;x-)for(y=10;y0;y-);/*/数码管显示/*/void Led()uchar i=0;if(key=2) start_flag=2;/准备复位switch(sw)case 0x0e:/按键1xianshi(1);break;case 0x0d:/按键2xianshi(2);break;case 0x0b:/按键3xianshi(3);break;case 0x07:/按键4xianshi(4);break;default:break;else if(key=0)/初始状态“00”显示for(i=0;i0;x-)for(y=1;y0;y-);else if(key=1)/未有按键按下,仅计时显示for(i=0;i0;x-)for(y=10;y0;y-);/*/蜂鸣器函数/*/void buzz()if(buzz_flag=0)buzz_flag=1;ET0=1;TR0=1;if(buzz_flag=1)if(tt=10)tt=0;m+;if(m=6) m=0;buzzer=1; buzz_flag=2;start_flag=2; /准备复位 else if(m0)/在计时完成之前检测按键key_jc();if(key=2)if(buzz_flag=0)ET0=0;TR0=0;tt=0;buzz();Led(); /*/定时中断函数/*/void itc_timer() interrupt 1 TH0=(65535-50000)/256;TL0=(65535-50000)%256;tt+;if(start_flag=1)/开始if(tt=10)&(buzz_flag=0) tt=0;if(key_flag=0)/未有按键按下,只计时j-; if(j=0)buzzer=0;/蜂鸣器响start_flag=2;/准备复位 第三节 试验结果及结论(实验心得)回顾两周的课程设计,付出了很多,也收获了很多,周一至周二主要绘制原理图,紧接着就是看书查找资料,对相关元器件做一些了解,然后编程,由于我底子薄弱了一点,所以花在编程上的时间相对来说多了一点。在坚持不懈的努力下,终于编好了程序,时间也来到了第二周。编号程序以后就剩下调试了,把焊接好的板子与装好程序的单片机连接好,然后调试,调试并不是一帆风顺的,起初一点反应都没有,但好事多磨,在一步步的改进下,终于成功了。当我看到抢答器正常工作时,兴奋不已。在这几天中,体会到了团结协作的重要性和乐趣,有什么问题很想法拿出来一起探讨与分享,将会有更好的答案,活跃了一个人的思维,丰富了我们的头脑,学会去接受别人,肯定别人,同样也得到了别人的尊重与肯定,除了讨论之外,还需积极独立思考,唯独通过自己的独立思考,才能解决相关问题,才能提高对专业知识的熟悉程度,以后才能学会用,同样这也是我该努力的两个方向。在此要感谢我的指导老师,感谢老师给我这样的机会锻炼。在整个设计过程中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。 第四节 参考文献【1】 张毅刚 单片机原理及应用 高等教育出版社.2003年.【2】 赵嘉蔚 张家栋 霍凯编 单片机原理及接口技术 清华大学出版社 2010年【3】 康华光 电子技术基础 数字部分(第四版) 高等教育出版社, 2000.7课程设计评 语课程设计成 绩指导教师(签字) 年 月 日
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!