基于52单片机电子时钟的设计论文(纯汇编语言编写)-.pdf
《基于52单片机电子时钟的设计论文(纯汇编语言编写)-.pdf》由会员分享,可在线阅读,更多相关《基于52单片机电子时钟的设计论文(纯汇编语言编写)-.pdf(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编号单片机课程设计(2013 级)题目:基于 52 单片机电子时钟的设计学院:物理与机电工程学院专业:电子信息科学与技术作者姓名:陈?党?杜?指导教师:张?职称:教授完成日期:2016 年 7 月2 日二一六 年七月1 基于 52 单片机电子时钟的设计摘要本次设计的多功能时钟系统采用STC89C52 单片机为核心器件,利用其定时器/计数器定时和记数的原理,结合液晶显示电路、时钟芯片 DS1302电路、电源电路以及按键电路来设计计时器。将软硬件有机地结合起来,使得系统能够实现液晶显示,显示有年、月、日、时、分、秒以及星期,还可以设置闹钟和整点报时。其中软件系统采用单片机汇编语言编写程序,包括显示
2、程序、闹钟程序、中断、延时程序,按键消抖程序等,并在 keil中调试运行,硬件系统利用 PROTEUS强大的功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。关键词:STC89C52芯片;时钟芯片DS1302;单片机汇编语言;液晶显示电路2 1 设计任务及要求分析1.1 设计任务:基于单片机的电子时钟设计1.2 要求:1.2.1 用 LCD液晶作为显示设备1.2.2 可以分别设定小时、分钟和秒,复位后时间为 00 00 00 1.2.3 能实现日期的设置年、月、日1.3 扩展要求:如闹钟功能、显示星期、整点音乐报时等2 系统方案2.1 系统整体方案的论证电路原理设计是基于小系统板
3、包括电源电路、复位电路、按键电路、DS1302时钟电路、液晶显示驱动电路、输出控制电路。电源部分是用电池来提供的3v-5v,晶体振荡器采用的是12MHz的石英晶体振荡器。整个系统用单片机为中央控制器,由单片机执行采集时钟芯片的时间信号并通过显示模块来输出信号及相关的控制功能。时钟芯片产生时钟信号,利用单片机的 I/O 口传给单片机;并通过 I/O 口实现 LCD的显示。系统设有 4 个独立式按键可以对时间年、月、日和星期进行调整,还可以设置闹钟。具体如图 2.1 所示:图 2.1 系统整体框图STC89C52 单片机芯片电源复位电路按键电路时钟振荡电路液晶显示DS1302时钟芯片电路输出控制电
4、路3 3 硬件设计与实现3.1 单片机最小系统STC89C52 是一款非常适合单片机初学者学习的单片机,它完全兼容传统的8051,8031的指令系统,他的运行速度要比8051快最高支持达 33MHz 的晶体震荡器,在此系统中使用 12MHz 的晶振。AT89S52是一种低功耗、高性能CMOS8 位微控制器,具有8K在系统可编程Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 STC89C52为众
5、多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8k 字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器。一个 6 向量 2 级中断结构,全双工串行口及时钟电路。另外,STC89C52 可降至 0Hz 静态逻辑操作,支持2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。3.2 振荡电路的工作原理STC89C52单片机内部有一个高增益反
6、相放大器,用于构成振荡器,但要形成时钟,外部还需附加电路。XTAL1引脚为反相放大器和时钟发生电路的输入端,XTAL2引脚为反相放大器的输出端。振荡电路如图3.1 所示:图 3.1 振荡电路图4 3.2 时钟电路的工作原理片内时钟发生器实质是个2 分频的触发其输入来自振荡器的fosc,输出为 2相时钟信号,即节拍信号 P1、P2,器频率为 fosc2。2 个节拍为 1个状态时钟 S。状态时钟再 3 分频后为 ALE信号,其频率为fosc6,状态时钟 6 分频后为机器周期信号,器频率为fosc12。特殊功能寄存器 PCON 的 PD位可以控制振荡器的工作,当 PD=0时,振荡器停止工作,单片机进
7、入低功耗工作状态,复位后,PD=0,振荡器正常工作。时钟电路如图3.2 所示:图 3.2 时钟电路图3.3 单片机最小系统电路图图 3.3 单片机最小系统电路图5 3.4 时钟芯片(1)DS1302是一种可编程的实时时钟芯片,具有计算2100 年前的时间的能力,包括时钟/日历寄存器和 31 字节(8 位)的数据暂存寄存器,数据通信权通过一条串行输出口。时钟/日历提供包括秒、分、时、日期、月份和年份信息。闰年可自行调整,以串行方式向单片机传送单字节或多字节的秒、分、时、日、月、年等实时时间数据;只通过三根线进行数据的控制和传递:RST、I/O、SCLK;其在电路的功能是还具有在出现主电源断电时备
8、用电源可继续保持时钟的连续运行。时钟引脚图如图3.4 所示:图 3.4 时钟引脚图(2)DS1302 芯片内部寄存器读写地址及位定义格式如表3-1:寄存器名读写地址取值范围位定义写 操作读操作D7 D6 D5 D4 D3 D2 D1 D0 秒寄存器80H 81H 00-59 CH 秒十位秒个位分寄存器82H 83H 00-59 0 分时位分个位时寄存器84H 85H 01-12 或00-23 12/24 0 AM/PM 十位小时个位日期寄存器86H 87H 01-28-31 0 0 十位日个位星期寄存器8AH 8BH 01-07 0 0 0 0 星期位月寄存器88H 89H 01-12 0 0
9、 0 十位月个位年寄存器8CH 8DH 00-99 年十位年个位控制寄存器8EH 8FH WP 0 0 0 0 00 0 表 3-1 DS1302芯片内部寄存器读写地址及位定义如果单片机要对 DS1302内部寄存器进行读写操作,必须先将与寄存器对应6 的位操作地址传送给DS1302,然后再进行读写数据的操作。控制寄存器是用来决定能否对 DS1302进行读写操作,当控制字的最高位WP=0时,允许进行读写操作;当 WP=1时,禁止读写操作。所以单片机对DS1302进行读写操作时,必须先将控制字 00H 写入到 DS1302的控制寄存器中。3.5 液晶显示电路LCD显示器能显示数码管不能显示的其他字
10、符、文字和图形,是十分重要的显示终端,LCD1602是字符点阵液晶显示模块。利用LCD1602,所用的时间年、月、日、星期可同时可见,一目了然,采用双行显示,让电子钟能够更直观的显示。其实图如图 3.5、显示电路图如图3.6、引脚功能如表 3-2 所示:图 3.5 液晶显示器实图图 3.6 液晶显示电路图引脚号引脚名称引脚功能含义1 Vss 地管脚(GND)2 Vdd+5V电源引脚(Vcc)3 Vo 液晶显示驱动电源(05V),可接电位器4 RS 数据和指令选择控制端,RS=0:命令/状态 RS=1:数据7 5 R/W 读写控制线,R/W=0:写操作,R/W=1:读操作6 E 数据读写操作控制
11、位,E线向 LCD模块发送一个脉冲,LCD模块与单片机之间将进行一次数据转换714 DB0DB7 数据线,可以用8 位连接,也可以用高四位连接,节约资源15 A 背光控制正电源16 K 背光控制地表 3-2 LCD 液晶显示器引脚功能3.6 输出控制电路在 P2.0 端口接一个蜂鸣器,用于整点报时和响闹铃。具体如图3.7 所示:图 3.7 输出控制电路图3.7 按键电路本次设计采用按键电平复位,按键电平复位相当于按复位键后,复位端通过电阻与 Vcc 电源接通,按键电路图如图3.8 所示:图 3.8 按键电路图8 4 软件设计与实现4.1 软件总体设计方案4.1.1 软件设计目标软件部分总体上是
12、模块化的设计思想,通过子程序调用设计方式,将所有的模块综合到一起,使程序可读性较高。4.1.2 总体架构说明该时钟程序设计思路如下:(1)在程序头将设计中的一些固定空间进行分配并注释。(2)初始化程序,如设定时钟初始显示“2016 年 6 月 30 日,星期四,00:00”以便一开始就能进入整点报时状态,显示该功能;设定使用定时器 1;将一些未到时钟设计功能的功能端口关闭等。(3)开始主程序进行程序扫描,先扫描拆字子程序,将分配好的时分秒等高地位的数字调入到显示子程序中。显示子程序通过分配的空间对应口将拆字子程序的内容在液晶显示器上显示相应的时分秒,再调用走时程序使时钟进行读秒等工作。进入按键
13、扫描,判断按键是否有变动,若有就根据设计程序对相应的按键按入次数而进行实现相应的功能。如进入时间调整、闹钟设置、闹钟开启与否等。进入闹钟的判断,在时分上与设置的闹铃时间吻合的话就做相对应的判断,再依据是否有开启闹钟而进行响铃与否,如果有响铃则设置其一直响铃知道有人为按取消按键取消闹铃。进入整点报时扫描,判断是否在时分上都进入了整点,如果是就报时,然后就退出整点报时,等到下一个整点的到来。最后返回主程序头重新依次扫描。显示过程设有消隐,按键设有去抖。(4)子程序部分。在主程序的调用下依据不同的子程序工能而编写子程序,有多级嵌套。这些子程序包括拆字子程序、延时子程序、走时间子程序、整点报时子程序、
14、按键处理子程序、调时间子程序、闹钟设置子程序、闹钟子程序、闹钟开启子程序。主流程图如图4.1 所示:9 YN NYNYNY图 4.1 主程序流程图子程序详解表如表4-1 所示:开始读时间各模块初始化是否处于设置拆字闹钟是否开启比较时钟时间与当前时间按键模块按键功能是否开启判断整时是否执行报时执行报时结束10 子程序名称功能改变Sub1 闹钟Pf Sub2 报时一声Pf、th1、jiepai zhengshi 判断当前时间是否是整时shengshu、cxbs baoshi 执行报时功能Shengshu、cxbs bijiao 判断是否到闹钟时间TR0 opr00 设置当前时间状态IsSheZhi
15、、r1、KeyCode opr01 进入设置闹钟时间状态IsSheZhi、r1、KeyCode opr02 把所设置的时间作为当前时间KeyCode、sec、min、hour、opr03 把所设置的时间作为闹钟时间KeyCode、IsSheZhi write DS18b20写DQ、r4、r7 read DS18b20读DQ、r0、r4、r5、r7 set1302 ds1302 初始化Rst、Sclk、r0、r1、r6 get1302 读出秒,分,时,日,月,星期,年Rst、Sclk、r0、r1、r6 clockrd ds1302 读子程序Sclk、r7 Ds1302R ds1302 写数据子程
16、序Sclk、r7 chaizi 时钟拆字DspBuf、b、r0 Initdisplay 初始状态显示Dptr dispGD 固定字符显示word 字年,月,日 LcdDspBuf 写入显示数字R0、R2 LcdWrDat 写入数据LCDRS、LCDRW、LcdE LcdWrCmd 写入命令LCDRS、LCDRW、LcdE lcd_init LCD初始化delay 延时r6、r7 anjian1 执行按键 1 的功能KeyCode、IsSheZhi anjian2 执行按键 2 的功能KeyCode、IsSheZhi anjian3 执行按键 3 的功能KeyCode、QH anjian4 执行
17、按键 4 的功能KeyCode、bs www 扫描当前时间编辑位wwwa 扫描闹钟时间编辑位yan500ms 延时 500ms hex2bcd 拆字子程序display_nz 显示闹钟时间表 4-1 子程序详解表11 4.2 按键模块设计设计系统中的按键模块仅占用四个I/O 口,从 89s52 芯片 p1.0、p1.1、p1.2、p1.3 四个引脚接入进行控制。当没有按键按下时,均为高电平,有按键按下时相应 I/O 口为低电平,但并没有立即执行相应的程序,延时 5ms后若再为低电平,等 I/O 口恢复高电平,即按键松开时,才执行相应的程序,此时按键才起作用。这样该按键模块具有去抖动,且按键按下
18、一次仅作用一次,起到精确判断的作用。4.2.1 按键 1 的说明按键 1 有四种功能,分别为下面4 个子程序:(1)子程序 0 的功能为:进入设置当前时间状态,且令keycode=2;(2)子程序 1 的功能为:进入设置闹钟时间状态,且令keycode=3;(3)子程序 2 的功能为:把所设置的时间作为当前时间,且令keycode=0;(4)子程序 3 的功能为:把所设置的时间作为闹钟时间,且令keycode=0;每次按下按键 1,按键 1 程序根据的 KeyCode内容转入各对应的子程序中(因为当 KeyCode值不同时,经过计算得到dptr 的值不同,然后经过jmp a+dptr指令就可跳
19、转到不同的子程序中,具体程序说明),从而实现不同的功能。从各按键的功能可知,每次按下按键1,都会改变 KeyCode内容,使按键 1的功能发生改变。4.2.2 按键 2 的说明按键 2 有两种不同的功能:对应于设置状态为加1;对应于非设置状态为切换屏幕。所以按键2 程序开头就先判断闹钟是否处于设置状态。当闹钟处于非设置状态时,keycode 等于 0 或 1;处于设置状态时,keycode等于 2 或 3;所以可用如下语段判断闹钟是否处于设置状态:当闹钟处于设置状态,keycode 值大于 2,c 等于 0当闹钟处于非设置状态,keycode 值小于 2,c 等于 14.2.3 其他按键的说明
20、剩下 3、4 按键都于按键 2类似,先判断是否处于设置状态,然后转入不同的语句,不再说明。4.2.4 报时功能的说明:当报时功能开启,即bs=0 时,LCD上会出现相应的标示符号,此时主程序12 将扫描 zhengshi 子程序。zhengshi子程序能判断当前时间是否为整点,若为整点将使 cxbs=0,且把hour 由 BCD 码化为二进制存储在字节shengshu(为报时声数,将在 baoshi 子程序中使用)中,之后主程序将扫描baoshi 子程序,即开始报时。chuzhi=0,由 baoshi 子程序可知,闹钟从0 秒开始报时,当报时完毕将自动令 cxbs=1。4.2.5 闹钟功能的说
21、明:当闹钟功能开启,即bj=0 时,LCD上会出现相应的标示符号此时,主程序将扫描 zhengshi 子程序。zhengshi 子程序对当前时间和闹钟时间进行比较,当它们的分、时全相等时开启中断sub1,否则关闭中断 sub1。这样就可实现闹钟闹铃一分钟后自动停止鸣叫的要求。4.2.6 加 1、移位功能的说明:将年份前两位与年(year)、月(month)、星期(week)、日(day)、时(hour)、分(min)、秒(sec)拆字后分别存储在DspBuf-2、DspBuf-1、DspBuf+0、DspBuf+1、DspBuf+2、DspBuf+3等 13 个字节中。而把它们的每一为在LCD
22、上的显示位置地址放在如下表中:tab4:db 80h,81h,82h,83h,85h,86h,88h,89h,8eh,0c2h,0c3h,0c5h,0c6h,0c8h,0c9h;当前时间各编辑位在LCD上的位置表。然后执行 mov r1,#DspBuf+12;inc r1就可实现对秒个位加1。执行:dec r1 和子程序 www 就可实现移位功能.4.3 时钟模块设计单片机要先从 DS1302芯片中读取时钟数据,然后通过 LCD显示出来。在读取DS1302的时间和日期之前,先要对DS1302进行赋初始时间并开启时钟。时钟被启动后若未接收到新的赋时间指令,其内部的时钟将一直不停的运行,以保证时间
23、的实时性和准确性;期间单片机可随时读取DS1302内部时间和日期寄存器中的数值。4.4 液晶显示模块设计本设计液晶时钟显示系统设计上由液晶显示器显示、时钟芯片DS1302提供时间,可为使用者提供完整的时间信息。由于 LED数码管只能显示数字而无法显示其他中英文字符,并对成本及功能考虑,因此从设计的成本及功能的角度考虑,13 采用 LCD一 1602 显示模块,它可以显示年、月、日、星期等中文字目。LCD一1602驱动电路简单,可以由单片机直接输出命令驱动。5 实物调试及测试5.1 实物图图 5.1 实物图5.2 实物调试(1)按下 K1键进入调节功能选择状态图 5.2 K1键功能图(2)按下
24、2 键有加 1 和显示调节闹钟界面的功能(3)按下 K3键进入光标移动功能,选择调节年、月、日和时间等(4)按下 K4显示出整点报时图标图 5.3 K4键功能图14 5.3 测试结果及分析引脚测试结果结论40(VCC)电压值 5.09V 良好31(EA*)电压值 5.09V良好30(ALE)波形为方波良好表 5-1 测试结果分析表5.4 仿真结果图如下所示图 5.4 K4 仿真结果图6 不足与展望6.1 设计不足之处(1)没有停止闹钟的硬件功能(2)没有实现按键减1,只能加 1 调节时钟(3)没有实现音乐整点报时(4)没有安装三极管,蜂鸣器声音很小15 6.2 设计的展望(1)可以增加一个温度
25、传感器以测量和显示温度(2)实现阴历和阳历的转化7 设计心得本文的电子钟系统是以单片机(STC89C52)为核心,时钟芯片DS1302、LED1602显示等部分组成。具体应用 Keil2 软件调试程序以及Proteus 软件进行基于单片机的电子钟设计与仿真。实现了硬件软化的目的。经过一段时间的课程设计,我们发现对于书上很多知识还不能灵活运用,有很多知识还要我们去学习。此次电子时钟的设计给我们奠定了一个实践的基础,很是受益匪浅。让我们认识到学习不但要立足于书本,而且要注重实践,要以解决理论和实际教学中的实际问题为目的。通过自己的手来解决问题比用脑子解决问题更加深刻。学习就应该采取理论与实践结合的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 52 单片机 电子 时钟 设计 论文 汇编语言 编写
限制150内