新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于PIC16F877A单片机设计的万年历程序

基于PIC16F877A单片机设计的万年历程序

作者:时间:2012-11-27来源:网络收藏

/*-------------------------------------------------------*/
//显示一个16X32的字符
void Show16X32(unsigned char line,unsigned char column,const unsigned char *pt)
{
unsigned char i,column_temp1,column_temp2,column_temp3;
column_temp1=column;
column_temp2=column;
column_temp3=column;
SlectScreen(1); //选通左屏
SetColumn(column); //设置起始列
SetLine(line); //设置行
for(i=0;i=64) //如果列>=64,则选通右屏
{
SlectScreen(2);
column=column%64; //设置右屏起始列
SetColumn(column);
SetLine(line);
}
WriteData(*pt); //写数据
*pt++;
column++;
}
SlectScreen(1);
SetLine(line+1);
column=column_temp1;
SetColumn(column);
for(i=0;i=64)
{
SlectScreen(2);
column=column%64;
SetColumn(column);
SetLine(line+1);
}
WriteData(*pt);
*pt++;
column++;
}
SlectScreen(1);
SetLine(line+2);
column=column_temp2;
SetColumn(column);
for(i=0;i=64)
{
SlectScreen(2);
column=column%64;
SetColumn(column);
SetLine(line+2);
}
WriteData(*pt);
*pt++;
column++;
}
SlectScreen(1);
SetLine(line+3);
column=column_temp3;
SetColumn(column);
for(i=0;i=64)
{
SlectScreen(2);
column=column%64;
SetColumn(column);
SetLine(line+3);
}
WriteData(*pt);
*pt++;
column++;
}
}
/*-------------------------------------------------------*/
//LCD初始化子程序
void LCDinit()
{
ADCON1=0x06;
TRISA=0x00;
TRISB=0x00;
PORTB=0x00;
SetOnOff(1);
}
/*----------------------------------------------------------*/
//调用LCD显示子程序
void ChangeToLCD(uch line,uch column,uch data)
{
int D_ge,D_shi;

D_ge=data%10; //取个位
D_shi=data%100/10; //取十位

switch(D_ge)
{
case 0:{Show8X16(line,column+8,s0);break;}
case 1:{Show8X16(line,column+8,s1);break;}
case 2:{Show8X16(line,column+8,s2);break;}
case 3:{Show8X16(line,column+8,s3);break;}
case 4:{Show8X16(line,column+8,s4);break;}
case 5:{Show8X16(line,column+8,s5);break;}
case 6:{Show8X16(line,column+8,s6);break;}
case 7:{Show8X16(line,column+8,s7);break;}
case 8:{Show8X16(line,column+8,s8);break;}
case 9:{Show8X16(line,column+8,s9);break;}
}
switch(D_shi)
{
case 0:{Show8X16(line,column,s0);break;}
case 1:{Show8X16(line,column,s1);break;}
case 2:{Show8X16(line,column,s2);break;}
case 3:{Show8X16(line,column,s3);break;}
case 4:{Show8X16(line,column,s4);break;}
case 5:{Show8X16(line,column,s5);break;}
case 6:{Show8X16(line,column,s6);break;}
case 7:{Show8X16(line,column,s7);break;}
case 8:{Show8X16(line,column,s8);break;}
case 9:{Show8X16(line,column,s9);break;}
}
}
/*-----------------------------------------------------------------*/
void ChangeToLCD2(uch line,uch column,uch data)//带上划线
{
int D_ge,D_shi;
D_ge=data%10; //取个位
D_shi=data%100/10; //取十位

switch(D_ge)
{
case 0:{Show8X16_2(line,column+8,s0);break;}
case 1:{Show8X16_2(line,column+8,s1);break;}
case 2:{Show8X16_2(line,column+8,s2);break;}
case 3:{Show8X16_2(line,column+8,s3);break;}
case 4:{Show8X16_2(line,column+8,s4);break;}
case 5:{Show8X16_2(line,column+8,s5);break;}
case 6:{Show8X16_2(line,column+8,s6);break;}
case 7:{Show8X16_2(line,column+8,s7);break;}
case 8:{Show8X16_2(line,column+8,s8);break;}
case 9:{Show8X16_2(line,column+8,s9);break;}
}
switch(D_shi)
{
case 0:{Show8X16_2(line,column,s0);break;}
case 1:{Show8X16_2(line,column,s1);break;}
case 2:{Show8X16_2(line,column,s2);break;}
case 3:{Show8X16_2(line,column,s3);break;}
case 4:{Show8X16_2(line,column,s4);break;}
case 5:{Show8X16_2(line,column,s5);break;}
case 6:{Show8X16_2(line,column,s6);break;}
case 7:{Show8X16_2(line,column,s7);break;}
case 8:{Show8X16_2(line,column,s8);break;}
case 9:{Show8X16_2(line,column,s9);break;}
}
}
/*-----------------------------------------------------------------*/
void ChangeToLCD3(uch line,uch column,uch data)//带下划线
{
int D_ge,D_shi;

D_ge=data%10; //取个位
D_shi=data%100/10; //取十位

switch(D_ge)
{
case 0:{Show16X32(line,column+16,ss0);break;}
case 1:{Show16X32(line,column+16,ss1);break;}
case 2:{Show16X32(line,column+16,ss2);break;}
case 3:{Show16X32(line,column+16,ss3);break;}
case 4:{Show16X32(line,column+16,ss4);break;}
case 5:{Show16X32(line,column+16,ss5);break;}
case 6:{Show16X32(line,column+16,ss6);break;}
case 7:{Show16X32(line,column+16,ss7);break;}
case 8:{Show16X32(line,column+16,ss8);break;}
case 9:{Show16X32(line,column+16,ss9);break;}
}
switch(D_shi)
{
case 0:{Show16X32(line,column,ss0);break;}
case 1:{Show16X32(line,column,ss1);break;}
case 2:{Show16X32(line,column,ss2);break;}
case 3:{Show16X32(line,column,ss3);break;}
case 4:{Show16X32(line,column,ss4);break;}
case 5:{Show16X32(line,column,ss5);break;}
case 6:{Show16X32(line,column,ss6);break;}
case 7:{Show16X32(line,column,ss7);break;}
case 8:{Show16X32(line,column,ss8);break;}
case 9:{Show16X32(line,column,ss9);break;}
}
}
/*-----------------------------------------------------------------*/
void ChangeToLCD4(uch line,uch column,uch data)//星期转换
{
switch(data)
{
case 1:{Show16X16_3(line,column,ri);break;}
case 2:{Show16X16_3(line,column,yi);break;}
case 3:{Show16X16_3(line,column,er);break;}
case 4:{Show16X16_3(line,column,san);break;}
case 5:{Show16X16_3(line,column,si);break;}
case 6:{Show16X16_3(line,column,wu);break;}
case 7:{Show16X16_3(line,column,liu);break;}
}
}
/*-----------------------------------------------------------------*/
void ChangeToLCD5(uch line,uch column,uch data)//生肖转换
{
data=data%12;
switch(data)
{
case 0:{Show16X16_3(line,column,llong);break;}
case 1:{Show16X16_3(line,column,she);break;}
case 2:{Show16X16_3(line,column,ma);break;}
case 3:{Show16X16_3(line,column,yang);break;}
case 4:{Show16X16_3(line,column,hou);break;}
case 5:{Show16X16_3(line,column,ji);break;}
case 6:{Show16X16_3(line,column,gou);break;}
case 7:{Show16X16_3(line,column,zhu);break;}
case 8:{Show16X16_3(line,column,shu);break;}
case 9:{Show16X16_3(line,column,niu);break;}
case 10:{Show16X16_3(line,column,hu);break;}
case 11:{Show16X16_3(line,column,tu);break;}
}
}
/*-----------------------------------------------------------------*/
void ChangeToLCD6(uch line,uch column,uch data)//阴历月转换
{
data=data%12;
switch(data)
{
case 0:{Show16X16_2(line,column,zheng);break;}
case 1:{Show16X16_2(line,column,er);break;}
case 2:{Show16X16_2(line,column,san);break;}
case 3:{Show16X16_2(line,column,si);break;}
case 4:{Show16X16_2(line,column,wu);break;}
case 5:{Show16X16_2(line,column,liu);break;}
case 6:{Show16X16_2(line,column,qqi);break;}
case 7:{Show16X16_2(line,column,ba);break;}
case 8:{Show16X16_2(line,column,jiu);break;}
case 9:{Show16X16_2(line,column,shi);break;}
case 10:{Show16X16_2(line,column,shiyi);break;}
case 11:{Show16X16_2(line,column,la);break;}
}
}
/*-----------------------------------------------------------------*/
void ChangeToLCD7(uch line,uch column,uch data)//阴历日
{
data=data%12;
switch(data)
{
case 0:{Show16X16_2(line,column,yi);break;}
case 1:{Show16X16_2(line,column,er);break;}
case 2:{Show16X16_2(line,column,san);break;}
case 3:{Show16X16_2(line,column,si);break;}
case 4:{Show16X16_2(line,column,wu);break;}
case 5:{Show16X16_2(line,column,liu);break;}
case 6:{Show16X16_2(line,column,qqi);break;}
case 7:{Show16X16_2(line,column,ba);break;}
case 8:{Show16X16_2(line,column,jiu);break;}
case 9:{Show16X16_2(line,column,shi);break;}
}
}
/*-----------------------------------------------------------------*/
void ChangeToLCD8(uch line,uch column,uch data)//阴历日十位
{
data=data%3;
switch(data)
{
case 0:{Show16X16_2(line,column,chu);break;}
case 1:{Show16X16_2(line,column,er);break;}
case 2:{Show16X16_2(line,column,san);break;}
}
}
/*-----------------------------------------------------------------*/
程序结束

三,总结
到现在为止,我对液晶的操作已经基本掌握了,并可以熟练应用.但是本程序中阳历转阴历的程序还是不对,我想不出更好的转换办法,希望大家能提供方法完善.由于篇幅原因,没有将阳历转阴历的程序,和液晶字库的程序附载上面,


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭