⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wanjt3.c

📁 一个用嵌入c写的万年历程序
💻 C
📖 第 1 页 / 共 3 页
字号:
#include "ht82k95a1.h"
/******Location of Interrupt Vector*************/
#pragma vector isr_4 @ 0x4
#pragma vector isr_8 @ 0x8
#pragma vector isr_c @ 0xc
//#define pin   _14_0
/******yejing  dehong ding yi*************/
#define uint  unsigned int 
#define uchar unsigned char
#define x     0x80 
#define y     0x80 
#define comm  0 
#define dat   1 
#define sclk _pc0
#define cs   _pc2
#define std  _pc3
#define rst  _pc4   //Reset Signal 低电平有效 
//bit psb  = _pa3   H=并口; L=串口; 
const char week[42]="mondaytuesdawednesthursdfridaysaturdsunday";

/******          任务结构      *************/
#define curyhi curtime.wan_yearhi
#define curylo curtime.wan_yearlo
#define curmon curtime.wan_month
#define curwda curtime.wan_week
#define curday curtime.wan_day
#define curhou curtime.hms.wan_hour
#define curmin curtime.hms.wan_minite
#define hfcursec curtime.hms.wan_hfsec
#pragma rambank0

struct wan_hms{
    unsigned int wan_hour;
    unsigned int wan_minite;
    unsigned int wan_hfsec;
    };
struct wan_time{
    unsigned int wan_yearhi;
    unsigned int wan_yearlo;
    unsigned int wan_month;
    unsigned int wan_week;
    unsigned int wan_day;
    struct wan_hms hms;
    }curtime;//wan_cur;
//定义八个任务数组
struct wan_int {
   unsigned int exist;
   unsigned int mdo;//switch trigged one amonth aday only once
   struct wan_time tasktime;
   }wan_ints[5];
//unsigned int wan_dispen;show if need flash the lcd
/*----bianliang  shengming----*/
uchar v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17;
uchar pic[40];//yejing de bianliang
uint cursec;
uint focloc;
uint focnbmax;
uint *focvalue;
uint focvmax;
uchar keyvalue;
uint picnb;
uint focnb;
//uint consec;
uint wan_clock;
uint pflag1;
uint pflag2;
uint upflag;
uint tasknb;
uint focbuffer;

/*han shu shengming*/
void set_timer();
void wan_testkb();
uint getkey();
void key_adjust();
/*----------yejing de han shu shengming--------------*/
//void showplr()
//{_pb0=0;}
//void showpud()
//{_pb0=0;}
//void showpn()
//{_pb0=0;
//init_lcd ();
 //chn_disp1 ();
 //chn_disp2 ();
//}
/*-------------延时-------------------------*/ 
void delay (uint us)   //delay time 
{ 
  while(--us); 
} 
void delay1 (uint ms) 
{ 
  v1=0;
  v2=0; 
  while(++v1<=ms) 
  {while(++v2<=10) 
  delay(100); 
} }
/*---------------------------------------*/ 
void wr_lcd (uchar dat_comm,uchar content) 
{ 
  //uchar a,i,j; 
  //delay (40); 
  v1=content; 
  cs=1; 
  sclk=0; 
  std=1; 
  for(v2=0;v2<5;v2++) 
  { 
    sclk=1; 
    sclk=0; 
  } 
  std=0; 
  sclk=1; 
  sclk=0; 
  if(dat_comm) 
    std=1;   //data 
  else 
    std=0;   //command 
  sclk=1; 
  sclk=0; 
  std=0; 
  sclk=1; 
  sclk=0; 
  for(v3=0;v3<2;v3++) 
  { 
    for(v2=0;v2<4;v2++) 
    { 
      v1=v1<<1; 
      std=_c; 
      sclk=1; 
      sclk=0; 
    } 
    std=0; 
    for(v2=0;v2<4;v2++) 
    { 
      sclk=1; 
      sclk=0; 
    } 
  } 
} 
/*----------------显示图形-----------------*/ 
void img_disp (uchar *img) 
{ 
  //uchar i,j; 
  for(v2=0;v2<16;v2++) 
  { 
    for(v1=0;v1<10;v1++) 
    { 
      wr_lcd (comm,0x34); 
      wr_lcd (comm,y+v2); 
      wr_lcd (comm,x+v1); 
      wr_lcd (comm,0x30); 
      wr_lcd (dat,img[v2*20+v1*2]); 
      wr_lcd (dat,img[v2*20+v1*2+1]); 
    } 
  } 
  wr_lcd (comm,0x36); //为啥是36而不是34呢
} 
/*------------------初始化-----------------*/ 
void init_lcd (void) 
{ 
  rst=1; 
  //psb=0; 
  wr_lcd (comm,0x30);  /*30---基本指令动作*/    
  wr_lcd (comm,0x01);  /*清屏,地址指针指向00H*/ 
  delay (80); 
  wr_lcd (comm,0x06);  /*光标的移动方向*/ 
  wr_lcd (comm,0x0c);  /*开显示,关游标*/ 
} 
/*---------------显示汉字或字符----------------*/ 
/*void chn_disp1 () 
{ //uchar i,j; 
  uchar msg[40] ="2006. 05. 02  monday16: 41: 23          ";
   
  wr_lcd (comm,0x30); 
  wr_lcd (comm,0x80); 
  v4=0; 
  for (v5=0;v5<20;v5++) 
  wr_lcd (dat,msg[v4*20+v5]);
   
} 
void chn_disp2 () 
{ uchar msg[40] ="2006. 05. 02  monday16: 41: 23          ";
  //uchar i,j;  
  wr_lcd (comm,0x30); 
  wr_lcd (comm,0x90); 
  v4=1; 
  for (v5=0;v5<18;v5++) 
  wr_lcd (dat,msg[v4*20+v5]);  
} */
void chn_disp (uchar *chn) 
{ 
  //uchar i,j; 
  wr_lcd (comm,0x30); 
  wr_lcd (comm,0x80); 
  v5=0; 
  for (v4=0;v4<20;v4++) 
  wr_lcd (dat,chn[v5*20+v4]); 
  wr_lcd (comm,0x90); 
  v5=1; 
  for (v4=0;v4<20;v4++)
  { v6=v5*20+v4;
  wr_lcd (dat,chn[v6]); 
  }
} 
/*--------------清DDRAM------------------*/ 
void clrram (void) 
{ 
  wr_lcd (comm,0x30); 
  wr_lcd (comm,0x01); 
  //delay (120); 
} 

/*-----------------------------------------------*/ 
//当data1=0xff,data2=0xff时,在x0,y0处反白显示20xl*yl. 
void con_disp1 (uchar data1,uchar data2,uchar x0,uchar y0,uchar xl,uchar yl) 
{ 
  //uchar i,j; 
  for(v2=0;v2<yl;v2++) 
  { 
    for(v1=0;v1<xl;v1++) 
    { 
      wr_lcd (comm,0x34); 
      wr_lcd (comm,y0+v2); 
      wr_lcd (comm,x0+v1); 
      wr_lcd (comm,0x30); 
      wr_lcd (comm,0x0d);
      wr_lcd (dat,data1); 
      wr_lcd (dat,data2); 
    } 
  } 
  //wr_lcd (comm,0x36); 
} 
void con_disp2 (uchar *data1,uchar *data2,uchar x0,uchar y0,uchar xl,uchar yl) 
{ //供定位显示用
  //uchar i,j; 
  for(v2=0;v2<yl;v2++) 
  { 
    for(v1=0;v1<xl;v1++) 
    { 
      wr_lcd (comm,0x34); 
      wr_lcd (comm,y0+v2); 
      wr_lcd (comm,x0+v1); 
      wr_lcd (comm,0x30); 
      wr_lcd (dat,data1[v2*20+v1*2]); 
      wr_lcd (dat,data2[v2*20+v1*2+1]); 
    } 
  } 
  wr_lcd (comm,0x36); 
} 
/*-----------------翻白显示------------------*/ 
/*void showfoc(uint focnb,uint picnb)//待续
{
    switch(picnb)
    {
        case 0:
        case 1:break;
        case 2:
            switch(focnb)
           {
               case 0:loc(80);break;
               case 1:loc(85);break;
               case 2:loc(90);break;
               default:break;
           }
        case 3:
    }

}-*/
void loc1(uint mmm)
{   wr_lcd (comm,0x34); 
    //wr_lcd (comm,mmm); 
    wr_lcd (comm,0x30); 
    wr_lcd (comm,0x0c);//为showcur()量身定做不翻白显示
    wr_lcd (comm,mmm);//这只是尝试 两次定位 在按左右键时 为安上下键埋下伏笔
}   
void loc(uint mmm)
{   wr_lcd (comm,0x34); 
    //wr_lcd (comm,mmm); 
    wr_lcd (comm,0x30); 
    wr_lcd (comm,0x0d);
    wr_lcd (comm,mmm);//这只是尝试 两次定位 在按左右键时 为安上下键埋下伏笔
}
void rep(uchar data1,uchar data2)
{
    wr_lcd (comm,0x06);
    wr_lcd (dat,data1);
    wr_lcd (dat,data2);
}
/*-------------显示下一个pic-------------*/
void showw(uint nnn)
{
    wr_lcd (comm,0x34);
    wr_lcd (comm,0x30); 
    wr_lcd (comm,0x87); 
    v4=0; 
    for (;v4<6;v4++) 
    wr_lcd (dat,week[nnn*6+v4]);
}

void showcur(uint nnn)
{
    //uint data7;
    //uchar data1,data2,data3,data4,data5,data6;
      switch(nnn)
      {
          case 0:
              v4=curtime.wan_yearhi/10+0x30;
              v5=curtime.wan_yearhi%10+0x30;
              loc1(0x80);rep(v4,v5);break;
          case 1:
              v4=curtime.wan_yearlo/10+0x30;
              v5=curtime.wan_yearlo%10+0x30;
              loc1(0x81);rep(v4,v5);break;
          case 2:
              v4=curtime.wan_month/10+0x30;
              v5=curtime.wan_month%10+0x30;
              loc1(0x83);rep(v4,v5);break;
          case 3:
              v4=curtime.wan_day/10+0x30;
              v5=curtime.wan_day%10+0x30;
              loc1(0x85);rep(v4,v5);
              v7=curtime.wan_week;
              switch(v7)
                 {case 0:showw(0);break;
                  case 1:
                       showw(1);break;
                  case 2:showw(2);break;
                  case 3:showw(3);break;
                  case 4:showw(4);break;
                  case 5:showw(5);break;
                  case 6:showw(6);break;
                  default:break;}
              break;
          case 4:
              v4=curtime.hms.wan_hour/10+0x30;
              v5=curtime.hms.wan_hour%10+0x30;
              loc1(0x90);rep(v4,v5);break;
          case 5:
              v4=curtime.hms.wan_minite/10+0x30;
              v5=curtime.hms.wan_minite%10+0x30;
              loc1(0x92);
              rep(v4,v5);
              break;
          case 6:
              v4=curtime.hms.wan_hfsec/2/10+0x30;
              v5=curtime.hms.wan_hfsec/2%10+0x30;
              loc1(0x94);rep(v4,v5);break;
          
          default:break;    
                                          
      }
      
}
void showzero()
{
    //uchar pic0[40]={
    //  "welcome to       wan"
    //  "       wanwelcome to"
    //};
    pic[0]=' ';pic[1]=' ';pic[2]=0xbb;pic[3]=0xb6;pic[4]=0xd3;pic[5]=0xad;pic[6]=0xca;pic[7]=0xb9;pic[8]=0xd3;pic[9]=0xc3;
    pic[10]=0xba;pic[11]=0xcf;pic[12]=0xcc;pic[13]=0xa9;pic[14]=0xb2;pic[15]=0xfa;pic[16]=0xc6;pic[17]=0xb7;pic[18]=' ';pic[19]=' ';
    pic[20]=0x1e;pic[21]=0x1e;pic[22]=0x1e;pic[23]=0x1e;pic[24]=0x1e;pic[25]=0x1e;pic[26]=0x1e;pic[27]=0x1e;pic[28]=0x1e;pic[29]=0x1e;
    pic[30]=0x1e;pic[31]=0x1e;pic[32]=0x1e;pic[33]=0x1e;pic[34]=0x1e;pic[35]=0x1e;pic[36]=0x1e;pic[37]=0x1e;pic[38]=0x1e;pic[39]=0x1e;
    chn_disp (pic);
}
void showone()
{
    //uchar pic1[40];
    pic[0]=curtime.wan_yearhi/10+0x30;pic[1]=curtime.wan_yearhi%10+0x30;pic[2]=curtime.wan_yearlo/10+0x30;pic[3]=curtime.wan_yearlo%10+0x30;
    pic[4]=0xc4;pic[5]=0xea;pic[6]=curtime.wan_month/10+0x30;pic[7]=curtime.wan_month%10+0x30;pic[8]=0xd4;pic[9]=0xc2;
    pic[10]=curtime.wan_day/10+0x30;pic[11]=curtime.wan_day%10+0x30;
    pic[12]=0xc8;pic[13]=0xd5;pic[14]='m';pic[15]='o';pic[16]='n';pic[17]='d';pic[18]='a';pic[19]='y';
    pic[20]=curtime.hms.wan_hour/10+0x30;pic[21]=curtime.hms.wan_hour%10+0x30;pic[22]=':';pic[23]=' ';
    pic[24]=curtime.hms.wan_minite/10+0x30;pic[25]=curtime.hms.wan_minite%10+0x30;
    pic[26]=':';pic[27]=' ';pic[28]=curtime.hms.wan_hfsec/2/10+0x30;pic[29]=curtime.hms.wan_hfsec/2%10+0x30;pic[30]=' ';pic[31]=' ';
    pic[32]=' ';pic[33]=' ';pic[34]=' ';pic[35]=' ';pic[36]=' ';pic[37]=' ';pic[38]=' ';pic[39]=' ';
    chn_disp (pic);
}
void showtwe()
{focnbmax=3;
//uchar pic2[40]={
//"set a taskdel a task"
//"set the time        "
//};
    pic[0]='s';pic[1]='e';pic[2]='t';pic[3]=' ';pic[4]='t';pic[5]='h';pic[6]='e';pic[7]=' ';pic[8]='t';pic[9]='i';
    pic[10]='s';pic[11]='e';pic[12]='t';pic[13]=' ';pic[14]='a';pic[15]=' ';pic[16]='t';pic[17]='a';pic[18]='s';pic[19]='k';
    pic[20]='d';pic[21]='e';pic[22]='l';pic[23]=' ';pic[24]='a';pic[25]=' ';pic[26]='t';pic[27]='a';pic[28]='s';pic[29]='k';
    pic[30]=' ';pic[31]=' ';pic[32]=' ';pic[33]=' ';pic[34]=' ';pic[35]=' ';pic[36]=' ';pic[37]=' ';pic[38]=' ';pic[39]=' ';
    chn_disp (pic);
}
void showthree()
{focnbmax=7;
    showone();
    wan_ints[3].tasktime=curtime;
    //curtimeb[0]=curtime.wan_yearhi;curtimeb[1]=curtime.wan_yearlo;curtimeb[2]=curtime.wan_month;curtimeb[3]=curtime.wan_day;
    //curtimeb[4]=curtime.hms.wan_hour;curtimeb[5]=curtime.hms.wan_minite;curtimeb[6]=curtime.hms.wan_hfsec/2;
}
void showfour()
{focnbmax=4;
//uchar pic4[40]={
//"  1    2    3    4    5    6    7    8  "
//};
    pic[0]=' ';pic[1]=' ';pic[2]='1';pic[3]=' ';pic[4]=' ';pic[5]=' ';pic[6]=' ';pic[7]='2';pic[8]=' ';pic[9]=' ';
    pic[10]=' ';pic[11]=' ';pic[12]='3';pic[13]=' ';pic[14]=' ';pic[15]=' ';pic[16]=' ';pic[17]='4';pic[18]=' ';pic[19]=' ';
    pic[20]=' ';pic[21]=' ';pic[22]='5';pic[23]=' ';pic[24]=' ';pic[25]=' ';pic[26]=' ';pic[27]='6';pic[28]=' ';pic[29]=' ';
    pic[30]=' ';pic[31]=' ';pic[32]='7';pic[33]=' ';pic[34]=' ';pic[35]=' ';pic[36]=' ';pic[37]='8';pic[38]=' ';pic[39]=' '; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -