我打算用单片机和一块12864屏幕做一个简单的游戏机在屏幕显示的方面要掌握哪些知识呢?

如题所述

您提供的代码是一个用于128x64液晶显示屏的C语言程序,该程序实现了液晶的基本控制功能,包括显示字符、图片、滚动等。代码中使用了延时函数来控制时序,这是因为液晶显示模块的工作速度相对较慢,需要通过延时来保证足够的操作时间。
程序的主要部分是一个无限循环,循环中包含了各种显示操作,例如上下滚动、左右滚动等。这些操作通过改变显示缓冲区中的数据来实现。
然而,代码中存在一些潜在的问题和不规范之处:
1. 延时函数的使用不规范:`delay` 和 `delay1` 函数使用 `for` 循环来实现延时,这种方式在实际应用中可能导致延时时间的不准确。通常,延时函数应该使用定时器来实现,以确保延时时间的准确性。
2. 代码的可读性较差:部分函数和变量命名不够直观,比如 `send_com`、`send_data`、`set_xy` 等,这些名称没有明确地表达出它们的功能。
3. 缺乏错误处理:在实际应用中,应该对可能出现的错误情况进行处理,例如检查液晶模块是否响应、数据是否正确等。
4. 缓冲区溢出风险:在处理图片数据时,没有检查缓冲区是否足够大,可能会导致数据写入时发生溢出。
5. 循环不变量:在循环中使用的一些变量(如 `i`、`n`、`k`)没有在循环开始前定义,这可能导致变量作用域的不明确。
6. 未使用 `unsigned` 类型:在某些地方,您应该使用 `unsigned` 类型来避免可能的溢出问题。
7. 注释不完整:部分代码后面跟着的注释不完全,可能需要补充完整以方便理解。
建议您对代码进行重构,以提高其准确性和可读性。如果您需要进一步的帮助来改进代码,请告知。
温馨提示:内容为网友见解,仅供参考
无其他回答

我打算用单片机和一块12864屏幕做一个简单的游戏机 在屏幕显示的方面要...
void con_disp(uchar data1,uchar data2,uchar x0,uchar y0,uchar xl,uchar yl)\/\/dara1 data2为0x00或0xff,x0为横起始坐标(0~7),y0为纵起始坐标(0~63),x1为长度(1~8),y1为宽度(1~64)。{uchar i,j,k;if(y0<32){ for(j=0;j<yl;j++) { for(i=0;i<xl;i++) { send_com(0x34);...

我打算用单片机和一块12864屏幕做一个简单的游戏机在屏幕显示的方面要掌...
3. 缺乏错误处理:在实际应用中,应该对可能出现的错误情况进行处理,例如检查液晶模块是否响应、数据是否正确等。4. 缓冲区溢出风险:在处理图片数据时,没有检查缓冲区是否足够大,可能会导致数据写入时发生溢出。5. 循环不变量:在循环中使用的一些变量(如 `i`、`n`、`k`)没有在循环开始前定义...

我有一块12864的液晶模块,应该如何的去使用12864液晶模块?
CGRAM:(Character Generation RAM),字符发生RAM,12864内部是提供了64×2B的CGRAM,可以用于用户自定义4个16×16字符,每一个字符占用了32个字节。GDRAM:(Graphic Display RAM):图形显示RAM,这一块区域是用于绘图的,同理——往里面写啥,屏幕也就会显示啥,它与DDRAM的区别在于,往DDRAM中写的数据是字符的编码,字符的...

...点阵图像液晶显示模块的快捷好方法(单片机方面)。。。
此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY OFF),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。 DDF的状态是指令DISPLAY ON\/OFF和RST信号控制的。5.XY地址计数器 XY地址计数器是一个9位计数器。高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地...

相似回答
大家正在搜