单片机课程设计.doc

上传人:本田雅阁 文档编号:2058190 上传时间:2019-02-09 格式:DOC 页数:29 大小:1.18MB
返回 下载 相关 举报
单片机课程设计.doc_第1页
第1页 / 共29页
单片机课程设计.doc_第2页
第2页 / 共29页
单片机课程设计.doc_第3页
第3页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机课程设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计.doc(29页珍藏版)》请在三一文库上搜索。

1、 单片机技术课程设计说明书 数字电子钟系 、 部: 电气与信息工程系 学生姓名: 学 号: 指导教师: 职称 讲师 专 业: 电气工程及其自动化 班 级: 完成时间: 2011年12月29日 摘 要钟表作为一种定时工具被广泛地使用在生产生活的各个方面。人类最初依靠太阳的角度来进行定时,因此受天气的影响很大,为了克服依靠自然现象定时的缺点人们发明的机械钟表、电子钟表等一系列的定时工具。而电子钟表具有价格便宜,质量轻,定时误差小等优点,被广泛的应用在生产生活的各个方面。而且电子钟能提供精确定时所以被广泛地运用在对精度要求较高的测量之中。此电子钟通过编程实现单片机对8段数码管的刷新显示。该设计除了单

2、片机之外没有用到其他集成块,其成本可以大大降低,而且便于维修。成品可以被广泛的用于公共场所,匾额装饰,以及教学等方面。关键字: 电子时钟 ;单片机; 数码管 目录一、设计要求说明及设计方案介绍.1 11 设计要求.1 12 设计概要.1 13 总体设计方案说明 .1 二、硬件系统设计方案.2 21 AT89S52单片机介绍.2 22 单片机最小系统.2 221 电源电路.2 222 复位电路.3 223 晶振电路.3 224 程序加载电路.4 23 键盘电路.4 24 显示电路.5 25 总体电路图.5三、软件系统设计方案.6 31 系统主程序. .6 32 中断服务程序.7 33 加一子程序

3、. .834 键扫描及键处理子程序.835 显示程序. .94、 设计总结. .1041 设计结果及误差分析. .10 42 心得体会. .1143 教学建议. .12参考文献. .13 辞谢. .14附录A(总体电路原理图).16附录B(程序清单). .17附录C(PCB 图及元器件分布图).24附录D(元器件列表) . .26一、 设计要求说明及设计方案介绍1.1 设计要求设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“P.”, 进入时钟准备状态;第一次按电子钟的启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟的启动/调整键,则电子钟进

4、入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整按键再次进入时钟运行状态1.2 设计概要使用51单片机提供精确定时;使用8位7段数码管显示时、分、秒;采用24小时制,将第三块和第六块显示横杠使显示更美观;使用普通按键开关进行功能选择和时间调整。1.3 总体设计方案说明图1-1 AT89S52电路显示方框图 数字电子钟的设计与制作可采用数字电路实现,也可以采用单片机来完成。若用数字电路完成,所设计的电路相当复杂。若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低。本设计基于单片机技术原理,以单片机芯片AT89S

5、52 作为核心控制器,通过硬件电路的制作及软件程序的编制,利用单片机的控制作用通过LCD来直接显示、时、分、秒,并能对其分别进行修改的功能,设计框图如图1.1。二、硬件系统设计方案21 AT89S52单片机介绍AT89S52是一款低功耗、高性能CMOS8位单片机,片内含4K Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到

6、广泛应用。 AT89S52具有以下标准功能:4K字节ROM, 256字节RAM,32个外部双向输入/输出(I/O)口,5个中断优先级、2层中断嵌套,2个16位可编程定时器/计数器 2个全双工串行通信口, 看门狗(WDT)电路,片内晶振及时钟电路。其双列直插式封装芯片引脚排列参见图2.1。图2.1 AT89S52引脚图22 单片机最小系统221 电源电路电源电路的设计采用USB或直流电源供电的形式。供电电路如图2.2 图2.2 电源供电图222 复位电路复位电路就是在RST端(9脚)外接的一个电路,目的是当单片机上电开始工作时,内部电路从初始状态开始工作,或者在工作中要想人为的让单片机重新从初始

7、状态开始工作,在时钟工作的情况下,只要AT89S52的复位引脚高电平保持两个机器周期以上的时间,AT89S52便能完成系统重置的各项动作,使内部特殊功能寄存器之内容均被设成已知状态,并且从地址0000H处开始读入程序代码而执行程序。如图2.3所示,由C3和R1构成上电复位电路,S1实现开关复位。 图2.3 (上电)复位电路图223 晶振电路单片机本身是一个复杂的同步时序电路,为保证同步工作方式的实现,必须提供时钟信号,以使其系统在时钟信号的控制下按时序协调工作。单片机的时钟电路由振荡电路和分频电路组成,其中振荡电路由反向器以及其并联外接的石英晶体和电容构成,用于产生振荡脉冲。而分频电路则用于把

8、振荡脉冲分频,以得到所需要的时钟信号。具体见图2.4。224 程序加载电路在计算机中编写好的程序通过数据下载线连接到单片机实验电路插接口(ISP),实现从计算机将程序下载到单片机的程序存储器中完成单片机的程序写入工作。详见图2.5。图2.4 外部晶振电路图图2.5 程序加载模块23 键盘电路采用独立式键盘,独立式键盘的按键相互独立,每个按键接一根I/O口线,一根I/O口线上的按键工作状态不会影响其它I/O口线的工作状态。因此,通过检测I/O口线的电平状态,即可判断键盘上哪个键被按下。键盘电路如图2.6。图2.6 独立式按键模块24 显示电路可以给出共同的正向电压,然后通过控制负极的电压来控制二

9、极管的发光或者熄灭。要电器特性参数和芯片的驱动能力准许,完全可以通过控制负极的电压来控制二极管的发光或者熄灭。这种连接方式的数码管又叫做共阳极数码管。本次电路设计了一组数码管显示电路,8只数码管可以单只驱动也可动态显示8位数码管。通过上拉电阻及三极管的反相作用共同实现数码管的输出与控制信号。显示部分电路如图2.7。图2.7 数码管显示电路25 总体电路图详见附录A 三、软件系统设计方案3.1系统主程序图3.1 数字电子钟主程序流程图主程序流程图如上图3.1所示,初始化后显示“P. ”准备状态,然后调键盘扫描程序判断启动键(键A)是否按下,若按下则定时器、中断初始化,开启中断,调键盘扫描程序,判

10、断启动(键A)是否按下,未按则等待中断,进入开始计时即显示时间开始;若开启按键(键A)再次按下,则时、分、秒按键可以调整时间了。调整完毕再按启动按键时间开始正常计时。3.2中断服务程序 图3.2 中断服务程序流程图中断服务程序主要功能是进行计时操作。当定时器计满一秒后发生定时器0中断,秒值加一。判断是否计满60s,满则分值加一,否则返回。同理对时进行判断。中断服务程序流程如图3.2所示。3.3加一子程序加1子程序用于完成对秒、分、时的加1操作,中断服务程序中在秒、分、时共有三处调用此子程序,在秒、分、时调整是也有三处调用此子程序。程序流程图如图3.3所示。图3.3 加一程序流程图3.4键扫描及

11、键处理子程序独立式键盘的程序设计一般把键盘扫描程序设计成子程序,以便其它各程序调用。程序设计采用查询法。包括判断有无键按下子程序与键盘扫描子程序,程序流程图见图3.4。图3.4 键扫描子程序流程图3.5显示程序为了存放显示的数字或字符,在内部RAM中开辟显示数据缓冲区,其单元个数与显示器数码管的位数相同。显示缓冲区8个显示缓冲单元地址依次为30H37H,则显示缓冲单元与LED显示器数码管对应关系为:LED7LED6LED5LED4LED3LED2LED1LED037H36H35H34H33H32H31H30H 动态扫描从右向左进行,则缓冲区首地址应为30H。LED显示器动态显示过程为:从P0口

12、输出字形代码,字形代码通过LED数码管的dpa端加到8个LED上,从P2口输出位控代码,位控代码通过LED数码管的位控端(LED数码管的公共极)加到8个LED上。显示程序流程图如图3.5。图3.5 显示子程序流程图四、设计总结41 设计结果及误差分析将程序导入单片机后,上电或按键复位数码管显示准备状态提示符“P.”;能通过按键对电子钟进行时间调整并能正常运行显示时间。通过一段时间的正常运行后发现该电子钟存在一定的误差,误差的产生有以下几个方面的原因:首先,此次设计虽说是采用软件的方法产生1s的基本时间,然而定时器/计数器并不能进行标准的1s定时,而是产生一个基准时间后进行循环计数来得到1s,但

13、CPU执行代码需要12us的时间,因此实际产生的1秒、1分、1小时都会略大于理论时间,此外,单片机也会受硬件系统的影响,而且也易受到外界因素的影响,比如温度、湿度等的干扰。42 心得体会本次设计从前期硬件电路的制作到后期程序的编写最终实现电子钟计时前后历时一个星期。不管是制板还是编程其间都遇到了不少挫折与困难。第一次制PCB板就因为绘制PCB图时设置的导线太细加上转印缺乏经验和腐蚀时间掌握不好,导致板子报废。第二次制板当然因为第一次制作失败心有余悸,但由于是第二次做,制作程序和小技巧都轻车熟路了,完成了让自己比较满意的电路板的制作,很有成就感。后期编程同样不顺利。首先是对整个设计感到很茫然,设

14、想的很简单,可就是不知道从哪里下手。后来吴老师在课堂上对程序设计思路的讲解提醒了我,可以将整个程序分成多个子程序,这样主程序主要是子程序的调用就变得简洁清楚了。通过查阅资料和请教同学,我终于理清了整个程序流程,然后着重进行子程序编写。在写程序的过程中经常会对一些指令功能感到陌生,通过翻阅课本和上网查阅,使我对指令和常用程序的功能有了更清楚的了解。譬如说十进制调整指令。在课堂上没听明白,因为在平时编写小程序基本上不用,所以一直也没想要弄清楚。但在设计过程中必须用到DB指令对要显示的数据进行处理,所以上网把指令的具体操作过程弄清了。设计过程中,遇到问题就得解决问题。解决的过程有时兴奋有时烦躁,但解

15、决之后都是特别有满足感的。43 教学建议这学期我们的考试科目只有三门,我感觉我学得最好的还是单片机,就此我还和班上同学有过探讨。我发现其他两门课都是在多媒体大教室上的,只有单片机这门课大家挤在小教室里头。我不敢说我们这届的学生有多不自觉,但至少,这种和老师近距离接触多多少少对同学们的学习起到了敦促作用。教室小,和老师隔得近,老师走下讲台绕同学们一周也花不了多少时间,但无形中有一种紧张感,同学们听得更仔细了。而且*老师会在黑板上板书程序和硬件电路,同学们自然学得快也记得牢。所以我觉得单片机这样注重认知的课程最好是选在小教室上。当然,这无疑会让我们的老师们更加辛苦。老师们辛苦了。然后*老师对同学们

16、亲自动手的能力非常重视,这从我们平时的作业和实验还有课程设计的要求都可以看出来。我觉得通过自主作业和实验,我更熟悉了这门课的知识,而且看到自己的成果很有成就感,无疑又增强了学习动力。希望更多的老师能像吴老师一样。参考文献1李广弟,朱月秀,冷祖祁.单片机基础M.第三版.北京:航空航天大学出版社,2007.6.2清源计算机工作室.Protel 99SE原理图与PCB及仿真.北京:机械工业出版社,20043阎石.数字电子技术基础.北京:高等教育出版社,20064康华光等.电子技术基础(模拟部分).北京:高等教育出版社,2006 辞 谢首先我要感谢我的指导老师*老师。本学期她教授我们单片机基础这门课程

17、,她对理论知识清楚细致的讲解让我具备了完成本次课程设计必需的理论基础。同时她严谨务实,敦促我认真完成每一次作业和实验,这些都为我的设计的顺利完成奠定了基础。其次我要感谢给予我不同帮助的班上同学们,每次遇到问题都会就近找高手寻求解决,感谢你们的不吝赐教。很多时候你们都能为我解决疑团和困惑,衷心地觉得,你们真是太强了!最后,感谢您对拙作的审阅。附录A总体电路图附录B程序清单 ORG 0000H AJMP MAIN ORG 000BH LJMP INTT0;计数器T0中断入口地址 ORG 0030HMAIN: MOV SP,#60H;栈顶地址确立堆栈区 MOV PSW,#00H ;选择当前通用寄存器

18、第0组 MOV R0,#20H ;RAM区首地址 MOV R7,#5FH ;RAM区单元个数QL: MOV R0,#00H ;RAM(位寻址区和用户RAM区)清零 INC R0 DJNZ R7,QL MOV IP,#02H MOV IE,#82H ;中断初始化, MOV TMOD,#01H ;定时器0工作方式1 LCALL DP;送P.显示编码NEXT: LCALL DISP;调显示程序 LCALL KEY ;调键扫子程序 JBACC.0,RUN ;A键按下运行 SJMP NEXTRUN: LCALL BUF ;调待显数据传送子程序 LCALL TIME;调电子钟计时准备子程序JK: LCAL

19、L DISP;调用显示子程序 LCALL KEY ;按键检测子程序 JZ JK LCALL ADJUST;调键调整子程序 LCALL DISP ;调用显示子程序 SJMP JK;-P点显示编码 DP: MOV 37H,#17;P点编码送寄存器 MOV R0,#30H MOV R7,#07HDP1: MOV R0,#16 INC R0 DJNZ R7,DP1;30H36H 灭,37H P. RET ;-键扫子程序 KEY: LCALL KS ;调“判断有无键按下”子程序JZ EXIT;没有键按下转到返回 LCALL DISP LCALL DISP;调显示去抖动LCALL KS JZ EXITMO

20、V B,A ;保存键值LK1: LCALL KS JZ LK2;键释放,转到恢复键值LCALL DISP;调显示子程序延时AJMP LK1;继续查询等待键释放LK2: MOV A,B;键值送回累加器返回EXIT: RET KS:MOV P1,#0FFH; “判断有无键按下”子程序MOV A,P1;P1口值送累加器ACPL A;A值取反ANL A,#0FH;保存P1口的低4位 RET;-键调整程序 ADJUST: CLR EA;关中断CHECK: JB TR0,JR;判断是否运行K0: CJNE A,#01H,K1 AJMP RUN1 ;A键按下转运行K1: CJNE A,#02H,K2 AJM

21、P KEY1 ;转时调整K2: CJNE A,#04H,K3 AJMP KEY2 ;转分调整K3: CJNE A,#08H,OUT AJMP KEY3 ;转秒调整JR: JB ACC.0,STOP AJMP OUTKEY1: MOV R0,#45H;时调整 LCALL ADD1 CLR C CJNE A,#24H,BUF ACALL CLR0 AJMP BUFKEY2: MOV R0,#43H;分调整 LCALL ADD1 CLR C CJNE A,#60H,BUF ACALL CLR0 AJMP BUFKEY3: MOV R0,#41H ;秒调整 ACALL ADD1 CLR C CJNE

22、A,#60H,BUF ACALL CLR0;-显示数据送显示缓冲区 BUF: MOV 30H,40H;秒显示单元41H-42H MOV 31H,41H ;秒十位 MOV 32H,#18 ; - MOV 33H,42H ;分显示单元43H-44H MOV 34H,43H MOV 35H,#18 ; - MOV 36H,44H ;时显示单元44-45H MOV 37H,45H RETSTOP: CLRTR0 ;关电子钟并跳出 RETRUN1: LCALL TIME;运行电子钟OUT: SETB EA ;无键按下或完成功能跳出RET;-电子钟计时准备 TIME: SETB EA MOV TL0,#0

23、B0H MOV TH0,#3CH MOV R4,#20 ;50ms,20次循环 SETB TR0 ;启动定时器0 RET;-定时中断 INTT0: PUSH ACCPUSH PSWCLRET0CLR TR0 MOV TL0,#0B0H ;重新设定定时初值 MOV TH0,#3CHSETB TR0 ;启动定时器0DJNZ R4,BUF0 ;1秒到ADDS:MOV R4,#14H ;20次计数 MOV R0,#41H;放置秒十位 ACALL ADD1 ;加1程序 CLR C CJNE A,#60H,ADDM ;1分到ADDM: JC BUF0 ACALL CLR0 MOV R0,#43H ACAL

24、L ADD1 ;加1程序 CLR C CJNE A,#60H,ADDH ;1小时到ADDH: JC BUF0 ACALL CLR0 MOV R0,#45H ACALL ADD1 ;加1程序 CLR C CJNE A,#24H,HOUR ;1天到HOUR: JCBUF0 ACALL CLR0BUF0:MOV 30H,40H;秒显示单元41H-42H MOV 31H,41H MOV 32H,#18 ; - MOV 33H,42H ;分显示单元43H-44H MOV 34H,43H MOV 35H,#18 ; - MOV 36H,44H ;时显示单元44-45H MOV 37H,45H POP PS

25、W POP ACC SETB ET0 RETI;-时间清零子程序 CLR0: CLR A MOV R0,A DEC R0 MOV R0,A RET;-加一子程序 ADD1: MOV A,R0 ;取十位(存在41H低四位) DEC R0 SWAP A ORL A,R0 ;组合十位与个位 ADD A,#01H ;加1 DAA ;十进制调整 MOV R3,A ;暂存 ANL A,#0FH ;屏蔽十位 MOV R0,A ;放入个位单元 MOV A,R3 ;取值 INC R0 SWAP A ANL A,#0FH ;屏蔽个位 MOV R0,A ;放入十位单元MOV A,R3;数值放入A中等待判断 RET;

26、-显示子程序 显示缓冲区30H37H DISP: PUSH DPH PUSH DPL PUSH ACC PUSH PSW CLR RS1 ;改变当前寄存器组为组1 SETB RS0 MOV R1,#30H ;显示缓冲存储单元首地址 MOV R2,#0FEH ;从右至左显示MOV R5,#08H;循环次数,即驱动数码管的位数DISP1:MOVA,R1 MOVDPTR,#TABMOVC A,A+DPTRMOVP0,A;送段控 MOVP2,R2 ;送位控LCALL DL ;延时1毫秒MOVA,R2;位控码送ARL A;获得新的位控码MOVR2,A;保存新的位控码INC R1;获得新的显示缓冲单元地址

27、 DJNZ R5,DISP1;循环没有结束则继续 POPPSW ;恢复当前寄存器组的组号POPACCPOPDPLPOPDPHRETDL: MOVR7,#02H;延时1msDL1:MOVR6,#0FFHDL2: DJNZ R6,DL2DJNZ R7,DL1RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H ;显示0-8 DB 90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH ;显示9,A,B,C,D,E,F,灭,p.,-RETEND附录CPCB图元器件布局图附录D元器件清单Part TypeDesignat

28、orFootprint 1KR12RES470RP7RES1KR13RES470R26RES1kR2RESBELLLS1BELL2kR01RESCCN2JX2JP2 10kJ5JP9 CCN2J1JP2 10kJ2JP9 CCN8JP2J8 12MHzY1JINZHENG CCN8JP1J8 22uFC3CAPACITOR CCN8JP3J8 33pFC1CAP CCN8JP4J8 33pFC2CAP LEDD6LED200R1RESLEDD5LED470R07RESLEDD4LED470R22RESLEDD8LED470R20RESLEDD9LED470R21RESLEDD7LED470R0

29、4RESLEDD3LED470R05RESLEDD1LED470R06RESLEDD2LED470R00RESLEDJ1DIP12470R02RESLEDJ2DIP12470R03RESPNPQ4 9012PNP470RP3RESPNPQ3 9012PNP470RP5RESPNPQ6 9012PNP470RP6RESPNPQ5 9012PNP470RP4RESPNPQ2 9012PNP470R27RESPNPQ7 9012PNP470RP1RESPNPQ9 9012PNP470RP2RESPNPQ1 9012PNP470R25RESPNPQ8 9012PNP470R24RESUSBJ3JP3 470R23RES470RP0RES 25

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1