(2)韶光源利用性能好、价格低、接线大略的RTC集成电路PCF8563;
(3)LCD1602字符液晶显示;

(4)DS18B20温度传感器带4位温度显示;

(5)与大略的上位机程序合营,通过电脑校正韶光;
(6)可以精准校正韶光源的频率,偏差很小。
数字时钟种类很多,虽然它的浸染便是——显示韶光,但是详细实现起来,方法却多种多样。通过制作电子时钟,我们可以附带学到很多东西,以是大家也喜好制作它。图11.1所示是本次制作的电子时钟。
图11.1 电脑校时日历钟
电路事理电路事理图如图11.2所示,硬件接线比较大略。字符液晶1602通过插针和排针座与电路板连接,MAX232和9孔D型串口插座J2用于STC单片机的程序下载以及和打算机通信,实现与打算机上韶光的同步。IC3是实时时钟电路PCF8563,它的电源串接有二极管VD2,总电源接通时,通过它给PCF8563供电。断电过程中,后备电池GB通过R5以很小的电流(0.25μA)坚持PCF8563连续事情,同时,二极管可防止BAT向其他电路供电,以免电池很快耗尽。电阻R6、R7是I2C总线的上拉电阻,单片机通过程序仿照I2C的动作,通过P1.6、P1.7读写PCF8563。C13是时钟电路的振荡电容,通过它可以微调振荡频率。JP2是用于校正的跳线块,调校时接通,合营程序使PCF8563的引脚连接10kΩ上拉电阻R9,通过编程使该引脚输出32768Hz的振荡频率,以便外接频率计调校快慢。IC4是测温芯片DS18B20,读写是通过单片机的P1.5引脚掌握。电源利用的是5V/2A的开关型墙插电源,适用互换电压范围宽,发热低,也省却了稳压集成电路,只要加一个滤波电容C1和一个旁路电容C2即可。RP1可用于液晶显示屏的比拟度调节。液晶1602的数据线有8线和4线两种接法,前者要多接4根线,但程序轻微大略,速率也快一点,后者虽然接线大略,但编程比较繁芜。本制作利用8线接法:液晶的数据线DB0~DB7对应接到MCU的P0.0~P0.7引脚,液晶的掌握线RS、RW、E分别接到P2.3、P2.4、P2.5。掌握按键S1、S2、S3相互合营用来人工校正时钟,S1用来改变校正项目,S2用来调度对应项目数据,S3用来确认新设定值。如果单独利用S3则是启动单片机的串口通信,准备吸收来自打算机的时、分、秒数值,并用它设置PCF8563,使它和北京韶光同步运行。开关S的浸染是掌握闹钟,它若断开,则闹钟功能有效;它若接地,则闹钟功能禁止,但设置的闹钟韶光仍旧有效。
图11.2 电路事理图
电路材料和元件带电源座、串口座和USB插座预留孔的万用板1块,尺寸10cm×10cm;
LCD1602字符液晶模块1个,黄绿或蓝白不限;
STC90C52RC单片机1个,配40针插座;
MAX232集成电路1个,配16针插座;
PCF8563集成电路1个,配8针插座;
11.0592MHz晶体和32768Hz晶体各1个;
直脚排针座1条,用来连接液晶模块;
40线直排针1条,用于给液晶模块焊引脚以及跳线等;
5mm孔径同轴电源插座1个;
小型自锁开关1个,用作电源开关;
微型轻触按钮4个,用作韶光调校以及单片机人工复位;
小型拨动开关1个,用于设定闹钟;
9孔D型插座1个;
5V/2A墙插式开关电源1个;
其他阻容元器件按照电路图中的哀求购买,引脚元件或贴片元件均可以利用。
安装制作首先安装电源插座、串口插座,然后按照它们的位置定位安装电源和MAX232插座,再定位安装LCD插座、单片机插座和PCF8563插座。末了安装每个插座周边的元件,焊接连线。只管洞洞板接线比较自由,也要只管即便做到安全、合理、方便、都雅。焊好元器件的电路板背面如图11.3所示。实际接线也可按照自己的安排布局,就近选择,也可以修正现有事理图的引脚连接,但程序就得作相应修正,总的功能不会改变。本图利用的LCD1602液晶的数据线采取8线接法,实在4线接法也可以。不过改变接法后,液晶的驱动程序和初始化要作相应修正,我在程序中将两种方法都列了出来,可以根据须要开启个中一种,注释掉另一种程序。初学者把稳:LCD1602利用4线接法时,多余的4个引脚不可作液晶的掌握线,但可以用作程序掌握的输出线。
全部接线完成后,仔细检讨确认连接无误,就可以先不插芯片,输入5V电压,检讨IC插座上的电压是否正常,如有问题就进行检讨处理,直到正常为止。然后插上单片机和MAX232,接好串口电缆,编一个最大略的程序,利用STC的新版下载软件,考试测验能否正常下载,直接用串口最好,如果电脑没有串口,可以利用USB转串口线,总之要确保程序可以正常下载。落成后的板子如图11.4所示。
编程要点1. LCD1602的驱动程序
编写LCD1602的驱动程序时,需把稳程序开始要包含一个intrins.h的头文件,在C编程时就可以利用_nop_( )空操作功能,以便得到1μs旁边的延时。其余,现在生产发卖的LCD1602比起前些年的产品有所改进,利用更加方便,例如,以前液晶的初始化首先须要逼迫写入0X38共3次,每5ms1次,现在只须要1次乃至不写入也可以。
如果创造利用精确的驱动程序后液晶屏还是不能显示,在打消了硬件接线问题后,着重检讨以下3个方面:
(1)调节可调电阻RP1,增大比拟度;
(2)检讨硬件连接是按照4线接法还是8线接法,与程序设计是否同等,不一致就不能显示;
图11.3 PCB背面走线
图11.4 元器件布局
(3)少数情形中,有些液晶模块的读忙指令会因无法读出而陷入去世循环,可以把读忙改为“RS=0;RW=1;”,再延时20μs。
本文所附的驱动函数全部经由验证和改进,包括对付不能读忙的液晶模块也能精确显示。
LCD1602许可利用自己定义的8个符号,存放在具有8个字节的专用存储器GCRAM中。为了利用这个资源,程序中利用了自编的一、二、三、四、五、六、日以及表示摄氏度的符号“℃”(图示中四利用草书字体表示),如图11.5所示。
首先画出一个5×8点阵方格,在上边画出点阵字型,我们以“五”为例先容,显示点为1,不显示点为0。从上到下,显示点可用8个十六进制编码表示,由于水平方向只有5位,故高3位以0补全,以是“五”的表示编码是:0X00,0X1E,0X08,0X1E,0X0A,0X0A,0X1F,0X00。依此类推,按照点阵图写出8个符号的十六进制编码,构成一个存放在ROM中的8行8列的二维数组。
设置GCRAM起始地址为0,开机后先把以上数组存入GCRAM中,往后用给LCD1602写数据的方法就可以把自编的符号显示出来了,详细操作见源程序。
2. PCF8563的驱动程序
PCF8563是一款利用I2C总线掌握的实时时钟芯片,和常用的DS1302一样,也是8脚的小集成电路,接线大略,但通信办法就不一样了。读写完备按照I2C时序哀求进行,它的写入地址是0XA2,读出地址是0XA3。它内部有16个寄存器,寄存器0和1号分别用来掌握它的事情,寄存器2~15号用来读写详细韶光、日期、闹钟及倒计数等。通过编程还可以引出时钟脉冲,加上它的时钟频率可通过振荡电容(C13)微调,这样就能够调度出比较准确的韶光。它的驱动因此精确的预置1值写入以上寄存器,特殊是对付新器件,必须把秒、分、时、日、月、年以及须要的报警韶光等逐一写入寄存器0X02到0X0C,然后给寄存器0X00发出启动旗子暗记(第5位置0),它就开始事情了。由于有后备电池,停电也会连续走时。须要把稳的是,在上述预置值寄存器中存入的是BCD码,关于它的详细编程,请参照源程序。
图11.5 自编的显示字符
3. DS18B20的程序部分
DS18B20是单线总线器件,它以脉冲宽度判断0和1,因此对延时时间哀求比较严格,不可随意增减。对它的编程便是根据它的掌握指令,写出51的仿照时序,然后实行必要的操作。详细的驱动已在源程序中列出。启动温度转换到读出温度数值是须要韶光的,对付12位分辨率的转换韶光达750ms,因此须要设计在启动转换后1s再进行读数,读出的数值除了进行正负判断外,还要乘以分辨率系数0.0625,得到10进制的显示值。
总体编程总体编程还是按照前、后台办法进行。后台在启动后进入一系列初始化,然后进入主循环。主循环便是以查询办法理解S1、S2、S3和S的状态以及是否从串口吸收到数据,如创造有按键按下,进行大略延时消抖就进入按键处理。如果已经从串口吸收到韶光数据,就把这些数据转换为BCD码存入PCF8563寄存器,实现和电脑的韶光数据同步。
按键S3的处理中包括3种情形。
(1)在S1按动(次数不限)后按动S3,不改变PCF8563寄存器;
(2)在S1、S2按动后按动S3,这时须要把S2设定出的新值写入PCF8563,实现人工设置,紧张用于年、月、日和闹钟韶光等数值的设置;
(3)S1、S2未按动直接按下S3,这时启动单片机的串口中断,准备吸收来自打算机的韶光数据。
前台程序包括串口吸收中断和T2定时器中断。单片机的串口中断用来吸收电脑发送过来的韶光数据,格式是“hh:mm’ss”,hh、mm、ss分别是时、分、秒的十位和个位字符码,连同冒号和引号一共有8个字节,每吸收1个字节就触发1次吸收中断,把收到的数据存入吸收数组receiv[8]中,收到8个字节就置位吸收完毕标志,等待主循环去查询此标志,然后处理。这便是串口中断的任务。
T2是单片机的一个16位定时器,它具备自动重载功能。利用它的中断处理实行两个任务:一是如果S1不按下,就定时刷新液晶1602的显示,S1按下解释在调校韶光,这时不按时钟刷新而按设定值刷新液晶屏,以免显示混乱。二是设定时间测温,按照每5s一次向DS18B20发出测温要求,在接下来的1s回收测温数据并加以处理。为此,主程序初始化时就设定T2事情于自动重载模式,按照40ms中断一次,设定TH2和TL2。中断时就不必管它设置值的加载了,由它自己处理,但是中断标志TF2是不能自动打消的,一定要编程打消。其余设置中断次数计数,以达到计秒的目的。
调试校准1. PCF8563的校准
图11.6 测试PCF8563的7脚输出频率
图11.7 频率计的测试结果
前面说过,可以通过改动振荡电容的方法使得PCF8563达到准确的时钟振荡频率。在空想情形下,石英晶体振荡器以32768.0Hz的频率振荡,经由内部电路进行15次2分频就得到1Hz,也便是秒旗子暗记。实际上,如果振荡频率有少许偏差,分频结果不是准确的1Hz,走时就不准确。这时我们可以通过调度振荡电容来微调振荡频率,电容减小则振荡频率升高。把频率调度到32768.0Hz,这样时钟就比较准确了。由于计时是个累积的过程,32768.0Hz石英晶体可能会有偏差而导致时钟频率不准,但是要创造明显的偏差(如几秒钟)还是须要较永劫光的,因此最方便的办法是利用频率计校定时钟频率。PCF8563可以通过写入寄存器0X0D来引出或不引振荡频率:把它的最高位FE设置为1,就可在PCF8563的7脚(CLOCKOUT)引出时钟频率,把它的低2位FD1和FD0分别设置为00、01、10和11就可以选择引出的频率是32768Hz、1024Hz、32Hz或1Hz,它们都设置为0就输出32768Hz。不过该引脚是开漏输出,为了用仪器丈量频率,应在电路事理图中加入10kΩ的上拉电阻R9。详细方法是:通过手工设置使得PCF8563走起来,特殊对付第一次事情,要全面设置一遍。先取振荡电容为较小数值(如22pF),然后将频率计接好电源,开机预热稳定后,选低频挡,闸门韶光取10s,把测试夹分别夹在地线和PCF8563的7脚(有外引插针)上,如图11.6所示。经由一段韶光的稳定(10min以上),看频率计显示。实测结果为32.7684kHz,时钟频率高了。取下测试夹,单片机断电,并联一个5.6pF电容,测试结果为32.7681kHz,虽有所降落,但还是高一点。再断电,改换为8.2pF,稳定后测试结果为32.7680kHz,如果能在半小时以上保持稳定,时钟频率就调好了,如图11.7所示。经由这样调校的PCF8563,日偏差可以做到1s以内,按照规格书,达到一年正负5min的偏差没有问题。但是在没有频率计的条件下,只好用比对标准韶光的办法来调度了,这样很摧残浪费蹂躏韶光。
2. 与电脑同步校准
如果是人工设置PCF8563,要把它调节到与北京韶光同等,这是有点难度的。电脑上的韶光借助于互联网实时更新,还是很准确的。既然有串口可以从电脑下载程序,那恰好利用它从电脑取得时、分、秒等韶光数据来设置单片机的PCF8563,岂未便利多了?按照单片机的串口办法1,利用9600波特传输率,从电脑吸收8个字节的数据仅仅80位,不到10ms就可传送完毕,因此是可行的。为此,我们可通过现成的“标准韶光校准器”小软件(可到网高下载)先把电脑韶光校正到标准韶光,然后通过自编的小程序RTC-DOWN把当前电脑韶光从串口发送到单片机就可以了。该程序的运行界面如图11.8所示,上面有两个文本框,分别显示电脑当前的时、分、秒和日、月、年,有两个按钮,EXIT是退出,SET是设置。利用前先不按S1和S2,只按下S3,液晶上左角显示R,如图11.9所示。解释已经打开了串口吸收,鼠标点击SET,电脑韶光就下载到PCF8563寄存器中,R消逝,单片机韶光和电脑韶光同步完成(当然还是有差值的,但比手动调节方便许多)。
图11.8 程序界面
图11.9 韶光设置
手动设置方法很大略,便是按S1选测试项目:月-日-年-闹时-闹分-星期几-时-分-秒,在对应位置以闪动光标提示。对应每一个项目用S2设置数值,然后按S3闪动光标消逝,设置值写入PCF8563,并以新值走时。如不需设置就连续按S1往前走,直到秒设置往后闪动光标消逝,显示走时就行了,否则连续按S1重选项目。
更多源程序可以到qq群657864614进行下载!
有没有由于想买一本书,由于价格偏高而犹豫?现在我来帮你办理这个问题,想要什么书本直接见告我,我来帮你找,常日价格均为1元,难一点的也就几块钱,先查询,后付款,诚信经营!
电子图书教材查找代查代找代下载书本中文pdf格式-淘宝网










