您当前的位置:五五电子网电子知识单片机-工控设备综合-其它基于C51串行时钟DS1305在无纸记录仪中的实现 正文
基于C51串行时钟DS1305在无纸记录仪中的实现

基于C51串行时钟DS1305在无纸记录仪中的实现

点击数:7871 次   录入时间:03-04 11:54:21   整理:http://www.55dianzi.com   综合-其它
函数中用到数组y_m_d_h_m存放的是即将写入时钟的年、月、日、时、分和秒的压缩的BCD码,在主程序中定义为
uchar y_m_d_h_m[6]={0x01,0x05,0x19,0x23,0x10,0x00};

一旦设置好,就必须调用时钟写保护来防止对时钟的误操作。
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;
}
/*
以下是对液晶进行操作

上一页  [1] [2] [3] [4]  下一页


本文关键字:无纸记录仪  综合-其它单片机-工控设备 - 综合-其它