"); //-->
辅导教师:秦文华 赵建平
作者:邢庆翠 王式龙 张乾
完成时间:2004年9月13日
电子设计参赛队:B甲0816
曲阜师范大学
2004年9月13日
目 录
一. 方案论证与比较
二. 系统设计
三. 软件设计
四. 系统测试与分析
五. 设计总结
六. 参考资料
摘要
本设计由单片机89C51、DS12887A时钟芯片、DAC0809模数转换芯片为核心,辅以必要的电路,构成了一个具有多功能的数字时钟 。它由220V、50Hz交流电源供电,能够准确的显示时间、调整时间、闹钟定时,并能够对时钟所在的环境温度、工作时的电网电压、电网频率进行显示,还具有电压欠压、过压报警以及非接触止闹功能。
数字时钟是本设计的最主要的部分。根据需要,可利用两种方案实现。
方案一:本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。
该方案具有硬件电路简单的特点。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。
方案二:本方案采用Dallas公司的专用时钟芯片DS12887A。该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
基于时钟芯片的上述优点,本设计采用方案二完成数字时钟的功能。
2.数码管显示方案一:静态显示。所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。该方式每一位都需要一个8 位输出口控制。静态显示时较小的电流能获得较高的亮度,且字符不闪烁。但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案二:动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的 每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。
本设计从节省I/O口和降低能耗出发,采用方案二。
二、系统设计 1.总体设计(1)系统框图
系统框图如图1所示。
数码管显示模块 |
温度转换模块 |
频率采集模块 |
时钟芯片 |
报警系统 |
键盘 状态显示 |
电源 |
电压转换模块 |
图1 系统框图
(2)模块说明
a. 数码管显示模块:用数码管显示时间、环境温度、电网频率及电压温度转换模块:测量环境温度,并经过模数转换后送单片机。
b. 时钟芯片:用DS12887A时钟芯片向单片机提供时间与闹铃信息。
c. 报警系统:用蜂鸣器。当闹铃开且所设置的闹铃时刻到时,蜂鸣器报警,当电网电压欠压或过压时,蜂鸣器也报警。当“闹铃关”键按下或有遥控器止闹时,停止报警。
d. 键盘和状态显示模块:用可编程并行I/O芯片8255接状态显示所用的发光二极管及选择各功能的键盘。
e. 单片机控制模块:用89C51实现。是系统的主控制器,控制其它模块协调工作。
f. 电源模块:向各用电系统提供电源。
g. 电压转换模块:测量电网电压,并经过模数转换后送单片机。
2.模块设计与参数计算
(1) 码管显示:本设计采用串行输出显示,利用一片8位移位寄存器74LS164给所有数码管提供显示信号,且利用动态显示,节约了单片机I/O口,降低了能耗。数码管采用LG5643FH。电路如图2所示。
(2) 电源模块:由于单片机及其处围的用电模块都用5V或12V直流电源,而电网电压为220V交流电,因此需要设计电源。利用8W的变压器将220V的电网电压变压后加在桥式整流电路的两端进行全波整流。利用三端稳压电源分别产生12V和5V的电压。三端稳压电源选择CW7812DS和CW7805DS。原因是它们有过压保护和过流保护而使其免受高压或大电流的袭击;而且与其他三端稳压电源相比,它们更具经济性的特点。
根据该电源所带的负载知流过该电源的电压不超过I=1A。因为变压器输出大约为Uo=12V,所以电阻 。因为电网电压一般为220V ,50Hz,所以全波整流后的电压周期大约为10毫秒。又因为时间常数 ms,所以取 。
图2 数码管显示电路
图3 电源电路
0.1pf的小电容用于滤掉电路路频率较高的部分,使电压输出更加平稳。
(3)频率采集模块:如图4所示,对电源电路中全波整流后的信号进行判断:若电压大于+5V,则二极管正极电压被嵌位于为5.7V,若小于5V,则为原值不变。因此形成向下的尖脉冲,经施密特触发器CD4093变为正脉冲。如图5所示。施密特触发器的输出接单片机的P1.5口。在单片机内部数1S内脉冲的个数,除以2后即为电网电压的频率。
图4 频率采集电路
图5 频率采集电路的波形变换
(4) 温度转换模块:用温度传感器采集环境温度将其转化成模拟量,并将该模拟量送入DAC0809的输入端进行模数转换。最后将转换后的数字量送入单片机89C51进行处理。电路图如图6所示。
图6 测温电路
(5) 电压转换模块:因为电网电压也是模拟量,要想利用单片机对其进行处理仍需将模拟量进行模数转换。转换电路如图7所示。它仍利用电源电路中全波整流后的信号作为输入。因为频率采集电路也以全波整流后的信号作为输入,为了防止电压转换电路的RC回路产生的稳态电压影响频率采集电路的工作,应在电压转换模块的输入端接入二极管。
图7 电压转换电路
(6) 键盘、状态显示模块:为了使软件编程简单,本设计利用可编程I/O芯片8255。接法如表1所示。PB口接按键,PC口则用于控制状态显示所用的发光二极管。每个按键都通过一个10K的上拉电阻接电源+ ,按键的另一端接地。当有键按下时,与该键相连的PB口的相应位变为低电平,单片机检测到该变化后即转到相应的键处理程序,同时在程序中点亮相应的发光二极管。
表1 PB、PC口与键和状态的对应关系
PB口 |
PB.0 |
PB.1 |
PB.2 |
PB.3 |
PB.4 |
PB.5 |
PB.6 |
按键 |
功能 |
设置时间 |
设置闹铃 |
小时 |
分钟 |
闹铃开 |
闹铃关 |
PC口 |
PC.1 |
PC.2 |
PC.3 |
PC.4 |
PC.5 |
PC.6 |
PC.7 |
状态 |
时钟 |
温度 |
电压 |
频率 |
AM/PM |
闹铃响 |
铃不响 |
(7) 报警系统:将蜂鸣器一端接在单片机的P1.6口上,另一端接地。当需要报警时,在口上送上高电平即可;需要关报警时,则送低电平。
(8) 红外非接触止闹系统:红外线传输稳定、可靠,不容易受外界杂散信号的干扰,信号处理简单。为了简化系统电路,我们采用了遥控电视机中经常使用红外遥控系统。遥控器直接使用电视机的遥控器,不用改装。红外信号的接收,采用红外光电二极管与放大电路一体的红外接收器,该器件只有三只引脚,使用极其简单,电路如图8所示。用接收器输出的信号送到三极管N3的基极,N3的集电极、发射极并接在“闹铃关”两端。当接收器接收到信号并输出脉冲时,三极管N3导通,相当于“闹铃关”接通按下,单片机的相应引脚被置为低电平。单片机检测到该信号,执行相应的关闹铃程序。
图 8 红外遥控止闹电路
三、软件设计 1.主程序流程图主程序流程图如图9所示。
2. 蜂鸣器闹铃中断服务子程序蜂鸣器闹铃中断服务子程序流图如图10所示。当数字时钟处在闹铃开状态下到达所设置的闹铃时间时,进入该中断服务子程序。此中断服务子程序的作用是当系统处在闹铃状态下时,若闹铃关键按下或有遥控止闹,则关闭蜂鸣器;蜂鸣器在32.55s之后自动停止。
四、系统测试与分析 1.测试仪器 :秒表
温度表
电压表
调压器
频率计
低频信号发生器
2.基本要求部分的测试与分析(1) 按下“设置时间”键,观察到“钟表” 和“温度”的发光二极管同时点亮,此时可对时间进行设置。按下“小时”,“分钟”键,观察数码管的小时部分和分钟部分是否随相应按键的变化而变化。经测试该步可以很好的实现。调整时间完毕后,再按一下“设置时间”
开启报警系统 |
开始 |
初始化 |
显示时间 |
读电压 |
电压>240V? |
电压<200V? |
有键按下吗? |
判断键值 |
功能 |
显示时间 |
显示温度 |
显示频率 |
显示电压 |
设置时间 |
设置闹钟 |
闹铃关处理 |
闹铃开处理 |
关闭报警系统 |
显示电压 |
Y
N
Y
N
N
Y
  *博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。