基于单片机的数字钟系统设计说明.doc
《基于单片机的数字钟系统设计说明.doc》由会员分享,可在线阅读,更多相关《基于单片机的数字钟系统设计说明.doc(35页珍藏版)》请在课桌文档上搜索。
1、目录1 作品的背景与意义 12 功能指标设计 23 作品方案设计 3 3.1程序语言的比较 3.1.1方案一 汇编语言 3.1.2方案二 C语言 3.2显示方案比较 3.2.1 方案一lcd1602液晶显示 3.2.2 方案二 数码管显示 3.3 主要核心器件知识简介 3.3.1 SST89E516RD 3.3.2 74hc573 3.3.3 74hc2544 系统整体框图5 软件设计 5.1 主程序流程图 5.2 主函数 5.3 主函数需调用的各个子模块 5.3.1 查看时间、日历、闹钟模块 5.3.2 修改时间模块 5.3.3 修改日历模块 5.3.4 设定闹钟模块 5.4 精确的1秒计时
2、模块 5.5 刷新数码管模块 5.6 获得键值模块6 系统测试 6.1测试环境 6.2测试步骤 6.2.1第一次调试 6.2.2第二次调试 6.2.3第三次调试 6.2.4第四次调试附录1 系统电路图附录2 系统软件代码附录3 系统器件清单1 作品的背景与意义首先,数字钟是日常生活中常见的简单系统,相对于传统的机械时钟具有更高的准确性和直观性,具有更长的使用寿命,已得到广泛的使用。其次,由于单片机具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,使单片机在电子和一些自动化行业中应用也越来越广泛。利用单片机实现的电子钟具有编程灵活,并便于功能的扩展,很精确。2 功能指标设计数字钟实
3、现功能:1具备一个精确的1秒定时器;2可根据1秒定时器,在LED上显示带小时、分钟、秒的时钟,实现正常走时秒分时日月年进位;3能够自动区分平闰年和大小月;4具备小时、分钟的修改按键,可分别调整小时、分钟、秒;5具备显示日期功能,并且能分别直接修改年,月,日;6具备5个闹钟,可分别查看和修改闹钟时间;也可分别设置闹钟开关,且当闹钟鸣叫时,可人为关掉闹钟。3 方案选择3.1采用的程序语言的方案选择3.1.1方案一、汇编优点: 能够直接访问与硬件相关的存储器或I/O口; 能够对关键代码进行更准确的控制,避免因线程共同访问或者硬件设备共享引起的死锁; 能够最大限度地发挥硬件的功能缺点: 编写的代码非常
4、难懂,不好维护; 很容易产生bug,难于调试;3.1.2方案二、c语言优点: 简洁紧凑,适用围大,可移植性好 可结构化编程 运算符、数据类型丰富缺点: 在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷; 在语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。结论:由于想要了解和掌握汇编语言的具体编写过程,且可以直接通过汇编语控制端口,更好地了解芯片的工作原理,故而选择了汇编语言。3.3 主要核心器件知识简介3.3.1 SST89E516RDSST89E516RD 是8位集成存储器的51系列兼容单片机。单片机是典型的嵌入式微控制器,它不是完成某一个逻辑功
5、能的芯片,而是把一个计算机系统集成到一个芯片上,相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。3.3.2 74hc57374HC573 是八进制 3 态非反转透明锁存器。为三态允许控制端,低电平有效LE为锁存控制端,高电平有效1D8D为数据输入端1Q8Q 为数据输出端3.3.3 74HC24574HC245:总线收发器,典型的CMOS型三态缓冲门电路。总线收发器,典型的CMOS型三态缓冲门电路。为输出使能端,低电平有效DIR为输出方向控制端A0A7为数据输入/输出端B0B7为数据输入/输出端4 系统整体框图AT89C52主控制模块键盘修改,设置,查看LED显示时间显示模块蜂鸣
6、器闹钟模块位选、段选复位电路时钟振荡电路5 软件设计:5.1主流程图程序开始时初始化:对定时器T1装入初值,外部中断INT1进行初始化,开启定时器和外部中断后进入主函数刷新数码管,扫描键盘,并判断闹钟的开启状态,和是否让蜂鸣器鸣叫。若没有闹钟开着,也没有对相应键的按下,则在主函数中循环。 5.2主函数5.3子模块5.3.1查看模块5.3.2修改时间模块刷新数码管显示当前时间,并不断扫描键盘,若有键按下则依据键值修改时间,若按下键16则中断返回。5.3.3修改日历模块刷新数码管,显示当前日期,并不断扫描键盘,若有键按下则依据当前键值修改日期,日子的最大允许日期是不同的,应先判断平闰年和大小月,若
7、按下键16则返回主函数。5.3.4设定闹钟模块刷新数码管,显示每个闹钟的前一状态,并不断扫描键盘,若有键按下则依据键值修改闹钟的时分秒的值,若按下7则闹钟不开启,若按下8则闹钟开启。5.4精确的1s计时模块5.5刷新数码管模块LED灯的每段对应一个二极管,此是共阴极设计的,对其输入高电平则可以使相应的段亮起来。首先应先位选,将要显示的十进制数值译成二进制码后对该位的各段赋予高低电平即可。5.6获得键值为了获得用户按下的按键所对应的键值,可先向行接口输出一个第0行为0 ,其它行均为1的行码,然后读入列码并判其是否为全1 ,若不是全1就表示在第0行中有键被按下,且读入的列码中出现0的位置代表该按键
8、所处的列编号,输出行码中0的位置代表该按键所处的行编号,据键值公式可获取相应的键值;若读入的列码为全1 ,就再对下一行进行类似的处理,如此逐行分析处理,直至所有行处理完毕,返回主函数。6、系统测试6.1测试环境 室温27度6.2 测试步骤本次数字钟实验共四次进行调试,出现问题和解决办法如下:6.2.1第一次调试第一次调试查看日历、闹钟和精确的秒加1:1中断T0不能实现精确的秒加1;2查看闹钟和日历时定时器不工作、时间没走; 3查看闹钟时无法判断该闹钟是否开启;从第一次调试来看,可以看出对定时器工作原理不是很理解,应加深对定时器的理解再设置初值;无法判断闹钟是否开启是因为最开始没想到设定闹钟开启
9、标志,经过修正就解决了。6.2.2 第二次调试 第二次调试外部中断修改时间: 1不能正常进入外部中断程序,出现bug; 2通过按键该时间,稍微按下某键就使数值变化很多,与实际不相符;每次在线调试没有完全退出,外部中断1对应引脚电平保持为之前状态导致再次进程序在线调试不能正常进外部中断的程序;获得键值后,修改时、分、秒,可是按着键的过程中使对应的时、分、秒不断增一或减一,最后想到键释放才把键值给到单片机,实现按一次加减一的功能。 6.2.3 第三次调试第三次调试设置闹钟、判断闹钟: 1闹钟时间设定好后不能通过按键使闹钟开启或关闭; 2蜂鸣器响时不能通过按键退出;经过第一次调试后设定好了闹钟标志,
10、但是进设置闹钟程序时,由于没想清楚如何通过按键开启或关闭闹钟的同时可以退出修改闹钟程序,纠结于是否人性而难以下手;蜂鸣器想时并没有扫描键盘,最后想到用特殊按键退出。 6.2.4 第四次调试第四次调试修改日历: 1由于使用汇编导致该部分代码相当复杂,算法不易实现;2修改日子时没先判断当前平闰年和大小月导致出现诸如20XX2月29号的与实际不相符的情况;汇编有优点,但难以实现复杂算法导致当时写修改日历模块相当辛苦,代码也显的杂乱无章。最后是耐心地一处一处地检查错误的。附录1 系统电路图附录2 系统软件代码/*/*/KEY EQU 0F8FFH ;按键地址LED_SEG EQU 0FAFFH ;液晶
11、段数据LED_SEL EQU 0FBFFH ;液晶段片选KH EQU 21H ;保存按键行值KK EQU 22H ;按键值地位KV EQU 23H ;保存按键列位KT EQU 24H ;临时保存按键状态HOU EQU 25H SEC EQU 26H MIN EQU 27HHB EQU 28H ;数据高位LB EQU 29H ;数据低位DATE_TIME EQU 2AH ;记录时间、日期模式 ,3表示时间,4表示日期LP0 EQU 2BH ;定时器1循环次数LP1 EQU 2CH ;定时器2循环次数YEARH EQU 2DHYEARL EQU 2EHMON EQU 2FHDAY EQU 30HF
12、LASH EQU 31H ;设置标记变量FLASH_BITE EQU 32H ;设置位标记变量FLASH_FIGURE EQU 33H ;设置位数值标记变量SIGN EQU 34H ;闰年标记BOOL EQU 35H ;是否按下LP3 EQU 36HLP4 EQU 37HBITE EQU 38HLP2 EQU 39HH_LB EQU 3AHH_HB EQU 3BH LP5 EQU 3CH ;闹钟个数LP6 EQU 4FHLP7 EQU 50HLP8 EQU 51HLP_H EQU 52HLP_L EQU 53HBP BIT P1.0 ;闹钟LED_1 BIT P1.1ON_OFF0 BIT 0
13、0HON_OFF1 BIT 01HON_OFF2 BIT 02HON_OFF3 BIT 03HON_OFF4 BIT 04H BOOL_H BIT 05HBOOL_L BIT 06H/*/ORG 0000HLJMP MAINORG 000BH ;定时器1中断入口,产生秒基准时间并实现时间日期自增LJMP SERVEORG 001BH ;定时器2中断入口,LJMP REDRAW/*/ORG 1000HMAIN:MOV SP,#60HMOV BOOL,#0HMOV LP0,#14HMOV LP1,#250MOV TMOD,#11HMOV TH0,#3CHMOV TL0,#0B0H;MOV TH1,
14、#03CHMOV TL1,#0B0HMOV LP7,#2 ;定时器1循环次数MOV LP8,#50 ;MOV SIGN,#0FFHMOV FLASH,#0MOV YEARH,#20MOV YEARL,#12MOV MON,#2MOV DAY,#29 MOV HOU,#23MOV SEC,#53MOVMIN,#59MOV R4,#0DFHMOV DATE_TIME,#3H MOV FLASH_BITE,#0FFHMOV LP5,#0MOV LP_H,#70MOV LP_L,#70SETB BPSETB ON_OFF0SETB ON_OFF1SETB ON_OFF2SETB ON_OFF3SETB
15、 ON_OFF4SETB BOOL_HSETB BOOL_LMOV 3DH,#0MOV 45H,#0MOV 4AH,#0MOV 3FH,#1MOV 47H,#1MOV 4CH,#1/*定时器初始化*/SETB ET0 ;允许T0中断SETB ET1 ;禁止T1中断SETB EA ;CPU开放中断CLR TR1 ;关闭定时器T1SETB TR0 ;开启定时器T0/*/WHILE: LCALL LPKEY_NUM: ;按键处理 MOV DPTR,#KEYMOV A,#0HMOVX DPTR,AMOV A,FLASHJZ SETTR0MOV A,DATE_TIMECJNE A,#4,CLRTR0SE
16、TTR0: SETB TR0JMP JUDGE CLRTR0:CLR TR0JUDGE: ;扫描是否有键按下MOV DPTR,#KEYMOVX A,DPTRANL A,#0FHMOV R1,#0EFHMOV R2,#4HMOV KT,ACJNE A,#0FH,FINDMOV BOOL,#0JMP WHILEFIND: ;查询按下的键MOV A,R1RR AMOV R1,AMOV DPTR,#KEYMOVX DPTR,ANOPNOPMOV DPTR,#KEYMOVX A,DPTRANL A,#0FHMOV KV,AXRL A,KTJZ PRO0DJNZ R2,FINDPRO0: ;计算键值MOV
17、 A,BOOLJNZ RETURN3MOV BOOL,#1HMOV KH,R2DEC KHMOV A,KVCPL AANL A,#0FHMOV B,#2HDIV ABCJNE A,#4H,PRO1MOV KV,#3HJMP PRO2 PRO1:MOV KV,APRO2:MOV A,KHMOV B,#4HMUL ABADD A,KVMOV KK,AKEYPRO: ;键功能处理MOV A,KKCJNE A,#0AH,KEYPRO1KEYPRO1:JC DIGPROKEYTBL: ;功能键处理MOV DPTR,#JMPTBLCLR C SUBB A,#0AHRL A JMP A+DPTRJMPTBL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 系统 设计 说明
链接地址:https://www.desk33.com/p-15991.html