}
//**********add1******************************************
void add_fen1(void)
{
c++;
if(c>9)c=0;return;
}
//*******************************************//
void add_fen2(void)
{d++;
if(d>5)d=0;return;}
//*******************************************//
void add_shi1(void)
{e++;
if(e>9)e=0;
if(f==2&&e>3)
{f=e=0;}
return;}
//*******************************************//
void add_shi2(void)
{f++;
if(f>2)f=0;
if(f==2&&e>3)
{f=e=0;}
return;
}
//****************************************
void addnian22(void)
{
nian2++;
if(nian2>9)
{nian2=0;nian1++;}
if(nian1==9&&nian2==9)
{nian1=nian2=0;}
}
//************************
void addyue22(void)
{
yue2++;
if(yue2>9)
{yue2=0;yue1++;}
if(yue2>2&&yue1==1)
{yue1=yue2=0;}
}
//*************************************
void addri22(void)
{
ri2++;
if(ri2>9)
{ri2=0;ri1++;}
if(ri2>0&&ri1==3)
{ri1=ri2=0;}
}
//********************************************
void aoyun22(void)
{
aoyun2++;
if(aoyun2>9)
{aoyun2=0;aoyun1++;}
if(aoyun2==9&&aoyun1==9)
{ri1=ri2=0;}
}
//********************基本设置******************************************//
//**********************************************************************//
//********************算法**********************************************//
//*****************************定时中断函数*********************************************//
#pragma vector =TIMERA0_VECTOR //ccr0中断服务
__interrupt void ta1_isr(void)
{
count++;
CCTL0&=~CCIFG;
if(count!=3)return;
count=0;
a++;
if(a>9)
{a=0;b++;
if(b>5)
{b=0;c++;
if(c>9)
{
c=0;d++;
if(d>5)
{d=0;e++;
if(e>9)
{
e=0;f++;
if(f==2&&e==4)
{
a=b=c=d=e=f=0;//ab秒 cd分 ef时
} CCR0 =45000;
} CCR0 =45000;
} CCR0 =45000;
} CCR0 =45000;
} CCR0 =45000;
} CCR0 =45000;
}
//********写命令/数据***************************************************
void transfedata(unsigned char data, char DI)
{
P4OUT&=~BIT1;
if (DI==1)P4OUT|=BIT0;
else P4OUT&=~BIT0;
delay(10);
P4OUT|=BIT2;
P3OUT=data;
delay(10);
P4OUT&=~BIT2;
delay(10);
}
//***************************清屏*************************************/
void CLEAR(void)
{
P4OUT&=~BIT0;//RS=0;
P4OUT&=~BIT1;//RW=0;
P4OUT|=BIT2;//E=1;
P3OUT=0x01;//P1=0x01;
delay(100);
P4OUT&=~BIT2;//E=0;
}
//***************set_caidan3菜单3设置****************************************************
void set_caidan3(void)
{
lcd_mesg1(nian1,nian2,0x81);//年
lcd_mesg1(yue1,yue2,0x83);//月
lcd_mesg1(ri1,ri2,0x85);//日
lcd_mesg1(kongqi1,kongqi2,0x8c);//空气指数标志
lcd_mesg1(f,e,0x94);//时钟时
lcd_mesg1(j,d,0x95);//时钟分
lcd_mesg1(c,j,0x96);//时钟分
lcd_mesg1(b,a,0x97);//时钟秒
lcd_mesg1(aoyun1,aoyun2,0x9e);//奥运倒计时
}
//****************lcd_mesg1定点显示*********************************************************
void lcd_mesg1(unsigned char gao,unsigned char di,unsigned char p)
{
transfedata(p,0);
delay(10);
transfedata(caidan0[gao],1);
transfedata(caidan0[di],1);
}
//******************lcd_mesg显示界面*****************************************
void lcd_mesg(unsigned char *p)
{
unsigned char i;
transfedata(0x80,0);
delay(10);
for(i=0;i<64;i++)
{
transfedata(*p,1);
p++;
}
}
//*******************键盘分析函数***************************************//
int keyprocess(void)
{
if(keyin!=0x0f){
delay1(10);//延时去抖动
P2OUT = 0x00; //p2口输出全0
if(keyin!=0x0f){
for(a=0;a<4;a++)//有键按下
{ P2OUT=hang[a];
if(keyin != 0x0f)break; //检测该行有键按下则退出循环
}
for(b=0;b<4;b++)
{
if(keyin==lie[b])
{
save=key[a][b];break; //检测该列有键按下则退出循环
上一页 [1] [2] [3] 下一页
本文关键字:程序 显示屏 MSP430单片机,单片机-工控设备 - MSP430单片机