这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » holdmyhand 的MCUDIY

共23条 2/3 1 2 3 跳转至
工程师
2011-12-06 07:52:04     打赏
11楼
先挂上程序,有程序有真相....
程序还是有缺陷的      彩屏 温度 时间.zip

工程师
2011-12-06 08:46:49     打赏
12楼

方向对了 那就接着完善!
对了版主,有个问题想问您,前一阵子想搞上位机,苦于没有寻找到好的工具,用什么编程工具比较好入门呢


工程师
2011-12-06 08:50:05     打赏
13楼

彩屏有很多优势,如果能自己写驱动,然后GUI自己定义,那就玩转了!继续努力!


工程师
2011-12-07 19:33:02     打赏
14楼

先画整点刻度,看屏上显示,有点意思....


工程师
2011-12-08 13:53:47     打赏
15楼

先附上图片:

程序中,我是依靠中断控制秒针摆动,没有什么原理,比如现在时间是30秒,我查表获得此时秒针该指到的坐标,然后调用GUI函数以中心点为起点画直线,进入中断函数时,先将29秒的直线清除,然后画新的30秒的直线,

//中断处理如下,
void Time0_Ser(void) interrupt 1
{
    uchar i;
    TH0=0xb8;//装入初值,定时10ms
 TL0=0;
    i++;
    Display_DS1302();       //获取此刻实时时间,并将数据保存到预先设置的数组中
    if(i == 90)             //判断是否90次中断时间,即为<<1s
    {              
        i = 0;
        GUI_line(120,120,X_axis[Count],Y_axis[Count],0);//清除前一秒的秒针
        Count = (tab2[6]-0x30)*10+(tab2[7]-0x30);       //计算下一秒秒针直线的结束坐标
        GUI_line(120,120,X_axis[Count],Y_axis[Count],RED);//画新的秒针
       
        GUI_sprintf_string(88,220,tab2,0xffff,0);   //实时时钟显示
        GUI_sprintf_string(64,240,tab1,0xffff,0);
        Draw_Scale();                              //重新刷新表盘坐标
    }

   
   
}


工程师
2011-12-08 14:13:50     打赏
16楼
附上写到此的程序包:

彩屏 表盘 时钟.zip

解压之后,main文件中,有keil能打开的文件
打开后,应该是这个样子,(不太确定,新的机子上keil需不需要设置文件路径)




个人偏好用Source Insight编辑,这个对应的文件放在了source文件夹下,.PR格式
打开后是这样




如果打不开文件,留言我帮你解决!继续努力做...压缩包里的ILI9325控制器驱动跟GUI函数,如果能用到彩屏,那可以直接复制到你的工程中就能用。目前2.4寸最多用的控制器貌似是9325.






工程师
2011-12-08 14:56:05     打赏
17楼
Video@2011_1208_131423.zip

蛋疼的学校,平时上课时间,视频网站全都禁止访问,只好暂时打个压缩包传上来了,2M多一点,录了一分多钟!走时还挺有意思

工程师
2011-12-08 16:13:43     打赏
18楼
原来keil可以这么用,keiluVision4(现用的是)有一个ISD51(In System Debugger)的工具软件,它可以让使用者在无硬件仿真器的情况下,借用目标硬件的串口(UART),完成单步、断点的仿真。操作如下:
需要电脑的一个串口,波特率可调,很好用...详见PDF,有代码实例


——回复可见内容——

工程师
2011-12-08 20:45:32     打赏
19楼
刚刚拍的图片,选取两个不同时刻的:





主函数程序代码见楼下!


工程师
2011-12-08 20:52:07     打赏
20楼

#include "STC12C5A.h"
#include "delay.h"
#include "ds1302.h"
#include "ILI9325.h"
#include "gui.h"

void Draw_Scale(void);

uint X_axis[] = {120, 128, 136, 144, 152, 159, 166, 172, 178, 183, 188, 191, 194, 196, 198, 198,
                      198, 196, 194, 191, 188, 183, 178, 172, 166, 159, 152, 144, 136, 128, 120,
                      112, 104,  96,  88,  81,  74,  68,  62,  57,  52,  49,  46,  44,  42,  42,
                       42,  44,  46,  49,  52,  57,  62,  68,  74,  81,  88,  96,  104,112};
uint Y_axis[] = { 42,  42,  44,  46,  49,  52,  57,  62,  68,  74,  81,  88,  96,  104,112, 120,
                      128, 136, 144, 152, 159, 166, 172, 178, 183, 188, 191, 194, 196, 198, 198,
                      198, 196, 194, 191, 188, 183, 178, 172, 166, 159, 152, 144, 136, 128, 120,
                      112, 104,  96,  88,  81,  74,  68,  62,  57,  52,  49,  46,  44,  42};

//时针终止坐标
uint Hour_Xaxis[] = {120, 123, 126, 129, 132, 136, 139, 142, 144, 147,
                     150, 153, 155, 158, 160, 162, 165, 167, 169, 170,
                     172, 173, 175, 176, 177, 178, 179, 179, 180, 180,
                    
                     180, 180, 180, 179, 179, 178, 177, 176, 175, 173,
                     172, 170, 169, 167, 165, 162, 160, 158, 155, 153,
                     150, 147, 144, 142, 139, 136, 132, 129, 126, 123,

                     120, 117, 114, 111, 108, 104, 101,  98,  96,  93,
                      90,  87,  85,  82,  80,  78,  75,  73,  71,  70,
                      68,  67,  65,  64,  63,  62,  61,  61,  60,  60,

                      60,  60,  60,  61,  61,  62,  63,  64,  65,  67,
                      68,  70,  71,  73,  75,  78,  80,  82,  85,  87,
                      90,  93,  96,  98, 101, 104, 108, 111, 114, 117,
                     };
uint Hour_Yaxis[] = { 60,  60,  60,  60,  61,  62,  63,  64,  65,  67,
                                     68,  70,  71,  73,  75,  78,  80,  82,  85,  87,
                                     90,  93,  96,  98, 101, 104, 108, 111, 114, 117,

                      120, 123, 126, 129, 132, 136, 139, 142, 144, 147,
                      150, 153, 155, 158, 160, 162, 165, 167, 169, 170,
                      172, 173, 175, 176, 177, 178, 179, 180, 180, 180,

                      180, 180, 180, 180, 179, 178, 177, 176, 175, 173,
                      172, 170, 169, 167, 165, 162, 160, 158, 155, 153,
                      150, 147, 144, 142, 139, 136, 132, 129, 126, 123,
                     
                      120, 117, 114, 111, 108, 104, 101,  98,  96,  93,
                       90,  87,  85,  82,  80,  78,  75,  73,  71,  70,
                       68,  67,  65,  64,  63,  62,  61,  60,  60,  60,
                      };


uchar Second_Count = 0;
uchar Minute_Count = 0;
uchar Hour_Count = 0;
uint Sum_Minute = 0;
uchar s;

void main()

 ILI9325_initial();/*TFT彩屏初始化*/
 delayms(20);
 GUI_clearscreen(0);

    TMOD=0x01;
 TH0=0xb8;//装入初值,定时10ms
 TL0=0;
 ET0=1;
 EA=1;
 TR0=1;
    while(1)
    { 
    }
}

void Time0_Ser(void) interrupt 1
{
    uchar i;
    TH0=0xb8;//装入初值,定时10ms
 TL0=0;
    i++;
    Display_DS1302();       //获取此刻实时时间,并将数据保存到预先设置的数组中
    if(i == 80)             //判断是否90次中断时间,即为<<1s
    {              
        i = 0;
        GUI_line(120,120,X_axis[Second_Count],Y_axis[Second_Count],0);//清除前一秒的秒针
        GUI_line(120,120,X_axis[Minute_Count],Y_axis[Minute_Count],0);
        GUI_line(120,120,Hour_Xaxis[s],Hour_Yaxis[s],0);
       
        Second_Count = (tab2[6]-0x30)*10+(tab2[7]-0x30);       //计算下一秒秒针直线的结束坐标
        Minute_Count = (tab2[3]-0x30)*10+(tab2[4]-0x30);
        Hour_Count = (tab2[0]-0x30)*10+(tab2[1]-0x30);
        if (Hour_Count>=12)
        {
            Hour_Count-=12;
        }
        Sum_Minute = Hour_Count*60 + Minute_Count;
        s = Sum_Minute/6;
       
        GUI_line(120,120,X_axis[Second_Count],Y_axis[Second_Count],RED);//画新的秒针
        GUI_line(120,120,X_axis[Minute_Count],Y_axis[Minute_Count],YELLOW);
        GUI_line(120,120,Hour_Xaxis[s],Hour_Yaxis[s],YELLOW);
       
       
        GUI_sprintf_string(88,220,tab2,0xffff,0);   //实时时钟显示
        GUI_sprintf_string(64,240,tab1,0xffff,0);
        Draw_Scale();                              //重新刷新表盘坐标
    }

   
   
}


共23条 2/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]