淄博职业学院毕业设计 第三章 电路的硬件与软件设计
图3.2时钟电路
AT89S52系列的单片机的时钟方式分为内部方式和外部方式。内部方式就是在单片机的XTAL1和XTAL2的两引脚外接晶振,就够成了自激振荡器在单片机内部产生时钟脉冲信号。外部时钟方式是把外部已经有的时钟信号引入到单片机内部。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片系统工作的快慢;二是指系统的标准定时时钟,即定时时间。
在本设计中采用的是外部时钟方式,用一个32.768MHz晶振和两个0.1uf瓷片电容组成,为单片机提供标准时钟,其中两个瓷片电容起微调作用.图3.2为时钟电路
若时钟芯片DS1302采用的晶振是32.768K,与单片机不同的是,其晶振不用接电容和地。其中2.3脚接晶振。1脚接主电源,8脚接备用电源,4脚接地。为了使电源稳定,在主电源处并接一个0.1uf的电容。DS1302有涓电流功能,能够在主电源和备用电源同时工作时给备用电源充电,在实际工作中,这样会使得芯片发烫发热,为了防止芯片损坏,在备用电源处串接一个稳压二极管4148,也可以选择在程序里面关闭涓电流充电功能。在这里需要指出的是,如果备用电池能够充电,建议开启充电功能,并且不串接二极管。备用电池无法充电,强烈建议关闭涓电流充电功能,或者在备用电池正极串接一个二极管。在本次设计中为了双重保险,在程序里面既关闭了涓电流充电功能并且在备用电池正极端当串上了二极管。主电源高于备用电源0.2V时,芯片有主电源供电,当备用电源高于主电源时,芯片由备用电源供电。采用备用电源,这样使得当不使用台灯时,关闭电源后,时钟芯片仍然继续工作,同步并保存时间,使得任何时候打开台灯都能看到准确的时间。5,6,7脚接单片机IO口P1.2, P1.3,P1.4。因为AT89S52除了P0口内部用上拉电阻之外其他I/O口均没有,所以在5,6,7脚上要接上10k的上拉电阻。
程序设计思路
首先对DS1302进行初始化,禁止写入保护,允许写入,设置二十四小时格
12
淄博职业学院毕业设计 第三章 电路的硬件与软件设计
式。设计对DS1302进行字操作函数,进行字读操作和写读操作,进行字操作通常是通过移位的方式写入或读出数据。然后设根据字操作函数计对DS1302进行指定地址的操作函数,采用对指定地址进行读数据和写数据。其中DS1302里面的数据是以BCD码形式存储的,在进行读数据和写入数据时要进行转换,这样才能最后显示出正确的时间。然后设计显示函数,把读出的数据经过转换在液晶上显示。其中里面的时间日期均采用数组的形式保存,但是显示时时一位一位显示,将还要将数组中的数据进行取余或取整,得出时间每一位的数据,才能方便的写入1602.在这里还需要指出的是因为DS1302里面有涓电流功能,为了防止芯片在工作时发热发烫,最好是在程序中加上禁止涓电流功能。也可以在备用电源处串联一个二极管,防止电流倒流。
3.3显示电路的设计
液晶显示部分,采用的是1602A,其接法与普通的1602接法相同。1,2脚接电源和地,3脚接电位器来调节液晶显示器的亮度,4,5,6脚接P2.3,P2.4,P2.5。7-14脚接P0口。15脚接背光电源,16脚接地。需要注意的时,在测试过程中,有时候发现液晶不亮,没有显示,其中多半原因在于遗漏了背光电源。
程序设计思路
首先设计对1602检测是否为忙子函数,然后设计对1602进行写命令指令子函数和对1602进行写数据子函数。并对其设计初始化函数。并且为了更好的为之后时钟调节和闹钟设置服务,并设计一个反白子函数,对指定地方进行两位进行写空格,由于指令和按键的延时原因,反白的效果将会是闪烁效果。虽然也可以直接调用液晶1602里面的开光标和开闪烁指令来实现指定地方闪烁,但是由于开了光标之后,1602上面的数据显示就会不清晰,再加上闪烁,从实际测试中得到的效果数据将会很模糊不清,无法辨认,从而在按键调节时无法看到当前实际数据,对时间修正和闹钟设置带来不便。图3.3为显示电路
图3.3显示电路
13
淄博职业学院毕业设计 第三章 电路的硬件与软件设计
3.4温度测试电路的设计
图3.4温度测试电路
由于DS18B20温度传感器集成度很高,封装简单,1脚接电源,2脚数据线接P1.0,3脚接地。
程序设计思路
首先设计初始化函数,然后设计读DS18B20数据和对DS18B20写数据的子函数,再写出从DS18B20读取温度并转换为十进制的函数,最后设计出显示温度的函数。
3.5闹钟电路的设计
图3.5闹钟电路
闹钟模块比较简单,采用普通的蜂鸣器有三极管来驱动,为了使工作功率更高一点,这里的三极管采用的是8550。后面的LED灯得驱动也是采用的8550。
关于蜂鸣器对其所接IO口进行写0就能实现其蜂鸣,但程序中往往需要对其写0和1并在其中加一段延时,制作成闹钟的铃声。关于闹钟,首先设置闹钟的函数,由数组来存储闹钟的值,当闹钟里面的小时和分钟与当前DS1302里面的时间相对应的时候,调用闹钟函数,闹钟的精确位为分钟,闹钟铃声也为一分钟。
这里的闹钟也有两种方案,方案一:采用单片机音乐;方案二:采用普通的滴滴闹铃声。
方案一优点:音乐声更悦耳 缺点:需要更多的程序编程,单片机播放音乐
14
淄博职业学院毕业设计 第三章 电路的硬件与软件设计
时,是每一个音符一个一个播放,音乐存储形式是数组形式,进入播放之后,比较难以跳出,除非采用中断,可能造成1602A刷新延时,造成数据无法及时更新。
方案二优点:程序实现简单,可以从任何时间跳出 缺点:铃声单一,不悦耳。
综合比较采用方案二更为简单实用,本设计采用方案二。
3.6按键电路的设计
图3.6按键电路
S3,S4,S5按键是用来调节时钟和闹钟。按键均采用低电平有效连接方式。 程序设计思路
按键中用来设置闹钟时间和修正时间。S3和S4用来设置修正时间,S4和S5用来设置闹钟。当检测到S3有按键按下时,设置一个计数count,每当有有效按键按下时,count就加1,一直加到6,因为有年月日时分秒六个需要调节的参数,一个count的值对应调节一个时间单位,当在一个count下时,如有检测到S4按键有效值,将对对应的时间单位进行加一操作,并调用LCD里面的反白函数,因为存在一定的指令的延时,所以反白为闪烁效果,这样能够清楚地看到调节的是哪一个时间单位。设置闹钟时,也需设置一个count1,当检测到S5有有效键值时,,count1加一,一直到2,因为只有时分两个时间单位需要操作;在count1的有效值下,若检测到S4有有效键值,调用指定地方反白函数,对对应的时间单位进行加一操作。 为了有效的读取键值,防止键盘抖动,需要在程序中加入去抖动,即加入一个10ms左右的延时。
3.7电源电路的设计与电路原理图
电源部分是将220V的交流电通过变压器转换成9V交流电,再通过整流桥转
15
淄博职业学院毕业设计 第三章 电路的硬件与软件设计
换成5V直流电(因为计算机工作需要5V直流电)。此时5V直流电很不稳定,不符合计算机工作的需求。因此还须将电流通过电解电容和集成稳压块7805,逐步达到稳压、滤波的作用
C13、C14、C15、C16为滤波电容。
图3.7电源电路
图3.8 电路整体原理图
16