一旦设置好,就必须调用时钟写保护来防止对时钟的误操作。
clockwp() /*时钟写保护*/
{
clk_ce=1;
dswr(0x8f);
dswr(0x45);
clk_ce=0;
}
6 时间的显示
在我们所研制的无纸记录仪,显示采用液晶显示器,因为液晶显示器不同,则为液晶显示器所写的驱动程序也不一样,在此不对液晶显示器部分进行详细说明,而仅对于我们所采用的技巧做一说明。
先定义两个数组:
其一:
uchar clock[]={0x00,0x00,0x00,0x00,0x00,0x00};/*秒、分、时、日、月、年*/
该数组把从时钟读来压缩BCD数据暂存于此。
其二:
从BCD码转换为非压缩BCD码。
uchar dispclock[]={0x12,0x10,0x10,0x11,0x0d,0x10,0x17,0x0d,0x11,0x10,0x00,0x11,0x12,0x1a,0x11,0x18,0x1a,0x11,0x18};
/*年、月、日、星期、时、分、秒*/
例子:2001-07-10 12:18:18
0x10...0x19,0x0d,0x1a分别是液晶显示器内部CG-ROM字符0-9,- 和 :的压缩BCD码。
clockread() /* 读时钟数据送入clock数组*/
{
uchar i,ac,j,m=1;
for (i=0;i<7;i++)
{
dswr(i);
ac=dsrd() ;
switch (i)
{
case 0:
case 1:
case 2: clock[i]=ac ;break;
case 3: break;
default:clock[i-1]=ac;
}
clk_ce=0;
}
}
clockdisp() /*把时间显示数组中的数据显示*/
{
uchar j=DELAY;
uchar ac,i;
for (i=0;i<=5;i++) /* 把clock 数组中的BCD码转换成clockdisp的非压缩BCD码*/
{
ac=clock[i];
ac= ac>>4;
ac+=0x10;
dispclock[2+3*(5-i)]=ac;
ac=clock[i];
ac=ac & 0x0f;
ac+=0x10;
dispclock[2+3*(5-i)+1]=ac;
}
/*以下是对液晶进行操作
本文关键字:无纸记录仪 综合-其它,单片机-工控设备 - 综合-其它