《2022年八位数显示时钟的设计方案与制作.docx》由会员分享,可在线阅读,更多相关《2022年八位数显示时钟的设计方案与制作.docx(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、毕业设计 论文)题目:八位数显示时钟的设计与制作2021 年 8 月 28 日1. 毕业设计题目:八位数显时钟题目类型试验讨论题目来源 老师科研题毕业设计内容要求:一)设计任务:1234闹铃;、用单片机设计8 位数显电子时钟;、走时,误差精度掌握在 1s/ 天;、调时,小时、分钟加减调整及闪耀显示;、闹铃,可以设置三组闹铃,默认闹铃时间为1 分钟,可按任意键推出二)涉及要求:1、总体方案设计及框图;2、设计原理电路图及分析;3、 独立编写程序;4、完成 protues仿真设计;5、使用 protel 设计 pcb 并制作、调试电路;2. 主要参考资料1 电子工业出版社 51 单片机典型系统开发
2、实例精讲2 复旦高校出版社 单片微型机原理、应用和试验 白延敏;张友德;3 海纳电子资讯网 www.fpga-IC中文资料 ;毕业设计任务书41 / 35摘 要时间是现代社会中不行缺少的一项参数, 无论是平常生活仍是社会生产都需要对时间进行掌握, 有的场合对其精确性仍有很高的要求. 采纳单片机进行计时,对于社会生产有着特别重要的作用;本文第一介绍了电子时钟的特点和功能,然后对单片机和LCD显示做了具体的介绍,提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,再用 Protues 软件进行了仿真和调试 , 结果证明白该设计系统的可行性;由于 AT89S52系列单片机的掌握器运算才能强,处
3、理速度快, 可以精确计时,很好地解决了实际生产生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的适用性;关键字: 单片机; LCD1602液晶显示器; C程序设计目录第一章系统设计要求及功能51.1 设计本电子定时闹钟的目的和意义51.2 本 LCD 电子闹钟的特点和功能介绍51.2.1 本电子钟设计特点 51.2.2 本电子钟的主要功能 5其次章方案设计与比较 62.1 数字时钟方案 62.2 显示方案 7第三章系统硬件的设计 83.1 单片机的挑选及管脚介绍83.1.1 单片机的挑选及主要性能83.1.2 单片机管脚介绍 93.2 LCD1602 的管脚及功能介绍113.2.1
4、引脚说明 113.2.2 掌握器接口说明 123.3 总体设计 133.3.1 系统说明 133.3.2 整体系统框图 133.4 各部分功能实现 143.5 元件清单 143.6 电子钟电路原理图153.7 时钟仿真各功能分析及图解16第四章软件总体设计方案204.1 主程序流程图: 204.2 、闹钟的实现 22第五章课程设计结果分析23致谢 24参考文献 25附录 261)掌握电路的 C 语言源程序 262) 8 位数显时钟成品展现图35第一章系统设计要求及功能1.1 设计本电子定时闹钟的目的和意义1、复习和巩固所学过的学问,利用此毕业设计正好可以对所学过的学问进行系统的回忆和总结;2、
5、拓展学问面,课堂的学问是远远满意不了设计的要求的,这就需要我们主动去找寻更多的资料,明白更多的学问;3、培育了设计才能和解决实际问题的才能,同时增强了自学才能,通过设计完整的单片机系统也初步把握了组成系统、编程、调试等才能;4、通过本 LCD电子钟的设计初步明白了单片机应用系统开发研制过程,软件和硬件设计的方法;1.2 本 LCD电子闹钟的特点和功能介绍1.2.1 本电子钟设计特点本 LCD 电子定时闹钟是一种基于单片机技术的多功能、多用途的电子产品,有电子时钟、定时闹铃功能;性能杰出,采纳LCD 显示更加直观,是一个比较有用的电子产品;1.2.2 本电子钟的主要功能1. 可以显示 24 小时
6、制“时时 - 分分- 秒秒”, LCD显示;2. 可以便利的设定定时时间、修改定时时间,闹铃功能,预设定时时间到将发出闹铃声;其次章 方案设计与比较2.1 数字时钟方案数字时钟是本设计的最主要的部分;依据需要,可利用两种方案实现;方案一:本方案采纳 Dallas公司的专用时钟芯片 DS12887A;该芯片内部采纳石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能, 因此,可直接对其以用于显示或设置,使得软件编程相对简洁;为保证时钟在电网电压不足或突然掉电等突发情形下仍能正常工作,芯片内部包含锂电池;当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统;而且即使系统不
7、上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时供应正确的时间;方案二:本方案完全用软件实现数字时钟;原理为:在单片机内部储备器设三个字节分别存放时钟的时、分、秒信息;利用定时器与软件结合实现1 秒定时中断,每产生一次中断,储备器内相应的秒值加1;如秒值达到60,就将其清零,并将相应的分字节值加1;如分值达到 60,就清零分字节,并将时字节值加 1;如时值达到 24,就将十字节清零;该方案具有硬件电路简洁的特点;基于硬件电路的考虑,本设计采纳方案二完成数字时钟的功能;2.2 显示方案方案一:采纳 LED 数码管动态扫描 ,LED 数码管价格适中 , 对于显示数字合适 , 采纳动态扫描
8、法与单片机连接时 , 虽然占用的单片机口线少,但连线仍需要花费一点时间, 所以也不用此种作为显示;方案二:采纳点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合 , 如采纳在显示数字显得太铺张 , 且价格也相对较高 , 所以也不用此种作为显示;方案三:采纳 LCD 液晶显示屏 , 液晶显示屏的显示功能强大 , 可显示大量文字 , 图形,显示多样 , 清楚可见 , 和 AT89S52已经接好,省了许多麻烦;所以在此设计中采纳 LCD液晶显示屏;第三章 系统硬件的设计3.1 单片机的挑选及管脚介绍3.1.1 单片机的挑选及主要性能AT89S52是一种低功耗、高性能CM
9、OS8位微掌握器,具有 8K 在系统可编程 Flash储备器;使用Atmel公司高密度非易失性储备器技术制造,与工业 80C51 产品指令和引脚完全兼容;片上Flash答应程序储备器在系统可编程, 亦适于常规编程器;在单芯片上,拥有敏捷的8 位 CPU 和在系统可编程Flash ,使得 AT89S52为众多嵌入式掌握应用系统供应高敏捷、超有效的解决方案;AT89S52具有以下标准功能: 8k 字节 Flash , 256 字节 RAM,32 位 I/O口线,看门狗定时器, 2 个数据指针,三个16 位定时器 / 计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振准时钟电路;另外,A
10、T89S52 可降至0Hz 静态规律操作,支持 2 种软件可挑选节电模式;闲暇模式下,CPU停止工作,答应 RAM、定时器 / 计数器、串口、中断连续工作;掉电爱护方式下,RAM内容被储存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止;3.1.2 单片机管脚介绍VCC:电源 GND:地P0 口:P0 口是一个 8 位漏极开路的双向I/O口;作为输出口,每位能驱动8 个 TTL 规律电平;对 P0 端口写“ 1”时,引脚用作高阻抗输入;当拜访外部程序和数据储备器时, P0 口也被作为低 8 位地址 / 数据复用;在这种模式下, P0 具有内部上拉电阻;在 flash编程时, P
11、0 口也用来接收指令字节;在程序校验时,输出指令字节;程序校验时,需要外部上拉电阻;P1 口: P1 口是一个具有内部上拉电阻的8 位双向 I/O 口, p1 输出缓冲器能驱动 4 个 TTL规律电平;对 P1 端口写“ 1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用;作为输入使用时,被外部拉低的引脚由于内部电阻的缘由,将输出电流IIL ) ;此 外, P1.0和 P1.2分别 作定时器 / 计数器2 的外部计数输入P1.0/T2 )和时器 / 计数器 2 的触发输入 P1.1/T2EX),具体如下表所示; 在flash编程和校验时, P1 口接收低 8 位地址字节;引脚号其次功能 :
12、P1.0 T2 定时器/ 计数器 T2 的外部计数输入),时钟输出P1.1 T2EX定时器 / 计数器 T2 的捕获/ 重载触发信号和方向掌握) P1.5 MOSI在系统编程用)P1.6 MISO在系统编程用) P1.7 SCK在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口, P2 输出缓冲器能驱动 4 个 TTL 规律电平;对 P2 端口写“ 1”时,内部上拉电阻把端口拉高, 此时可以作为输入口使用;作为输入使用时,被外部拉低的引脚由于内部电阻的缘由,将输出电流 IIL );在拜访外部程序储备器或用 16 位地址读取外部数据储备器 例如执行 MOVX DP)
13、TR时, P2 口送出高八位地址;在这种应用中, P2 口使用很强的内部上拉发送 1;在使用 8 位地址 如 MOVX R)I拜访外部数据储备器时, P2口输出 P2锁存器的内容;在 flash 编程和校验时, P2 口也接收高 8 位地址字节和一些掌握信号;P3 口: P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口, P2 输出缓冲器能驱动 4 个 TTL 规律电平;对 P3 端口写“ 1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用;作为输入使用时,被外部拉低的引脚由于内部电阻的缘由,将输出电流 IIL );在 flash编程和校验时, P3 口也接收一些掌握信号;P3 口
14、亦作为 AT89S52特别功能 P3.1 TXD 串行输出口 P3.2 INTO 外中断 0 P3.3 INT1 外中断 1P3.4 TO 定时/ 计数器 0 P3.5 T1 定时/ 计数器 1P3.6 WR外部数据储备器写选通 P3.7 RD 外部数据储备器读选通 RST复位输入;当振荡器工作时, RST引脚显现两个机器周期以上高电平将是单片机复位;ALE/PROG当拜访外部程序储备器或数据储备器时,ALE地址锁存答应)输出脉冲用于锁存地址的低 8 位字节;一般情形下, ALE仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的;要留意的是:每当拜访外部数据储备
15、器时将跳过一个ALE脉冲;如有必要,可通过对特别功能寄存器 SFR)区中的 8EH单元的 D0 位置位,可禁止 ALE操作;该位置位后,只有一条 MOVX和 MOVC指令才能将 ALE激活;此外,该引脚会被柔弱拉高,单片机执行外部程序时,应设置ALE禁止位无效;PSEN程序储存答应 PSEN)输出是外部程序储备器的读选通信号,当A T89S52由外部程序储备器取指令 或数据)时,每个机器周期两次PSEN有效, 即输出两个脉冲,在此期间,当拜访外部数据储备器,将跳过两次PSEN信号;EA/VPP外部拜访答应,欲使 CPU仅拜访外部程序储备器 地址为 0000H-FFFFH), EA端必需保持低电
16、平 接地);需留意的是:假如加密位LB1被编程,复位时内部会锁存EA端状态;如 EA端为高电平 接 Vcc 端), CPU就执行内部程序储备器的指令;XTAL1:振荡器反向相大器和内部时钟发生电路的输入端;XTAL2: 振荡器反向相大器的输出端;3.2 LCD1602 的管脚及功能介绍LCD1602引脚图 3-1液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对3V0比度最高 时进行读操作,低电平操作;0 时进行写3.2.1 引脚说明引脚符号功能说明1VSS一般接地2VDD接电源 端为使能 enable端,下降沿使能;7DB0底 4 位三态、双向数据总线0 位最低位)8DB1底 4 位
17、三态、双向数据总线1 位9DB2底 4 位三态、双向数据总线2 位10DB3底 4位三态、双向数据总线3位11DB4高 4位三态、双向数据总线4位12DB5高 4位三态、双向数据总线5位13DB6高 4位三态、双向数据总线6位14DB7高 4位三态、双向数据总线7 位 最高位)也是busy flag)15BLA背光电源正极16BLK背光 电源负极表 3-23.2.2 掌握器接口说明1基本操作时序:1.1读状态:输入:RS=L,RW=H, E=H;输出: D0D7=状态字1.2写指令:输入:RS=L, RW=L, D0D7=指令码, E=高脉冲输出:无1.3读数据:输入:RS=H,RW=H, E
18、=H;输出: D0D7=数据1.4写数据:输入:RS=H, RW=L, D0D7=指令码, E=高脉冲输出:无2 寄存器挑选掌握表3-3RSR/W操作说明00写入指令寄存器 清除屏等)01读 busy flagDB7),以及读取位址计数器DB0DB6)值10写入数据寄存器 显示各字型等)11从数据寄存器读取数据表 3-33.3 总体设计3.3.1 系统说明利用单片机 AT89S52)制作 8 位数显时钟,由 1 个 LCD1602液晶显示小时十位、小时个位、分钟下位、分钟个位;K1 用于一般调时与闹铃设置模式之间的切换, K2与 K3都可用于对小时分钟的调整;3.3.2 整体系统框图复位电路开
19、关按键LM1602 液晶显示89S52时钟电路单片机闹铃电路表 3-43.4 各部分功能实现3. 单片机发送的信号通过程序掌握最终在显示器上显示出来;4. 单片机通过输出各种电脉冲信号来驱动掌握各部分正常工作;5. 为使时钟走时与标准时间一样,校时电路是必不行少的,按键用来校正显示器上显示的时间;6. 单片机通过掌握闹铃电路来完成定时闹钟的功能;3.5 元件清单电子钟元件清单如表 3-4 所示:表 3-5电子钟元器件清单元件名称规格型号数量个)单片机AT89S521液晶显示屏LM16021滑动变阻器10K1晶振12MHz1电容30pF2电解电容10 F1按键BUTTON4电阻10K1电阻100
20、1分频器1三极管NPN1排阻RESPACK-5/10K1表 3-5电子钟元器件清单3.6 电子钟电路原理图PCB 板电路图 3-6图 3-7 系统电路图本设计采纳 C 语言程序设计,使单片机掌握显示器显示时、分、秒,当秒计数计满 60 时就向分进位,分计数器计满60 后向时计数器进位,小时计数器按“ 23 翻 0”规律计数;时、分、秒的计数结果经过数据处理可直接送显示器显示;当计时发生误差的时候可以用校时电路进行校正;设计采纳的是时、分、秒显示,单片机对数据进行处理同时在显示管上显示;3.7 时钟仿真各功能分析及图解1) 时钟运行图仿真开头运行时,时钟从 12:00:00 开头运行,按一下K1
21、 进入小时调整状态, K2 、K3 键可对小时进行加减调整,再按下K1 进入分钟调整状态, K2、K3 键可对分钟进行加减调整,再按下K1 就进入闹钟设置状态,再连续按两下K1 就退出闹钟进入正常运行模式;时钟运行图如图 3-8时钟设置图 3-92)闹铃设置图及运行图连续按三下 K1 进入闹钟调整状态,此时按下K2 对时进行加调整,按下K3 就对时进行减调整;再按下K1 进行分调整,此时按下 K2 对分进行加调整,按下 K3 就对分进行减调整;再按下K1 就推出闹钟设置进入运行状态;闹钟设置胜利;当走时到所设闹钟状态时就液晶显示屏第一行显示闹钟时间且闹铃;此时按任意键即可推出闹铃; 下图 3-
22、9 为闹铃状态)闹铃运行图 3-10闹铃设置图 3-11该数字钟是用一片AT89S52 单片机通过编程去驱动液晶显示器实现的;通过 4 个开关掌握 , 从上到下 3 个开关 K1-K3 的功能分别为: K1 用于一般调时与闹铃设置模式之间的切换, K2 与 K3 都可用于对小时分钟的调整; 分别与 P0.0 、P0.2、P0.4 口连接其中 K4为复位开关;1. 通过 P2口和 P3 口去掌握液晶显示器的显示;2. 在设置的闹钟时间到了从P2.0 输出一个信号使三极管导通,如有乐曲可以去驱动扬声器实现;第四章 软件总体设计方案4.1 主程序流程图 :软件程序从开头执行,先通过初始化各个寄存器,
23、经过扫描按键来打算是否设定参数来执行相应功能的程序,进而在显示器上显示;主程序流程图如图4-0主程序流程图 4-1按键流程图 4-2开头初始化掌握键 K1 有效 进入时调整程序等待按键程序加 键 有 效减 键 有 效时加一时减一掌握键 K1 有效 进入分调整程序等待按键程序加 键 有 效减 键 有 效分加一分减一掌握键 K1 有效 进入秒调整程序等待按键程序加 键 有 效减键有效 K3秒加一秒减一掌握键 K1 有效 进入闹钟调整程序时调整等待按键程序加键有效 K2减键有效 K3时加一时减一掌握键 K1 有效 进入闹钟调整程序分调整等待按键程序加 键 有 效减 键 有 效分加一分减一按键 K1
24、有效,跳出时间调整程序,进入主程序流程图按键流程图 4-24.2 、闹钟的实现闹钟功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理;闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题;闹铃判别与闹铃处理的关键在于判别何时要进行闹铃;当时十位、时个位、分十位、分个位中任一位发生转变 进位)时,就必需进行闹铃判别;程序设计思想如图;闹铃判别处理时十位、个位,分十位、个位转变了是否设置了闹铃中断返回判当前时间是设定时间设置闹铃标志清除闹铃标志中断返回图 4-3闹铃实现思想流程图第五章 课程设计结果分析此时钟设计是利用 protues仿真软件进行仿真,基本
25、上实现了课程设计要求实现的功能;硬件部分设置了的四个按键;其中一个按键K4 为复位按键,当按下复位键时时钟从初始状态开头运行;另设三个按键K1、K2、K3 为调整键1. 接通电源或上电复位电路进入运行状态2. 调时状态: a、按下 K1 进入时间调整状态:此时按下K2 对小时进行加调整,按下 K3 对小时进行减调整; b、再按下 K1 就对分进行调整:按下 K2 对分进行加调整,按下K3 对分进行减调整; c、再次按下 K1 就对秒进行调 3 黄庆华、张永格 .单片机开发 与实例M. 电子工业出版社 127 162页数字式电子时钟的设计) .4 闫玉德、俞红 .MCS-51单片机原理与应用 C
26、 语言版) M. 机械工业出版社49104 页 单片机的 C 程序设计) .5 求是科技 .单片机典型模块设计实例导航 M. 人民邮电出版社 85 90 页单片机数字时钟) .6 刘守义,王静霞;单片机应用技术M. 西安电子科技高校出版社, 2002.2 87.7 金龙国.单片机原理与应用 M. 北京:中国水利水电出版社, 2005.2 56. 8朱一纶.智能仪器基础 M. 北京:电子工业出版社 ,2007.141 158.9胡宴如.模拟电子技术 M. 北京:高等训练出版社 ,2006.237 258附录1)掌握电路的 C语言源程序依据流程图,经过仔细分析得出掌握电路的源程序如下:1 主掌握程
27、序#includechar ss116=HH-MM-SS;/定义正常运行状态 char code ss316=Ah-Am-As;/定义设置闹钟状态char code ss416=Alarming.;/定义闹铃状态 char code ss516=Ad HH-MM-SS;/定义调时间状态char ss216=12-00-01 ; / 定义显示数组以及显示值;char h=12,m=0,s=59,f_hh=0,f_mm=0,f_ss=0,f_h_cl1=0,f_m_cl1=0,s1=1,i=0,a=0,b=0;/ 时钟初值设定;char h_cl1=12,m_cl1=1,flag=1,flag1=
28、0;/设置全局变量; sbit t=P21 ;sbit alarm=P20 ;/ 位定义;bit sp;/ 闪耀位定义;extern void LCM_Initialvoid ;/外部调用 lcd 初始化函数;extern void LCM_Displaychar *disp_1,char *disp_2 ;/外部调用 lcd 字符串显示函数;extern char scank1;/外部调用按键 1 函数; extern char scank2;/外部调用按键 2 函数; extern char scank4;/外部调用按键 3 函数;void addvoids+;ifs59s=0 ;m+ ;
29、 ifm59m=0;h+; ifh23h=0 ; / 时钟数据溢出爱护;void time interrupt 1TH0=0x3c ;TL0=0xb0 ;ifflag=0sp=sp;alarm=sp; a+; b+;ifa4a=0 ;s1=s1;ifb19b=0 ;ifi=0|i=4|i=5add;/ 定时器设定函数;void disvoidifiiff_hh=0ss24=h/10+0x30 ;ss25=h%10+0x30 ;elseifs1=1 ss24=h/10+0x30 ;else ss24=0x20 ;ifs1=1 ss25=h%10+0x30 ;else ss25=0x20 ;iff
30、_mm=0ss27=m/10+0x30 ;ss28=m%10+0x30 ;elseifs1=1 ss27=m/10+0x30 ;else ss27=0x20 ;ifs1=1 ss28=m%10+0x30 ;else ss28=0x20 ;iff_ss=0ss210=s/10+0x30 ;ss211=s%10+0x30 ;elseifs1=1 ss210=s/10+0x30 ;else ss210=0x20 ;ifs1=1 ss211=s%10+0x30 ;else ss211=0x20 ;elseiff_h_cl1=0ss24=h_cl1/10+0x30 ;ss25=h_cl1%10+0x30
31、 ;elseifs1=1ss24=h_cl1/10+0x30 ;else ss24=0x20 ;ifs1=1 ss25=h_cl1%10+0x30 ;else ss25=0x20 ;iff_m_cl1=0ss27=m_cl1/10+0x30 ;ss28=m_cl1%10+0x30 ;elseifs1=1 ss27=m_cl1/10+0x30 ;else ss27=0x20 ;ifs1=1 ss28=m_cl1%10+0x30 ;else ss28=0x20 ;ss210=s/10+0x30 ;ss211=s%10+0x30 ;/ 数据处理函数;void alarm_voidifi=0|i=6i
32、fh=h_cl1&m=m_cl1&s=0flag=0 ; ifscank2|scank4flag=1;sp=1; alarm=1; t=0;ifh.=h_cl1|m.=m_cl1flag=1;/ 闹钟函数;void mainvoidTMOD=0x01 ;EA=1 ;/ 答应中断,并挑选中断方式为1; ET0=1 ;TH0=0x3c ;TL0=0xb0 ;/中断初始值设定; TR0=1 ;/启动中断;LCM_Initial;/lcd 初始化函数;i=0 ;while1switchicase 0:f_hh=0;f_mm=0 ;f_ss=0;LCM_Displayss1,ss2 ;ifflag=0s
33、s14=h_cl1/10+0x30 ;ss15=h_cl1%10+0x30 ;ss17=m_cl1/10+0x30 ;ss18=m_cl1%10+0x30 ;ss110=0x30 ;ss111=0x30 ;elsess14=0x48 ;ss15=0x48 ;ss17=0x4d ;ss18=0x4d ;ss110=0x53 ;ss111=0x53 ;ifscank1i=1 ;break;case 1:f_hh=1;f_mm=0 ;f_ss=0;LCM_Displayss5,ss2 ;ifscank1i=2 ;ifscank2h+ ;ifh23h=0 ; ifscank4h- ;ifhh=23 ;
34、break ;case 2:f_hh=0;f_mm=1 ;f_ss=0;LCM_Displayss5,ss2 ;ifscank1i=3 ;ifscank2m+ ;ifm59m=0 ; ifscank4m- ;ifmm=59 ;break ;case 3:f_hh=0;f_mm=0 ;f_ss=1;LCM_Displayss5,ss2 ;ifscank1i=4 ;ifscank2s+ ;ifs59s=0 ; ifscank4s- ; ifss=59 ;break ;case 4:f_h_cl1=1 ;f_m_cl1=0 ;LCM_Displayss3,ss2 ;ifscank1i=5 ;ifsc
35、ank2h_cl1+;ifh_cl123h_cl1=0 ; ifscank4h_cl1-;ifh_cl1h_cl1=23 ;break ;case 5:f_h_cl1=0 ;f_m_cl1=1 ;LCM_Displayss3,ss2 ;ifscank1i=0 ;ifscank2m_cl1+; ifm_cl159m_cl1=0 ; ifscank4m_cl1-;ifm_cl1m_cl1=59 ;break ;default:break ;/ 按键掌握;alarm_ ; dis ;/ 闹钟退出;2 液晶显示模块及调用函数#include #define uchar unsigned char #define uint unsigned int/*LCM1602地址相关 */#define LINE1_HEAD0x80/第一