




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、信息工程学院课程设计报告书题目:可编程作息时间限制器设计专业:电子信息科学与技术班级:学号:学生姓名指导教师:2021年5月13日信息工程学院课程设计任务书学号学生姓名专业班级设计题目可编程作息时间限制器设计设 计 技 术 参 数0.5v 低电压驱动蜂鸣器5V外部稳压电源供电1602LCD显示日期和时间LED提示闹钟到来设 计 要 求1根据给定的时间模拟限制,实现播送、上下课打铃、灯光限制屏幕显示.2具备日期和时钟显示.工 作 量文字报告字数大约在 2000字,页数在20页左右工 作 计 划1整体设计构思2查阅有关资料3编写调试程序4画出电路图5装载程序,查看结果参 考 资 料1 ?单片机原理
2、及应用第二版?张毅刚 彭喜兀彭宇北京高等教育出版 社2 刘和平.单片机编程与入门.重庆大学出版社,2002.68-99,111-1223 陈明荧.89C51单片机课程设计实训教材.清华大学出版社,2003.38-67,102-118指导教师签字教研室主任签字信息工程学院课程设计成绩评定表学生姓名:学号:专业班级: 电子课程设计题目:可编程作息时间限制器设计指导教师评语:成绩:指导教师:年 月 日摘要本设计是可编程作息时间限制器设计,由单片机AT89C51芯片和LCD LED显示器,辅以必要的电路,构成一个单片机四路可调闹钟.电子钟可采用数字电路实现,也可以采用单片机来完成.LCD显示“时,“分
3、,LED亮灯来表示闹钟的到来,定时时间到能发出警报声.现在是自动化高度兴旺的时代,特别是 电子类产品都是靠内部的限制电路来实现对产品的限制,到达自动运行的目的,这就需要我们这里要做 的设计中的电器元件及电路的支持.在这次设计中主要是用 AT89S51来进行定时,也结合着其他辅助电路实施限制,在定时的时候,按 一下限制小时的键对小时加一;按一下限制分钟的键对分钟加一;到达预设的时间,此电路就会发出报 警声音提示已经到点.关键字:四路可调闹钟AT89C51 LCD1任务提出与方案论证 01.1单片机型号的选择01.2按键的选择01.3显示器的选择01.4计时局部的选择02总体设计02.1系统总框图
4、02.2原理及工作过程说明 02.3系统电路图13详细设计13.1主程序局部的设计13.2独立式键盘的接口电路 23.3 1602LCD液晶显示器 23.4闹钟子函数44总结4参考文献51任务提出与方案论证1.1单片机型号的选择通过对多种单片机性能的分析,最终认为AT89C51是最理想的电子时钟开发芯片.AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容.由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATME啲AT89C51是一种高效微限制器,而且它与
5、MCS-51兼容,且具有4K字节可编程序存储器和1000次擦写循环,数据保存时间为 10年,是最好的选择.1.2按键的选择本次设计根据题目要求使用独立式按键.由于按键较少,在修改时间或设置闹铃时间时就不能直接输入,只能通过加或减完成,稍为麻烦一些,但其程序简单.1.3显示器的选择选用1602LCD夜晶显示器.1.4计时局部的选择如果使用时钟芯片, 系统就不怕掉电且时间精确. 但这种芯片比拟贵, 况且,设计本系统主要是为了学习单片机程序的编写和调试以及设计硬件电路的一些方法,因此采用软件的方法来计时而没有采用价格较高的时钟芯片.2总体设计2.1系统总框图2.2原理及工作过程说明制作一个可编程作息
6、时间限制器闹钟,当4路闹钟中的任一路到时,均会点亮灯、打铃.如有需求,可对程序进行调整,增加闹钟的路数及到时后的处理方式.定时闹钟的根本功能如下.显示时钟时间,格式为“时时:分分,并可重新设置.显示闹铃时间,格式为“时时:分分,且显示闪烁以便与时钟时间相区分.闹铃时间可重新设置.程序执行后工作指示灯LED闪烁,表示时钟工作为时钟显示模式.LCD显示的初始时间为“ 23:58.按下K2,闪烁显示的“ 00:00为闹铃的时间,单击 K3又返回时钟显示 模式.时钟从“ 23:58开始计时,定时时间“ 00:00到时,继电器开关接通,限制电器的 开启,且可发出声响(可控).时钟与闹铃时问的设置可通过4
7、个功能按键KIK4实现,具体说明如下.(1) 时钟时间的设置:首先单击KI进入时钟设置模式. 此时每单击一下 KI,那么小时增I,单击一下K2,那么分钟增1,再单击K3那么设置完成,返回时钟显示模式.此时小时和分钟均 已发生变化.(2) 闹铃的时间设置:首先单击,K3进入闹铃的设置模式.此时每单击一下KI,那么小时增1,单击一下 K2,那么分钟增I,最后单击.K3那么设置完成,返回闹铃显示模式.此时闹 铃的小时和分钟均已发生变化.(3) K4的功能:闹钟更换.(4) K2单独的功能:显示闹铃时间.2.3系统电路图3详细设计3.1主程序局部的设计程序局部主要采用了程序结构的模块化设计,防止了一些
8、函数的不必要的重复书写,使程序变得单间易懂.程序在执行时,主程序要须通过调用子函数就可完成相应的功能.主程序流程图如下列图 3-1.-rL.:dfc-初始化设置L IkJ :?;閘餐判断,- 话:显示时词( i,i '; ti慄盘扫描1图3-1主程序流程图3.2独立式键盘的接口电路在单片机应用系统中,有时只需要几个简单的按键向系统输入信息.这时,可将每个按键接在一根I/O接口线上,这种方式的连接称为独立式键盘.每个独立式按键单独占有一根I/O接口线,每根I/O接口线的工作状态不会影响到其他I/O接口线.这种按键接口电路配置灵活,硬件结构简单,但每个按键必须占用一根I/O接口线,I/O接
9、口线浪费较大.故只在按键数量不多时采用这种按键电路.在此电路中,按键输入都采用低电平有效.3.3 1602LCD液晶显示器1602LCD的根本参数及引脚功能1602LCD分为带背光和不带背光两种,基限制器大局部为HD4478Q带背光的比不带背光的厚,是否带背光在应用中并无差异,两者尺寸差异如下列图3-3-1所示:图3-3-11602LCD尺寸图1602LCD主要技术参数:显示容量:16 X2个字符芯片工作电压:4.5 5.5V工作电流:2.0mA(5.0V)模块最正确工作电压:5.0V字符尺寸:2.95 X 4.35(WX H)mm引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(
10、带背光)接口,各引脚接口说明如表 3-1所示:表3-1 :引脚接口说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源.第2脚:VDD接5V正电源.第3脚:VL为液晶显示器比照度调整端,接正电源时比照度最弱,接地时比照度最高,比照度过高时会产生“鬼影,使用时可以通过一个10K的电位器调整比照度.第4脚:RS为存放器选择,高电平时选择数据存放器、低电平时选择指令存
11、放器.第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作.当 RS和 R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据.第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令.第714脚:D0 D7为8位双向数据线.第15脚:背光源正极.第16脚:背光源负极.10. 8. 2. 3 1602LCD的指令说明及时序1602液晶模块内部的限制器共有11条限制指令,如表 3-2所示:表3-2 :限制命令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标
12、返回000000001*3置输入模式00000001I/DS4显示开/关限制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数至U CGRAM或 DDRAM10要写的数据内容11从 CGRAM或 DDRAM读数11读出的数据内容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的.说明:1为高电平、0为低电平指令1:清显示,指令码 01H,光标复位到地址 00H位置.指令2:光标复位,光标返回到地址00H.指
13、令3:光标和显示模式设置 I/D :光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移.高电平表示有效,低电平那么无效.指令4:显示开关限制. D:限制整体显示的开与关,高电平表示开显示,低电平表示关显示C :限制光标的开与关, 高电平表示有光标,低电平表示无光标B:限制光标是否闪烁,高电平闪烁,低电平不闪烁.指令5:光标或显示移位 S/C :高电平时移动显示的文字,低电平时移动光标.指令6:功能设置命令 DL :高电平时为4位总线,低电平时为 8位总线N :低电平时 为单行显示,高电平时双行显示 F:低电平时显示5x7的点阵字符,高电平时显示 5x10的 点阵字符.指令7
14、:字符发生器 RAM地址设置.指令& DDRA地址设置.指令9:读忙信号和光标地址 BF :为忙标志位,高电平表示忙,此时模块不能接收命 令或者数据,如果为低电平表示不忙.指令10:写数据.指令11:读数据.与HD44780相兼容的芯片时序表如下:表3-3 :根本操作时序表读状态输入RS=L, R/W=H E=H输出D0- D7= 犬态字写指令输入RS=L, R/W=L D0- D7=f令码,E= 高脉冲输出无读数据输入RS=H R/W=H E=H输出D0- D7=据写数据输入RS=H R/W=L, D0.7=数据,E=高脉冲输出无读写操作时序如图 3-3-2和3-3-3所示:图3-3
15、-3读操作时序图3-3-3写操作时序1602LCD的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为 低电平,表示不忙,否那么此指令失效.要显示字符时要先输入显示字符地址,也就是告诉模 块在哪里显示字符,图 3-3-4是1602的内部显示地址.图3-3-4 1602LCD内部显示地址在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预.每次输入指令前都要判断液晶模块是否处于忙的状态.1602液晶模块内部的字符发生存储器CGROM已经存储了 160个不同的点阵字符图形,如图3-3-5所示,这些字符有:阿
16、拉伯数字、英文字母的大小写、常用的符号、和日文假名 等,每一个字符都有一个固定的代码,比方大写的英文字母“ A的代码是 01000001B41H,显示时模块把地址 41H中的点阵字符图形显示出来,我们就能看到字母“A图3-3-5字符代码与图形对应图1602LCD的一般初始化复位过程延时15mS写指令38H 不检测忙信号延时5mS写指令38H 不检测忙信号延时5mS写指令38H 不检测忙信号以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令OCH显示开及光标设置3.4闹钟子函数闹钟时间的判别主要
17、是通过设定时间与实时时间对逐位比照确定是否进行闹铃. 其工作流程图如下列图 3-4.N肆断4 N闹钟1到?N我终于完成了设计的任务要求.通过自己的不懈努示,日期显示,示时间的需要.在本 通过这次设计我学会了很多东西 妙的程序算法能、,校时功能、4总结、闹钟设功能.其精确可燃以前写过几次;程序,但我一闹钟3到?Y 闹钟翻开, 我发现很多的问题, 虽然以 单片机课程设计重点就在于软件算】 才觉的写好一个程序并不功能上根本达标: 时钟的显 以满足日常生活显 前没有做过这样的设计但 去的设计, 需要有很巧 是一件简单的事, 比方写一个程序看其功能很少认为编写程序简单,但到编程的时候才发现一些细微的知识
18、或低级错误经常犯做不到最后常常失败,所以有些东西只有学精弄懂并且要细心才行,只学习理论有些东西是很难理解的,更谈不上掌握.从这次的课程设计中,我们真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的练习的过程中才能提升,我想这就是我在这次课程设计中的最大收获.参考文献1 ?单片机原理及应用(第二版)?张毅刚 彭喜元 彭宇北京高等教育出版社2 刘和平.单片机编程与入门.重庆大学出版社,2002.68-99,111-1223 陈明荧.89C51单片机课程设计实训教材.清华大学出版社,2003.38-67,102-118附录#in
19、 clude<reg52.h>#defi ne uint un sig ned int#defi ne uchar un sig ned charsbit key1=P1A0;sbit key2=P1A1;sbit key3=P1A2;sbit key4=P1A3;sbit Icde n=P3A4;sbit Icdrs=P3A5;sbit Icdrw=P3A6;sbit Ied=P2A2;sbit sou nd=P2A7;int a,b,i, min, hour,m in ge, min shi,hourge,hourshi,sec,secge,secshi,c nt,c nt1,
20、 nian=2021,yue=5,ri=5, amin 1=1,ahour1,am in ge1,am in shi1,ahourge1,ahourshi1, amin 2=1,ahour2,am in ge2,am in shi2,ahourge2,ahourshi2, amin 3=1,ahour3,am in ge3,am in shi3,ahourge3,ahourshi3, amin4=1,ahour4,am in ge4,am in shi4,ahourge4,ahourshi4;uchar code table1='0','1','2
21、9;,'3','4','5','6','7','8','9'uchar code table2="Time:00:00"uchar code Alarm_1="Alar1:00:00"uchar code Alarm_2="Alar2:00:00"uchar code Alarm_3="Alar3:00:00"uchar code Alarm_4="Alar4:00:00"uchar
22、code riqi="2021-05-06"uchar nu m1, nu m2,alarm1,alarm2,alarm3,alarm4;bit flag=0;void delay (un sig ned int z)延时程序uint i,j;for(i=z; i>O;i-)for(j=110;j>0;j-);void write_com(uchar com)/LCD 命令限制,写指令函数delay(5);lcdrs=O;P0=com;delay(5);lcde n=1;delay(5);lcde n=0;void write_data(uchar date)/
23、LCD 数据限制,写数据函数delay(5);lcdrs=1;P0=date;delay(5);lcde n=1;delay(5);lcde n=0;void write_ nian( uchar add , uint date)/ 年显示函数uchar qia n,bai,shi,ge;qia n=date/1OOO;bai=(date-1OOO*qia n)/100;shi=(date-qia n*1000-bai*100)/10;ge=date%10;write_com(0x80+0x40+add);write_data(table1qia n);write_data(table1bai
24、);write_data(table1shi);write_data(table1ge);void write_yue(uchar add , uchar date)/ 月显示函数uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_data(0x30+shi);write_data(0x30+ge);void write_ri(uchar add , uchar date)日显示函数uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write
25、_data(0x30+shi);write_data(0x30+ge);void qi()write_ nian (0, nia n); write_yue(5,yue);write_ri(8,ri); write_com(0x80+0x40+7);write_data('-'); write_com(0x80+0x40+4);write_data('-');void time()设置时间函数while(1)if(ke y仁=0) delay(10);if(key1=0) if(hour=23)/"时设置hour=0;elsehour+;hourge=
26、hour%10;hourshi=hour/10;write_com(0x0f);delay(2);write_com(0x80+6);write_data(table1hourge);/"时个位写入 LCD 第 1 行第 6 位delay(5);write_com(0x80+5);delay(2);write_data(table1hourshi);/"时"十位写入 LCD 第 1 行第 5 位while(!key1);if(key2=0)delay(10);if(key2=0)if(min=59)mi n=O;elsemi n+;min ge=min %10;m
27、in shi=mi n/10; write_com(0x0f);write_com(0x80+9);write_data(table1mi nge); 二行第9位delay(1); write_com(0x80+8); write_data(table1mi nshi);行第8位delay(1);while(!key2);if(key3=0)delay(10);if(key3=0)write_com(0x0c);TR1=1;while(!key3); break;置完毕void display1()设置闹钟1时间函数while(1)/"分"设置/"分"个
28、位写入LCD第/"分"十位写入 LCD第二/整体显示,关光标,不闪烁/定时计数器1启动/key3松开时,显示时间时""分"位均已设if(ke y仁=0)delay(10);if(key1=0)if(ahour仁=23)/闹钟时设置ahour1=0;elseahour1+;ahourge 仁ahour1%10;ahourshi仁ahour1/10;write_com(0x0f);write_com(0x80+0x40+8);write_data(':');write_com(0x80+0x40+7);write_data(tabl
29、e1ahourge1);delay(1);write_com(0x80+0x40+6);write_data(table1ahourshi1);delay(1);while(!key1);if(key2=0)/闹钟分设置delay(10);if(key2=0)if(ami n1=59)amin 1=0;elseamin 1+;amin ge1=am in 1%10;amin shi1=am in 1/10;write_com(0x0f);write_com(0x80+0x40+10);write_data(table1am in ge1);delay(1);write_com(0x80+0x4
30、0+9);write_data(table1am in shi1);delay(1);while(!key2);if(key3=0)alarm1=alarm1;delay(10);if(key3=0)write_com(0x0c);write_com(0x80+0x40);for(i=0;i<11;i+)write_data(riqii);while(!key3);break;设置结束,此时LCD第二行无数据显示只有第一行有时间显示void display2()设置闹钟2时间函数while(1)if(ke y仁=0)delay(10);if(key1=0)if(ahour2=23)/ 闹
31、钟时设置ahour2=0;elseahour2+;ahourge2=ahour2%10;ahourshi2=ahour2/10;write_com(0x0f);write_com(0x80+0x40+8);write_data(':');write_com(0x80+0x40+7);write_data(table1ahourge2);delay(1);write_com(0x80+0x40+6);write_data(table1ahourshi2);delay(1);while(!key1);if(key2=0)/闹钟分设置delay(10);if(key2=0)if(am
32、i n2=59)amin 2=0;elseamin 2+;ami nge2=ami n2%10;amin shi2=am in 2/10;write_com(0x0f);write_com(0x80+0x40+10);write_data(table1am in ge2);delay(1);write_com(0x80+0x40+9);write_data(table1am in shi2);delay(1);while(!key2);if(key3=0)alarm2=alarm2;delay(10);if(key3=0)write_com(0x0c);write_com(0x80+0x40)
33、;for(i=0;i<11;i+)write_data(riqii);while(!key3);break;设置结束,此时LCD第二行无数据显示只有第一行有时间显示void display3()设置闹钟3时间函数while(1)if(key2=0)delay(10);if(key1=O) if(ahour3=23)/ 闹钟时设置ahour3=0;elseahour3+;ahourge3=ahour3%10; ahourshi3=ahour3/10; write_com(0x0f);write_com(0x80+0x40+8); write_data(':');write_
34、com(0x80+0x40+7); write_data(table1ahourge3); delay(1);write_com(0x80+0x40+6); write_data(table1ahourshi3);delay(1); while(!key1); if(key2=0)/闹钟分设置delay(10);if(key2=0)if(ami n3=59)amin 3=0;elseamin 3+;ami nge3=ami n3%10;amin shi3=am in 3/10;write_com(0x0f); write_com(0x80+0x40+10); write_data(table1
35、am in ge3);delay(1); write_com(0x80+0x40+9); write_data(table1am in shi3);delay(1); while(!key2);if(key3=0)alarm3=alarm3;delay(10);if(key3=0)write_com(0x0c);write_com(0x80+0x40);for(i=0;i<11;i+)write_data(riqii);while(!key3);break;设置结束,此时LCD第二行无数据显示只有第一行有时间显示void display4()设置闹钟4时间函数while(1)if(ke
36、y仁=0)delay(10);if(key1=0)if(ahour4=23)/ 闹钟时设置ahour4=0;elseahour4+;ahourge4=ahour4%10;ahourshi4=ahour4/10;write_com(0x0f);write_com(0x80+0x40+8);write_data(':');write_com(0x80+0x40+7);write_data(table1ahourge4);delay(1);write_com(0x80+0x40+6);write_data(table1ahourshi4);delay(1);while(!key1);
37、if(key2=0)/闹钟分设置delay(10);if(key2=0)if(am in4=59)amin4=0;elseamin 4+;amin ge4=am in 4%10;amin shi4=am in4 /10;write_com(0x0f);write_com(0x80+0x40+10);write_data(table1am in ge4);delay(1);write_com(0x80+0x40+9);write_data(table1am in shi4);delay(1);while(!key2);if(key3=0)alarm4=alarm4;delay(10);if(ke
38、y3=0)write_com(0x0c);write_com(0x80+0x40);for(i=0;i<11;i+)write_data(riqii);while(!key3);break;设置结束,此时LCD第二行无数据显示只有第一行有时间显示void keysca n()键盘扫描if(key1=0)delay(10);if(ke y仁=0)while(!key1);key1键松开后执行下一行程序II调用time()函数,即时间设置else if(key2=0)cn t1+;delay(10);if(cn t1=1)while(!key2)ahourge仁ahour1%10; ahou
39、rshi仁ahour1/10; write_com(0x80+0x40+7);write_data(table1ahourge1); delay(5);write_com(0x80+0x40+6);delay(2); write_data(table1ahourshi1); amin ge1=am in 1%10;amin shi1=am in 1/10; write_com(0x80+0x40+10); write_data(table1am in ge1); delay(5);write_com(0x80+0x40+9);delay(2); write_data(table1am in s
40、hi1); write_com(0x80+0x40);/显示闹钟设置的时间for(i=0;i<11;+i) write_data(Alarm_1i); write_com(0x80+0x40);/key2松开后,LCD只有第一行显示for(i=0;i<11;i+) write_data(riqii);时间,闹钟设置时间不显示if(cn t1=2)while(!key2)ahourge2=ahour2%10; ahourshi2=ahour2/10; write_com(0x80+0x40+7);write_data(table1ahourge2);delay(5);write_co
41、m(0x80+0x40+6); delay(2);write_data(table1ahourshi2); amin ge1=am in 1%10;amin shi1=am in 1/10; write_com(0x80+0x40+10); write_data(table1am in ge2); delay(5);write_com(0x80+0x40+9); delay(2);write_data(table1am in shi2); write_com(0x80+0x40);for(i=0;i<11;+i) write_data(Alarm_2i);write_com(0x80+0
42、x40); for(i=0;i<11;i+) write_data(riqii);时间,闹钟设置时间不显示if(cn t1=3)while(!key2)ahourge3=ahour3%10; ahourshi3=ahour3/10; write_com(0x80+0x40+7); write_data(table1ahourge3); delay(5);write_com(0x80+0x40+6); delay(2);write_data(table1ahourshi3); amin ge1=am in 1%10; amin shi1=am in 1/10;write_com(0x80+
43、0x40+10);write_data(table1am in ge3); delay(5);write_com(0x80+0x40+9); delay(2);write_data(table1am in shi3);write_com(0x80+0x40); for(i=0;i<11;+i) write_data(Alarm_3i);/显示闹钟设置的时间/key2松开后,LCD只有第一行显示/显示闹钟设置的时间write_com(0x80+0x40); for(i=0;i<11;i+) write_data(riqii);时间,闹钟设置时间不显示if(cnt1=4)while(!
44、key2)ahourge4=ahour4%10; ahourshi4=ahour4/10; write_com(0x80+0x40+7); write_data(table1ahourge4); delay(5); write_com(0x80+0x40+6); delay(2);write_data(table1ahourshi4); amin ge1=am in 1%10; amin shi1=am in 1/10;write_com(0x80+0x40+10);write_data(table1am in ge4); delay(5);write_com(0x80+0x40+9);del
45、ay(2); write_data(table1am in shi4); write_com(0x80+0x40);for(i=0;i<11;+i) write_data(Alarm_4i); write_com(0x80+0x40); for(i=0;i<11;i+) write_data(riqii);时间,闹钟设置时间不显示/key2松开后,LCD只有第一行显示/显示闹钟设置的时间/key2松开后,LCD只有第一行显示 if(cnt1>4) cn t 仁0;else if(key3=0)cn t+;delay(10); if(cn t=1) while(!key3);/
46、表示闹钟时间设置退出ahourge仁ahour1%10;ahourshi仁ahour1/10;write_com(0x80+0x40+7); write_data(table1ahourge1);delay(5);write_com(0x80+0x40+6);delay(2);write_data(table1ahourshi1);amin ge1=am in 1%10;amin shi1=am in 1/10;write_com(0x80+0x40+10);write_data(table1am in ge1);delay(5);write_com(0x80+0x40+9);delay(2)
47、; write_data(table1am in shi1); write_com(0x80+0x40);for(i=0;i<11;+i) write_data(Alarm_1i);display1();if(cnt=3)while(!key3);表示闹钟时间设置退出ahourge2=ahour2%10;ahourshi2=ahour2/10;write_com(0x80+0x40+7); write_data(table1ahourge2);delay(5);write_com(0x80+0x40+6);delay(2);write_data(table1ahourshi2);ami
48、nge2=ami n2%10;amin shi2=am in 2/10;write_com(0x80+0x40+10);write_data(table1am in ge2);delay(5);write_com(0x80+0x40+9);delay(2); write_data(table1am in shi2); write_com(0x80+0x40);for(i=0;i<11;+i) write_data(Alarm_2i);display2();if(cn t=5) while(!key3);表示闹钟时间设置退出ahourge3=ahour3%10;ahourshi3=ahou
49、r3/10;write_com(0x80+0x40+7);write_data(table1ahourge3);delay(5);write_com(0x80+0x40+6);delay(2);write_data(table1ahourshi3);ami nge3=ami n3%10;amin shi3=am in 3/10;write_com(0x80+0x40+10);write_data(table1am in ge3);delay(5);write_com(0x80+0x40+9);delay(2);write_data(table1am in shi3);write_com(0x8
50、0+0x40);for(i=0;i<11;+i)write_data(Alarm_3i);display3();if(cn t=7)while(!key3);表示闹钟时间设置退出ahourge4=ahour4%10;ahourshi4=ahour4/10;write_com(0x80+0x40+7);write_data(table1ahourge4);delay(5);write_com(0x80+0x40+6);delay(2);write_data(table1ahourshi4);amin ge4=am in 4%10;amin shi4=am in4/10;write_com(0x80+0x40+10);write_data(table1am in ge4);delay(5);write
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年蔬菜糕项目可行性研究报告
- 2025年缓蚀抑雾剂项目可行性研究报告
- 组胚世鄂课件上皮组织(2015级)学习资料
- 2025年玻璃水果盘项目可行性研究报告
- 2025年潜油电机定子测量仪项目可行性研究报告
- 流域生态修复与可持续发展路径探讨
- 2025年油性321色卡项目可行性研究报告
- 2024-2025新版车间安全培训考试试题(典型题)
- 25年公司管理人员安全培训考试试题答案达标题
- 课题开题报告:租赁产品对消费者行为的双刃剑影响、机理及应对策略-心理所有权缺失和负担双视角
- (正式版)JBT 5300-2024 工业用阀门材料 选用指南
- 招标代理服务 投标方案(技术方案)
- 2024年陕西西安市长安城乡建设开发有限公司招聘笔试参考题库含答案解析
- 2011年10月自考00567马列文论选读试题及答案含解析
- 寺院宣传法治知识讲座
- 《多源图像融合技术及其遥感应用-图像融合技术》课件
- 直播带岗方案
- 瓶盖自动封装机的设计
- 无线局域网覆盖方案
- 网络安全前沿技术与未来趋势研究
- 辽宁省沈阳市铁西区2024届英语三年级第二学期期中调研试题含答案
评论
0/150
提交评论