安徽工程科技学院机电学院毕业设计(论文)
4.2.2 写指令数据到LCD子程序流程图
开始 RS置0,E置1,RW置0 送出寄存器R1数据,LCD接收 E置0 一个字节传送完毕? 返回
图4-3 写指令数据到LCD流程图
写指令寄存器子程序入口寄存器为R1,程序流程图如图4-3所示。因写入时,要求E出现负调变,所以送出数据后需另E置0,方可完成写入过程。写指令的时候要求E为高脉冲,RS=0,RW=0,D0-D7=指令码。
- 21 -
郭焰昌:基于液晶显示的乘法口诀测试仪的设计
4.2.3 写显示数据到LCD流程图
开始 RS置0,E置1,RW置1 送出寄存器R2数据,LCD接收 E置0 一个字节传送完毕? 返回
图4-4 写显示数据到LCD流程图
写数据寄存器子程序入口寄存器为R2,程序流程图如图4-4所示。写入时同样要求E出现负调变,而且与写指令寄存器IR有相似的地方,所以DR送出数据后和还是要求E置0,方可完成写入过程。写指令的时候要求E为高脉冲,RS=1(不同点)。RW=0,D0-D7=指令码。
4.2.4 检测LCD控制器忙状态,读数据流程图
- 22 -
安徽工程科技学院机电学院毕业设计(论文)
开始 对1602初始化写入显示设置命令 延时 忙检测信号 STA7=0? 获得显示RAM地址 读相应的数据 返回
图4-5 LCD忙检测、读数据流程图
1602内有一个忙标志位STA7,它反映了控制器HD44780内部运行时序状态。当STA7=1时,表示内部操作正在运行,不能接受外部数据
当STA7=0时,表示已准备好接收,可以随时接收CPU发来的数据和命令,这是SMC1602B向CPU发出的唯一联络信号。
CPU对模块的读操作(RS=0,R/W=1,输出:D0-D7=数据),读出来的状态字是忙标志位与7位当前数据地址指针值的组合。因此,对控制器每次进行读写操作之前,都必须进行读写检测,确保STA7为0。 4.2.5 LCD初始化设定子程序流程图
- 23 -
郭焰昌:基于液晶显示的乘法口诀测试仪的设计
开始 延时15ms 写指令38H 延时5ms 显示模式设置 关闭显示 清屏 显示光标设置 开显示及光标显示 返回
图4-6 LCD初始化设定子程序流程图
第一次延时15s时,等待LCD电源稳定,前几次延时,读写数据之前不需要忙检测,以后每次读写数据之前都必须要进行LCD忙检测。 4.2.6 发送字符串子程序流程图
为了实现字符串的传输,我们必须把数据的头尾设定好,LCD1602的第一排和第二排均只能显示16个字符,因此,在加延时的时候形成滚动,就可能字符在第一行消失。单片机收从开头到字符则认为是数据开始接收字串,直到受到末尾的那个字符才认为是本次传输字符串的完全结束。
- 24 -
安徽工程科技学院机电学院毕业设计(论文)
开始 初始化串行口设置 初始化LCD液晶显示 是否接收完发送的字符串? 发送接受到的字符串 一个字节发送完毕? 刷新显示 返回
图4-7 发送字符串子程序流程图
- 25 -