按关键词阅读: 设计 插座 定时 单片机 STC89C52 基于 毕业论文
位1和5指定进行输入或输出的特定寄存器 。
最低位LSB为逻辑0指定进行写操作;逻辑1指定进行读操作 , 命令字节总是从最低有效为LSB开始输入 。
图18 DS1302的命令字节图19所示为DS1302的读写时序 。
多字节方式下 , 通过对地址31寻址 , 可以把时钟/日历或RAM寄存器规定为多字节方式 。
如前所述 , 位6规定为时钟或RAM而位0规定为读或写 , 在时钟/日历寄存器中的地址9至31或RAM寄存器的地址31不能存储数据 , 在多字节方式中读或写从地址0的位0开始 。
当以多字节方式写RAM时 , 为了传送数据不必写所有31字节 , 不管是否写了全部31字节 , 所写的每一个字节都将 。
33、传送至RAM 。
图19 DS1302的读写时序DS1302总共有12个寄存器 , 其中的7个寄存器分别与日历、时钟相关 , 存放的数据位为BCD码形式 。
表3为它的日历、时间寄存器及控制字 , 其中奇数为读操作 , 偶数为写操作【4】 。
表3寄存器地址和内容写寄存器读寄存器Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0秒80H81HCH10秒秒分82H83H010分分小时84H85H12/24010时时A/P日86H87H0010日日月88H89H00010月月星期8AH8BH00000星期年8CH8DH10年年控制8EH8FHWP0000000这部分的编程中设置固定模式定时的时候 , 主要用到的是计 。
34、时过程中的分的数值变化 , 执行定时时把分的数值提取出来 , 在这基础上加上模式定时时间 , 待到下一个时间到达定时时间时执行相反动作 。
4.2 LCD1602显示电路程序编写这部分的显示过程主要是显示从DS1302读取的日历和时钟数值 , 同时当检测到独立式按键有键按下时 , 显示相应的设置菜单等 。
基本操作时序:读状态:输入:RS=L,RW=H,E=H 输出:DOD7=状态字写状态:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲 输出:无读数据:输入:RS=H,RW=H,E=H 输出:DOD7=数据写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲 输出:无【8】 图20为LCD1602的具体读 。
35、写时序 。
a.读操作时序b.写操作时序图20 LCD1602的读写时序4.3红外信号解码及按键处理程序编写当红外线接收管接收到红外信号时 , 通过单片机执行相应的程序进行红外信号的解码 , 具体解码原理前文已详细叙述 , 解码得到的键码赋值给key , 通过检测key的值即可执行相应的动作 。
当检测到电源键被按下时即可执行定时插座的开机与关机;当检测到数字键16按键时则进行相应的模式定时设置 , 同时开启定时插座 , 待到下一定时时间关闭定时插座 。
具体程序编写如下所示:void Key_Handle(void) /红外按键处理 switch(key) case 0x12: P0_1=P0_1;
P0_2=P0_2;
key 。
36、=255;
break;
case 0x01: P0_1=0;
P0_2=0;
flag7=1;
gg0=fen+10;
key=255;
break;
case 0x02: P0_1=0;
P0_2=0;
flag8=1;
gg1=fen+20;
key=255;
break;
case 0x03: P0_1=0;
P0_2=0;
flag9=1;
gg2=fen+30;
key=255;
break;
case 0x04: P0_1=0;
P0_2=0;
flag10=1;
gg3=fen+40;
key=255;
break;
case 0x05: P0_1=0;
P0_2=0;
flag11=1;
gg4=fen+50;
key=255 。
37、;
break;
case 0x06: P0_1=0;
P0_2=0;
flag12=1;
gg5=fen+60;
key=255;
break;
default: key=255;
break;
4.4主程序的编写 如以上所述 , 编程过程中需要注意的主要有DS1302计时程序、LCD1602显示程序、按键处理程序和红外信号解码及处理的相关程序 , 通过各项整合 , 就得到了下列主函数 。
主函数的编写如下所示:void main() /主函数sysinit();
/系统初始化(红外初始化、LCD初始化和1302初始化)while(1) EA=0;
keyscan();
/独立式按键扫描及处理if(flag=0) dis 。
38、play();
/显示时间 dingshi();
/ 定时处理EA=1;
Key_Handle();
/红外按键处理 5系统调试5.1电路设计前期工作设计电路前先查询相关资料 , 通过上网查找资料 , 去图书馆查询等确定系统的主要模块及其工作原理 , 如红外遥控编解码的原理、DS1302时钟芯片的工作原理、LCD1602液晶显示原理等 。
初步熟悉这些主要器件的外部电路后 , 在条件允许的情况下先分别制作主要模块的电路 , 测试其可用性 , 比如继电器部分的电路 , 因为之前没有使用过继电器 , 对这块的外部电路完全不熟 , 只能先制作模块部分的电路测试是否可用 。
在基本掌握了这些模块的电路及其工作原理以后开始用Protel软件设计电路 。
39、原理图 。
在设计电路图的过程中由于对继电器不熟 , 开始没有继电器的封装 , 通过查阅书籍 , 请教同学等方式最后完成了电路原理图的设计和电路PCB板的设计 。
稿源:(未知)
【傻大方】网址:/a/2021/0621/0022536406.html
标题:毕业论文|毕业论文基于STC89C52单片机的定时插座设计( 六 )