广东工业大学 单片机课程设计报告.docx
《广东工业大学 单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《广东工业大学 单片机课程设计报告.docx(12页珍藏版)》请在冰豆网上搜索。
广东工业大学单片机课程设计报告
一、实验目的、要求
掌握单片机的开发应用,巩固、加深已学过的知识,提高动手能力及解决实际问题的能力。
要求用AT89S52芯片控制彩灯(流水灯)图形。
即AT89S52单片机上点工作时控制由发光二极管组成的图形有规律地不停闪烁;当按下按钮时彩灯图形全灭,而继电器工作吸合(控制~220V30W灯泡亮)5秒,5秒后返回彩灯闪烁(若再次按下按钮,彩灯图形又全灭,而继电器又能工作吸合5秒,5秒后又回到彩灯闪烁)。
也就是说每当按下按钮时,彩灯都能全灭,继电器能吸合5秒,5秒后能回到彩灯图形的闪烁。
按此要求:
1设计并绘制硬件电路图,电路图应包含强电控制部分,做实物板时强电部分可省略;
2制作实物板;
3编写程序并将调试好的程序固化实物板中的单片机中。
硬件(电路图、元器件布置、排线、元器件的焊接)及软件(程序设计、编写)均由同学们自己完成。
程序编写完后进行调试,调试成功后将程序烧录到单片机内。
实物板通电检查是否能正确运行,如果不行,要找出问题并解决它。
二、实验仪器设备与器材
仪器设备
型号
规格
数量
电烙铁
SE-940
22OV,40W
1
万用表
VC9205
1
名称
数量
名称
数量
AT89S52
1
20PF电容
2
晶振112MHz
1
开关
1
40针IC座
1
电解电容10μF25V
1
4148二极管
1
万能印刷电路板
160×125mm
1
三极管C8550
1
按键
2
10针插座
1
焊锡丝
1扎
ASP下载器
2
1K排阻
3个
连接线
若干
10K、1K电阻
各5只
小型继电器(线圈额定电压DC5V,触电负载3A220VAC)
1
6V五号电池电池盒
1
五号电池
4
发光二极管
30只
三、硬件方案
1、设计思想
用单片机P口实现流水灯,先从9~0进行倒数后出现“2012”和“gdut”字样。
当按下按钮,继电器吸合,中断响应,延时5秒,然后返回主程序继续运行。
2、原理框图
3、工作原理
用单片机P口实现流水灯,先从9~0进行倒数后出现“2012”和“gdut”字样。
当按下按钮,继电器吸合,中断响应,延时5秒,然后返回主程序继续运行。
4、
原理电路图
四、软件方案
1、程序流程图
主程序中断程序
2、程序清单
ORG0000HAJMPMAINORG0003HAJMPINT_0ORG000BHAJMPT_0ORG001BHAJMPT_1ORG0030HMAIN:
MOVR0,#14HMOVR1,#16HMOVR2,#00HMOVR3,#64HMOVR4,#38HMOVDPTR,#TABSETBET0SETBET1SETBEX0SETBEASETBPT0MOVTMOD,#11H;初始化MOVTH1,#3CHMOVTL1,#0B0HSETBTR1SJMP$T_1:
MOVTH1,#3CHMOVTL1,#0B0HMOVA,R4JZL6;判断流水灯是否完全输出,完全输出(R4=0)后则跳到L6L7:
ACALLL2;开始输出流水灯MOVP0,AACALLL2MOVP1,AACALLL2MOVP2,ADECR4L1:
RETIL6:
DJNZR0,L1;开始倒计时10秒和输出2012gdutACALLL2MOVP0,AACALLL2MOVP1,AACALLL2MOVP2,AMOVR0,#14HDJNZR1,L1;判断倒计时10秒和输出2012gdut是否完全输出,若完全输出则重新开始MOVR1,#16HMOVR2,#00HMOVR4,#38HSJMPL1L2:
INCR2MOVA,R2MOVCA,@A+DPTRRETINT_0:
MOVP0,#0FFH;响应外部中断,LED全灭MOVP1,#0FFHMOVP2,#0FFHCLRP3.0;继电器线圈吸合MOVTH0,#3CHMOVTL0,#0B0HSETBTR0L4:
JNBP3.0,L4RETIT_0:
MOVTH0,#3CH;延时5秒MOVTL0,#0B0HDJNZR3,L3SETBP3.0;继电器线圈断开MOVR3,#64HCLRTR0L3:
RETITAB:
DB0FFH,0DFH,0FFH,0FFH,0EFH,0FFH,0FFH,0F7H,0FFH,0FFH,0FBH,0FFH,0FFH,0FDH,0FFH,0FFH,0FEH,0FFH,0FFHDB0FFH,0FFH,0FEH,0FFH,0FEH,0FFH,0FFH,0FDH,0FFH,0FFH,0FBH,0FFH,0FFH,0F7H,0FFH,0FFH,0EFH,0FFH,0FFH,0DFH,0FFH,0FFH,0BFH,0FFH,0FFH,7FH,0FFHDB0FFH,0FFH,0F7H,7FH,0FFH,0FFH,0BFH,0FFH,0FFH,0FFH,0FFH,0FFHDB0DFH,0FFH,0FFH,0CFH,0FFH,0FFH,0C7H,0FFH,0FFH,0C3H,0FFH,0FFH,0C1H,0FFH,0FFH,0C0H,0FFH,0FFH,0C0H,0FFH,0FEHDB0C0H,0FFH,0FEH,0C0H,0FEH,0FEH,0C0H,0FCH,0FEH,0C0H,0F8H,0FEH,0C0H,0F0H,0FEH,0C0H,0E0H,0FEH,0C0H,0C0H,0FEH,0C0H,080H,0FEH,0C0H,000H,0FEH,0C0H,000H,0F6HDB40H,00H,0F6H,00H,00H,0F6HDB40H,00H,0F6H,0C0H,000H,0F6H,0C0H,00H,0FEH,0C0H,080H,0FEH,0C0H,0C0H,0FEH,0C0H,0E0H,0FEH,0C0H,0F0H,0FEH,0C0H,0F8H,0FEH,0C0H,0FCH,0FEH,0C0H,0FEH,0FEHDB0C0H,0FFH,0FEH,0C0H,0FFH,0FFH,0C1H,0FFH,0FFH,0C3H,0FFH,0FFH,0C7H,0FFH,0FFH,0CFH,0FFH,0FFH,0DFH,0FFH,0FFH;流水灯DB0FFH,0FFH,0FFH;全灭1秒DB00H,0C0H,0F0H,00H,00H,0F0H,0C0H,0F8H,0FEH,03H,00H,0F0HDB03H,0C0H,0F0H,18H,0F8H,0F0H,0C0H,0C0H,0F0H,0C0H,03H,0F0H,1FH,1FH,0F7H,00H,00H,0F6H;倒计时10秒DB0FFH,0FFH,0FFH,0C0H,03H,0F0H,00H,00H,0F6H,1FH,1FH,0F7H,0C0H,03H,0F0H;2012DB0FFH,0FFH,0FFH,00H,0C0H,0F0H,0F8H,00H,0F0H,18H,00H,0F6H,1FH,03H,0F0H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH;gdutEND
3、方案论证
硬件方面采用低电平灌电流方案,使得灯更为亮。
软件方面采用定时器延时使得比硬件延时更为准确。
4、调试过程
硬件电路焊接完成后,在下载调试的过程中,软件弹出“CHIPPROGRAMERROR”的错误提示,经过反复检查,发现下载器10针插头的第8脚和第10脚未接地。
在正确连接好下载器10针插头后,程序成功下载到AT89S52芯片中,但是灯完全不亮。
在老师的提示下,我们对晶振进行检测更换,但并不是晶振的问题。
接下来,我们用万用表逐一排查检测各元件的电压,判断元件好坏以及元件是否连接正确。
我们检测到发光二极管的正向端有电压,但是反向端却一直处于高电平状态,这也是灯一直不亮的原因。
为什么发光二极管的反向端会一直处于高电平状态呢?
经过反复地思考与查阅大量相关的资料,我们小组讨论并得出结论:
发光二极管连接正确,晶振连接正确,芯片也完好,唯一可能出现问题的就是复位电路。
经过检查,果然是复位电路出了问题。
复位按钮在焊接的时候由于焊锡过多而导致短路,使得芯片一直处于复位状态,所有P口处于复位状态时的高电平,因此灯不亮。
在正确焊接好复位按钮之后,单片机流水灯按照程序所设计的规律正常闪烁。
但是,又一个问题出现了。
按下中断申请的按钮之后,继电器并没有吸合,指示灯也不亮。
经过反复排查,原来是继电器焊接错误。
在正确连接好所有电路后,单片机运行成功。
5、运行结果
流水灯先从9~0进行倒数后出现“2012”和“gdut”字样。
当按下按钮,继电器吸合,中断响应,延时5秒,然后返回主程序继续运行。
6、思考题
(1)P0口作为输出口使用时应注意哪些问题?
答:
当P0口作为输出口使用时,来自CPU的"写入"脉冲加在D锁存器的CP端,内部总线上的数据写入D锁存器,并向端口引脚P0.x输出.但由于输出电路是漏极开路(因为这时上拉场效应管截止),必须外接上拉电阻才能有高电平输出.
(2)若用单片机的I/O口控制强电设备(例如控制~220V的电灯)应如何处理?
答:
为了避免烧坏芯片,
1可以利用继电器控制强电设备。
如图6-1, 当AT89S52单片机的P2.1引脚输出低电平时,三极管T饱和导通,+5V电源加到继电器线圈两端,继电器吸合,同时状态指示的发光二极管也点亮,继电器的常开触点闭合,相当于开关闭合;当AT89S52单片机的P2.1引脚输出高电平时,三极管T截止,继电器线圈两端没有电位差,继电器衔铁释放,同时状态指示的发光二极管也熄灭,继电器的常开触点释放,相当于开关断开。
2使用固态继电器接口,如图6-2所示。
3使用光电耦合器(隔离器)件及驱动接口。
如图6-3所示电路,光电耦合器4N25起到耦合脉冲信号和隔离单片机89C51系统与输出部分的作用,使两部分电流相互独立。
输出部分的地线接机壳或大地,而89C51系统的电源地线浮空,不与交流电源的地线相接,这样可以避免输出部分电源变化对单片机电源的影响,减小系统所受的干扰,提高系统可靠性。
4用双向可控硅来控制强电设备;图6—4中所示电路为光耦合器构成的可控硅开关电路。
可控硅SCR的触发电压取自电阻R,其大小由通过光电三极管的电流决定,直接由输入电压控制。
该电路简单,控制端与输出端有可靠的电隔离。
图6-1图6-2
图6-3图6-4
7、本次课程设计的心得体会
通过这次“材料成型计算机应用综合实验”,我们学到了更多关于单片机的知识,对单片机的开发运用有了初步的了解,以及对课本知识有了更深入的认识。
1从元器件布局的步骤中我们明白到布局合理可以节省电路板材料,减少导线连接,使得元件之间更加紧凑有序。
在实际生产中,内部芯片的形状肯定要符合一定的尺寸,这时就相当于考验芯片设计者元件布局的能力了。
2在检测各种元器件的好坏时我们遇到一些问题,但最终问题解决的同时也让我们学到了很多元器件实物操作的知识。
如:
没有示波器的情况下,我们只能用万用表粗略地测试晶振的好坏,即用万用表电阻档测量晶振只能判断是否短路,晶振正常是不通的,如果通说明已短路,但不通也不能代表就是坏的。
3在焊接过程中我们的焊接技术比起电工实训时提高不少,能减少“虚焊”,能正确下料保证焊接质量,不过对于埋线焊的方法至今还没有突破。
4程序编译仿真和实物存在着很大差别。
在软件仿真时,程序按部就班地运行,但做成实物时,就会遇到各种各样的问题,如晶振的不稳定导致灯光闪烁,焊接电路板不小心的短路导致电路功能损坏等。
从解决问题的过程中我们知道了应该如何去减少这些问题的发生,比如更加合理的布局和接线方式,从而下次在开发单片机的时候吸取经验,做得更好。
5在程序编译以及使用keil等软件的时候我们感到了汇编语言的复杂与通用性差,这将促使我们更加有动力学习高级的C语言编程,以便更好地实现单片机开发。
总之,通过这次综合实验,我们对课本知识有了更深的认识,也提高了实际操作技能。
附录:
实物图