| 
版主 主题
回帖0
积分34308
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
 
 | 
| void OLED_circle(uchar X,uchar Y,uchar R,uchar R1,uchar G1,uchar B1) {//Bresenham算法
 uchar a,b;
 int c;
 unsigned char temp1,temp2;
 temp1 = (B1<<3)|(G1>>3);
 temp2 = (G1<<5)|R1;
 
 a=0;
 b=R;
 c=3-2*R;
 while (a<b)
 {
 OLED_dot(X+a,Y+b,temp1,temp2);     //        7
 OLED_dot(X-a,Y+b,temp1,temp2);                                                        //        6
 OLED_dot(X+a,Y-b,temp1,temp2);                                                        //        2
 OLED_dot(X-a,Y-b,temp1,temp2);                                                        //        3
 OLED_dot(X+b,Y+a,temp1,temp2);                                                        //        8
 OLED_dot(X-b,Y+a,temp1,temp2);                                                        //        5
 OLED_dot(X+b,Y-a,temp1,temp2);                                                        //        1
 OLED_dot(X-b,Y-a,temp1,temp2);                                                        //        4
 
 if(c<0) c=c+4*a+6;
 else
 {
 c=c+4*(a-b)+10;
 b-=1;
 }
 a+=1;
 }
 if (a==b)
 {
 OLED_dot(X+a,Y+b,temp1,temp2);
 OLED_dot(X+a,Y+b,temp1,temp2);
 OLED_dot(X+a,Y-b,temp1,temp2);
 OLED_dot(X-a,Y-b,temp1,temp2);
 OLED_dot(X+b,Y+a,temp1,temp2);
 OLED_dot(X-b,Y+a,temp1,temp2);
 OLED_dot(X+b,Y-a,temp1,temp2);
 OLED_dot(X-b,Y-a,temp1,temp2);
 }
 }
 
 
 
 汇编的不会,C的有.C编译下就能看到汇编的啦.
 算法就是这个Bresenham算法.
 
 为毛总要抱着汇编呢.来玩STM的库函数吧或者arduino吧.抄抄抄就是了.
 
 
 | 
 |