单片机多功能电子钟课程设计报告_第1页
单片机多功能电子钟课程设计报告_第2页
单片机多功能电子钟课程设计报告_第3页
单片机多功能电子钟课程设计报告_第4页
单片机多功能电子钟课程设计报告_第5页
免费预览已结束,剩余25页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机原理及应用课程设计报告课题:以电子钟为主的多功能设计班级 车辆3101学号3102117107学生姓名_秦延力_指导教师_段卫平_淮阴工学院电子与电气工程学院目录1课程设计概述.41.1设计课题任务.41.2功能要求说明.41.3设计课题总体方案及工作原理.42设计课题硬件系统的设计.62.1硬件系统各模块功能简要介绍.62.2原理电路图.72.3设计PCB图,元器件布局图与与器件清单.73软件系统的设计.83.1软件系统各功能模块简要介绍.83.2设计课题软件系统程序流程框图.83.3设计课题软件系统程序清单 .114仿真与误差分析 .124.1设计课题的设计结论及使用说明 .124.

2、2设计课题的仿真结果 .124.3设计课题的误差分析 .124.4设计体会.134.5教学建议.13参考文献 .14致谢 .15附录 .16一、设计目的1总体要求(1)独立完成设计任务(2)绘制系统硬件总框图(3)绘制系统原理电路图(4)制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;(5)制定编写调试方案,编写用户操作使用说明书(6)写出设计工作小结。 对在完成以上文件过程所进行的有关步骤如设计思想、 指标论证、方案确定、参数计算、元器件选择、原理分析等作出说明,并对所完成 的设计作出评价,对自己整个设计工作中经验教训,总结收获和今后研修方向。2具体要求本次工程实践的校内部分主

3、要以单片机为基础,进行单片机软件编程,目的是 为了提高学生的软件编程和系统设计能力,整个设计系统包括两个部分,硬件及软 件部分,硬件部分已经制作成功,学生只需要掌握其原理和焊接相应的元器件,掌 握元器件的辨别和元器件的作用以及应用场所即可,另外对所焊接的电路还需要进 行仔细的检查,判断是否有焊接错误的地方或者短路的地方,对出现的异常情况要 能够根据现象判别原因,并具备解决问题的能力,从而切实提高学生的硬件电子电 路的分析、判断能力。软件编程是本次工程实践的重要环节。在为期两周的工程实践中,将占据主要 时间,学生要完成的软件编程任务主要包括以下几点:1)、熟悉Keil C51编程平台及相关编程软

4、件2)、编写、调试蜂鸣器、继电器动作、方波程序并进行软硬件联调3)、编写、调试LED流水灯(循环显示)程序并进行软硬件联调4)、编写、调试键盘扫描子程序并进行软硬件联调5)、编写、调试数码管动态扫描程序并进行软硬件联调6)、电子钟设计(包括键盘、时钟、显示等)7)、温度测量控制系统设计(包括键盘、显示、控制、报警等)其中前五个内容是后两个内容的基础,主要是编制一些子程序,为后继的整个系统设计打下基础电子钟设计一个简单的单片机编程设计,要求电子钟软件程序必须具备键盘扫 描、数码管显示、时钟以及日历、秒表和闹钟功能。温度测量与控制系统设计是一种非常简单而又应用普遍的温度控制系统、他包 括温度采集、

5、信号转换、单片机处理以及控制、报警等部分。要求学生采用声光报 警方式。二、总体设计2.1 系统硬件总框图图1系统设计总框图此次课程设计,AT89C52是一种带2K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory的低电压,高性能CMOS8位微处理器,俗称单片机。此次课程设计的电子钟就是由AT89C52单片机、时钟电路、报警电路,LED流水 灯电路,动态数码管显示电路、音乐电路等组成。运用汇编语言来控制单片机AT89C52来实现LED流水灯、报警器、动态数码显示、电子音乐等功能,并在此基础上综合 运用上述功

6、能,实现电子钟的设计(包括键盘、时钟、显示等),温度测量控制系统(包 括键盘、显示、控制、报警等)。且本设计中的AT89C52单片机是整个工作过程的核 心,是整个设计灵魂,它控制了脉冲时序的产生,显示信号的发送控制显示LED的选择。同时也考虑到AT89C52单片机来制作电子时钟其最大的好处就是可最大的调 整时钟使其准确度更高。2.2 设计原理图图2时钟电路原理图睛O68HVO68HV三、硬件单元设计3.1 NE555P模块图3为555定时器管脚分布。555定时器可构成多谐振荡器,是一种性能较好的时钟源。 调节电位器RW1使在555输出端3获得频率为5060Hz的矩形波信号, 当基本RS触发器Q

7、为1时,门5开启,此时脉冲信号通过门5作为计数脉冲加于计 数器的计数输入端CP3.2 数码管显示为了能使电路简单我们采用数码管动态显示方式。数码管不同位显示的时间间 隔可以通过调整延时程序的延时长短来完成。数码管显示的时间间隔也能够确定数 码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度将亮些,若显示的 时间间隔短,显示时数码管的亮度将暗些。若显示的时间间隔过长的话,数码管显 示时将产生闪烁现象。图4数码管显示图3.3 DS1302 模块Illi87 6 :*D5 手 9i233L 1 D*S- TH*-1CO-GNO TR* OUT-* Ra+圏3555管聊圈552定时器芻锻振蕩器电

8、路I. EIITORFI1 LEFETJR4 4I2I. E- IM?R7UT5fTTMTRTTT7Q O O Q铀DP疔UM斗8S9CC1M2TTTTKiTDS1302的RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数 据传送。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作 如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。其管脚图如下:各引脚功能:Vcc1为后备电源,VCC2为主电源,X1和X2是振荡源,SCLK为输入端RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入 移位寄存器;其次,RST提供终止

9、单字节或多字节数据的传送手段。3.4 时钟控制石英晶体振荡器是利用石英晶体的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片,在它的两个对应面上涂敷银层 作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英 晶体谐振器。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。HMOS型MCS-51外部时钟源的接发:在XTLA1和XTLA2两端跨接晶体或陶瓷振荡器,与内 部反相器构成稳定的自激振荡器。其发出的时钟脉冲直接送入片内定时控制部件, 其中C电容对频率有微调作用。VCC 1XIGiro1仝&3卑scucTZORST图 5

10、5DS1302DS1302 管脚图START: SETB P1.0STOP: CLR P1.01C1 C233p 33CRYSTAL丄图 6 6 时钟电路3.5 扬声器图 7 7 扬声器原理图蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声 的。因此需要一定的电流才能驱动它,单片机10口输出的电流较小,其TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。程序中通过改变单片机 对应I0口输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调 的声音。另外,改变其占空比,也可以控制蜂鸣器的声音大小。可以有两种驱动方 式,即用PNF或NPN三极管电流放大电

11、路驱动。本电路通过一个PNP三极管9012来 放大驱动蜂鸣器,当输出高电平时,三极管Q1截止,没有电流流过线圈,蜂鸣器不 发声;当输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因 此,我们可以通过程序控制10口输出的电平来使蜂鸣器发出声音和关闭,从而实现 各种可能音响的产生。启动报警子程序如下:停止报警子程序如下:RETRET3.6 LED 灯显示本次课程设计中,“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,单片机可工作。要用外加电源和分压电阻来控制低电平驱动点亮,因为 单片机不能直接高电平驱动LED灯。如图D1-D8和R1、R2以及R6-R11连接到单片 机1

12、0口,当P1口某脚变低时相应LED发光。实现LED灯的闪烁,只需利用编程方 法依次从低位到高位逐个变为低电平,等待少许时刻再变高即可。3.7 键盘图9键盘电路在MCS-51系列单片机的指令系统中设有散转指令JMP A+DPTF可看成是专门 配合FhE-CH图 8 8 LEDLED 灯显示电路图RETRET键入程序是整个应用程序的核心部分。键盘的操作,无论是按键或键盘都是利用机械触点的合、断作用。一个电压信 号通过机械触点的闭合、断开过程。由于机械触点的弹性作用,在闭合及断开瞬间 均有抖动过程,会出现一系列负脉冲。抖动时间的长短,与开关的机械特性有关, 一般为510ms一组按键或键盘都要通过I/

13、O口线查询按键的开关状态。且独立式按键电路配 置灵活,软件结构简单,但每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大。3.8 AT89C52AT89C52是此次课程设计的核心部分。其管脚图如下:图 1010AT89C52管 脚图AT89C52是低功耗、高性能的CMOS位单片机。片内带有8KB的Flash存储器, 且允许在系统内改写或用编程器编程。另外,AT89C52的指令系统和引脚与80C52完 全兼容。AT89C52各管脚功能如下:VCC供电电压;GND接地;P0口:P0口为一个8位漏级开路双向I/O口,每脚 可吸收8TTL门电流。;P1口:P1口是一个内部提供上拉电阻

14、的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流;P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚 被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流;P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“T后,它们被内部上拉为高电平,并用作输入;P3口管脚功能:P3.0是RX(串行输入口);P3.1是TX(串行输出口);P3.2是/INTO(外部中断0);P3.3是/INT1(外部中断1);P3.4是T0(记时器0外部输入);P3.5是

15、T1(记时器1外部输入);P3.6是/WR(外部数据存储器写选通);P3.7是/RD(外部数据存储器读选通);P3口同时为闪烁编程和编程校验接收一些控制信号。RST复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG当访问外部存储器时,地址锁存允许输出电平用于锁存地址的地位字节。/PSEN外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期 两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH,不管 是否有内部程序存储器。XTAL1

16、:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2来自反向振荡器的输出。四、软件单元设计4.1 程序流程图4.2程序清单T_R Bit P3.4 ;实时时钟复位线引脚T_C Bit P3.2 ;实时时钟时钟线引脚T_I Bit P3.3 ;实时时钟数据线引脚SEC EQU 30HMIN EQU 31HH EQU 32HD EQU 33HMON EQU 34HW EQU 35HY EQU 36HORG 0000HLJMP startORG 001bHAJMP INTT1ORG 0030HSTART: LCALL KEYAJMP STARTKEY0: SETB P3.4LCALL DELA

17、YLCALL DELAYCLR P3.4LCALL DELAYLCALL DELAYSETB P3.4LCALL DELAYLCALL DELAY.*蜂鸣器*CLR P3.4 LCALL DELAY LCALL DELAY SETBP3.4 LCALL DELAY LCALL DELAY CLR P3.4RET.*JKEY1:REB:MOV A,#0AFH LOOPB: MOV P2,A RL ALCALL DELAY DJNZ R1,LOOPB DJNZ R2,REBRET.*日期*KEY2: CLR T_RCLR T_CMOV SP,#60HMOV SEC,#00HMOV MIN,#00H

18、修改堆栈初始时间设为10:00:00MOV H,#10HMOV D,#18hMOV MON,#01H初始日期设为08年1月18日第一周流水灯*MOV R2,#2MOV W,#01HMOV Y,#08HLCALL SETDS1302LCALL GET1302LCALL DISPLAYMOV R3,#25MOV TMOD,#01HMOV TH0,#70H ;MOV TL0,#00HSETB TR0;LP1: JBC TF0,LP2 ;SJMP LP1;LP2: MOV TH0,#0B8HMOV TL0,#00HLCALL DISPLAY;DJNZ R3,LP1 ;LCALL GET1302MOV

19、r3,#25SJMP LP1;数码显示子程序DISPLAY:MOV DPTR,#DIG_CODE ;显示分钟MOV P1,#11110111bMOV A,MINANL A,#0FHMOVC A,A+DPTRMOV P0,ALCALL DIS_DELAY置定时器初值(定时40ms)启动定时器0查询计数溢出未到40 ms继续计数重新置定时器初值显示未到1 S继续循环每过1s从DS1302卖取一次时间MOVP1,#11111011bMOVA, MINSWAPAANLA,#07HMOVCA,A+DPTRMOVP0,ALCALL DIS_DELAY显示小时MOVP1,#11111101bMOVA,HAN

20、LA,#0FHMOVCA,A+DPTRMOVP0,ALCALL DIS_DELAYMOVP1,#11111110bMOVA,HSWAPAANLA,#03HMOVCA,A+DPTRMOVP0,ALCALL DIS_DELAYRET;显示延时5ms子程序DIS_DELAY:PUSH PSWMOV R7,#10D1: MOV R6,#248D2: DJNZ R6,$DJNZ R7,D1POP PSWRET;设置DS1302初始时间,并启动计时SETDS1302:CLRT_RNOPCLRT_CNOPSETBT_RNOPMOVB,#8EH ;写控制命令字LCALL INPUTBYTEMOVB,#00H

21、;写保护关闭LCALL INPUTBYTESETBT_CNOPCLRT_RMOVR0,#SECOND ;内存中的时间首地址MOVR1,#80H;DS1302中的时间首地址MOVR7,#7 ;字节数SETLOOP:CLRT_RNOPCLRT_CNOPSETBT_RNOPMOVB,R1 ;写命令字LCALL INPUTBYTEMOVA,R0MOVB,ALCALLINPUTBYTEINCR0INCR1INCR1SETBT_CNOPCLRT_RNOPDJNZ R7,SETLOOPCLRT_RNOPCLRT_CNOPSETBT_RNOPMOVB,#8EHLCALLINPUTBYTEMOVB,#80H ;

22、LCALLINPUTBYTESETBT_CNOPCLRT_RNOPRET设置时间开写保护;从DS1302读取时间GET1302:MOV R0,#SECONDMOV R1,#81H ;DS1302中读时间的首地址MOV R7,#7GETLOOP:CLR T_RNOPCLR T_CNOPSETB T_RNOPMOV B,R1LCALL INPUTBYTE ;写命令字LCALL OUTPUTBYTE ;读时间MOV R0,A;将从DS1302中读取的时间从内存中保存INC R0;修改地址指针INC R1INC R1SETB T_CNOPCLR T_RNOPDJNZ R7,GETLOOPRET;向DS

23、1302写一个字节INPUTBYTE:MOV R4,#8INPUTLOOP:MOV A,BRRC AMOVB,AMOVT_I,CSETBT_CNOPNOPNOPCLRT_CDJNZR4,INPUTLOOPRET;从DS1302读一个字节OUTPUTBYTE:CLRaCLRcMOVR4,#8OUTPUTLOOP:NOPNOPMOVC,T_IRRCASETBT_CNOPNOPNOPCLRT_CDJNZR4,OUTPUTLOOPRETKEY: MOV P1,#0F0HMOV A,P1MOV B,AACALL DELAYMOV A,P1CJNE A,B,DOCJNE A,#0E0H,K1AJMP KE

24、Y0K1: CJNE A,#0D0H,K2AJMP KEY1K2: CJNE A,#0B0H,K3AJMP KEY2K3: CJNE A,#070H,DOAJMP KEY3DO: RETDELAY: MOV R6,(#200)DL1: MOV R5,#250DJNZ R5,$DJNZ R6,DL1RETDEL1: MOV R7,#02DL2:MOV R6,#0FFHDJNZ R6,$DJNZ R7,DL2RETDELAYY1:MOV R7,#02DELAY10:MOV R4,#187DELAY11:MOV R3,#248DJNZ R3,$DJNZ R4,DELAY11DJNZ R7,DELAY

25、10DJNZ R5,DELAYY1RETkey3: MOV SP,#60HMOV TMOD,#10HSETB ET1SETB EASETB TR1START0:clr p3.4MOV 30H,#00HNEXTT:MOV A,30HMOV DPTR,#TABLEMOVC A,A+DPTRMOV R2,AJZ ENDDANL A,#0FHMOV R5,AMOV A,R2SWAP AANL A,#0FHJNZ SINGCLR TR1AJMP DD1SING:DEC AMOV 22H,ARL AMOV DPTR,#TABLE1 MOVC A,A+DPTR MOV TH1,AMOV 21H,AMOV A

26、,22HRL AINC AMOVC A,A+DPTRMOV TL1,AMOV 20H,ASETB TR1DD1: LCALL DELAYYINC 30HAJMP NEXTTENDD:CLR TR1AJMP START0INTT1:PUSH PSWPUSH ACCMOV TL1,20HMOV TH1,21HCPL p3.4POP ACCPOP PSWRETIDELAYY:MOV R7,#02DELAY0:MOV R4,#187DELAY1:MOV R3,#248DJNZ R3,$DJNZ R4,DELAY1DJNZ R7,DELAY0DJNZ R5,DELAYYRETTABLE:DB 82H,0

27、1H,81H,94H,84H,0B4H,0A4H,04HDB 82H,01H,81H,94H,84H,0C4H,0B4H,04HDB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94HDB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04HDB 82H,01H,81H,94H,84H,0B4H,0A4H,04HDB 82H,01H,81H,94H,84H,0C4H,0B4H,04HDB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94HDB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00HTABL

28、E1:DW 64260,64400,64524,64580,64684,64777,64820,64898DW 64968,65030,65058,65110,65157,65178,65217;字符显示码表DIG_CODE:DB 14H,0d7H,4cH,45H,87H,25H,24H,57H,04H,44HEND五、焊接与调试(一)软件调试步骤1、从桌面或【开始】菜单选择【程序】Keil Uvision命令,打开此软件,进入Keil Uvision界面。2、打开软件后,在Project菜单中选择New Project命令,打开一个新项目。 保存此项目,输入工程文件名后,并保存工程文件的目录

29、。4、为项目文件选择一个目标器件,即选择8051的类型。在Data base列表框 中选择“ATML 89C52,确定。5、用鼠标对准项目工作区的目标1,点击右键在弹出的菜单中选择“为目标目 标1设置选项”。在为“为目标目标1设置选项”中,点击“调试”菜单,在 此菜单中可选择使用硬件仿真或软件仿真,若连接实验箱时则选择硬件仿真,点击 硬件仿真选项后面的调试选项,在此对话框中选择串口波特率,波特率为38400。6、上述设置好后,点击“文件/新建”,创建源程序文件并输入程序代码。输 入好代码后点击“文件/保存”。7、把源文件添加到项目中,用鼠标指在目标工作区的目标1,点击右键在弹出 的菜单中选择添

30、加文件到源代码组,在弹出的添加文件框中,选择需要添加到项目 中的文件。8、开始编译,点击编译连接的图标,对项目文件进行编译。9、若编译没有错误后,为工程项目设置软硬件调试环境。(二)烧录程序的步骤1、用编辑软件编写程序,使用汇编语言编写的程序文件名后缀(即扩展名)是.ASM编写的程序为称为源程序。2将源程序用编译软件进行编译,生成扩展名为.OBJ的文件。3、通过编程器扩展名为.HEX的可执行文件烧到单片机内。在写入之前还可以进 行软件仿真,既在软件上模拟单片机程序原形情况,以便进行调试和修改。(三)调试按照此次课程设计的要求调试过程如下:按键KEY0,KEY1,KEY2,KEY3分 别对应蜂鸣

31、器,LED流水灯,数码管,音乐四个功能。1、蜂鸣器测试通过按按键KEY0听到蜂鸣器发出“嘀”,“嘀”的响声;与相应的程序代码 相比较,结果正确。2、LED流水灯测试通过按按键KEY1观察到LED流水灯显示,并循环2次;与相应的程序代码相 比较,结果正确。3、数码管测试通过按按键KEY2观察到数码管从“1000”开始计时, 依次显示“1001” , “1002” ,“1003” ;与相应的程序代码相比较,结果正确。因为程序要求 数码管显示的时间是小时和分钟,所以要观察到数码管的变化要等一分钟的时间。4、 音乐测试通过按按键KEY3听到蜂鸣器响起“生日快乐”的音乐;与相应的程序代码相比较,结果正确

32、。六、设计总结通过本次实验,让我对 80C5180C51 单片机有了更好的了解,懂得如何去使用定时器计数器,中断, 串行口,数码管显示,按键等知识,让自己对单片机产生了更大的兴趣。能够完全实现数字钟的 功能,让自己所学的东西应用到实践中,感觉到了单片机的重要性。能够通过单片机,完成各种 成品的设计。通过本次设计,我们系统的了解了实时时钟的设计流程,尤其是硬、软件的设计方法,掌握了键 盘显示电路的基本功能及编程方法, 掌握了键盘电路和显示电路的一般原理, 也进一步掌握了定 时器的使用和中断处理器程序的编程方法。 开拓了思路, 锻炼了实践动手能力, 提高了分工协作 能力和分析问题, 解决问题的能力, 达到了本次课程设计的目的。 在调试电路的过程中也积累了 一些宝贵的经验,比如说,在 I/OI/O 口要保证标准的高电平” 1 1”的产生,一般要上拉电阻 5.1k5.1k , 在一些需要高电平的地方,不能用悬空来模拟,必须严格的按照“+5v+5v ”来连接,特别是调试过程中的分部分进行很重要。此次单片机课程设计,从理论到实践,学到了很多的东西。同时不仅巩固了以前所

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论