首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于AT89S52的可编程时钟控制器

目录

1.方案选择

2.硬件设计

2.1 AT89S52单片机..

2.2 时钟电路

2.3 复位电路.

2.4 LCD 1602显示电路

2.5 调节键盘电路

2.6 蜂鸣器驱动电路及工业顺序控制LED模拟电路

2.7 USB 供电电路

3.软件设计

3.1 主程序

3.2 LCD 1602操作程序

3.3资源分配与程序设计

4.系统调试与性能分析

4.1硬件调试

4.2软件测试

4.3系统性能分析

5.结语.

6.参考资料

1.方案选择

时钟在日常生产生活中有很多的应用,例如一些智能化的仪器仪表、自动化控制系统以及家用的空调,冰箱,微波炉等都需要时钟功能。传统的时钟大多数成本高、功能少、结构复杂,而数字电子时钟则有体积小、重量轻、精度高等优点,是时钟发展的主流方向。目前,虽然有很多的方式可以实现数字时钟的设计,如数字电路、单片机等,但是随着计算机技术和电子技术的发展,采用单片机开发电路具有可靠性高、扩展性能好、经济实惠等优点,可以极大的降低硬件电路的复杂性。所以,本设计采用AT89S54单片机为控制核心,制作一款具有实时时钟显示闹钟控制的多功能数字时钟,可以用于启动各种设备实现实时控制,时间顺序控制。比如作息时间自动打铃、生产过程顺序控制等等,用途广泛。

2.硬件设计

本系统设计采用模块化设计方式,系统包括AT89S52单片机模块、时钟电路、复位电路、1602显示电路、调节键盘电路、蜂鸣器驱动电路、工业顺序控制LED模拟电路、USB供电电路。

2.1 AT89S52单片机

Atmel公司生产的AT89S52单片机具有8KB程序存储器、256B数据存储器、4个8位可编程并行I/O口、6个中断源、3个16位定时器/计数器。可充分满足时钟控制器所的输入输出、中断、定时等要求。且功耗较低。

图1 AT89S52单片机引脚及连接

其中,在硬件电路中采用AT89S52的P0口作为LED模拟电路的驱动接口,P2与1602液晶显示屏的数据/命令输入端连接用作1602的数据/命令写入。P3.0与P3.1与1602的RS端、E端连接。P1.0~P1.2与键盘连接。

2.2 时钟电路

AT89S52单片机及各外围部件的运行都以时钟控制信号为基准,有条不紊、一拍一拍的工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响时钟控制器系统的稳定性,尤其时钟控制系统中会多次使用单片机的时钟中断,晶振的选择也影响着定时器初值的计算和定时精度。常用的时钟电路有两种方式,一种是内部时钟方式,另一种是外部时钟方式。为节约成本,本系统采用内部时钟方式。

AT89S52单片机内部有一个用于构成时钟振荡器的高增益反向放大器,它的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚外部跨接石英晶体振荡器和微调电容,构成一个稳定的自激振荡器。如图2所示。

图2 时钟电路

其中,电容C1和C2的典型值通常选择为30pF。晶振频率为得到准确定时和计算初值方便这里选择的是12MHz。

2.3 复位电路

AT89S52单片机的复位是由外部的复位电路实现的。本系统的复位电路兼有上电复位和人工按键复位两种功能。如图3所示。

图3 复位电路

其中在上电复位过程中,RST引脚上高电平持续的时间取决于电容C3的充电时间。充电时间越长,则复位时间越长,增大电容C3或电阻R2都可以增加复位时间。在人工按键复位过程中,按下按键后,通过两个电阻R1和R2的分压,在RST端产生高电平,按键按下的时间决定了复位的时间。

2.4 LCD 1602显示电路

LCD 1602是由LCD控制器、驱动器、RAM、ROM和液晶显示面板用PCB连接到一起的液晶显示模块,使用者只需要利用单片机向LCD显示模块写入相应的命令和数据即可显示相应的内容。LCD 1602 的显示电路如图4所示。

图4 LCD1602显示电路

其中,LCD 1602的VEE端接入滑动变阻器,调节LCD 1602的背光偏压。RS与E接单片机的P3.0与 P3.1做控制信号,D0~D7连接AT89S52的P2.0~P2.7作命令/数据输入。

2.5 调节键盘电路

为使时钟控制器具有快速校时及设定闹钟的功能,则应使控制系统能通过键盘进行人机交互。键盘电路如图5所示。

图5 键盘电路

其中K1除与P1.0连接外还连接到AT89S52的外部中断1引脚P3.3。这样设计可以使CPU在人按下功能键,发生中断后再对P1.0~P1.2进行检测,能够避免CPU一直需要对按键进行扫描的情况,可以提高程序的执行效率,减少对CPU资源的浪费。其中,为避免当按键按下时直接与地连接发生短路,电路中接入了R5、R6、R7。

2.6 蜂鸣器驱动电路及工业顺序控制LED模拟电路

图6蜂鸣器驱动电路及工业顺序控制LED模拟电路

单片机P3.4输出高电平信号,使三极管 Q1导通,使蜂鸣器通电发出声音。通过控制P3.4口的输出可以控制蜂鸣器发音频率和时间长短,可以通过一个引脚和蜂鸣器实现多样化输出。P0.0~P0.6与LED灯相连接,控制器通过控制P0口可以实现时间顺序的工业生产控制,由于模拟时每次只需要使一个LED导通,则只需连接一个R3(1KΩ)作上拉电阻。

2.7 USB 供电电路

为给系统提供稳定电源,并节省成本和能耗。系统采用USB供电。具有电源易得可靠,供电电路简单实用的优点。供电电路如图7所示。

图7 USB供电电路

为避免电源对时钟控制系统产生干扰,我们采用了USB供电,可以使电源稳定平滑。且在电源与GND之间并接了退耦电容,即C4(10μF的电解电容)进一步消除了电源与地线中的脉冲电流所造成的干扰。

3.软件设计

软件设计采用模块化设计方法,根据任务要求可以将任务划分为相对独立的功能模块。软件模块可分为主程序、LCD 1602显示子程序、时钟子程序、查键子程序、闹钟子程序、定时器中断子程序。

3.1 主程序

主程序完成系统初始化,包括I/O端口、时钟、闹钟初始参数、LCD 1602初始化、初始标志位及定时器/计数器初始状态的设定、调用相应子程序进行更新显示时间,循环调用显示子程序、时钟子程序、查键子程序、闹钟子程序。当按键K1按下时转入相应的功能调节程序。主程序流程图如图8所示。

图8 主程序流程图

3.2 LCD 1602操作程序

写入命令01H,显示清屏,数据指针清零。写入命令38H,设置显示模式。写入命令0CH,设置开显示,不显示光标。写入06H,写入一个字符后地址指针加1。写入命令08H,显示关闭。使RS=0,E=正脉冲,D0~D7=命令。使RS=1,E=正脉冲,D0~D7=数据。显示一个字符的操作过程为“延时→写命令→写显示字符→自动显示”。

3.3资源分配与程序设计

在完成主程序流程图后,根据流程细化各模块功能,并利用KEIL C51 设计出相应功能的程序,生成可执行文件,下载到Proteus中进行仿真。在程序编写过程前,要先对程序涉及到的变量进行合理的分配,并对相应的I/O口和地址进行宏定义,这样可以使程序编写更加清晰,可读性也得以提高,便于查错和调试工作的进行。

4.系统调试与性能分析

4.1硬件调试

设计一个测试软件使P2口和P0口输出55H或AAH。同时读P1口,运行程序后,检测相应端口引脚电平是否一高一低,在仿真器中检查读入P1口低三位是否为1。若结果如上所述则并行端口工作正常。设计一个流水灯程序和LCD显示程序,使LED全部点亮并在1602上显示字符,根据实验现象判断是否有故障。

4.2软件测试

在Proteus中对程序进行仿真,进行模拟操作,检测程序是否满足要求。若程序不能满足要求,则根据程序流程图,依次排查。或将子程序分离出进行相应功能的仿真,排查程序是否满足要求,若不满足,则进行修改。若所有子程序分离运行时无故障,而完整程序不满足要求,排查各程序变量是否冲突。依次测试LCD 1602显示子程序、时钟子程序、查键子程序、闹钟子程序。

4.3系统性能分析

在软 、硬件调试成功后 ,可以将程序固化到 AT89S52 的Flash 存储器中,上电脱机运行,进行整体测试。将该设计的电子钟和标准时钟的进行时间对比,每10min记录一次数据,记录时间2个小时。

经过测试,系统能够满足可编程时钟控制器的设计要求,计时准确,且无重大瑕疵。通过改写控制程序,可以将系统用于启动各种设备实现实时控制,时间顺序控制。比如作息时间自动打铃、生产过程顺序控制等,用途广泛。

5.结语

本设计采用单片机作为智能控制核心,使系统结构大为简化 ,实现了电子钟的基本功能 ,同时也扩展了闹钟设置及时间校准功能。 在实际测试中,计时准确度高,闹钟工作正常可靠,该数字时钟具有结构简单、体积小、功能多、性价比高 、实用性强等特点,具有较高的应用价值。

6.参考资料

[1] 张毅刚 . 单片机原理及应用.北京:高等教育出版社,2016.

[2] 郭天祥 . 51单片机C语言教程.北京:电子工业出版社,2009

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180727G211JQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券