📄 wanjt3.c
字号:
#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 + -