1、单片机抢答器天津理工大学电子系单片机课程设计报告题目:基于AT89C51单片机的抢答器设计班 级 指 导 教 师 设 计 成 员 电子系2011年 06 月 21 日一课程设计意义 单片机原理及应用是电子系各专业一门重要的专业课,该课程设计是针对本课程实践性较强的特点,使学生在掌握单片机的基础原理、硬件结构、程序设计、系统扩展及使用的基础上,具体应用单片机达到对设备的控制目的。课程设计过程中,有针对性地使用单片机,控制系统或器件设备的运行,增强学生的实践意识和动手能力,提高系统设计水平。通过这次设计掌握51单片机的原理,了解简单多功能抢答器组成原理。初步掌握多功能抢答器的设计,调整及测试方法。
2、提高动手能力和排除故障能力。同时通过本课程设计与调试,提高自己的动手能力,巩固所学的知识,建立单片机理论与实践相结合。了解多功能抢答器各电路之间的联系及相互影响。从而能正确设计,计算定时计数的各个单元电路 二课程设计任务书1.功能要求基于AT89C511单片机设计制作一个抢答器,主要有如下功能:(1) 可同时供8个代表队参加比赛,编号为0、1、2、3、4、5、6、7,各用一个按钮。(2) 给节目主持人设置一个控制开关,用来控制系统的清零和抢答的开始。(3) 抢答器具有数据锁存功能、显示功能和声音提示功能。抢答开始后,若有选手按动按钮,编号立即锁存,并在LED数码管上显示选手的编号,同时灯亮且伴
3、随声音提示。此外,要封锁输入电路,禁止其他选手抢答,最先抢答选手的编号一直保持到主持人将系统清零。2.设计要求基于AT89C51单片机抢答器由控制核心AT89C51、复位电路、电源电路、蜂鸣器电路、选手按键、主持人按键和数码显示电路等部分组成。指导教师:日 期:三、课程设计进度计划及检查情况记录表序号日期计划完成内容实际完成内容106.20熟悉并挑选课题内容完成206.21初步完成硬件电路设计,并利用protel99绘制电路原理图,及初步进行软件程序设计完成3 0622软件程序设计完成4 06.23 软件程序的调试及硬件电路的测试、调控完成56四、成绩评定与评语 指导教师: 日 期:课程设计的
4、主动性与平时表现(20%)独立思考能力 与动手能力(40%)课程设计 完成情况(40%)课程设计成绩题目:基于AT89C51单片机的抢答器设计一 总体设计方案本设计是基于AT89C51单片机为核心,利用单片机的去抖电路、按键复位电路、电源电路、蜂鸣器电路、选手按键、主持人按键和数码显示电路等电路。并结合蜂鸣器、LED数码管等器件组成一个简易的八路抢答器,本设计抢答器具有实时显示抢答功能。设计要求:(1) 设计一个可供8人进行的抢答器。设置一个控制开关,用来控制系统的结束和抢答的开始(2) 抢答器具有数据锁存和显示的功能。抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在LED数码管行显示出选
5、手的编号,同时扬声器给出音响提示。此外,要封锁输入电路,禁止其他选手抢答。优先抢答选手的编号一直保持到主持人将系统结束,然后重新开始为止。(3) 抢答器具有一定的防止误差的功能。 根据设计要求得出:用以AT89C51为核心的单片机控制方案,通过相应的程序,设计出相应的外部电路,并通过按键来进行电平识别,再由单片机输出相应的程序,并将相应数值通过LED数码管来显示,运用这个方案来实现题目的要求。 二 设计内容 2.1 AT89C51功能及简介AT89C51单片机是ATMAL公司89系列单片机的一种8位Flash单片机。用途十分广泛,特别是在生产便携式商品,手提式仪器等方面。应用十分广泛。内部主要
6、有以下部件:8031CPU、振荡电路、总线控制部件、中断控制部件、片内Flash存储器、片内RAM、并行I/O接口、定时器和串行I/O接口。AT89C51是89系列单片机的标准型,它是与MSC-51系列单片机兼容的。在内部含有4KB或8KB可重复编程的Flash存储器,可进行1000次擦写操作。全静态工作为0-24MHZ,有3级程序锁存器,内部含有128-256字节的RAM,有32条可编程I/O口线,2-3个16位定时/计数器,6-8个中断源,通用的串行接口,低电压空闲及电源下降方式。AT89C51单片机内部由CPU、4KB的FPEROM ,128B的RAM,两个16位的定时/计数器T0和T1
7、,4个8位的I/O端P0、P1、P2、P3等组成。单片微机内部最核心的部分是CPU。CPU主要功能是产生各种控制信号,控制存储器、输入/输出端口的数据传输、数据的算术运算、逻辑运算以及位操作处理等,CPU按其功能可分为运算器和控制器两部分。控制器由程序计数器PC、指令储存器、指令译码器、实时控制与条件转移逻辑电路等组成。它的功能是对来自存储器中的指令进行译码,通过实时控制电路,在规定的时刻发出各种操作所需的内部和外部的控制信号,使各部分协调工作,完成指令所规定的操作。运算器由算术逻辑器部件ALU、累加器ACC、暂存器、程序状态字寄存器PSW,BCD码运算调整电路等组成。AT89C51单片机的内
8、部结构图2.2硬件电路设计2.2.1硬件原理整个电路主要由控制系统,抢答系统,复位系统,显示系统,外部震荡源和去抖电路以及芯片组成。接下来会对各主要功能部分有比较详细的说明,以及电路图的放大图。 图1、多功能抢答器硬件原理图 2.2.2 复位电路单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态。由于单片机是高电平复位,所以当按键按下时候,单片机的9脚RESET管脚处于高电平,此时单片机处于复位状态。当上电后,由于电容的缓慢充电,单片机的9脚电压逐步由高向低转化,经过一段时间后,单片机的9脚处于稳定的低电平状态,此时单片机上
9、电复位完毕,系统程序从0000H开始执行,以达到复位的目的。图2、复位电路2.2.3 “开始/结束”控制按键及发声电路由主持人控制“开始/结束”键控及发生电路的开始与结束。并且在抢答开始和结束的时候,同时由扬声器发出提示音。提示选手抢答开始或者抢答结束。声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。此处用到了单片机17脚的IO端口功能,单片机通过内部定时器的操作实现交替变换的波形输出
10、驱动扬声器发声。 图3、“开始/结束”控制按键及发声电路2.2.4 抢答按键图中8个抢答按键分别接入单片机的P1.0P1.7端口,单片机通过读取P1.0P1.7的值来判断当前输入的是8个抢答按键中的哪一个 图4、抢答按键电路2.2.5 去抖电路按键的触点在闭合和断开时均会产生抖动,这时触点的逻辑电平是不稳定的,如不妥善处理,将会引起按键命令的错误执行或重复执行。现在一般均用软件延时的方法来避开抖动阶段,这一延时过程一般大于5ms,例如取10-20ms。如果监控程序中的读键操作安排在主程序(后台程序)或键盘中断(外部中断)子程序中,则该延时子程序便可直接插入读键过程中。如果读键过程安排在定时中断
11、子程序中,就可省去专门的延时子程序,利用两次定时中断的时间间隔来完成抖动处理。K1K8八个按键的输入电平靠74HC30输入与非门和74LS04反向器组成的电路改变输入电平。图中电路就是由一个74HC30输入与非门和74LS04反向器组成的去抖电路。 图5、去抖电路 2.2.6时钟电路单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。时钟电路如图所示。一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振
12、的频率确定。电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为20PF。图6、时钟电路2.2.7 共阴极数码管图中数码管采用的是4位八段共阴数码管,其中AH段分别接到单片机的P0口,由单片机输出的P0口数据来决定段码值,位选码COM1、COM3、COM4分别接到单片机的P2.0、P2.1、P2.2,由单片机来决定当前该显示的是哪一位。在图中还有八个1K的电阻,连接在P0口上,用作P0口的上拉电阻,保证P0口没有数据输出时候处于高电平状态。图7、共阴极数码管电路2.3软件程序设计2.3.1 抢答器的工作抢答器的基本工作原理:在抢答竞赛或呼
13、叫时,有多个信号同时或不同时送入主电路中,抢答器内部的寄存器工作,并识别、记录第一个号码,同时内部的定时器开始工作,记录有关时间并产生超时信号。在整个抢答器工作过程中,显示电路、声音电路等还要根据现场的实际情况向外电路输出相应信号。抢答器的工作流程分为:系统复位、正常流程、违例流程等几部分。2.3.2软件程序流程图程序工作流程图2.3.3 主程序void main() init(); if(k=0) /主持人按下开始键 Timer(); delay(10); while(!k); /当k=1时 while(1) dis(); m=0; n=0; if(second=10)beep=1;dela
14、y(500);beep=0; if(second=0) TR0=0;n=1; if(k=0) beep=1;delay(500);beep=0;second=29;TR0=1;m=1; if(n=0) if(k1=0) delay(5);if(k1=0);while(!k1);t=1; else if(k2=0) delay(5);if(k2=0);while(!k2);t=2; else if(k3=0) delay(5);if(k3=0);while(!k2);t=3; else if(k4=0) delay(5);if(k4=0);while(!k2);t=4; else if(k5=0
15、) delay(5);if(k5=0);while(!k2);t=5; else if(k6=0) delay(5);if(k6=0);while(!k2);t=6; else if(k7=0) delay(5);if(k7=0);while(!k2);t=7; else if(k8=0) delay(5);if(k8=0);while(!k2);t=8; elseif(k=0) delay(5);if(k=0);while(!k);t=0;second=29;beep=1;delay(500);beep=0;TR0=1; while(t) if(m=0) /开关,保证程序只执行一次 swit
16、ch(t) case 1: TR0=0;i=1;second=0;beep=1;delay(500);beep=0; a1=0;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;break; case 2: TR0=0;i=2;second=0;beep=1;delay(500);beep=0; a2=0;a1=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;break; case 3: TR0=0;i=3;second=0;beep=1;delay(500);beep=0; a3=0;a1=1;a2=1;a4=1;a5=1;a6=1;a7=
17、1;a8=1;m=1;break; case 4: TR0=0;i=4;second=0;beep=1;delay(500);beep=0; a4=0;a1=1;a2=1;a3=1;a5=1;a6=1;a7=1;a8=1;m=1;break; case 5: TR0=0;i=5;second=0;beep=1;delay(500);beep=0; a5=0;a1=1;a2=1;a3=1;a4=1;a6=1;a7=1;a8=1;m=1;break; case 6: TR0=0;i=6;second=0;beep=1;delay(500);beep=0; a6=0;a1=1;a2=1;a3=1;a
18、4=1;a5=1;a7=1;a8=1;m=1;break; case 7: TR0=0;i=7;second=0;beep=1;delay(500);beep=0; a7=0;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a8=1;m=1;break; case 8: TR0=0;i=8;second=0;beep=1;delay(500);beep=0; a8=0;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;m=1;break; 当主持人按下“开始”键的时候,执行Timer程序,蜂鸣器开始提示抢答开始。此后,任何一名选手抢到答题机会后,数码管及时显示选
19、手编号。同时锁存器启动,保证程序只运行一次。2.3.4 子程序#include#define uchar unsigned char#define uint unsigned intsbit k1=P10;sbit k2=P11;sbit k3=P12;sbit k4=P13;sbit k5=P14;sbit k6=P15; sbit k7=P16; sbit k8=P17; /选手按键 sbit k=P30; /主持人按键开始sbit beep=P37; /蜂鸣器uchar code tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
20、0x77; /0-9代码uchar shiwei,gewei,xuanshou,count,i,second; /定义变量uchar score1,score2,score3,score4,score5,score6,score7,score8;/选手18的分数uint t,m,n,a,;时间子函数void Timer() TMOD|=0x01; TH0=0xd8; /初值55536,计数10000次,每次1US,总计10ms TL0=0xf0; IE=0x82; /这里是中断优先级控制EA=1(开总中断),ET0=1(定时器0允许中断),这里用定时器0来定时 TR0=1; void tim(
21、void) interrupt 1 using 1 /为定时中断TR0 TH0=0xd8; /重新赋值 TL0=0xf0; count+; if(count=100) /100*10ms=1秒 count=0; second-; /秒减1 void display (uchar shiwei,gewei,xuanshou) /显示函数 P2=0xfe; /打开显示时间十位的位选 P0=shiwei; /显示十位 delay(5);P2=0xfd; /个位位选 P0=gewei; delay(5); P2=0xf7; /选手位选 P0=xuanshou; delay(5);void dis(vo
22、id) shiwei=tabsecond/10; gewei=tabsecond%10; xuanshou=tabi; display (shiwei,gewei,xuanshou);void init() /初始化函数 P2=0x04; P0=0x3f; t=0; beep=0; i=0; second=29; score1=60; score2=60; score3=60; score4=60; score5=60; score6=60; score7=60; score8=60;三 结论、建议及课程设计体会 硬件电路连接图 局部硬件连接图 数码显示管 模拟抢答器开关本课程设计设计的八路抢
23、答器采用了通用的电子元器件,利用AT89C51单片机及外围接口实现强大系统,利用单片机的定时器、计数器定时和计数的原理,将软硬件有机的结合起来。理论联系时间,体现出大学生的动手能力。通过查资料和收集有关的文献,培养了自学能力和动手能力。并且有原先的被动接受只是转换为主动寻求只是,这可以收拾学习方法上的一个很大突破。在以往的传统学习模式下,我们可能会记住很多书本知识,但是通过课程设计,我们学会了如何将学到的知识化为自己的东西,学会了怎么跟好的处理只是和实践相结合的问题,把握重点,攻克难关,学到用到活学活用。在设计过程中由于时间仓促有很多地方难免存在不足之处,硬件设计已经完成,在软件设计中有些功能
24、还尚未能开发出来。但在以后的工作学习中,我们会严格要求自己最求完美。整个设计通过软件和硬件上的调试,仿真。我想这些对于自己以后的学习和工作都会有很大的帮助。在这次设计中遇到很多实际性的问题,在实际设计中才发现,书本上德尔理论性的东西与实际运用中的还是有一定的出入的,所以有些问题不但要深入的理解,而且要不断的更正以前的错误思维。对于单片机设计,器硬件电路时比较简单的,主要是解决程序设计中的问题。而程序设计师一个很灵活的东西,他反应了你解决问题的逻辑思维和创新能力。它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借签书本上的,但怎样衔接各个子程序才是关键的
25、问题坐在,这需要对单片机的节后很熟悉。因此可以说单片机的设计师软件和硬件的结合,二者是密不可分的。但是,通过这次设计我也发现自己的很多不足之处。在设计过程中我发现自己考虑问题很不全面,自己的专业知识掌握的很不牢靠,所掌握的计算机软件还不够,我希望自己的这些不足之处能在今后的工作和得学习中到改善。而且,通过这次设计,我懂得了学习的重要性,学会了坚持和努力,这将为以后的学习做出了最好的榜样!回头再看看该设计,还可以将设计的扩展功能增强:1可以设计声控装置,在主持说开始时,系统自动完成清零并开始时的功能。2 增加积分模块,可以设定初始积分,并记录每次抢答完成后的积分。3 将抢答按键使用无线实现,如红外线,是抢答者可以远距离进行抢答,并简化按键模块的线路布置。如果提供相应的器材及时间上的宽限,硬顶可以完成上述扩展功能,进一步完善作品。四参考文献 1胡汉才. 单片机原理及其接口技术(第三版)M.北京:清华大学出版社,20042王文峰. 数码显示六路抢答器的设计J. 井冈山师范学院学报. 2000.05:20-213周坚. 单片机C语言轻松入门M. 北京:航空航天大学出版社4杨晓辉、张彤、姜俊海. 智能抢答器的设计与制作J. 长春大学学报. 2000.06:24-255陈越等. ISD全系列单片语音录放电路设计与应用M. 电子工业出版社. 2005
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1