单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(25页珍藏版)》请在冰豆网上搜索。
单片机课程设计
*******大学
电子系单片机课程设计报告
题目:
基于AT89C51单片机的抢答器设计
班级通信工程*班
指导教师**
设计成员***
电子系
2011年6月16日
一.课程设计意义
抢答器是一种应用非常广泛的设备,对于我们大家来说并不陌生。
在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。
随着科技的发展,现在的抢答器有着数字化,智能化的方向发展,并且要求操作简单,经济实用。
因此,我们小组选择八路抢答器这一课题,利用单片机的功能来实现。
在主持人按下开始键后,各位选手通过为其分配的按钮,来进行抢答,最先按键者获得回答权,能够准确、直观地判断出第一抢答者,体现了公平公正的原则。
设计中介绍了单片机控制、数码显示八路抢答器的电路组成、设计思路及功能。
通过参考文献以及资料的收集,为抢答活动提供了简单设计思路。
抢答器的功能涵盖了抢答、计时及犯规组号抢答器具有自锁,复位等功能,操作简单,经济实用。
二.课程设计任务书
1.功能要求
基于AT89C511单片机设计制作一个抢答器,主要有如下功能:
(1)可同时供8个代表队参加比赛,编号为0、1、2、3、4、5、6、7,各用一个按钮;
(2)给节目主持人设置一个控制开关,用来控制系统的清零和抢答的开始;
(3)抢答器具有数据锁存功能、显示功能和声音提示功能。
抢答开始后,若有选手按动按钮,编号立即锁存,并在LED数码管上显示选手的编号,同时灯亮且伴随声音提示。
此外,要封锁输入电路,禁止其他选手抢答,最先抢答选手的编号一直保持到主持人将系统清零。
2.设计要求
基于AT89C51单片机抢答器由控制核心AT89C51、复位电路、电源电路、蜂鸣器电路、选手按键、主持人按键和数码显示电路等部分组成:
(1)熟悉AT89S51单片机系统的使用方法;
(2)掌握复位电路工作原理及设计;
(3)掌握晶振电路工作原理及设计;
(4)蜂鸣器电路的设计;
(5)LED数码管的特性及使用;
(6)按键电路的设计;
(7)初步掌握AT89C51单片机编程方法;
(8)初步掌握AT89C51系统的调试方法。
指导教师:
日期:
三、课程设计进度计划及检查情况记录表
序号
日期
计划完成内容
实际完成内容
1
6月13日
确定课题,搜集相关资料
完成
2
6月14日
绘制电路图,完成硬件部分的设计
完成
3
6月15日
编写软件部分的程序
完成
4
6月16日
软件部分调试,设计报告整理
完成
5
6月17日
答辩,完善课程设计报告
完成
6
四、成绩评定与评语
该同学在老师的指导下进行了基于AT89C51单片机的抢答器设计与实现,设计题目有一定工作量,基本涵盖了课程的大部分基础知识。
其间调试出过不少意想不到的问题,比如限时器的设计等问题,经过大量资料的查找解决了该困难,培养了独立解决问题的能力。
经过该组同学的共同努力,同时,他们在电路设计、控制程序的开发等方面有了长足的进步。
该同学在本设计过程中能够发挥自己的主观能动性,积极地查找资料,设计电路,进行试验调试计。
在进行课程设计时,能够比较积极地与老师沟通,在指导教师的指导下能够解决设计中遇到的问题。
具有一定的团队组织能力。
从报告所附程序的情况及设计结果来看基本上满足了设计任务书的要求。
所撰写的设计报告基本展示了其设计方案,大部分模块介绍的较为清楚,但个别模块介绍不够全面。
工作严谨、踏实、有效完成了计划任务。
指导教师:
日期:
课程设计的主动性与平时表现(20%)
独立思考能力与动手能力(40%)
课程设计完成情况(40%)
课程设计成绩
题目:
基于AT89C51单片机的抢答器设计
一.总体设计方案
根据系统的功能与要求,选择AT89C51芯片。
设计一个供8名选手参加的八路扫描式抢答器。
每组设计一个抢答按钮供参加者使用。
电路具有第一抢答信号的鉴别和锁定存储功能。
在主持人将系统复位并发出抢答指令后,如果参赛者在第一时间按抢答开关,则按钮指示灯灯亮并用组别电路显示出抢答者的组别。
同时扬声器发出声音。
电路应具有自锁功能,使其他组不起作用。
二.设计内容
1.MSC-51系列单片机介绍及硬件功能
MSC-51系列单片机是英特尔公司于1980年起推出的第二代产品。
与8084相比,8051的硬件结构和指令系统均有很大改进,可支持更大的存贮空间,扩充了更多的硬件功能I/O功能,速度提高了2-5倍,可完成逻辑运算等。
近年来推出的一些增强的MSC-51系统单片机,片内还集成了许多特殊功能单元,只需要加一些扩展电路及必要的通道接口即可构成各种计算机应用系统。
因MSC-51系统单片机在智能仪表、智能接口、功能模块等领域得到了非常广泛的应用。
我们这里用的单片机是MCS—51系列的AT89C51作为控制系统,它外接了八个键盘,也就是它可以为八个人同时提供抢答。
它的显示系统为两个数码显示管(共阳级接法);另外还有一个扬声器和八个发光二极管作为提示装置。
当接通电源时,单片机将会对键盘进行扫描,当有按键按下时,单片机将会向数码显示关发出信号,于是数码显示管将显示按下键盘所对应的显示号(1—8)。
同时,单片机还会将扬声器连接的接口设置为零(低电平),而扬声器的另一端接的是+5v电压,从而将扬声器接通并发出报警声;单片机还会将按下的按键所对应的发光二极管的接口至低电平,而发光二极管用的是共阳极接法,从而点亮发光二极管。
2.硬件电路图
(1)抢答器部分电路
(2)时序电路部分
(3)复位电路部分
(4)蜂鸣电路部分
(5)电源电路部分
3.程序流程图
主程序流程图:
设定中断方式,下降沿有效
延时程序流程图:
INT1中断服务流程图:
T0中断服务程序流程图:
T1中断服务流程图:
显示程序流程图:
4.系统程序设计
在主持人发布抢答命令之前设定抢答的时间,主持人发布抢答命令,按下S9按键后,程序开始打开,定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。
当扫描到有人按下了键,马上关闭T0,调用显示程序,并封锁键盘。
P1.0-P1.7为八路抢答器的输入端口,数码管断选P0口,位选P2口,蜂鸣器输出为P3.6。
主程序:
BEEPBIT00H
ORG0000H
LJMPMAIN
ORG0003H;定义四个中断的入口地址
LJMPSTART0
ORG000BH
LJMPSTART1
ORG0013H
LJMPSTART2
ORG001BH
LJMPSTART3
ORG0030H
MAIN:
MOVP1,#0FFH;P1口全置1
SETBP3.0;串行输入端置1
SETBP3.1;串行输出端置1
CLRBEEP;清零
MOVR0,#40H;个位送“0”
MOVR1,#0FFH;十位全灭
MOVIP,#01H
MOVIE,#8FH
LOOP:
CLRP3.6;串行输入端清零
MOVP0,R1
LCALLDEL;延时
SETBP3.0
CLRP3.1
MOVP0,R0
LCALLDEL;延时
SETBP3.1;串行输出端置1
SJMPLOOP
延时部分程序:
DEL:
MOVR4,#20H;立即数送R4
DLY1:
MOVR3,#49H;立即数送R4
DLY2:
DJNZR3,DLY2;(R3)—1不为0,继续
DJNZR4,DLY1;(R4)—1不为0,继续
RET;返回
INT0中断服务程序:
START0:
CLREA
MOVA,P1
ML0:
CJNEA,#0FEH,ML1;1”字符码送P0口
MOVR0,0F9H
CLRP2.0
SJMPML8
ML1:
CJNEA,#0FEH,ML2;2字符码送P0口
MOVR0,0A4H
CLRP2.1
SJMPML8
ML2:
CJNEA,#0FBH,ML3;“3字符码送P0
MOVR0,0B0H
CLRP2.2
SJMPML8
ML3:
CJNEA,#0F7H,ML4;“4字符码送P0
MOVR0,99H
CLRP2.3
SJMPML8
ML4:
CJNEA,#0EFH,ML5;“5字符码送P0
MOVR0,92H
CLRP2.4
SJMPML8
ML5:
CJNEA,#0DFH,ML6;“6字符码送P0
MOVR0,82H
CLRP2.5
SJMPML8
ML6:
CJNEA,#0BFH,ML7;“7字符码送P0
MOVR0,F8H
CLRP2.6
SJMPML8
ML7:
CJNEA,#7FH,ML8;“8”字符码送P0
MOVR0,80H
SJMPML8
ML8:
CLRP3.6;蜂鸣器响
RET
INT1中断服务程序:
START1:
CLREA;关中断
MOVR7,#30;立即数30送R7
MOVR0,#0L0H
MOVR1,#0B0H
MOVTMOD,#42H
MOVTH0,#80H;80H送TH0
MOVTH1,#83H;83H送TH1
MOVTL1,#00H
SETBTR0
SETBTR1
SETBEA
RET
T0中断服务程序:
START2:
SETBP3.4;定时/计数器0外部信号输入端置1
NOP
NOP
CLRP3.4
T1中断服务程序:
STRAT3:
DECR7;秒减1
LCALLDISP;调显示处理程序
MOVA,R7;(R7)送累加器A
JZML10
CJNZR7,#00H,ML10
MOVTH1,#83H;将83H送到TH1
MOVTL1,#00H;将00H送到TL1
SETBTR1
SETBTR0
SETBEA;开中断
LJMPML11
ML10:
CLRP3.6;蜂鸣器响
CLRTR0;关闭定时器T0
CLRTR1;关闭定时器T0
CLREA
ML11:
RET
显示部分程序:
DISP:
MOVDPTR,#TAB
MOVA,R7;(R7)送A,立即数10送B
MOVB,#10;秒数分解成十位,个位
DIVAB
CJNZA,#00H,MLR
MOVA,#0AH
MLR:
MOVA,@A+DPTR
MOVR0,A;取个位字符码送R0
RET
TAB:
DB00H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H,0FFH
5.调试与结果
软件调试是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
程序运行后编辑,查看是否有逻辑的错误。
3号选手按抢答器后试验箱显示结果如下图所示:
抢答后剩余时间显示如下图所示:
三.结论、建议及课程设计体会
通过资料的收集和查询,我们对程序的流程图有一个基本的结构,结合找到的相关参考资料,以及自己对单片机知识的认识,利用Protel99进行作图仿真,结合硬件完成了抢答器的设计。
本次课程设计综合性比较强,不仅要求我们能够灵活的使用单片机的各种指令,熟练使用单片机设计抢答器,熟练编写顺序结构程序,循环结构程序以及分支结构程序,还要求对单片机的电路连接结构,对数码管管理芯片有明确清晰的了解与认识。
从这次课程设计中我学到了很多,比如面对问题要保持冷静,特别是在程序的编写这一块,要找出程序的错误一定要有一个冷静的头脑,否则很难发现错误甚至是越改越错。
另外我还认识到与他人合作的重要性,在设计中一个人掌握原理知识是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。
尤其是我作为组长,更要有统筹规划,给组员分配好任务,团结协作是我们成功的一项非常重要的保证。
并且,不懂的地方还要虚心向其他的同学学习。
最后,还要感谢在这次课程设计中周秋茜老师提供的指导和帮助。
四.参考文献
[1]胡汉才.单片机原理与接口技术.北京:
清华大学出版社,1998
[2]冯育长.单片机系统设计与实例指导.北京:
西安电子科技大学出版社,2007
[3]李光飞.单片机课程设计实例指导.北京:
北京航天航空大学出版社,2004
[4]赵辉.Protel99电子线路CAD.北京:
北京邮电大学出版社,2008
附录1:
完整源程序:
BEEPBIT00H
ORG0000H
LJMPMAIN
ORG0003H;定义四个中断的入口地址
LJMPSTART0
ORG000BH
LJMPSTART1
ORG0013H
LJMPSTART2
ORG001BH
LJMPSTART3
ORG0030H
MAIN:
MOVP1,#0FH;P1口全置1
SETBP3.0;串行输入端置1
SETBP3.1;串行输出端置1
CLRBEEP;清零
MOVR0,#40H;个位送“0”
MOVR1,#0FFH;十位全灭
MOVIP,#01H
MOVIE,#8FH
LOOP:
CLRP3.6;串行输入端清零
MOVP0,R1
LCALLDEL;延时
SETBP3.0
CLRP3.1
MOVP0,R0
LCALLDEL;延时
SETBP3.1;串行输出端置1
SJMPLOOP
DEL:
MOVR4,#20H;立即数送R4
DLY1:
MOVR3,#49H;立即数送R4
DLY2:
DJNZR3,DLY2;(R3)—1不为0,继续
DJNZR4,DLY1;(R4)—1不为0,继续
RET;返回
START0:
CLREA
MOVA,P1
ML0:
CJNEA,#0FEH,ML1;1”字符码送P0口
MOVR0,0F9H
CLRP2.0
SJMPML8
ML1:
CJNEA,#0FEH,ML2;2字符码送P0口
MOVR0,0A4H
CLRP2.1
SJMPML8
ML2:
CJNEA,#0FBH,ML3;“3字符码送P0口
MOVR0,0B0H
CLRP2.2
SJMPML8
ML3:
CJNEA,#0F7H,ML4;“4字符码送P0口
MOVR0,99H
CLRP2.3
SJMPML8
ML4:
CJNEA,#0EFH,ML5;“5字符码送P0口
MOVR0,92H
CLRP2.4
SJMPML8
ML5:
CJNEA,#0DFH,ML6;“6字符码送P0口
MOVR0,82H
CLRP2.5
SJMPML8
ML6:
CJNEA,#0BFH,ML7;“7字符码送P0口
MOVR0,F8H
CLRP2.6
SJMPML8
ML7:
CJNEA,#7FH,ML8;“8”字符码送P0口
MOVR0,80H
ML8:
CLRP3.6;蜂鸣器响
RETI
START1:
CLREA;关中断
MOVR7,#30;立即数30送R7
MOVR0,#0L0H
MOVR1,#0B0H
MOVTMOD,#42H
MOVTH0,#80H;80H送TH0
MOVTH1,#83H;83H送TH1
MOVTL1,#00H
SETBTR0
SETBTR1
SETBEA
RETI
START2:
SETBP3.4;定时/计数器0外部信号输入端置1
NOP
NOP
CLRP3.4
RETI
STRAT3:
DECR7;秒减1
LCALLDISP;调显示处理程序
MOVA,R7;(R7)送累加器A
JZML10
CJNZR7,#00H,ML10
MOVTH1,#83H;将83H送到TH1
MOVTL1,#00H;将00H送到TL1
SETBTR1
SETBTR0
SETBEA;开中断
LJMPML11
ML10:
CLRP3.6;蜂鸣器响
CLRTR0;关闭定时器T0
CLRTR1;关闭定时器T0
CLREA
ML11:
RETI
DISP:
MOVDPTR,#TAB
MOVA,R7;(R7)送A,立即数10送B
MOVB,#10;秒数分解成十位,个位
DIVAB
CJNZA,#00H,MLR
MOVA,#0AH
MLR:
MOVA,@A+DPTR
MOVR0,A;取个位字符码送R0
RET
TAB:
DB0FFH,40H,0FFH,79H,0FFH,24H
DB0FFH,30H,0FFH,19H,0FFH,12H
DB0FFH,02H,0FFH,78H,0FFH,00H
DB0FFH,10H,0F9H,40H,0F9H,79H
DB0F9H,24H,0F9H,30H,0F9H,19H
DB0F9H,12H,0F9H,02H,0F9H,18H
DB0F9H,00H,0F9H,10H,0A4H,40H
DB0A4H,79H,0A4H,24H,0A4H,30H
DB0A4H,19H,0A4H,12H,0A4H,02H
DB0A4H,78H,0A4H,00H,0A4H,10H
END.;程序结束
附录2:
整体电路图