《单片机电子钟课程设计论文.docx》由会员分享,可在线阅读,更多相关《单片机电子钟课程设计论文.docx(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第1页 共27页第 1 页 共 27 页单片机电子钟课程设计单片机电子钟课程设计一、一、设计内容要求设计内容要求1.电子钟 显示时、分、秒。2.具有定时报警功能;每天可设置 4 个报警时间(时、分)。3.能借助键盘,设置时钟及报警时间。4.报警时,蜂鸣器鸣响 1 秒,然后停止。5.停电后所有设定的数据不丢失。6.重新开机可以重新设定时钟。二、二、硬件设计要求硬件设计要求根据项目的要求,去选择相应的电路,比如 MCU 系统,输入输出驱动电路,电源供电电路。使用电子 CAD,设计原理图,印刷电
2、路板图。原理图中元件电气图形符号,必须符合国家标准。整体布局合理,标注规范、明确、美观,不产生歧义。列出完整的元件清单(标号、型号及大小、封装形式、数量)。估算电路板的功耗,并对供电形式提出要求。根据设计好的原理图,焊接实物(可用万用板)三、软件设计要求三、软件设计要求 简单的用户使用说明书。根据项目要求,设计软件整体规划,人机对话,各模块的关联,编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第2页 共27页第 2 页 共 27 页底层驱动模块。程序在必要的地方进行注释。每个函数的出入口要有输入输出参数的说明。程序必须具有良好的可读性
3、,可重用,容易调试和维护。使用 C 语言进行编程,允许中间加插汇编。四、设计内容四、设计内容(一(一)、硬件设计、硬件设计4.1.1.晶振电路晶振电路及及XTAL1,XTAL2的连接的连接如右图 1X1,X2 分别是系统时钟信号 Fosc 的输入、输出端。一般的晶振的负载电容为 15p 或12.5p,如果再考虑元件引脚的等效输入电容,则两个 22p 的电容构成晶振的振荡电路就是比较好的选择。本课程设计使用的开发板是电子科技协会制作 8051C 单片机开发系统,该开发板的使用的是石英晶体振荡器,晶振频率为fo=11.0592MHz,而振荡电容 C1、C2 的典型值取值范围为 2033pF,所以这
4、里取 22pF 的瓷介电容。注意:为减少寄生电容对振荡频率的影响,在印制板上的电容 C1 和 C2 应尽可能靠近 CPU 芯片的 X1 和 X2引脚。图 1 晶振电路模块编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第3页 共27页第 3 页 共 27 页4.1.2、复位电路及复位引脚、复位电路及复位引脚 RST 的连接的连接入作图 2 所示,开发板采用的是 RC 分立元件构成的外部复位电路。掉电复位。当正常工作时,二极管D801 反偏,断电后,VCC 下降,当 VCC=0时,VCC 与地 GND 等电位,电容 C801通过 D801
5、 放电,保证再上电时,RST 引脚为高电平,CPU 可靠复位。D801 的作用是给电容 C801 提供放电通路。按键复位。但按下按钮 PB801 时,电容 C801 通过 R802 放电,当电容 C801 放电结束后,RET 引脚电位由 R802 和 R803 分压比决定,由于 R8020.7V,PN 结导通,三极管饱和导通,从而驱动数码管 DB0。编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第5页 共27页第 5 页 共 27 页数码管中各段发光二极管的伏安特性和普通二极管类似,只是正向压较大,正向电阻也大,在一定范围内,其正向电
6、流也发光亮度成正比。由于常规的数码管起辉电流只有 1-2mA,最大极限电流也只有10-30mA,最大不超过50mA,所以它的输入端在5V电源的电路信号相接时,一定要串加限流电阻,以免损坏元件。基极的限流电阻 Rb:本设计使用的开发板,基极的限流电阻Rb=4.7K,则基极电流 Ib=(VCC-Veb)/4.7K1mA,三极管 8550 的放大倍数100,则集电极的最大电流为 100mA,每一位数码管有 8 段 LED发光二极管,流过每一段发光二极管的电流为 100/8=12.5mA,所以Rb=4.7k 可以驱动数码管。集极的限流电阻 Rc:以单个发光二级管分析,如图 4 所示,限流电阻 Rc 和
7、 LED 内阻构成集电极的等效电阻 R,其大小由 LED 二极管工作电流 If决定,一般控制在 320mA 之间,根据电路图 4 分析可知,Ic=If=(VCC-Vf-Vces)/Rc,其中 Ic 为集电极电流,If 为 LED 工作电流,VCC为电源电压,Vces 为三极管饱和压降,一般在0.10.2 之间,Vf 为 LED 导通电压,一般在 1.22.5V之间。取 Vf=2V,VCC=5V,Vces=0.2V,If=15mA 时,求得限流电阻 Rc 大致为 200。图 3数码管显示电路设计图 4 单个发光二级管编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤
8、为径,学海无涯苦作舟页码:第6页 共27页第 6 页 共 27 页而在该开发板中,集级的限流电阻 Rc=1K,取 Vf=2v,则有上式可求得 Ic=2.8mA,达到数码管的最小起辉电流 12mA,因此可以使 LED发亮,但发光效果不是很好,亮度比较小。4.1.4、蜂鸣器模块、蜂鸣器模块如图所示,三极管的基极接单片机的 P3.2 口,当 P3.2 口输出低电平时,三极管导通,蜂鸣器可以发出声音。其基极的限流电阻 R1401=10K,当 VCC=5V 时,Ib=(VCC-0.7)/10K0.43mA,PNP 三极管 8550 的放大系数约为 100,则最大集电极电流Ic 大约 43mA,足以驱动蜂
9、鸣器工作。此时集极的限流电阻 Rc 的经典值为 10。(注意,负载必须串联在集电极,而不是发射极,否则 PNP 驱动管不可能进入饱和状态,功耗大,而且负载的压降也小,蜂鸣器不能正常驱动)4.1.5、键盘设计模块、键盘设计模块本设计使用的开发板,原来的设计 4x4 矩阵键盘,如图 5 所示。图 4 蜂鸣器模块电路编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第7页 共27页第 7 页 共 27 页P2.0P2.3 为行线,P2.4P2.7 为列线。由于设计的问题,导致该矩阵键盘的 P2.7 列键无法正常使用,又因为 P2.5,P2.6
10、资源分别被 I2C 占据了,从而导致 P2.5,P2.6 列键无法使用。因此只能使用 P2.4 列键,即只有四个按键可以使用,其等效电路图如图 5 右图所示。4.1.6、I2C 总线总线I2C 总线是一种串行数据总线,只有二根信号线,一根是双向的数据线 SDA 如图所示,SDA 连接单片机的 P2.5,另一根是时钟线 SCL,连接单片机的 P2.6。I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。开始信号开始信号:SCL 为高电平时,SDA图 5 键盘模块电路设计图 6I2C 硬件设计编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书
11、山有路勤为径,学海无涯苦作舟页码:第8页 共27页第 8 页 共 27 页由高电平向低电平跳变,开始传送数据。延时时间必须大于 4.7us.结束信号结束信号:SCL 为低电平时,SDA 由低电平向高电平跳变,结束传送数据。延时时间大于 4us。应答信号应答信号:接收数据的 IIC 在接收到 8bit 数据后,向发送数据的IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单 元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。I2C 总线进行数据传送时,时钟
12、信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。如下图所示控制字节控制字节在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符一般固定为 1010,接着三位为片选,A0,A1,A2 正好与芯片的1,2,3 引角对应,为当前电路中的地址选择线,开发板上三根地址线都为 0。因此高七位是从机的地址,而第八位则是传送方向位,0表示主机发送数据(写),1 表示主机接收数据(读),如右图AT24C02 的芯片地址的芯片地址(0 xa0 为写为写,0 xa1 为读为读)编号:时间:2021 年 x 月 x 日书山有路勤为径,
13、学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第9页 共27页第 9 页 共 27 页任一地址写入数据格式任一地址写入数据格式任一地址读取数据格式任一地址读取数据格式4.1.7、USB 转串口芯片转串口芯片(提供供电源,下载)(提供供电源,下载)主要芯片 PL2303 用于实现 USB 和标准 RS-232 串行端口之间的转换,完全遵从 USB 1.1 协议,支持远程唤醒和电源管理,发送和接收拥有独立的 256 Bytes 缓冲,支持内部 ROM 和外部 EEPROM 配置器件,内建晶体震荡器支持运行频率 12 Mhz,内建 USB 收发器。如下图 7 所示。编号:时间:2021 年 x
14、月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第10页 共27页第 10 页 共 27 页4.1.8、电路板功耗估算、电路板功耗估算供电功耗估算:LED 发光二极管的发光电流 4mA,则一个放光数码管通过的最大总电流为:ILED 8*4mA=32mALED 放光二极管的管压降为 1.2V,则一个 LED 功率为:WLED=1.2*32 31mW整个电路板有 8 个数码管,但不是八个数码管都使用到,主要用到六个,而且每一个数码管也不是八段全亮,因此可大概取 5 个数码管计算Wsum=5*31=155mW单片机平均功率约为100Mw,再加上AT24C02 EEROM芯
15、片及74HC138芯片的功耗约为 50mW。整块电路板运行情况下功耗为:W总=155+100+50=300mW测得 W总=I总*VCC=56mA*5V=280mW300mW供电要求:由于单片机正常工作电压为 5V,电路板功耗为 300W 左右.由此要求供电电路为恒压电路,输出电压为 5V,输出功耗不小于 300mW。4.1.9、相关电路元器件材料清单、相关电路元器件材料清单大小大小名称名称封装封装备注备注大小大小名称名称封装封装备注备注20R704AXIAL0.4RES8550Q604TO-92APNP BJT20R705AXIAL0.4RES8550Q606TO-92APNP BJT100R
16、802AXIAL0.4RES8550Q603TO-92APNP BJT104C705RAD0.2Capacitor8550Q605TO-92APNP BJT104C704RAD0.2Capacitor8550Q601TO-92APNP BJT图 7USB 转串口编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第11页 共27页第 11 页 共 27 页104C703RAD0.2Capacitor8550Q607TO-92APNP BJT104C101RAD0.2Capacitor8550Q608TO-92APNP BJT104C104R
17、AD0.2Capacitor8550Q602TO-92APNP BJT104C105RAD0.2Capacitor8550Q1401TO-92APNP BJT104C102RAD0.2Capacitor11.0592MY801AXIAL0.4CrystalOscillator104C103RAD0.2Capacitor12MY701AXIAL0.4CrystalOscillator104C107RAD0.2Capacitor10ufC801RB.2/.4Capacitor104C106RAD0.2Capacitor22pC805RAD0.2Capacitor104C108RAD0.2Capac
18、itor22pC701RAD0.2Capacitor104C1601RAD0.2Capacitor22pC702RAD0.2Capacitor10KR804AXIAL0.4RES22pC802RAD0.2Capacitor10KR1602AXIAL0.4RES4LEDDP6024 位数码管10KR803AXIAL0.4RES4LEDDP6014 位数码管10KR1601AXIAL0.4RES74HC138U601DIP-1610KR1401AXIAL0.4RES80C52U801DIP-40CPU10R107AXIAL0.4RES8RESR801SIP9排阻1KR613AXIAL0.4RESA
19、T24C02U1601DIP-8I2C1KR612AXIAL0.4RESCON2J1401SIP2Connector1KR611AXIAL0.4RESCON2J805SIP2Connector1KR614AXIAL0.4RESDPDTP701锁定开关1KR617AXIAL0.4RESIN4148D801DIODE0.4Diode1KR616AXIAL0.4RESkey1PB4触点按钮1KR615AXIAL0.4RESkey2PB8触点按钮1KR701AXIAL0.4RESkey3PB12触点按钮1KR702AXIAL0.4RESkey4PB16触点按钮1KR703AXIAL0.4RESkeyR
20、STPB801触点按钮1KR1304AXIAL0.4RESLED0D701RB.2/.4发光二级管1KR1301AXIAL0.4RESLED0D702RB.2/.4发光二级管1KR1302AXIAL0.4RESP0J801SIP8Connector1KR1303AXIAL0.4RESP1J802SIP8Connector1kR610AXIAL0.4RESP2J804SIP8Connector4.7KR604AXIAL0.4RESP3J803SIP8Connector4.7KR605AXIAL0.4RESPL_2303HXU701DIP284.7KR602AXIAL0.4RESSPEAKERLS
21、1401RB.4/.8蜂鸣器4.7KR603AXIAL0.4RESUSBJ701USB 口4.7KR606AXIAL0.4RES4.7KR609AXIAL0.4RES4.7KR805AXIAL0.4RES4.7KR607AXIAL0.4RES编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第12页 共27页第 12 页 共 27 页4.7KR608AXIAL0.4RES4.1.10、电路总图见附录一、电路总图见附录一(二)软件设计(二)软件设计4.2.1、操作使用说明、操作使用说明打开开关,启动时钟,单片机将从 I2C 中读取数据,时钟
22、开始工作。8 位数码管分别显示“时-分-秒”,在设计闹钟状态下时,显示“时-分-第 N 个闹钟”。当按一下 KEY3 键,时钟进入调时状态;连续按两下 KEY3 键,时钟进入第 2 个闹钟设置状态;同理按三下进入第 2 个闹钟设置状态,可以设置 4 个闹钟。在调时,设置状态下,按 KEY1键,KEY2 键可以分别让时位数,分位数+1,此时数码管显示用户设置的时间。设置结束,按下 KEY4 键作为确认,系统将把该数据储存到 I2C,以掉电保护,并以设置好的时间进行计时,判断闹钟时间。当时间与某个闹钟相同时,蜂鸣器将会鸣叫一秒钟。4.2.2、时钟主要程序设计、时钟主要程序设计本课程设计利用单片机芯
23、片的定时器来固定时间,但该方法做出来的时钟不是十分精确,不做长期保留,仅供学习研究。选用 T1 计时器,产生一个 50ms 中断,循环 20 次,即为一秒。则 1min 为 60个周期,1h 为 3600 个周期。该开发板采用 11.0592MHz 晶体振荡器,初值:TH1=(65536-50000/(12/11.0592)表 1 元件清单表编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第13页 共27页第 13 页 共 27 页/256=76=0 x4CTL1=(65536-50000/(12/11.0592)%256=04.2.3
24、、键盘程序设计、键盘程序设计按键功能:KEY1(0 xe7):调时;KEY2(0 xeb):调分;KEY3(0 xed):进入设置时时间,设置闹钟状态;KEY4(0 xee):设置结束,确认按键识别:本课程设计采用行列描法判断是否有键按下。将列键置低,即令 P2.4 置低,然后读取行线状态,当P2.0P2.3 的其中一行的电平为高,则表示无键按下;当行线均为高电平时,则无键按下。判断闭合键的位置。确认有键按下时,进入确认闭合键过程。由于只用到 P2.4 控制的列键。令 P2.4 置低电平,依次将行线置低电平,即在置某根行线为低电平时,其余行线为高电平。当图 8 计时流程图图 9 按键定义图 1
25、0 键盘程序流程图编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第14页 共27页第 14 页 共 27 页确定某根行线为低电平后,即可得出对应的键值 0 xen。(n=7,b,e,d)4.2.4、I2C 程序流程程序流程(具体介绍,请看硬件 I2C 部分)4.2.5、中断与主中断与主程序流程图程序流程图图 11I2C 写 读流程图编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第15页 共27页第 15 页 共 27 页4.2.6、总程序清单见附录二、总程序清单见附录二五、调
26、试过程与结果分析五、调试过程与结果分析在本次课程设计中,我用 Keil uVision3 软件和电子科技协会制作的 STC89C52 单片机开发系统调试程序,经过多次调试,了解了如何进行编译、连接,还读懂了单片机的相关电路原理图,但是在下载程序运行后并没有显示理想的效果。在检查了多次之后,还是没有找出错误。接近四星期的日子里,不断查阅资料,虚心请教同学和老师,不断对程序进行分析,拆合,修改,调试。经过努力,虽然编写的程序比较简单,单片机试验的功能不是出众,但基本把老师布置的内容,按时完成。以后会再加强程序调试和硬件方面的能力,希望能在这个基础上加以改进。六、总结与体会六、总结与体会接近两个多月
27、的单片机课程设计,使我学到了很多很多,不仅巩固了以前所学过的模电,数电,单片机及 C 语言知识,而且学到了很多在书本上所没有学到过的知识,如 protel99se,KeiC 的软件使用,感光板的制作,元器件的结构,功能,焊接的工艺技巧等。图12 中断部分流程图图 13 总程序流程图编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第16页 共27页第 16 页 共 27 页通过这次课程设计,我懂得了理论与实际相结合的重要性,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能
28、力。在设计的过程中遇到问题会很多,同时在设计的过程中发现了自己还有许多不足之处,所学到的知识还远远不够,对以前所学过的知识理解得也不够深刻,掌握得不够牢固,以至于还有一些功能要求难以完成,对单片机的结构还有些模糊不清。如果有时间,我还会加强对时钟芯片 DS1302,温度采集,红外遥控等的开发研究。总之,这次课程设计不但增加和巩固了我的单片机方面的知识,包括软、硬件方面,而且增强了我们的动手能力及我们的团队合作精神,在此对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!七、附录七、附录编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:
29、第17页 共27页第 17 页 共 27 页附录一附录一 电路原理总图电路原理总图附录二附录二 程序清单程序清单#include#define uchar unsigned char#define uint unsigned intuchar code table=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xbf;/*09,-,的数码管段码*/uchar hour=0,min=0,sec=0;/*时、分、秒单元清零*/图 14 电路总图编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路
30、勤为径,学海无涯苦作舟页码:第18页 共27页第 18 页 共 27 页uchar disbuf8=0,0,10,0,0,10,0,0;/缓存数组/uchar du=0 xfc,0 xfd,0 xfe,0 xff,0 xf8,0 xf9,0 xfa,0 xfb;/字位选通uchar a,b,i,j,temp,beeptime,num,ta,k;uchar timechange,endchange;uchar settime1,settime2,settime3,settime4,endset1,endset2,endset3,endset4;uchar count1,count2,set;uc
31、har sethour1,setmin1,setsec1;sethour2,setmin2,setsec2;uchar sethour3,setmin3,setsec3;sethour4,setmin4,setsec4;sbitbeep=P32;sbitsda=P25;sbitscl=P26;uchar flag,x,n;/延时程序/void delay(uchar x)uchar a,b;for(a=0;ax;a+)for(b=0;b25;b+);/I2C 相关程序/void delay1();void start()/发送开始条件sda=1;delay1();scl=1;delay1();
32、/大于 4.7ussda=0;delay1();void stop()/发送停止条件sda=0;delay1();scl=1;delay1();sda=1;delay1();编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第19页 共27页第 19 页 共 27 页void respons()/应答uchar i;scl=1;delay1();while(sda=1)&(i250)i+;scl=0;delay1();void write_byte(uchar date)/向总线写入的字节uchar i,temp;temp=date;fo
33、r(i=0;i8;i+)temp=temp1;scl=0;delay1();sda=CY;delay1();scl=1;delay1();scl=0;delay1();sda=1;delay1();uchar read_byte()/从总线读出的字节uchar i,k;scl=0;delay1();sda=1;delay1();for(i=0;i8;i+)/数据长度为 8 位scl=1;delay1();编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第20页 共27页第 20 页 共 27 页k=(k=60)sec=0;min+;if
34、(min=60)min=0;hour=0;if(hour=24)hour=0;/显示时间程序/void showtime()disbuf7=hour/10;/将时间从十六进制数转换为十进制,写入显示数组disbuf6=hour%10;disbuf4=min/10;disbuf3=min%10;disbuf1=sec/10;disbuf0=sec%10;/数组显示子程序/void scandisp()for(i=0;i8;i+)编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第22页 共27页第 22 页 共 27 页P0=tabledi
35、sbufi;/P0 口送字型P1=dui;/P1 口送字位delay(20);/键盘预扫描/uchar keysearch()P2=0 xf0;/全行线置低电平 P2.0-P2.3temp=P2;temp=temp;/检查行线状态,当全部行线均为高电平时,则无键按下temp=temp&0 x10;return temp;/无按键按下时,返回值应为 0/键盘扫描,读取键值程序/uchar keyscan()uchar ta;ta=keysearch();/调用键盘预扫描if(ta=0)return 0 x8f;/如果无键按下就返回虚拟键值 0 x8fta=keysearch();/再次调用键盘预
36、扫描if(ta=0)return 0 x8f;/在次扫描目的是防止键盘抖动,可以无须再加延时/else/如果有键按下就执行以下操作ta=0 xef;/置 P2.4(列)为低电平,while(ta&0 x01)!=0)/逐行扫描。/P2=ta;num=P2;return(num);/获取扫描码/ta=(ta1);ta+;/键值定义子程序/void keybranch(uchar k)switch(k)编号:时间:2021 年 x 月 x 日书山有路勤为径,学海无涯苦作舟书山有路勤为径,学海无涯苦作舟页码:第23页 共27页第 23 页 共 27 页case 0 xe7:if(count1=23)/key1 键,小时加 1disbuf7=count1/10;disbuf6=count1%10;count1+;else count1=0;break;case 0 xeb:if(count2=20)flag=0;time();/更新时间