当前位置:首页 > stm32-12864并行驱动程序
*函数描述 *输入参数 *输出结果 *返回值 : 清整个GDRAM空间 :无 :无 :无
******************************************************************************* /
void ClearAll(void) {
uint8_t xxx, yyy; for(yyy=0; yyy<64; yyy++) {
for(xxx=0; xxx<16; xxx++) {
WriteCmd(0x34); WriteCmd(yyy+0x80);
//行地址
WriteCmd(xxx+0x80); //列地址WriteCmd(0x30); WriteData(0x00); WriteData(0x00); } } }
/****************************************************************************** *
*函数名 :DrawLineX *函数描述 :画水平线 *输入参数 : xx0 ---- X 起始, xx1 ---- X 结束, yy ----Y *输出结果 :无 *返回值 :无 ******************************************************************************* /
void DrawLineX(uint8_t xx0,uint8_t xx1,uint8_t yy) {
uint8_t temp; if(xx0 > xx1) {
temp = xx0; xx0 = xx1; xx1 = temp; }
for(xx0=xx0; xx0<=xx1; xx0++) {
DrawPoint(xx0, yy); } }
/****************************************************************************** *
*函数名 :DrawLineY *函数描述 :画垂直线 *输入参数 : yy0 ---- Y 起始, yy1 ---- Y结束,xx------ X *输出结果 :无 *返回值 :无 ******************************************************************************* /
void DrawLineY(uint8_t xx, uint8_t yy0, uint8_t yy1) {
uint8_t temp; if(yy0>yy1) {
temp=yy0; yy0=yy1; yy1=temp; }
for(yy0=yy0;yy0<=yy1;yy0++) {
DrawPoint(xx,yy0); } }
/****************************************************************************** *
*函数名 :DrawLine *函数描述 :画直线 *输入参数 : xx1 ---- X 起始, yy1 ---- Y 起始, xx2 ---- X 结束, yy2 ---- Y结束,
x:横坐标值,范围0~127 y:纵坐标值,范围0~63 xx2>=xx1
*输出结果 :无 *返回值 :无 ******************************************************************************* /
void DrawLine(uint8_t xx1,uint8_t yy1,uint8_t xx2,uint8_t yy2) {
uint8_t x_add,y_add,y_temp,Line_K;
xx1&=0x7f; xx2&=0x7f;
//去掉128 倍
yy1&=0x3f;
yy2&=0x3f; //去掉64 倍
if(xx2>xx1) {
if( yy2>yy1 || yy2==yy1 ) {
Line_K=(yy2-yy1)/(xx2-xx1);
for(x_add=0;x_add<=(xx2-xx1);x_add++) {
y_temp=yy1+(Line_K*(x_add+xx1)); DrawPoint(x_add+xx1,y_temp); } } else {
Line_K=(yy1-yy2)/(xx2-xx1); for(x_add=0;x_add<=(xx2-xx1);x_add++) {
y_temp=yy1-(Line_K*(x_add+xx1));
DrawPoint(x_add+x1,y_temp); } }
}
else if(xx2==xx1) {
for(y_add=0;y_add<=(yy2-yy1);y_add++) {
DrawPoint(xx1,yy1+y_add);
} } }
/****************************************************************************** *
*函数名 :DrawCircle
*函数描述 *输入参数 *输出结果 *返回值 :画圆函数
: x0, y0 为圆心坐标, r为圆的半径 :无 :无
******************************************************************************* /
void DrawCircle(uint8_t x0 , uint8_t y0 , uint8_t r) {
int8_t a,b; int8_t di;
if( r > 31 || r ==0)
return;
//圆大于液晶屏或者没半径则返回
a = 0; b = r;
di = 3 - 2 * r;//判断下个点位置的标志
while(a <= b) {
DrawPoint( x0 - b , y0-a); DrawPoint( x0 + b , y0-a); DrawPoint( x0 - a , y0+b); DrawPoint( x0 - b , y0-a); DrawPoint( x0 - a , y0-b); DrawPoint( x0 + b , y0+a); DrawPoint( x0 + a , y0-b); DrawPoint( x0 + a , y0+b); DrawPoint( x0 - b , y0 +a); a ++;
//使用bresenham 算法画圆
if(di < 0)
di += 4 * a + 6; else
{
di += 10 + 4 * (a - b); b --; }
DrawPoint( x0 + a , y0 + b); } }
//3 //0 //1 //7 //2 //4 //5 //6
共分享92篇相关文档