基于51单片机的8路抢答器
基于51单片机的8位竞赛抢答器设计

安装调试
撰写设计报告
答辩或成绩考核
教研室主任审查意见:
负责人签字:
年月日
当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。
参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
皖西学院
课程设计任务书
系别:
机电
专业:
电气
学 பைடு நூலகம் 姓 名:
学 号:
课程设计题目:
基于51单片机的8位竞赛抢答器设计
起迄日期:
6月 113日~6月25日
课程设计地点:
教学实验楼B502楼
指导教师:
张 磊
下达任务书日期:2011年6月13日
课 程 设 计 任 务 书
1.本次课程设计应达到的目的:
1、综合运用相关课程中所学到的理论知识去独立完成某一设计课题;
课 程 设 计 任 务 书
3.对本课程设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:
1、选用AT89S51单片机和适当的存储器及接口芯片完成相应的功能。
2、画出详细的硬件连接图。
3、给出程序设计思路、画出软件流程图。
4、给出地址分配表。
5、给出所有程序清单并加上必要注释。
4、侯玉宝.基于Proteus的51系列单片机设计与仿真.北京:电子工业出版社2009
课 程 设 计 任 务 书
5.本课程设计课题工作进度计划:
起迄日期
工作内容
基于51单片机的8路抢答器

基于51单片机的8路抢答器摘要抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。
但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。
作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。
本设计是以八路抢答为基本理念。
考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。
用开关做键盘输出,扬声器发生提示。
同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。
关键词:51单片机,抢答器,时间设定目录1 抢答器设计功能分析 (1)1.1 数字抢答器的概述 (1)1.2 设计任务与要求 (1)2 方案设计 (2)3 硬件电路设计 (3)3.1 总体设计 (3)3.2 外部振荡电路 (3)3.3 复位电路的设计 (4)3.4 显示电路的设计 (4)3.5按钮输入电路的设计 (4)3.6 发声 (5)4 系统软件设计 (6)4.1 程序系统结构图 (6)4.2 程序流程图 (6)4.3 程序代码: (9)4.3.1 查询程序: (10)4.3.2 非法抢答处理程序: (10)4.3.3 倒计时程序(包括有效抢答程序): (11)4.3.4 正常抢答处理程序: (13)4.3.5 犯规抢答程序: (14)4.3.6 显示程序: (15)4.3.7 延时(显示和去抖动用到): (16)4.3.8 TO溢出中断(响铃程序): (17)4.3.9 T1溢出中断(计时程序): (17)总结 (18)参考文献 (19)1 抢答器设计功能分析1.1 数字抢答器的概述对于抢答器我们大家来说都不陌生,它是用于很多竞赛场合,真正实现先抢先答,让最先抢到题的选手来回答问题。
八路抢答器-基于单片机C语言

#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit k1=P1^0;sbit k2=P1^1;sbit k3=P1^2;sbit k4=P1^3;sbit k5=P1^4;sbit k6=P1^5;sbit k7=P1^6;sbit k8=P1^7; //选手按键sbit beep=P3^6; //蜂鸣器uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77}; //0-9代码(共阴极)uchar shiwei,gewei,xuanshou,count,i,second;uchar score1,score2,score3,score4,score5,score6,score7,score8;//选手1~8的分数uint t,m,n,a,a1,a2,a3,a4,a5,a6,a7,a8;void Timer(){TMOD|=0x01;TH0=0xd8; //初值55536,计数10000次,每次1US,总计10msTL0=0xf0;IE=0x82; //这里是中断优先级控制EA=1(开总中断),ET0=1(定时器0允许中断),这里用定时器0来定时TR0=1;}void tim(void) interrupt 1 using 1 //为定时中断TR0{TH0=0xd8; //重新赋值TL0=0xf0;count++;if(count==100) //100*10ms=1秒{count=0;second--; //秒减1}}void delay(uint z) //延时函数{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);//延时1ms}void display (uchar shiwei,gewei,xuanshou) //显示函数{P2=0xfe; //打开显示时间十位的位选低电平有效1111 1110 P0=shiwei;//显示十位delay(5);P2=0xfd; //个位位选1111 1101P0=gewei;delay(5);P2=0xf7; //选手位选1111 0111P0=xuanshou;delay(5);}void dis(void)//调用显示函数{shiwei=tab[second/10];gewei=tab[second%10];xuanshou=tab[i];display (shiwei,gewei,xuanshou);}void init() //初始化函数{P2=0x04;//0000 0100P0=0x3f;//数码管共阴0011 1111显示0t=0;beep=0;//蜂鸣器i=0;second=29;score1=60;score2=60;score3=60;score4=60;score5=60;score6=60;score7=60;score8=60;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;}void main()//主函数{init();//调用初始化函数if(k==1){ m=0; if(k1==0) {delay(5);if(k1==0);while(!k1);beep=1;delay(500);beep=0;} // 违规抢答显示号码报警while(t){if(m==0) //开关,保证程序只执行一次{switch(t){case 1:{TR0=0;i=1;second=score1;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; //有选手抢答时显示选手号码蜂鸣器响,时间为0,t和i对应}}} }if(k2==0) {delay(5);if(k1==0);while(!k1);t=2;beep=1;delay(500);beep=0;}if(k3==0) {delay(5);if(k1==0);while(!k1);t=3;beep=1;delay(500);beep=0;}if(k4==0) {delay(5);if(k1==0);while(!k1);t=4;beep=1;delay(500);beep=0;}if(k5==0) {delay(5);if(k1==0);while(!k1);t=5;beep=1;delay(500);beep=0;}if(k6==0) {delay(5);if(k1==0);while(!k1);t=6;beep=1;delay(500);beep=0;}if(k7==0) {delay(5);if(k1==0);while(!k1);t=7;beep=1;delay(500);beep=0;}if(k8==0) {delay(5);if(k1==0);while(!k1);t=8;beep=1;delay(500);beep=0;}}if(k==0){Timer();//中断定时器打开delay(10);while(!k);while(1){dis();m=0;n=0;if (second==29){beep=1;delay(500);beep=0;}if(second==0){TR0=0;n=1;if(k1==0){delay(5);if(k1==0);while(!k1);t=1;beep=1;delay(500);beep=0;} // 违规抢答显示号码报警if(k2==0){delay(5);if(k1==0);while(!k1);t=2;beep=1;delay(500);beep=0;}if(k3==0){delay(5);if(k1==0);while(!k1);t=3;beep=1;delay(500);beep=0;}if(k4==0){delay(5);if(k1==0);while(!k1);t=4;beep=1;delay(500);beep=0;}if(k5==0){delay(5);if(k1==0);while(!k1);t=5;beep=1;delay(500);beep=0;}if(k6==0){delay(5);if(k1==0);while(!k1);t=6;beep=1;delay(500);beep=0;}if(k7==0){delay(5);if(k1==0);while(!k1);t=7;beep=1;delay(500);beep=0;}if(k8==0){delay(5);if(k1==0);while(!k1);t=8;beep=1;delay(500);beep=0;}if(k==0){beep=1;delay(500);beep=0;second=29;TR0=1;m=1;}}//如果再次按下开始按钮,蜂鸣器响0。
51单片机八路抢答器课程设计

题目:51单片机八路抢答器课程设计一、概述1.1 课程设计背景正所谓“活到老学到老”,学生在校期间不仅要掌握理论知识,更需要进行实践操作,提高自己的动手能力和创新能力。
而嵌入式系统是当前信息技术领域的一个重要方向,掌握单片机开发技术对于学生来说非常重要。
1.2 课程设计意义本课程设计旨在通过51单片机八路抢答器的设计,让学生掌握嵌入式开发的基本原理和方法,培养学生的动手能力和创新能力,提高学生的实际操作能力和解决问题的能力,促进学生对嵌入式系统的深入理解。
二、课程设计目标2.1 知识目标通过学习51单片机八路抢答器课程设计,学生应该能够掌握51单片机的基本原理和编程方法,了解嵌入式开发的基本流程和原理。
2.2 能力目标学生应该能够独立完成51单片机八路抢答器的设计和调试,并能够根据实际需要进行合理的改进和优化。
2.3 情感目标通过课程设计,学生应该能够培养对嵌入式开发的兴趣和热情,提高解决问题的勇气和毅力。
三、课程设计内容3.1 理论知识讲解本部分主要介绍51单片机的基本原理、工作原理和编程方法,让学生对51单片机有一个全面的了解。
3.2 实践操作训练学生在理论知识掌握的基础上,将进行51单片机八路抢答器的设计和调试实践,让学生在实际操作中逐步加深对嵌入式系统的理解。
3.3 设计报告撰写学生需要撰写关于51单片机八路抢答器的设计报告,详细介绍设计的过程和原理,加深对课程内容的理解和应用。
四、课程设计方案4.1 课程设计流程(1)理论知识学习:学生进行对51单片机的理论知识学习,包括基本原理和编程方法。
(2)实践操作训练:学生进行51单片机八路抢答器的设计和调试实践,逐步提高自己的动手能力。
(3)设计报告撰写:学生完成设计报告,总结课程学习的得失,加深对嵌入式系统的理解。
4.2 课程设计要求(1)学生需按时完成理论知识学习和实践操作训练。
(2)学生需要严格按照课程设计要求进行设计报告的撰写,并提交给老师进行评审。
基于单片机的八路抢答器毕业设计

基于单片机的八路抢答器毕业设计一、选题背景及意义1.1 选题背景抢答器是一种常见的电子竞赛设备,它可以被广泛应用于各种知识竞赛、智力竞赛和技能竞赛中。
抢答器的原理是通过按下按钮来触发电路,从而使得系统判断谁先按下了按钮。
由于抢答器具有响应速度快、准确性高等特点,因此在教育培训、科技竞赛等领域得到了广泛的应用。
1.2 选题意义本设计旨在通过单片机技术实现一个八路抢答器,以满足各种知识竞赛、智力竞赛和技能竞赛的需求。
该抢答器具有响应速度快、准确性高等特点,可以提高比赛的公正性和公平性,同时也可以增加比赛的趣味性和互动性。
二、设计思路及方案2.1 设计思路本设计采用基于单片机的八路抢答器方案,主要包括以下几个部分:(1)光电传感器模块:通过红外线发射管和接收管构成光电传感器,用于检测选手是否按下按钮。
(2)单片机模块:采用STC89C52单片机,负责控制整个抢答器的运行。
(3)LED显示模块:采用八个LED灯,用于显示哪个选手按下了按钮。
(4)音响提示模块:通过蜂鸣器发出声音提示哪个选手按下了按钮。
2.2 设计方案(1)硬件设计硬件设计主要包括光电传感器电路、单片机电路、LED显示电路和音响提示电路四个部分。
其中,光电传感器电路主要由红外线发射管和接收管构成;单片机电路采用STC89C52单片机,配合外部晶振、复位电路和ISP下载接口实现对整个系统的控制;LED显示电路采用常规的共阴极八段数码管,通过多工位选择来实现对不同选手的显示;音响提示电路采用蜂鸣器实现对选手按键行为的声音提示。
(2)软件设计软件设计主要包括系统初始化、中断服务程序、定时器控制程序和按键扫描程序四个部分。
其中,系统初始化主要负责对各个模块进行初始化设置;中断服务程序主要负责处理光电传感器的中断请求;定时器控制程序主要负责控制LED灯的显示和蜂鸣器的声音提示;按键扫描程序主要负责检测选手是否按下按钮,并触发相应的中断服务程序。
三、设计实现及测试3.1 设计实现本设计采用Protues仿真软件进行电路设计和调试,通过Keil C编译软件进行单片机程序编写和调试。
8路抢答器实验报告

8路抢答器实验报告1. 实验目的本实验的主要目的是使用8051单片机实现一个8路抢答器,通过此实验进行对8051单片机的基本功能使用的学习与实践。
2. 实验设备本实验所需设备为:8051单片机,LED灯8个,按键8个,继电器8个,电阻8个,电源、面包板、杜邦线等。
3. 实验原理抢答器是一种用来考验大家反应速度的体育游戏,而这种游戏的核心就是一个电子计时器,本实验的抢答器就是一个基于8051单片机的电子计时器。
抢答器的原理:开启定时器,确定一个随机时间,随机时间结束后,第一个按下按键的人获得了抢答的权利,按下按键之后,其它的按键则无法工作。
等到所有的按键都无法工作时,即抢答结束,此时可以利用LED或者接上继电器进行开关控制。
4. 实验步骤4.1 硬件电路连接将8个LED灯和8个按键分别连接到8个口线上,除此之外还需要连接8个电阻和8个继电器,将其连接到端口上,在连接好之后,进行外部与单片机的连接。
根据本实验需要,固定内部高低电平,同时其他单片机口线需要接继电器。
最后将电脑串口线同单片机串口接口相连。
4.2 编写单片机程序在编写单片机程序之前,首先需要对手册进行分析,确定采用的指令集,并开始编写程序。
4.3 配置定时器在本实验中,需要实现的功能是随机时间,所以需要通过定时器来实现,实现方法是使用定时器的计数器,改变计数器的初始值,以达到随机时间的效果。
在对定时器进行初始化之后,对计数器的值进行配置。
4.4 实现抢答器功能首先需要将单片机初始化,在初始化完成后,开始进行随机时间的计算。
每当按下按键之后,需要进行一些特定的操作,比如计算按键时间,进行相应的判断,并激活LED或继电器。
当最后一个按键被按下之后,抢答器即时结束。
这种方式的实现是在倒计时结束之前,抢答器不会被激活,直到倒计时结束后,抢答器才会被激活,同时相应的LED或继电器也会被关闭或关闭。
5. 实验总结通过本次实验,我对8051单片机有了更深刻的认识,了解了使用8051单片机实现抢答器的程序结构和代码实现方式,了解了定时器的使用和编程,掌握了按键的使用和程序控制的方法。
基于51单片机八路抢答器的设计

基于51单片机八路抢答器的设计八路抢答器是一种常见的电子设备,利用该设备可以实现多人同时抢答的功能。
本设计基于51单片机,通过电路和程序的设计,实现了一个八路抢答器。
一、硬件设计1.单片机选择本设计选择51单片机作为控制核心,采用STC89C52微控制器,该单片机具有丰富的外设接口和较大的存储空间,能够满足实现八路抢答器的要求。
2.抢答按键设备中需要设置八个抢答按键,用于参与者抢答。
按键采用常闭型按键,接通时为低电平,用于触发中断。
3.电源设计为了提供稳定的电源给抢答器,设计中采用了5V稳压电源电路,供电采用AC220V转DC5V电源适配器。
4.显示设计为了方便显示抢答结果,本设计采用了一个共阴数码管,用于显示抢答结果。
具体显示方式根据需求进行编程显示。
5.连接器设计为方便接线和扩展,设计中使用了排针排插连接器,将各个按键、数码管等连接到主控板上。
二、软件设计1.引脚设置首先需要对单片机的I/O引脚进行设置,将各个按键连接到相应的引脚上。
同时,还需要设置数码管的引脚,用于控制显示。
2.中断设置为了实现按键的检测和抢答功能,需要设置外部中断。
具体的中断设置根据引脚的连线情况进行配置。
3.抢答逻辑抢答的逻辑可以根据需求进行设计,本设计采用最先按下的键位为答题者,其他键位将被屏蔽。
按下按键后,相应的数码管会显示该答题者的编号或名称,并输出一个信号用于记录答题者的顺序。
4.结果显示抢答结束后,根据答题者的顺序,将结果显示在数码管上。
可以根据需求进行设计,如按照答题者的编号显示。
5.功能扩展除了基本的抢答功能外,还可以对设备进行功能扩展。
如设置答题时间限制,设置显示答题者的得分,设置答题者的排名等。
三、PCB设计完成硬件电路和软件设计后,需要进行PCB设计,将各个元件进行布局,进行连线和焊接。
PCB设计需要保证连接的正确性和布线的合理性。
四、测试与调试完成PCB的焊接后,需要进行设备的测试与调试。
通过逐个按下按键,观察数码管的显示结果是否正确。
基于51单片机八路抢答器程序代码

基于51单片机八路抢答器程序代码程序代码:```#include <reg51.h>// 定义IO口sbit buzzer = P2^0; // 蜂鸣器sbit led1 = P2^1; // LED1 sbit led2 = P2^2; // LED2 sbit led3 = P2^3; // LED3 sbit led4 = P2^4; // LED4 sbit led5 = P2^5; // LED5 sbit led6 = P2^6; // LED6 sbit led7 = P2^7; // LED7// 定义全局变量unsigned char num = 0; // 计数器int flag = 0; // 抢答标志位// 延时函数void delay(unsigned int t) {unsigned int i, j;for(i=0;i<t;i++) {for(j=0;j<110;j++);}}// 抢答函数void answer() interrupt 0 {flag = 1; // 标志位变为1 num ++; // 计数器加1 }}// 主函数void main() {// 初始化定时器TMOD = 0x01;TH0 = 0xF8;TL0 = 0xCC;ET0 = 1;EA = 1;TR0 = 1;buzzer = 0;led1 = 1;led2 = 1;led3 = 1;led4 = 1;led5 = 1;led6 = 1;led7 = 1;// 主循环while(1) {if(num == 1) { buzzer = 1; led1 = 0; delay(500);delay(2000);num = 0;} else if(num == 2) { buzzer = 1;led2 = 0;delay(500);buzzer = 0;led2 = 1;delay(2000);num = 0;} else if(num == 3) { buzzer = 1;led3 = 0;delay(500);delay(2000);num = 0;} else if(num == 4) { buzzer = 1;led4 = 0;delay(500);buzzer = 0;led4 = 1;delay(2000);num = 0;} else if(num == 5) { buzzer = 1;led5 = 0;delay(500);delay(2000);num = 0;} else if(num == 6) { buzzer = 1;led6 = 0;delay(500);buzzer = 0;led6 = 1;delay(2000);num = 0;} else if(num == 7) { buzzer = 1;led7 = 0;delay(500);delay(2000);num = 0;}}}```该代码实现了一个基于51单片机的八路抢答器系统,使用了定时器和中断来控制抢答过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于51单片机的8路抢答器摘要此次设计提出了用AT89S51单片机为核心控制元件,设计一个简易的抢答器,本方案以AT89S51单片机作为主控核心,与晶振、数码管、蜂鸣器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断等电路,设计的八路抢答器具有实时显示抢答选手的号码和抢答时间的特点,还有复位电路,使其再开始新的一轮的答题和比赛,同时还利用汇编语言编程,使其实现一些基本的功能。
本设计的系统实用性强、判断精确、操作简单、扩展功能强。
它的功能实现是比赛开始,主持人读完题之后按下总开关,即计时开始,此时数码管开始进行30s的倒计时,直到有一个选手抢答时,对应的会在数码管上显示出该选手的编号和抢答所用的时间,同时蜂鸣器也会发出声音,以提示有人抢答本题,如果在规定的60s时间内没有做出抢答,则此题作废,即开始重新一轮的抢答。
在抢答和回答时间的最后5s,蜂鸣器都会给予报警提示。
关键词:单片机、AT89S51、抢答器目录第一章前言 (1)第二章各模块的选择和论证 (3)2.1抢答器显示模块选择 (3)2.2 控制器选择 (4)2.3 键盘选择 (5)2.4 时钟频率电路的设计 (7)2.5 复位电路的设计 (7)2.6 报警电路 (8)2.7 AT89C51单片机简单概述 (8)2.7.1 AT89C51单片机的结构 (8)2.7.2 AT89C51单片机管脚说明 (9)第三章模块最终方案的设计 (12)3.1总体设计思路 (12)3.2 功能介绍 (12)3.3 抢答器的软件设计 (12)3.4 数码显示软件设计 (13)第四章系统调试与仿真 (15)4.1 软件调试问题分析 (15)4.2 Proteus 仿真 (16)第五章电路板的制作与检查 (17)5.1 焊接的问题及解决 (17)第六章总结 (18)6.1 论文总结 (18)6.2 工作展望 (19)参考文献、资料索引 (20)致谢 (21)附录 (22)附录一主程序清单 (22)附录二单片机八路智能抢答器原理图 (32)附录三 Proteus仿真原理图 (33)第一章前言单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
单片机按其内部中央处理器CPU(CentralProcessingUnit)的字长分为1位机、4位机、8位机、16位机等。
从1976年8位单片机诞生以来,单片机领域中一直是以8位机为主流机型,预计这种情况还将继续下去。
因此我们以Intel公司的8位机为例来谈谈单片机的发展历史。
1.第一阶段——单片机阶段(1976年~1978年)。
这阶段的任务是探索计算机的单芯片集成。
以Intel公司的MCS-48为代表,其CPU、存储器、定时器/计数器、中断系统、I/O 端口、时钟以及指令系统都是按嵌入式系统要求专门设计的。
参与这—阶段探索的公司还有Motorola、Zilog等。
2.第二阶段——单片机的完善阶段(1978年一1982年)。
计算机的单芯片集成探索取得成功后,随后的任务就是要完善单片机的体系结构。
作为这一阶段的典型代表是Inlel公司将MCS—48向MCS—5l系列的过渡。
它在以下几个重要方面奠定了单片机的体系结构。
1.完善的外部总线。
有8位数据总线、16位地址总线、控制总线及具有多机通信功能的串行通信接口。
2.CPU外围功能单元的集中管理模式。
3.设置面向工控的位地址空间及位操作方式。
4.指令系统突出控制功能。
3.第三阶段——微控制器形成阶段(1983年一1990年)。
这一阶段单片机的主要技术发展方向是满足测控对象要求的外围电路的增强,如A/D转换、D/A转换、高速I/O口、WDT(程序监视定时器)、DMA(高速数据传输)等,强化了智能控制的特征。
4.第四阶段——微控制器全面发展阶段(1990年以后)。
即当前的单片机时代,其显著特点是百花齐放、技术创新。
单片机正在满足各个方面的需求.从玩具、小家电、工业控制单元到机器人、智能仪表,过程控制,个人信息终端等无所不能。
随着微电子技术、电力电子技术、传感器技术、永磁材料技术、自动控制技术、微机应用技术的发展,使单片微型计算机也得到迅速的发展,单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域故又称为微控制器。
第二章各模块的选择和论证2.1抢答器显示模块选择显示模块主要是显示抢答的时间,组别号码等。
考虑有以下两种显示方案。
方案一:使用液晶屏显示时间。
液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强的特点。
但由于只需要显示时间和转向、相数这样的数字,信息量比较少,且由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器的资源占用较多,其成本也偏高。
在使用时,不能有静电干扰,否则易烧坏液晶显示芯片,不易维护。
方案二:在使用传统的数码管显示。
数码管具有:低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度高,称量快,精确可靠,操作简单。
数码显示是采用BCD编码显示数字,程序编译容易,资源占用较少。
根据以上的论述,我选择采用方案二。
显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。
在这里我们使用的是七段数码管显示,通常在显示上我们采用的方法一般包括两种:一种是静态显示,一种是动态显示。
其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;动态显示的特点是:显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。
在本设计中根据实际情况采用的是动态显示方法。
4位七段数码管显示电路如下图所示。
图 2-1 4位七段数码管显示电路图上图中数码管采用的是4位一体七段共阳数码管,其中A~H段分别接到单片机的P0口,由单片机输出的P0口数据来决定段码值,位选码COM1,COM3,COM4分别接到单片机的P2.0,P2.1,P2.2,由单片机来决定当前该显示的是哪一位。
在图中还有八个电阻,连接在P0口上,用作P0口的上拉电阻,保证P0口没有数据输出时候处于高电平状态。
通过查表法,将其在数码管上显示出来,其中P0口为字型码输入端,P2口低3位为字选段输入段。
在这里我们通过查表将字型码送给7段数码管显示的数字。
2.2 控制器选择控制器主要用于对显示、抢答、音乐、计分等模块进行控制。
控制器的选择有以下两钟方案。
方案一:采用FPGA(现场可编程门列阵)作为系统的控制器。
FPGA可以实现各种复杂的逻辑功能,规模大,密度高,它将所有器件集成在一块芯片上,减小了体积,提高了稳定性,并且可以应用EDA软件仿真、调试,易于进行功能扩展。
FPGA采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模实时系统的控制核心。
但由于本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分体现,并且由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的工作。
方案二:采用ATMEL公司的AT89S51作为系统控制器的CPU方案。
单片机算术运算功能强,软件编程灵活、自由度大,可以用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。
基于以上分析,我选择采用方案二。
2.3 键盘选择键盘是单片机不可缺少的输入设备,是实现人机对话的纽带。
键盘按结构形式可以分为非编码键盘和编码键盘,前者用软件方法产生键码,而后者则用硬件方法来产生键码。
在单片机中使用的都是非编码键盘,因为非编码键盘结构简单,成本低廉,非编码键盘的类型很多,常用的有独立式键盘,行列式键盘等。
方案一:独立式键盘键盘接口中使用多少根I/O线,键盘中就有几个按键,键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比较少,且键盘中各按键的工作互不干扰。
因此可以根据实际需要对键盘中的按键灵活的编码。
如图2-2。
最简单的编码方式就是根据I/O 输入口所直接反映的相应按键,按下的状态进行编码,称按键直接状态码,对于这样编码的独立式键盘,CPU 可以通过直接读取I/O 口的状态来获取按键的直接状态编码值,根据这个值直接进行按键识别,这样形式的键盘结构简单,按键识别容易。
独立式键盘的缺点是需要占用比较多的I/O 口线,当单片机应用系统键盘中需要的按键比较少或I/O 口线比较富余时,可以采用这样类型的键盘。
图2-2 独立式键盘方案二:行列式键盘行列式键盘是用N 条I/O 线作为行线,M 条I/O 线作为列线组成的键盘,在行线和列线的每个交叉点上。
这种形式的键盘结构,能够有效的提高单片机系统中I/O 的利用率,列线接P1.0~P1.3行线接P1.4~P1.7,行列适用于按键输入多的情况。
CPU 对键盘的扫描可以采用取程序控制的随机方式,即只有在CPU 空闲是时才去扫描键盘,响应操作人员的键盘输入,即利用单片机内部定时器每隔一定时间对键盘扫描一次,这样控制方式,不管键盘上有无键闭合,CPU 总是定时的关心键盘状态。
在大多数情况下,CPUP1123 4 5 6 78对键盘可能进行空扫描。
为了提高CPU的效率而又能及时响应键盘输入,可以采用中断方式,既CPU平时不必扫描键盘,只要当键盘上有键盘闭合时就产生中断请求,向CPU申请中断后,立即对键盘上有键盘进性扫描,识别闭合键,并做相应的处理。
图2-3行列式键盘图 2-4 抢答按键及调整按键2.4 时钟频率电路的设计单片机必须在时钟的驱动下才能工作。
在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。
时钟电路如下图所示。
图 2-5 外部振荡源电路一般选用石英晶体振荡器。
此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。
电路中两个电容C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。
单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。
其大小是时钟信号频率的倒数。
图中时钟频率为12MHz。
2.5 复位电路的设计单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如下所示:图 2-6 复位电路2.6 报警电路我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的巨型波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。