华科学院本科毕业设计(论文)
读操作时序如图3.12所示:
图3.12 读操作时序
写操作时序如图3.13所示:
图3.13 写操作时序
液晶显示器电路如图3.14所示:
- 25 -
路媛:基于单片机的自动窗帘系统设计
图3.14 液晶显示器电路图
- 26 -
华科学院本科毕业设计(论文)
第4章 系统软件设计
系统软件设计主要包括显示子程序,键盘子程序,时钟程序,步进电机控制程序设计及部分构成。本章节系统的介绍了自动窗帘的主程序和各主要功能子程序的设计流程。
4.1 系统软件总设计
主程序构成无限循环,主要完成单片机初始化,关中断,菜单显示内容初始化,按键控制,电机运行,计时等功能。主程序软件设计流程图如图4.1所示。
开始 关中断设置推 显示 N 短路帽? 设置时间 开始计时 N Y 到点? 触发控制 Y Y 外部触发? 电机工作 N N 完成? Y 电机停止
图4.1 主程序软件设计流程图
- 27 -
路媛:基于单片机的自动窗帘系统设计
启动主程序,先关中断并且设置堆栈,接着初始化寄存器,初始化显示内容;然后根据短接帽是否连接执行相应的操作。
4.2 系统软件子程序设计
4.2.1 步进电机程序设计 步进电机程序设计的主要任务是: (1) 判断旋转方向; (2) 按顺序传送控制脉冲;
(3) 判断所要求的控制步数是否传送完毕。 步进电机工作流程图如4.2所示。
开始 步进电机 正转? 传送正转的脉冲序列 传送反转的脉冲序列 传送步数是否完毕? 传送步数是否完毕? 返回
图4.2 步进电机工作流程图
- 28 -
华科学院本科毕业设计(论文)
表4.1 步进电机转向表
橙 1 1 0 0 0 0 0 1 黄 0 1 1 1 1 0 0 0 粉 0 0 0 1 0 1 0 0 蓝 0 0 0 0 0 1 1 1 十六制(P1口) 0X08 0X0C 0X04 0X06 0X02 0X03 0X01 0X09 所以可以定义旋转相序
uchar code CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //逆时钟旋转相序表 uchar code CW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //正时钟旋转相序表 4.2.2 键盘程序设计
在操作按键时,无论是按下还是松开,触电在闭合和断开时均会产生抖动,此时逻辑电平是不稳的,如果得不到正确的处理,可能会引起单片机对按键命令的错误执行。解决这个问题的简单方法是利用软件延时。在单片机处理按键操作后都延时5ms,如果确定是按键后再延时12ms,这样基本可以避免键盘的抖动。然后由单片机运行键码分析,并执行相应的命令,显示并且返回。图4.3是键盘设计流程图。
- 29 -