基于单片机的16路抢答器的课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖南工业大学
课程设计任务书
2010 —2011 学年第 1 学期
电气与信息工程学院(系、部)电子信息科学与技术专业081 班课程名称:单片机课程设计
设计题目:16路抢答器
完成期限:自2010 年12 月29 日至2011 年 1 月07 日共 2 周
指导教师(签字):年月日
系(教研室)主任(签字):年月日
(单片机应用系统)
设计说明书
(题目)
16路抢答器的设计
起止日期:2010 年12 月29 日至2011 年1 月07 日
学生姓名
班级
学号
成绩
指导教师(签字)
电气与信息工程学院(部)
2011年 1 月8 日
系统功能要求
A 基本要求
(1) 枪答功能:供16路枪答
(2) 复位功能:使系统进入“准备好”状态
(3) 自锁功能
(4) 互锁功能
(5) 用两个LED数码管显示抢答成功的路数
(6) 抢答成功时要有提示音,抢答不成功时要有报警音,还要显示ER
B 课程要求
(1)改善上述提示音和报警音
(2)采用串行总线技术完成设计,以便简化现场的连接
2、设计电路原理图
(1)在Protel99se或protus中画图
(2)mcu:AT89S51
3、完成MCU的程序设计
(1)给出程序设计思路(软件功能描述,完成软件功能的算法描述)文件描述,流程图,用viso画流程图
(2)给出详细的程序清单
(3)在keil51集成开发环境中编辑和编译软件调试程序
在Proteus环境中仿真该单片机应用环境,给出仿真的过程和结果(截图)
系统设计分析
1、电路原理图的设计
2、仿真电路原理图是设计以及仿真过程
3、硬件电路的设计与焊接
4、程序设计思路,包括程序功能描述、各子程序的算法描述以及整个程序的流程图
5、芯片资料查阅及参考文献
6、整体程序的设计
7、课程设计报告的撰写及资料汇总
8、整体组装与调试,即硬件与软件的结合调试与仿真
1.硬件电路总体原理图
如图1-0所示,P1.0-P1.7,P2.0-P2.7为十六路抢答输入,P0.0到P7.7输入到锁存器74HC573中,再输入到数码管显示,P3.2为蜂鸣器输出口,P3.5-P3.7连接到三八译码器的数据输入端,P3.3连接到译码器的使能端。
图1-0 系统原理图
1.1、时钟频率电路的设计
单片机必须在时钟的驱动下才能工作,在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。
一般选石英晶体振荡器。电路中两个电容的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。其电路图如图1-1所示:
图1-1 外部振荡源电路
1.2、复位电路的设计
单片机的第9脚RST为硬件复位端,只要将该端持续4个周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图1-2所示:
图1-2 复位电路
1.3、显示电路的设计
显示功能与硬件关系极大,当硬件固定后,如何在不一起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。
1.4、键盘扫描电路的设计
在单片机应用中键盘用得最多的形式是独立键盘及矩阵键盘,它们各有自己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,在节省端口资源上有很多优势,因此它适用于多按键电路。本次实验中所用到的端口不多,因此可以考虑使用独立键盘。
1.5、发声
利用程序来控制单片机某个口线的高电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制高低电平的持续时间,就能改变输出频率,从而改变声调,使喇叭发出不同的声音。
2.软件源程序设计
2.1程序流程图
2.2 汇编语言源程序设计(C51语言源程序设计)
#include
#define uint unsigned int
#define uchar unsigned char uchar aa,bb;
sbit buzz=P3^2;/*蜂鸣器接口*/
sbit wela=P3^3;/*数码管位选接口*/ sbit dula=P3^1;/*数码管段选接口*/ sbit a=P3^5;
sbit b=P3^6;
sbit c=P3^7;
sbit key1=P1^0;/*选手按键接口*/ sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit key5=P1^4;
sbit key6=P1^5;
sbit key7=P1^6;
sbit key8=P1^7;
sbit key9=P2^0;
sbit key10=P2^1;
sbit key11=P2^2;
sbit key12=P2^3;
sbit key13=P2^4;
sbit key14=P2^5;
sbit key15=P2^6;
sbit key16=P2^7;
void display(uchar shi,uchar ge); void delay(uint z);
void delay1(uint z);
uchar code table[]={
0x3F,0x06,0x5B,0x4F,
0x66,0x6D,0x7D,0x07,
0x7F,0x6F,0x79,0x50};