1、 单片机原理 作业 电子答题器( 课程设计 ) 探测一班 15xxxxxx09 xxx 单片机原理与应用系统设计 1 目录 一、设计任务与选题 . 2 1.作业设计任务 . 2 2.作业设计选题 . 2 二、系统原理与设计分析 . 2 1.系统设计分析 . 2 2.系统原理图设计 . 3 三、程序流程图设计 . 4 四、源程序设计 . 5 1.按键查询程序 . 5 2.声光提示程序 . 6 3.提示灯旋转程序 . 7 五、系统调试与仿真 . 8 六、心得体会 . 9 单片机原理与应用系统设计 2 电子答题器( 课程设计 ) 一、设计任务与选题 1.作业 设计任务 查询相关资料,设计一个你自己最
2、感兴趣的单片机系统。 2.作业 设计选题 电子答题器是基于 AT89C51、 AT89C52 单片机的电子答题系统,通过单刀多掷开关和答题按钮控制正确选项。在各种知识竞答的活动以及抽奖等游戏活动都可以应用。 二 、 系统 原理与设计分析 1.系统设计分析 单片机的最小系统 +数码管(共阴) +8 个按钮 +直流电动机 +L298+二输入与门 (可使用中断) +报警蜂鸣器 +LED+单刀多掷开关 没有按键按下,则相应输入为高电平,否则为低电平。这样可通过读入AT89C51 的 P3 口的数据来判断按下的是什么键。在有键按下后,要有一定的延时以防止抖动。当按键按下后, 若单刀多掷开关拨至该按键,则
3、 低电平输入AT89C2051 的 P3.7 端口,在单片机内,经查询、识别、判决等环节实时发出鸣笛状态控制信号,驱动电路将控制信号放大并推动声光鸣笛设备完成相应动作 ,同时波特率发生器通过程序控制产生 PWM信号送给电机驱动芯片 L298N的使能端口 ENA,并通过输入端口 IN1 和 IN2 来控制电机的启动和停止。 最终实现按下相应的按键显示相应的选项数字,当按中答案时系统发出正确提示音并亮起旋转提示灯,按下复位键时数字显示为 0,同时提示灯停止运转。 单片机原理与应用系统设计 3 2.系统原理图设计 系统所用 元 件为 单片机 AT89C51、 AT89C52、 AT89C2051、
4、CAP(30/0.1pF)、CAP-ELEC(22 F)、 BUTTON、 LED-RED、 7SEG-COM-CATHODE、 CRYSTAL(12MHz)、 RES、MOTOR、 L298、 DIODE、 AND_2、 NPN、 SPEARKER、 IN4148。 电子答题器原理图如下图所示: 单片机原理与应用系统设计 4 三、程序流程图设计 单片机原理与应用系统设计 5 四、源程序设计 1.按键查询程序 #include #define uint unsigned int #define uchar unsigned char uchar j; uchar t; uint n; cons
5、t uchar tab=0x3f,0x06,0x5b, 0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f; void delay(uint n) uint i; for(i=0;i #include #define uint unsigned int #define uchar unsigned char sbit zj=P37; sbit bell=P13; sbit red=P17; void Delay100us() uchar i,j; _nop_(); _nop_(); i=2; j=15; do while( -j); while( -i); void mai
6、n(void) uint z=0; uchar a=0; P3=0xff; bell=1; red=1; while(1) if(zj=0) /bell=1; bell=!bell; red=0; a=1; Delay100us(); else bell=0; red=1; a=0; 单片机原理与应用系统设计 7 if(a=zj) for(z=0;z #define uchar unsigned char uchar cycle=100; uchar speed=50; sbit IN1=P20; sbit IN2=P21; sbit ENA=P22; void zz() IN1=1; IN2
7、=0; void stop() IN1=0; IN2=0; void t0(void) interrupt 1 using 1 if(cycle100) cycle=0; if(cyclespeed) ENA=0; else ENA=1; cycle+; void main(void) EA=1; EX0=1; 单片机原理与应用系统设计 8 IT0=1; TMOD=0x02; TH0=0x06; TL0=0x06; TR0=1; ET0=1; PX0=1; P1=0Xff; while(1) void int0(void) interrupt 0 using 0 switch(P1) case
8、 0xfe:zz();break; case 0xfd:stop();break; default:P1=0xff;break; 五、系统调试与仿真 单片机原理与应用系统设计 9 六、心得体会 这是这一学期的单片机课程的最后一次作业,也是最难的一次作业。前几次作业的不用心让我前几次作业的成绩并不是特别好,经过老师的多次批评教育以及一些同学的成果展示,在亲眼目睹了自己和同学的成绩之后,我意识到了我的问题所在,也 在老师的批评下 渐渐醒悟了。 第五次作业才算是我认真完成的第一次作业,而作为本学期最后一次作业的这次大作业,我更是颇为重视,查阅资料,参考书本,询问同学,研究程序。因为对汇编语言依然不够
9、了解,所以我选择了 C语言来进行编程。从选择原件、设计电路到编写程序,每一个环节我都认认真真,在 最后运行成功的那一刻,真的有一种成就感油然而生。 从第一次用单片机点亮一盏灯开始,到能够循环点亮一串灯,现在回想起来那时,真的的点亮了我的人生,点亮了我人生路上前进的明灯,好比在夜晚漆黑的太平洋上漂泊着忽然看见了空中的北斗星。 从能够循环点亮一串灯,到用串口驱动数码管,我完成了一次又一次的作业。这其中不乏有借鉴同学 的地方,也有不用心之处,但是其实每一次作业完成的那一刻,我都会在内心燃起一丝丝的喜悦。 和许多同学一样, 在 这次大作业的 设计 的 过程中我遇到了很多的困难,因为 之前的学习并没有太努力,没有下那么多的功夫 ,