●SCLK:
串行时钟,输入,控制数据的输入与输出;
●I/O:
三线接口时的双向数据线;
●RST:
输入信号,在读、写数据期间,必须为高。
该引脚有两个功能:
第一,RST开始控制字访问移位寄存器的控制逻辑;其次,RST提供结束单字节或多字节数据传输的方法。
DS1302电路引脚如图2;DS1302内部主要寄存器分布表如图3;
图2DS1302电路引脚图
图3DS1302内部主要寄存器分布表
2.1.374LS245芯片
74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。
74LS245还具有双向三态功能,既可以输出,也可以输入数据。
当AT89C52单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。
当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输;(接收)DIR=“1”,信号由A向B传输;(发送)当CE为高电平时,A、B均为高阻态。
由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。
P0口与74LS245输入端相连,E端接地,保证数据线畅通。
8051的/RD和/PSEN相与后接DIR,使得RD和PSEN有效时,74LS245输入(P0.1←D1),其它时间处于输出(P0.1→D1)。
2.2LED数码管显示原理介绍
LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别由字母a,b,c,d,e,f,g,dp来表示。
当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。
如:
显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。
LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。
小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。
发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。
常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
再一个,数码管相对于LCD1602液晶显示器来说具有亮度大、接口设计比较容易,价格相对较便宜等优点。
且在本次设计中恰好能把我们要显示的数字显示出来。
所以,本次设计采用多个LED数码管显示器来显示数字。
2.3红外遥控编码解码原理介绍
遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本SANYO公司的的LC7461组成发射电路为例说明编码原理。
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
这种遥控码具有以下特征:
遥控器发射的信号由一串O和1的二进制代码组成.不同的芯片对0和1的编码有所不同。
通常有曼彻斯特编码和脉冲宽度编码。
采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。
在编写解码程序时.通过判断脉冲的宽度,即可得到0或1。
上述“0”和“1”组成的42位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。
然后再通过红外发射二极管产生红外线向空间发射,如图4所示
图4
LC7461产生的遥控编码是连续的42位二进制码组,其中前26位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。
后16位为8位的操作码和8位的操作反码用于核对数据是否接收准确,如图5所示。
图5
当遥控器上任意一个按键按下超过36ms时,LC7461芯片的振荡器使芯片激活,将发射一个特定的同步码头,对于接收端而言就是一个9ms的低电平,和一个4.5ms的高电平,这个同步码头可以使程序知道从这个同步码头以后可以开始接收数据。
具体发射的时序,以及“0”和“1”的定义如下图6、7所示,注意这里是指编码之后发射,而在接收程序里面,0和1的定义是相反的。
图6
图7
红外遥控如果不做编解码的话,那么它的抗干扰性能会极低的,如果是用作遥控是肯定不行的,长距的切断式传感也不行,只有像鼠标里那种可以这样用。
红外发射管的参数大约为2V结电压,35mA,和普通LED一样,需要恒流驱动,一般驱动的时候就是一个三极管比如9013来驱动的,使用基极串电阻接控制信号,集电极和正极间接红外发射管,发射极接地,如果担心超过电流限制,发射管上要串限流电阻。
红外遥控接收可采用较早的红外接收二极管加专用的红外处理电路的方法。
较好的接收方法是用一体化红外接收头,它将红外接收二极管、放大、解调、整形等电路做在一起,只有三个引脚.分别是+5V电源、地、信号输出。
红外接收头的信号输出接单片机的INTO或INTl脚.典型电路如图8所示.图中增加了一只PNP型三极管对输出信号进行放大。
图7
2.4系统各模块电路图
主控芯片电路图
时钟芯片电路图
数码管显示电路图
红外遥控器电路图
三、程序设计
3.1主程序流程图
图3.1主程序流程图
主函数介绍:
系统启动时,先初始化DS1302,外部中断0,定时器0。
然后程序执行WHILE语句,程序不停地扫描WHILE语句,程序处于等待状态,当有红外按键被触发的时候,程序执行对应的红外按键程序,执行完毕后,跳回原来的WHILE语句内,继续等待;如果没有按下红外按键,时钟芯片将数据传给单片机,数码管将数字显示出来,当时钟数字与设定的闹钟相同时,蜂鸣器响一分钟。
3.2时钟芯片流程图
图3.2时钟芯片流程图
3.3数码管显示流程图
图3.3时钟芯片流程图
3.4红外遥控按键流程图
图3.4时钟芯片流程图
四、系统仿真和调试
4.1仿真软件简介
Proteus是由LabcenterElectronics开发的功能强大的单片机仿真软件,现在最新版本6.9SP5,其演示版本可在其官方网站http:
//www.labcenter.co.uk下载。
Proteus与其他的仿真软件相比较,在下面的优点:
1)能仿真模拟电路、数字电路、数模混合电路;
2)能绘制原理图、PCB图;
3)几乎包括实际中所有使用的仪器;
4)其最大的亮点在于能够对单片机进行实物级的仿真。
从程序的编写,编译到调试,目标版的仿真一应俱全。
支持汇编语言和C语言的编程。
还可配合KeilC实现程序的联合调试,将Proteus中绘制的原理图作为实际中的目标板,而用KeilC集成环境实现对目标板的控制,与实际中通过硬件仿真器对目标板的调试几乎完全相同,并且支持多显示器的调试,即Proteus运行在一台计算机上,而KeilC运行在另一台计算机上,通过网络连接实现远程的调试。
4.2硬件调试
硬件调试是针对单片机部分进行的调试。
在上电之前,先确保电路中不存在断路或短路情况,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。
在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况的任务。
注意焊点之间,确保焊点没有短接在一起,同时注意焊点的美观,确保没有开路以及短路的现象出现。
在确保硬件电路正常且无异常情况(短路或断路)的情况下方可上电调试,上电调试的口的是检测单片机控制部分、数码管点亮部分、和音频转换电路硬件调试。
1)数码管LED电路调试:
接通电源,随机按下按钮可以看到数码管显示数字。
2)红外遥控键盘单片机控制部分调试:
上电后,随机按动键盘可以发现各个按键对应的音正确。
4.3软件调试
调试主要方法和技巧:
通常一个调试程序应该具有至少四种性能:
跟踪、断点、查看变量、更改数值。
整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序进行分别调试。
图8为电子表显示截图:
左为时钟,中间为分钟,右为秒钟秒闪效果
图8电子表数字显示
图9为电子表总体仿真图
图9电子表总体仿真图
五、总结
在这次课程设计中,我学到了很多知识,主要有软件的使用,以及更深的了解单片机和其他器件的使用
软件方面:
proteus、word以及visio都已初步入门,可以完成一些比较简单的设计,并且都有自己的体会和认识
对单片机的理解更深,也懂得一些其他芯片如DS1302的功能及使用,也认识了一些其他的器件的型号和使用范围。
这次课程设计让我印象最深的地方是工作方面,也是最重要的部分,首先做事要按顺序,所谓磨刀不误砍柴功,从最基本的部分慢慢做起,相对而言,总的时间花费其实很少,效率也高了;另外一方面是如何做事,多思考多问,了解每个器件,每个部分的作用,让整个框架在自己心中,不要自以为是,否则到头来一个小问题可能导致整个课程设计陷入泥潭,错误不断,甚至直接导致失败;最后,在整个课程设计中,我认识到了,一个人做事的心态很重要,很多时候,由于眼前的障碍可能太大,容易直接把人压垮,这时候一个健康的心态很重要,能够让自己理性分析一切,做出最正确的选择。
六、参考文献
【1】张友德,《单片微型机原理应用与实践》(第四版),复旦大学出版社,2000
【2】李朝青.单片机原理及接口技术(第三版).北京航空航天大学出版社.2005.
【3】丁明亮、唐前辉.51单片机应用设计与仿真--基于KeilC与Proteus.北京航空航天大学出版社,2009.
【4】杨长兴、刘卫国.C++程序设计.中国铁道出版社.2010.
七、附录