《智能四路抢答器(完).pdf》由会员分享,可在线阅读,更多相关《智能四路抢答器(完).pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-目 录 第一节 课程设计目的.3 1.1 概述.3 1.2 设计要求.3 第二节 四路抢答器设计正文.3 2.1 总体设计.3 2.1.1 抢答器的工作原理.3 2.1.2 抢答器的总体设计.4 2.2 硬件电路详细设计.4 2.2.180c51 芯片.4 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 版图的绘制.10 2.3 软件详细设计.11 2.3.1 主程序的设计.11 2.3.2 显示子程序的设计.11 2.3.3 定时
2、器 T0、T1 中断服务程序的设计.11 2.3.4 抢答处理程序的设计.11 2.3.5 总程序.12 第三节 实验结果及结论.18 第四节 参考文献.19 -第一节 课程设计目的 1.1 概述 单片机原理及应用课程设计是学生综合运用所学知识,全面掌握单片微型计算机及其接口的工作原理、编程和使用方法的重要实践环节。通过独立或协作提出并论证设计方案,进行软、硬件调试,最后获得正确的运行结果,可以加深和巩固对理论教学和实验教学内容的掌握,进一步建立计算机应用系统整体概念,初步掌握单片机软、硬件开发方法,为以后进行实际单片机软、硬件应用开发奠定良好的基础。课程设计的主要内容:根据单片机原理及应用课
3、程的要求,主要进行两个方面的设计,即单片机最小系统和接口技术应用设计。其中,单片机最小系统主要要求学生熟悉单片机的内部结构和引脚功能、引脚的使用、复位电路、时钟电路、4 个并行接口和一个串行接口的实际应用,从而可构成最小应用系统,并编程进行简单使用。接口技术应用设计主要要求学生能综合运用单片机、存储器、常用接口芯片构成单片机应用系统,有针对性地进行软、硬件设计与开发。1.2 设计要求:1、设置 4 个抢答台和四个抢答成功指示灯,1 个比赛主持人开始按键和 1 个抢答指示灯及 1 个 LED 显示器。2、采用中断和查询结合的方法确定按键动作。3、主持人按下“开始”键后,若有人抢答,则对应选手的指
4、示灯点亮,并用 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 接四个发
5、光二极管作为抢答成功指示灯;P0.0 接蜂鸣器,超时报警,和提示抢答。2.1.2 抢答器的总体设计 倒计时方案方面利用 MCS-51 的内部的定时/计时器进行中断计时,配合软件延时实现倒计时。该方案节省硬件成本,并且能够在定时器/计数器的使用、中断及程序设计方案方面得到锻炼与提高,显示方面采用穿行传输实现动态显示,该方案的硬件连接简单,但动态扫描的显示方式需占用 CPU 较多的时间,适用于单片机没有太多实时测控的任务场合。-抢答功能:通过四路按键配合程序来实现抢答功能。当主持人按下抢答键开始抢答后,此时任一路按下按钮均闭锁其它各路,由程序对键盘译码并显示最先按下抢答键的选手号。并亮起主持人台和
6、对应选手台上的抢答成功指示灯。抢答限时:主持人按下抢答键后,设置 9 秒为抢答时间。若 9 秒内无人抢答,倒计时为 0 时发出报警,说明该抢答题目作废。此时闭锁所有抢答按键,只有当主持人再次按下抢答键开始下一次抢答方可抢答。2.2 硬件电路详细设计 2.2.1 80C52 芯片 80C52 系列中,用 CHMOS 工艺制造的单片机都采用双列直插式(DIP)40 脚封装,引脚信号完全相同。1、为一般控制应用的 8 位单片机 2、晶片内部具有时钟振荡器(传统最高工作频率可至 33MHz)3、内部程式存储器(ROM)为 8KB单片机 4、内部数据存储器(RAM)为 256B 5、外部程序存储器可扩充
7、至 64KB 6、外部数据存储器可扩充至 64KB 7、32 条双向输入输出线,且每条均可以单独做 I/O 的控制 8、5 个中断向量源 9、3 组独立的 16 位定时器 10、1 个全双工串行通信端口 各引脚功能介绍:1电源 VCC(引脚号 40):电源正端输入,接+5V。VSS(引脚号 20):电源地端。2时钟-XTAL1(引脚号 18)内部振荡电路反相放大器的输入端,是外接晶振的一个引脚。当采用外部振荡器时,此引脚接地。XTAL2(引脚号 19)内部振荡器的反相放大器输出端,是外接晶振的另一端。当采用外部振荡器时,此引脚接外部振荡源。3控制总线 (1)ALE/PROG(引脚号 30):正
8、常操作时为 ALE 功能(允许地址锁存),用来把地址的低字节锁存到外部锁存器。ALE 引脚以不变的频率(振荡器频率的 1/6)周期性地发出正脉冲信号。因此,它可用作对外输出的时钟信号或用于定时。但要注意,每当访问外部数据存储器时,将跳过一个 ALE 脉冲。ALE 端可以驱动(吸收或输出电流)8 个 LSTTL 电路。在 8751 单片机 EPROM 编程期间,此引脚接编程脉冲(PROG 功能)。(2)PSEN(引脚号 29):外部程序存储器读选通信号。在从外部程序存储器取指令(或数据)期间,PSEN 在每个机器周期内两次有效。PSEN 可以驱动 8 个 LSTTL 电路。(3)RST/VPD(
9、引脚号 9):复位信号输入端。振荡器工作时,该引脚上持续 2 个机器周期的高电平可实现复位操作。此引脚还可接上备用电源。在 Vcc 掉电期间,由向内部 RAM 提供电源,以保持内部 RAM 中的数据。(4)EA/Vpp(引脚号 31):EA 为内部程序存储器和外部程序存储器的选择端。当 为 EA 高电平时,访问内部程序存储器(PC 值小于 4K);当 EA 为低电平时,访问外部程序存储器。对于 87C51 单片机,在 EPROM 编程期间,此端为 21V 编程电源输入端。4I/O 线(1)P0 口(引脚号 3239):单片机的双向数据总线和低 8 位地址总线。在访问外部存储器时实现分时操作,先
10、用作地址总线,在 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 中断请求输入端
11、 -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 主要起频率微调作
12、用,电容值可选取为 30pF 左右(外接晶体时)或 40pF 左右(外接陶瓷谐振器时)。80C52 外部方式时钟电路如图 2-10(b)所示。XTAL1 接外部振荡器,XTAL2 悬空。对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于 12Hz 的信号。抢答器电路的核心是 89C52 单片机,其内部带有 8KB 的 FLASH ROM,无需外扩程序存储器;抢答器没有大量的运算和暂存数据现有的 256B 篇内 RAM 已经能满足容量需求,故不需外扩片外 RAM,系统配有 2 个 8 段数码显示管共用一个 CD4511 驱动,管采用共阴数码管,作为选手号的显示输出。2.2.2 芯片的选
13、择 抢答器电路的核心是 89C52 单片机,其内部带有 8KB 的 FLASH ROM,无需外扩程序存储器;抢答器没有大量的运算和暂存数据现有的 256B 篇内 RAM 已经能满足容量需求,故不需外扩片外 RAM,系统配有 2 个 8 段数码显示管共用一个 CD4511 驱动,管采用共阴数码管,作为选手号的显示输出。2.2.3 复位电路的设计 复位电路的设计如右图所示:该复位电路采用上电自动复位和手动复位两种复位方式,图中右侧引脚接到单片机的复位引脚。要实现复位只需在,52 系列单片机的-RESET 引脚上加上 5ms 的高电平就可以了。上电复位是利用电容的充电来实现的,即上电瞬间 RESET
14、 端的电位与 Vcc 相同,随着电容上储能增加,电容电压也逐渐增大,充电电流减小,RESET 端的电位。这样就会建立一个脉冲电压,调节电容与电阻的大小可对脉冲的持续时间进行调节。通常若采用 12MHz 的晶振时,复位元件参数为 22F 的电解电容和 10k的电阻。按钮复位电路是通过按下复位按钮时,电源对 RESET 端维持两个机器周期的高电平实现复位的。2.2.4 晶振电路的设计 图 2-2 晶振电路原理图 MSC-52 单片机的定时控制功能是用时钟电路和振荡器完成的,而根据硬件电路的不同,连接方式分为内部时钟方式和外部时钟方式。本设计中采用内部时钟方式。单片机内部有一个反相放大器,XTAL1
15、、XTAL2 分别为反相放大器的输入端和输出端,外接定时反馈元件组成振荡器(内部时钟方式),产生时钟送至单片机内部各元件。时钟频率越高,单片机控制器的控制节拍就越快,运算速度也就越快。一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就可组成振荡器,如图 2-2 所示。加电以后延时一段时间(约 10ms)振荡器产生时钟,不受软件控制,图中 Y1 为晶振,震荡产生的时钟频率主要由 Y1 确定。电容 C1,C2 的作用有两个:一是帮助振荡器起振,二是对振荡器的频率起微调作用,典型值为 30pF。-2.2.5 数码显示电路的设计 图 2.3 数码显示管电路图 数码显示管
16、用来作为 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 总电路的设计 1234ABCD4321DCBAEA/VP31X119X218RESET9RD17WR16INT012INT113T0
17、14T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10U18051U2BUZZERC3ELECTRO1S1SW-PBS2SW-PBS3SW-PBS4SW-PBSTARTSW-PBY1CRYSTALD1LEDD2LEDD3LEDD4LEDA1A2A36A07OUT A13OUT B12OUT C11OUT D10OUT E9OUT F15OUT G14LT3BLLE5U3
18、CD4511BMD(16)abfcgdeDPYLEDgn1 2 3 4 5 6 7abcdefgDS2DPY_7-SEGabfcgdeDPYLEDgn1 2 3 4 5 6 7abcdefgDS1DPY_7-SEGC1CAPC2CAPQ1PNPR45RES2VCCVCCR11RES2VCCR41RES2R42RES2R43RES2R44RES2VCCVCCP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7INT1INT0INT1INT0P0.0P0.0P2.4P2.4P2.0P2.1P2.2P2.3P2.0P2.1P
19、2.2P2.31 2 3 4 5 6 71 2 3 4 5 6 71 2 3 4 5 6 7T0T0RETRET选手、裁判按键选手指示灯晶振电路复位电路7段数码管(共阴极)译码器蜂鸣器 单片机 STC90C52AD 图 2.5 总电路原理图-2.2.8 PCB 板的制作 画好原理图检查无误后,画 PCB 版图,本设计由于电路连接比较简单,接线较少,所以用明线直接连接,不用制版,画出 PCB 版图的目的是便于插板时的布局和链接。-2.3 软件详细设计 此程序的及时采用定时器 T0 和 T1 中断完成,其余状态循环调用显示子程序。系统主程序流程图如图 3-1 所示。图 2-3-1 系统主程序流程图
20、 2.3.2 显示子程序的设计 2.3.3 定时器 T0、T1 中断服务程序的设计 定时器 T0 用于复位程序,当给 RST 口加 10ms 的复位信号时,单片机复位。定时器 T1 用于计时程序,当主持人按下开始抢答按钮 9 秒内无人抢答时,蜂鸣器发出报警信号。2.3.4 抢答处理程序的设计 当有选手第一个按下抢答器按扭时数码管显示选手号码,同时选手指示灯点亮,蜂鸣器发出三声间隔 1 秒的警告,并锁定抢答。当在此选手之后再有选手按下按扭时无效,数码管不变。各控制单元赋主程序开始 初始化 调用显示程序 调用键盘处理程调用键盘扫描程序-2.3.5 四路抢答器程序 程序:#include#defin
21、e uchar unsigned char#define uint unsigned int sbit 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=0 xfb,0 xf7;uchar code duan=0 x10,0 x11,0 x12,0 x13,0 x14,0 x15,0 x16,0 x17,0 x18,0 x19;uchar tt=0,
22、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(j=t;j0;j-)for(i=10;i0;i-);/*/定时器初始化/*/void init_timer()TMOD=0 x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=0;TR0=0;/*/按键检测 /*/void key_jc()temp=P1;sw=0 x0f&temp;if(sw!
23、=0 x0f)delay(1);-if(sw!=0 x0f)/确定有按键按下 temp=P1;sw=0 x0f&temp;/有选手按下的低四位的值 while(P1&0 x0f)!=0 x0f)switch(sw)case 0 x0e:key_flag=1;key1_led=0;key=2;break;case 0 x0d:key2_led=0;key=2;break;case 0 x0b:key3_led=0;key=2;break;case 0 x07:key4_led=0;key=2;break;default:break;/*/动态数码管显示 /显示按键值和计时值/*/void xia
24、nshi(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 0 x0e:/按键 1 xianshi(1);break;case 0 x0d:/按键 2 xianshi(2);break;case 0 x0b:/按键 3 xianshi(3);break;case 0 x07:/按键 4 xianshi(4);break;default:break;else if(key=0)/初始状态“00”显示 P
25、2=0 x10;P3=0 xfb;delay(1);P2=0 x10;P3=0 xf7;delay(1);-else if(key=1)/未有按键按下,仅计时显示 for(i=0;i0;x-)for(y=10;y0;y-);/*/蜂鸣器函数 /*/void buzz()/发出三声间隔 1 秒的警告音 if(buzz_flag=0)buzz_flag=1;ET0=1;TR0=1;if(buzz_flag=1)if(tt=20)tt=0;m+;if(m=6)m=0;buzzer=1;buzz_flag=2;start_flag=2;/准备复位 else if(m0)/在计时完成之前检测按键 key
26、_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=20)&(buzz_flag=0)tt=0;if(key_flag=0)/未有按键按下,只计时 j-;if(j=0)buzzer=0;/蜂鸣器响 start_flag=2;/准备复位 -第三节 试验结果及结论(实验心得)通过这次单片机实习,我不仅加深
27、了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真正的东西。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力,如何把我们所学的专业基础课理论知识运用到实践中去,我想做类似实习就为我们提供了良好的实践平台 学习单片机没有捷径,不能指望两三天就学会,要坚持不懈,重在积累 单片机是一门应用性和实践性很强的学科,要多动手,多做实验。(a)要学会参考别人的程序,减少自己琢磨的时间,迅速提高自己的编程能力。(b)
28、碰到问题可以借助网络来搜寻答案和对自己有帮助的问题,一定会有所收获。(c)小组要团结,小组之间要多交流。技术是靠不断的积累和交流才会进步的,封闭自守只会更加落后。通过这次单片机设计我不仅加深了对单片机理论的理解将理论很好地应用到实际当中去,同时也使我认识到自身存在的不足之处,无论是理论上还是遇到问题的处理能力上都还有待提高,而且这也激发了我今后努力学习的兴趣。发现问题、提出问题、分析问题、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。1、不管做什么事,计划是很重要的。没有一个完好的计划,做事情就会没有一个好的顺序,做事情会比较乱,很难成功。而有一个好的计划,不管做什么事都会事
29、半功倍,做事心中有数,明确重点和缓急,不会有疏漏。这样才能提高成功率。2、做事要多动脑,选出最好的方法。一件事往往有多种解决方法,一个好的方法,不仅能使事情事半功倍,而且往往决定最后的成与败,所以做事时一定要多动一下脑筋,想出最好的方法。3、要注意细节。细节决定成败,这句话在这次课题中不仅一次得到了印证,特别是在软件的编程过程中,一点点的错误就会使你整个程序不能运行。因此我们不仅仅要有整体意识,也要注意细节,不要因一个关键地方的一个细节而导致满盘皆输。4、最后,也是最重要的一点,通过这次课题,我们学到了很多有关单片机方面的知识,也对单片机有了更深入的了解。使我们受益匪浅。总之,亲自动手是课堂学习的延续,电子领域随时随地都在发生着翻天覆地的变化,现有的知识储备总是落后于科技的发展脚步,我们只有不断学习新知识,才能做到面对新课题时游刃有余 -第四节 参考文献 【1】张毅刚 单片机原理及应用 高等教育出版社.2003 年.【2】赵嘉蔚 张家栋 霍凯编 单片机原理及接口技术 清华大学出版社 2010 年 【3】康华光 电子技术基础 数字部分(第四版)高等教育出版社,2000.7 课程设计 评 语 课程设计 成 绩 指导教师(签字)年 月 日