×
单片机 > 单片机程序设计 > 详情

ARM历程十——毕业设计(钟表)

发布时间:2020-06-17 发布时间:
|

#include "S3C2440addr.h"

#include "math.h"

#define pi 3.141593


U16 SEC, MIN, HOUR, TmpSEC_10, TmpMIN_10, TmpHOUR_10,TmpSEC_1,TmpMIN_1,TmpHOUR_1;

U16 SEC_x, SEC_y, MIN_x, MIN_y, HOUR_x, HOUR_y, OldMIN=10000;

U16 PandColor_big[30][30];

U16 PandColor_sml[30][30];

extern U16 Flag;

extern U16 fz;

extern const unsigned char gImage_goback[7442];

extern const unsigned char gImage_yy[147968];

extern const unsigned char gImage_back[261120];

void DiyClk(void)

  

  U16 k;    

  LCD_Img(gImage_back);                         //画背景图片

  Paint_Clock(52,0,272,272,gImage_yy);        //画钟表面板

  Paint_Bmp_Rnd(200,95,61,61,2,30,gImage_goback);//画返回图标(右下角)


  ReadPand( 347, 135, 5, 1 );//读以点(347,135)为圆心 5 为半径的

                            //像素点的信息,存入数组PandColor_big中

               

  ReadPand( 311, 56, 5, 0 ); //读以点(347,135)为圆心 5 为半径的

                               //像素点的信息,存入数组PandColor_sml中

  fz = 1 ;


  while(Flag == 1)                               //Flag == 1表示进入时针子程序 

    {

//////////////////////////////////////////////////////////////  

     TmpSEC_1 = rBCDSEC & 0x0f;  

     TmpSEC_10 = rBCDSEC >> 4;

     TmpMIN_1 = rBCDMIN & 0x0f;

     TmpMIN_10 = rBCDMIN >> 4;    

     TmpHOUR_1 = rBCDHOUR & 0x0f;

     TmpHOUR_10 = rBCDHOUR >> 4;

     TmpHOUR_10 &= 0x0003;                       

    

     SEC = (TmpSEC_10*10 + TmpSEC_1);

     MIN = (TmpMIN_10*10 + TmpMIN_1);

     HOUR = (TmpHOUR_10*10 + TmpHOUR_1);//把时间处理成常见的int

                                        //变量形式,方便计算转角

///////////////////////////////////////////////////////////////    

///////////////////////////////////////////////////////////////    

     SEC_x = 240 + (int)(107*sin(pi*SEC/30.0));

     SEC_y = 135 - (int)(107*cos(pi*SEC/30.0));    

    

    

     MIN_x = 240 + (int)(90*sin(pi*MIN/30.0));

     MIN_y = 135 - (int)(90*cos(pi*MIN/30.0));//把角度转化为坐标

    

    

     HOUR_x = 240 + (int)(60*sin(pi*(30*HOUR+MIN/2)/180));

     HOUR_y = 135 - (int)(60*cos(pi*(30*HOUR+MIN/2)/180));

///////////////////////////////////////////////////////////////    

    

///////////////////////////////////////////////////////////////    

  if ( MIN != OldMIN )         //每分钟刷新一次钟面

     { 

       

       

         Paint_Clock(52,0,272,272,gImage_yy); //显示表盘图片   

         heavyLine( MIN_x, MIN_y,0x3e0);      //分针的位置和着色   

         heavyLine( HOUR_x, HOUR_y,0x01f);    //时针的位置和着色   

         Pand(240,135,8,0x9871);              //钟的中心位置显示一个

                                              //半径为8 着色为0x9871

                                              //的小圆斑   

                                       

      } 

///////////////////////////////////////////////////////////////      

    RedPix( SEC_x, SEC_y );      //秒,在对应位置打点

  if ( SEC % 5 == 0 )    

    WritePand( SEC_x, SEC_y, 5 ,0 );//将数组PandColor_big中的像素信息写入

                                    //以(SEC_x,SEC_y)为圆心5 为半径的显示

                                    //缓冲区内

                            

    else

    

    

    WritePand( SEC_x, SEC_y, 5 ,1 );//将数组PandColor_sml中的像素信息写入

                                    //以(SEC_x,SEC_y)为圆心5 为半径的显示

                                    //缓冲区内

     

    OldMIN = MIN ;

///////////////////////////////////////////////////////////////////     

    }

     

    OldMIN = 10000;

      

    fz = 0 ;    

  }


关键字:ARM  S3C2440  钟表 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
用中断方式.实现PIC单片机的串口传输