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

共30条 3/3 1 2 3 跳转至
工程师
2011-12-08 14:13:50     打赏
21楼
附上写到此的程序包:

彩屏 表盘 时钟.zip

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




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




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






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

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

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


——回复可见内容——

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





主函数程序代码见楼下!


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

#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();                              //重新刷新表盘坐标
    }

   
   
}


高工
2011-12-08 21:36:42     打赏
26楼
确实不容易

工程师
2011-12-09 07:46:16     打赏
27楼
表盘的坐标还是用高中流行的几何画板画的,有点费劲

工程师
2011-12-09 07:48:05     打赏
28楼
在学校待不了多长时间了,得给自己狂补课

工程师
2011-12-09 13:46:22     打赏
29楼
谢谢版主加精,还会继续努力,准备学SD卡,文件系统。

高工
2013-05-25 23:07:21     打赏
30楼
不错。。。

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

回复

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