打印

刚学GUI,做个简单程序

[复制链接]
5040|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
上图

20100316(003).jpg (247 KB )

20100316(003).jpg
沙发
xsgy123| | 2010-3-16 19:50 | 只看该作者
咋就只贴张图片,代码也贴出来嘛

使用特权

评论回复
板凳
zwll| | 2010-3-16 22:08 | 只看该作者
呵呵,是啊,怎么光有图

使用特权

评论回复
地板
假程序匠人|  楼主 | 2010-3-17 10:44 | 只看该作者
代码很简单啊,网上有demo程序你们下载做模板,将lcd驱动修改成自己的就行,以下是我的代码。
#define            pai                3.14159256
const GUI_POINT SecondArrowPoint[]=//秒指针
{
0,-2,
90,-2,
92,-4,
100,0,
92,4,
90,2,
0,2,
};       

const GUI_POINT MiniteArrowPoint[]=//分指针
{
0,-4,
70,-4,
72,-6,
80,0,
72,6,
70,4,
0,4,
};               
const GUI_POINT HourArrowPoint[]=//时指针
{
0,-6,
50,-6,
52,-8,
60,0,
52,8,
50,6,
0,6,
};

const GUI_COLOR ColorArray[]=//12种颜色填充各个圆弧
{
GUI_BLUE,
GUI_GREEN,
GUI_RED,
GUI_CYAN,
GUI_MAGENTA,
GUI_YELLOW,
GUI_LIGHTBLUE,
GUI_LIGHTGREEN,
GUI_LIGHTRED,
GUI_LIGHTCYAN,
GUI_DARKBLUE,
GUI_DARKMAGENTA
};

GUI_POINT aRotatePoint[7];//存放旋转后的指针坐标
struct
{
        u8 Hour;
        u8 Minite;
        u8 Second;
}time;

void DispTime()
{
      //将时指针旋转
      GUI_RotatePolygon(aRotatePoint,HourArrowPoint,7,
                                  (90-time.Hour*30-30*time.Minite/60)*pai/180);       
      //显示时时钟
      GUI_FillPolygon(aRotatePoint,7,160,120);
     
      GUI_RotatePolygon(aRotatePoint,MiniteArrowPoint,7,(90-time.Minite*6)*pai/180);       
      GUI_FillPolygon(aRotatePoint,7,160,120);

      GUI_RotatePolygon(aRotatePoint,SecondArrowPoint,7,(90-time.Second*6)*pai/180);       
      GUI_FillPolygon(aRotatePoint,7,160,120);
}

int main(void)
{
           char i;
           u32 ii;

           CPU_IntDis();
           BSP_Init();                                               
        GUI_Init();
        GUI_SetBkColor(GUI_GRAY);
        GUI_SetPenSize(10);
        GUI_SetColor(GUI_DARKGREEN);
        GUI_Clear();  //清屏
        GUI_FillEllipse(160,120,150,110);//画黑绿色椭圆
        for(i=0;i<12;i++)        //画12道圆弧
        {
                GUI_SetColor(ColorArray[i]);                          
                GUI_DrawArc(160,120,105,105,30*i,30*(i+1));
        }

        time.Hour = 10;        //改当前时间
        time.Minite = 36;
        time.Second = 0;   

        while(1)
        {
                GUI_SetColor(GUI_BLACK);                 //换成黑色
                GUI_FillCircle(160,120,10);                //画中间原点
                DispTime();                        //画指针

                for(ii=0;ii<11990000;ii++);                //大约1秒
                GUI_SetColor(GUI_DARKGREEN);        //换成绿黑色
                DispTime();        //画绿黑色指针,因为跟底色一样,故有擦除功能

                time.Second++;
                if(time.Second>59)
                {
                                time.Second=0;
                        time.Minite++;
                        if(time.Minite>59)
                        {
                                time.Minite=0;
                                time.Hour++;
                                if(time.Hour>11)
                                        time.Hour=0;       
                        }       
                }               
        }        
}

使用特权

评论回复
5
zdx818| | 2010-3-17 11:18 | 只看该作者
楼主的LCD用的啥屏,好大的,啥型号?

使用特权

评论回复
6
杜专| | 2010-3-17 13:04 | 只看该作者
给个链接

使用特权

评论回复
7
假程序匠人|  楼主 | 2010-3-17 13:09 | 只看该作者
2.4寸的,靠近照当然大了。
在网上搜ucOS II V2.86 uCGUI BHS-STM32就有了

使用特权

评论回复
8
秋天落叶| | 2010-3-17 21:13 | 只看该作者
很有兴趣,搜下试试

使用特权

评论回复
9
btyang| | 2010-6-15 11:23 | 只看该作者
多谢LZ

使用特权

评论回复
10
司徒老鹰| | 2010-6-15 16:18 | 只看该作者
你的ID太牛了

使用特权

评论回复
11
diylink| | 2010-6-18 15:45 | 只看该作者
我也是冲着ID来的

使用特权

评论回复
12
演员培训班| | 2010-6-20 14:13 | 只看该作者
f.恢复线程用来恢复已经挂起的线程,以让它继续执行,如果线程没挂起,也不会起作用。

使用特权

评论回复
13
aiping1987| | 2010-7-1 13:35 | 只看该作者
:)学习啦

使用特权

评论回复
14
astudent| | 2015-5-1 09:54 | 只看该作者
画绿黑色指针,因为跟底色一样,故有擦除功能

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

80

帖子

0

粉丝