ST7920控制的12864画图程序实现细节

需积分: 10 1 下载量 112 浏览量 更新于2024-09-14 收藏 388KB DOC 举报
"这篇文档是关于使用ST7920控制器的12864图形显示模块进行画图程序的设计,主要关注如何在模块上精确地打点,并处理相关的显示数据。程序涉及到对显示屏内存(GDRAM)的操作,包括读取、修改和重新写入数据。" 在开发12864画图程序时,ST7920是一款常见的微控制器,它用于驱动128x64像素的LCD显示模块。这个程序的核心是GUI_Point函数,用于在屏幕上指定位置(X, Y)绘制一个点。在这个过程中,有三个关键步骤: 1. **定位**: X坐标和Y坐标需要转换为GDRAM内的实际地址。因为GDRAM每一行由16个位元组成,共有64行,所以X坐标首先被除以16来确定所在字节,然后用按位与运算(&0x0f)找到字节内的位。Y坐标则通过除以32来区分上半屏和下半屏,同时用按位与运算找到行内的具体位置。 2. **读取当前数据**: 在打点前,需要读取当前显示在该位置的数据。通过设置行地址和列地址,可以访问到GDRAM中的对应位置,然后连续读取高8位和低8位的数据。 3. **更新数据**: 新数据通常会与已存在的数据进行逻辑或运算,以便保留之前已经画过的点。这一步涉及位操作,根据X坐标在字节内的位置,可能只修改高8位或低8位的数据。完成操作后,将更新后的数据重新写回GDRAM的相应位置。 程序中还提到了一些可能遇到的问题,例如: - **打点位置的定位**:确保正确地将屏幕坐标转换为GDRAM的内部地址。 - **读取当前显示的数据**:必须正确设置控制器命令来访问GDRAM,并处理读取数据的顺序和格式。 - **或和移位操作**:在更新GDRAM时,确保只修改目标位元,而不会影响其他位元。 此外,程序中还包括了一些延时(delay_us)以确保操作的正确同步,以及一个标志变量(flag)来决定是否根据特定条件执行画点操作。 总结起来,12864画图程序的实现涉及到对ST7920控制器的深入理解,包括它的内存结构、命令集以及如何通过位操作有效地更新显示内容。这样的程序对于开发基于此类显示模块的图形界面或用户交互式应用至关重要。