}
}
}
if(newtimebit==1&&recpcokbit==1)
{
//设定新的系统时间
Uchar *pcfsetip;
newtimebit=0;
recpcokbit=0;
pcfsetip=&recdata[1];
SetPCF8563(pcfsetip);
WritePCF8563(0x00,0x00);
WritePCF8563(0x01,0x00);
WritePCF8563(0x0d,0x83);
}
}
//以下为串行口中断程序,用于接收串行数据
void rs232(void) interrupt 4
{
if(RI==1)
{
//原输入格式为AA 秒,分,时 日,星期,月年
if (SBUF==0xaa)
{
newtimebit=1;
pcpointer=0;
}
RI = 0;
recdata[pcpointer++]=SBUF;
if(pcpointer==8)
{
pcpointer =0;
recpcokbit =1; //指针还原,置收到完整的控制码
}
}
else
{
TI = 0;
}
}
void time2(void) interrupt 5
{
TF2 = 0;
TH2 = 0x4c; //50ms
TL2 = 0x00;
}
/*---------------LCD驱动要用到的一些子程序--------------------*/
/*向LCD写指令*/
void lcdwrite_cmd(Uchar cmd_dat)
{
D_I = 0;
R_W = 0;
E = 0;
LCDPORT = cmd_dat;
SomeNOP();
E = 1;
SomeNOP();
E = 0;
}
/*向LCD写数据*/
void lcdwrite_dat(Uchar dot_dat)
{
D_I = 1;
R_W = 0;
E = 0;
LCDPORT = dot_dat;
SomeNOP();
E = 1;
SomeNOP();
E = 0;
}
/*判断LCD是否处于*/
void lcd_busy()
{
Uchar i;
D_I = 0;
R_W = 1;
while(1)
{
E = 0;
LCDPORT = 0xff;
SomeNOP();
E = 1;
SomeNOP();
i = LCDPORT;
E = 0;
if(i<0x80) break;
}
}
Uchar lcdread_dat(void)
{ Uchar i;
D_I = 1;
R_W = 1;
E = 0;
LCDPORT = 0xff;
SomeNOP();
E =1;
SomeNOP();
i = LCDPORT;
E = 0;
LCDPORT =0xff;
SomeNOP();
E = 1;
SomeNOP();
i =LCDPORT;
E =0;
return(i);
}
//开LCD显示
void lcddispon(void)
{
CS1=0;CS2=1;
lcdwrite_cmd(0x3f);
CS1=1;CS2=0;
lcdwrite_cmd(0x3f);
}
//关LCD显示
void lcddispoff(void)
{
CS1=0;CS2=1;
lcdwrite_cmd(0x3e);
CS1=1;CS2=0;
lcdwrite_cmd(0x3e);
}
//对整屏清除,就是写空的数据
void lcdclrall(void)
{
Uchar i,j;
for(i=0;i<8;i++)
{
CS1=0;CS2=1;
lcdwrite_cmd(i|0xb8);
lcdwrite_cmd(0x40);
for(j=64;j>0;j--)
{
lcdwrite_dat(0x00);
lcd_busy();
// P3_1=!P3_1;
}
CS1=1;CS2=0;
lcdwrite_cmd(i|0xb8);
lcdwrite_cmd(0x40);
for(j=64;j>0;j--)
{
lcdwrite_dat(0x00);
lcd_busy();
}
}
}
//LCD初始化
void lcdini(void)
{
CS1=0;CS2=1;
lcdwrite_cmd(0xc0); //从第0行开始显示
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] 下一页
本文关键字:程序 51单片机,单片机-工控设备 - 51单片机